【技术原创】渗透基础——WMIC的使用

admin 2022年3月27日13:41:18评论116 views字数 3648阅读12分9秒阅读模式

【技术原创】渗透基础——WMIC的使用

【技术原创】渗透基础——WMIC的使用
0x00 前言

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

【技术原创】渗透基础——WMIC的使用
0x01 简介

本文将要介绍以下内容:

  • wbemtest用法

  • 通过wmic查询主机信息

  • 通过wmic修改注册表

  • 通过wmic执行程序

  • 本地和远程访问WMI服务

【技术原创】渗透基础——WMIC的使用
0x02 wbemtest用法

参考资料:

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

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

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

界面如下图

【技术原创】渗透基础——WMIC的使用

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

常用功能示例如下:

(1)Enum Classes…

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

这里以查询Win32_Process对象为例:

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

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

查询结果如下图

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

wmic /namespace:"\rootcimv2" PATH Win32_Process get Handle

(3)Execute Method…

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

设置Object Path为Win32_Process,点击OK

在弹出的界面设置设置Method为Create

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

设置Valve为calc,如下图

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

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

wmic /namespace:"\rootcimv2" PATH Win32_Process call create "calc"

简写命令如下:

wmic process call create "calc"

【技术原创】渗透基础——WMIC的使用
0x03 本地和远程访问WMI服务

1.查询主机名称

本地:

wmic /namespace:"\rootcimv2" PATH Win32_ComputerSystem get Name

远程:

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

2.注册表操作

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

这里列出几个常用命令:

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

枚举注册表键值HKCU:SoftwareMicrosoftTerminal Server ClientServers,命令如下:

wmic /namespace:"\rootcimv2" path stdregprov call EnumKey ^&h80000001,"SoftwareMicrosoftTerminal Server ClientServers"

(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:"\rootcimv2" path stdregprov call GetDWORDValue ^&H80000002,"SystemCurrentControlSetControlLsa","DisableRestrictedAdmin"

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

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\rootcimv2" path stdregprov call SetDWORDValue ^&H80000002,"SystemCurrentControlSetControlLsa","DisableRestrictedAdmin","0"

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

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\rootcimv2" path stdregprov call SetDWORDValue ^&H80000002,"SystemCurrentControlSetControlLsa","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:"\rootcimv2" PATH Win32_Process get name,processid,commandline /FORMAT:list

查询远程主机所有进程:

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

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

【技术原创】渗透基础——WMIC的使用
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:windowssystem32wbemwmic.exe,这里可以选择Sysmon记录进程创建的细节,查看CommandLine获得WMI的命令细节

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

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

【技术原创】渗透基础——WMIC的使用
0x05 小结

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

【技术原创】渗透基础——WMIC的使用

【技术原创】渗透基础——WMIC的使用

原文始发于微信公众号(嘶吼专业版):【技术原创】渗透基础——WMIC的使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月27日13:41:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【技术原创】渗透基础——WMIC的使用https://cn-sec.com/archives/843032.html

发表评论

匿名网友 填写信息