Good in study, attitude and health

渗透基础——WMIC的使用

0x00 前言


WMI(Windows Management Instrumentation)是一种管理功能,提供了一个统一的环境来访问Windows系统组件,支持本地和远程访问。在之前的文章《WMI Attacks》、《WMI Backdoor》、《WMI Defense》和《Study Notes of WMI Persistence using wmic.exe》介绍过相关内容,本文将要在信息收集和横向移动的角度,分析wmic的常用方法,结合利用思路,给出防御建议。

0x01 简介


本文将要介绍以下内容:

  • wbemtest用法
  • 通过wmic查询主机信息
  • 通过wmic修改注册表
  • 通过wmic执行程序
  • 本地和远程访问WMI服务

0x02 wbemtest用法


参考资料:

https://docs.microsoft.com/en-us/mem/configmgr/develop/core/understand/introduction-to-wbemtest

Windows系统默认安装,可以用于连接WMI命名空间,访问WMI服务

借助wbemtest,我们可以获得WMI完整的功能细节和使用方法

界面如下图

Alt text

点击Connect...,输入WMI命名空间root\cimv2,连接到root\cimv2后,可进入主页面,如下图

Alt text

常用功能示例如下:

(1)Enum Classes…

枚举类,可以用来枚举所有的对象,查询每个类的定义

这里以查询Win32_Process对象为例:

依次选中Enum Classes... -> Recursive -> OK,选中Win32_Process,双击进入对象编辑器,如下图

Alt text

Properities栏可以查看属性,例如这里有Handle,可以通过后文的Query...进行查询

Methods栏可以查看方法,例如这里有Create,可以通过后文的Execute Method...进行调用

(2)Query…

查询属性,需要输入WMI Query Language (WQL)

参考资料:

https://docs.microsoft.com/en-us/windows/win32/wmisdk/wql-sql-for-wmi

语法示例:

SELECT Handle FROM Win32_Process

查询结果如下图

Alt text

这条查询语句换成wmic的命令如下:

wmic /namespace:"\\root\cimv2" PATH Win32_Process get Handle

(3)Execute Method…

调用方法,这里以调用Win32_Process对象Create方法为例

设置Object Path为Win32_Process,点击OK

在弹出的界面设置设置MethodCreate

点击Edit in Parameters...,在弹出的界面中依次选择CommandLine -> Edit Property

设置Valve为calc,如下图

Alt text

点击Save Object -> Execute!,弹出计算器

以上操作换成wmic的完整命令如下:

wmic /namespace:"\\root\cimv2" PATH Win32_Process call create "calc"

简写命令如下:

wmic process call create "calc"

0x03 本地和远程访问WMI服务


1.查询主机名称

本地:

wmic /namespace:"\\root\cimv2" PATH Win32_ComputerSystem get Name

远程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" PATH Win32_ComputerSystem get Name

2.注册表操作

具体细节可参考《Study Notes of WMI Persistence using wmic.exe》

这里列出几个常用命令:

(1)获得当前用户的远程桌面连接历史记录

枚举注册表键值HKCU:\Software\Microsoft\Terminal Server Client\Servers,命令如下:

wmic /namespace:"\\root\cimv2" path stdregprov call EnumKey ^&h80000001,"Software\Microsoft\Terminal Server Client\Servers"

(2)远程查询和修改Restricted Admin Mode

关于Restricted Admin Mode的内容可参考《渗透技巧——Pass the Hash with Remote Desktop(Restricted Admin mode)》

远程查询和修改Restricted Admin Mode的C Sharp实现可参考:

https://github.com/GhostPack/RestrictedAdmin

https://github.com/airzero24/WMIReg

远程查询Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call GetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin"

远程开启Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call SetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin","0"

远程关闭Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call SetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin","1"

3.执行程序

本地:

wmic process call create "calc"

远程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" process call create "calc"

4.进程操作

查询本地所有进程:

wmic /namespace:"\\root\cimv2" PATH Win32_Process get name,processid,commandline /FORMAT:list

查询远程主机所有进程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" PATH Win32_Process get name,processid,commandline /FORMAT:list

其他用法还可参考:https://docs.microsoft.com/en-us/archive/blogs/jhoward/wmic-samples

0x04 防御检测


需要注意的是,默认配置下WMI的日志记录很少,无法记录WMI的命令细节

WMI-Activity的Trace日志能够记录简单的日志,但也无法记录WMI的命令细节,开启方法如下:

打开Event Viewer,选择View -> Show Analytic and Debug Logs

依次选择Applications and Services Logs -> Microsoft -> Windows -> WMI-Activity -> Trace,点击Enable Log

使用wmic命令时,默认启动进程c:\windows\system32\wbem\wmic.exe,这里可以选择Sysmon记录进程创建的细节,查看CommandLine获得WMI的命令细节

详细日志细节可参考:https://jpcertcc.github.io/ToolAnalysisResultSheet/details/wmic.htm

也可以选择开源的数字取证工具Velociraptor,能够记录进程创建的细节,包括CommandLine

0x05 小结


本文介绍了wmic的相关基础知识,结合利用思路,给出防御建议。


LEAVE A REPLY