WMI
WMIC (Windows 管理仪表) 是一项 Windows 管理功能,它为本地和远程访问 Windows 系统组件提供统一的环境。系统管理员可以创建 VBScript 或 PowerShell 脚本来管理本地和远程的 Windows 主机。WMI 也是横向移动和远程代码执行的原生方式,它需要本地管理员权限。
wmi.exe
我们可以通过如下的原生命令给远程主机创建新的进程:
wmic /node:<主机> /user:<用户名> /password:<密码> process call create "<命令>"
然后发现在目标主机上该进程确实存在了。
将要启动的进程换为载荷,便能实现横向移动了。
C2
remote-exec wmi
我们会发现没有 jump wmi 的选项,只有 remote-exec wmi。remote-exec 方法使用的其实就是 process call create 来执行任意命令。
因此,我们可以先上传载荷文件到目标主机上,再使用 remote-exec 来执行。
第三方工具
Impacket
Impacket 中的 wmiexec 同样可用于横向移动,不过返回的是半交互式 Shell。
因为 wmiexec 会将输出写入文件,因此会带来 IoC,静默命令以及取消输出可以改善这一问题。
XiaoLi 修改后的 wmiexec 脚本 (https://github.com/XiaoliChan/wmiexec-RegOut) 通过注册表读写输出,也是一个不错的方法。