WMI在渗透测试中的重要性

2018-06-05 10,684

0x01首先什么是WMI?

WMI可以描述为一组管理Windows系统的方法和功能。我们可以把它当作API来与Windows系统进行相互交流。WMI在渗透测试中的价值在于它不需要下载和安装, 因为WMI是Windows系统自带功能。而且整个运行过程都在计算机内存中发生,不会留下任何痕迹。这一点是其它渗透测试工具所不能相比的。

图片1.png 

图片来源: msdn.microsoft.com


0x02检索系统信息

1. 检索系统已安装的软件

图片2.png

2. 搜索系统运行服务

图片3.png

3. 搜索运行中的程序

图片4.png

4. 搜索启动程序

图片5.png

5. 搜索共享驱动盘

图片6.png

6. 搜索时区

图片7.png

7. 搜索用户帐户

图片8.png

8. 搜索计算机域控制器

图片9.png

9. 搜索登录用户

图片10.png

10. 搜索已安装的安全更新

图片11.png

 

0x03执行任务

然而,WMIC不仅仅只是用于检索系统信息。在渗透测试中, 使用适当的命令,它也可以执行各种有用的任务。

1. 卸载和重新安装程序

在渗透测试中, 我们经常遇到反病毒程序阻止payload运行。 这时候我们可以通过WMIC命令来卸载反病毒程序。

图片12.png

2. 运行程序管理

上面我们提到卸载反病毒程序来运行payload 但是有时候我们没有足够的权限去卸载程序。 这时我们可以通过WMIC命令来停止运行反病毒服务。

· 第一步, 找到反病毒程序

图片13.png

· 第二步, 通过WMIC命令来停止运行反病毒服务

图片14.png


0x04 PowerShell

自从PowerShell的出现,WMI功能已经被完全整合到了PowerShell里面。在PowerShell中, WMI拥有多个类型的,每个都代表一个内部组件:Win32_proces代表当前系统所运行程序。 Win32_Service代表当前系统所运行服务等等。每个都有它自己的属性,我们可以使用WQL语言来进行查询。它的语法与SQL语言非常接近。那么要在Windows环境中列出所有, 我们可以使用PowerShell Get-WmiObject cmdlet来实现。

图片15.png

类型被分组在namespaces or aliases中。以上我们得到的所有资源列表都属于CIMV2 namespaces,包含大多数系统命令。还有其它可由第三方产品提供或注册的其他产品。我们可以用以下命令查找:

图片16.png

图片17.png

 

0x05代码执行







使用WQLWMI相互交流只能提供只读访问,除此之外, 我们可以使用Windows上的WMIC实用程序, 向我们提供一个CMD.EXE端口。

图片18.png

正如前面提到的,WMI的真正优势在于能够远程控制这些系统。因此,为了在另一个系统上产生新的CMD.EXE端口,我们可以发布以下命令:

图片19.png

需要注意的是: 当远程执行代码时,请务必使用不受UAC限制的帐户。 比如说administrator帐户和具有本地管理权限的域帐户等等。

图片20.png

使用WMIC进行远程命令执行的主要挑战是将输出返回。解决这个问题的一个便捷快速的方法是将文件重定向。也就是说, 我们可以将命令输出存入共享网络驱动盘。然后再复制到本地驱动盘。

· 第一步, 设置共享网络驱动盘

图片21.png

· 第二步, 再复制到本地驱动盘

图片22.png

· 第三步, 查看结果

图片23.png  


0x06 Impacket框架

什么是Impacket框架?

Impacket是用于处理网络协议的Python功能集合。重点在于提供低级别的编程访问分组和一些协议(例如NMB、SMB1-3和MS-DCEPC)来实现本身功能。可以从头开始构建数据包,也可以从原始数据中解析数据包,而面向对象的API使得使用协议的深层层次结构变得简单。Impacket框架提供了一系列工具来帮助我们来完成渗透测试。

1. Wmiquery.py

Linux上,我们可以使用著名的Impacket框架中的WMiQuery.Py脚本远程发布WQL查询:

图片24.png 

2. wmiexec.py

如果您正在寻找Linux平台上的快速远程命令执行,那么最好使用Impacket框架中的WMIEXEC.PY脚本。WMIEXEC.PY脚本优势再于它能够直接运行命令并得到命令的输出。不需要将命令输出存入共享网络驱动盘。然后再复制到本地驱动盘。

图片25.png

3. wmipersist.py

Impacket框架中, 我们可以使用wmipersist.py脚本来创建或删除WMI活动。通过WQL过滤器或指定的定时器执行Visual Basic脚本。

· 第一步, 创建Visual Basic脚本

                  # persist-cmd.vbs

                  Set oShell = CreateObject ("WScript.Shell")

                  oShell.run "cmd.exe /C ipconfig -all "


· 第二步, 设置WMI活动

                  wmipersist.py domain.net/adminuser:passwd@host install -name IPCONFIG

                  -vbs persist-cmd.vbs

                  -filter 'SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance

                   ISA "Win32_Process" AND TargetInstance.Name = " iexplore.exe"'


                或者设置WMI活动按照指定的定时器来执行Visual Basic脚本:

                    wmipersist.py domain.net/adminuser:passwd@host install -name IPCONFIG

                    -vbs persist-cmd.vbs -timer XXX

                    XXX是毫秒

 

· 第三步, 删除WMI活动

                  wmipersist.py domain.net/adminuser:passwd@host remove -name IPCONFIG

释: 如果你不指定密码,脚本在执行中会提示输入密码。域名是可选项


0x07 Empire 框架




什么是Empire 框架?

Empire 框架是一个纯粹的PowerSehll后续开发代理。 它建立在密码安全通信频道并且有着灵活的架构。Empire实现了运行PowerShell 代理的能力而不需要PowerShell.exe,并且可以快速部署开发工具,比如说关键记录器和Mimikatz,同时可以很快适应到现有通信频道而且逃避网络检测。所有这些都包装在以可用性为中心的框架中。

1. 在Empire 框架下使用lateral_movement/invoke_wmi来执行代码和横向运动

该模块将安装Empire代理 在域机器上。Empire并让代理在目标电脑上执行阶段程序。 通过WMIEmpire将在后台处理分级协议并发送新的代理检查通知。

图片26.png

图片27.png

2. 在Empire 框架下, 我们有第二选择来执行代码和横向运动,那就是使用lateral_movement/invoke_wmi_debugger

该模块将为指定的目标(SETHC.exeUtilman.exeOSK.exeDealActudi.exeMax .exe)来设置调试器,使之成为选择的目标(即CMD.exe)或阶段程序。这类似于持久性/调试器模块,但具有远程执行而不是本地执行功能。

图片28.png

3. 在Empire 框架下, 我们可以使用/persistence/elevated/wmi

该模块可以帮助我们在提升权限条件下保持访问持久化。它在系统启动时或在系统启动过程中以每5分钟或在每日固定时间添加永久WMI订阅。一旦WMI访问持久化永久添加到系统中, 很难被发现和清除。

图片29.png

 

0x08 总结


本文分享了WMI在渗透测试中的重要性。 除了WMI自带功能以外, 我们还谈到了如何在PowerShell中运行WMI功能。 在第三方框架中, 我们涉及到了Impacket 和Empire, 如何在第三方框架中运行WMI功能和检索系统信息。 同时进行横向运动和保持访问持久化。 由于WMI在计算机内存中运行,不会留下任何痕迹,所以很难被发现。

本文作者:wangxianlg

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/72493.html

Tags:
评论  (2)
快来写下你的想法吧!

wangxianlg

文章数:2 积分: 45

AssessIT risk helps you to take control of IT and security risk! Harness business policies for IT and security risks, vulnerabilities, and threats!

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号