Windows渗透测试中wmi的利用

0x01 关于WMI

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

 

 

 

0x02 WMI信息收集

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

wmic product list brief |more

 

2.  搜索系统运行服务

wmic service list brief |more

 

 

2.  搜索运行中的程序

wmic process list brief |more

 

4. 搜索启动程序

wmic startup list brief |more

 

5. 搜索共享驱动盘

wmic netuse list brief |more

 

6.  搜索时区

wmic timezone list brief |more

 

 

7. 搜索用户帐户

wmic useraccount list brief |more

 

 

 

8. 搜索计算机域控制器

wmic ntdomain list brief

 

9.  搜索登录用户

wmic logon list brief |more

 

 

 

 

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

wmic qfe list brief |more

 

0x03 WMI执行任务

 

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

 

 

1. 卸载和重新安装程序

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

 

 

Wmic product where "name like '%forit%' " get name

 

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

Wmic process where name=“XXX.exe” call terminate

 

 

 

 

0x04  PowerShell

 

 

 

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

 

 

 

 

 

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

 

 

 

 

 

 

0x05代码执行

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

 

 

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

 

 

 

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

 

 

 

 

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

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

 

 

 

 

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

 

  • 第三步, 查看结果

 

posted @ 2019-04-06 13:20  卿先生  阅读(4549)  评论(1编辑  收藏  举报