Jump to content

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完整的功能細節和使用方法

界面如下圖

173584b19168096ba15863a0e9c14b9.png

點擊Connect.輸入WMI命名空間root\cimv2,連接到root\cimv2後,可進入主頁面,如下圖

常用功能示例如下:

(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

語法示例:

SELECTHandleFROMWin32_Process查詢結果如下圖

這條查詢語句換成wmic的命令如下:

wmic/namespace:'\\root\cimv2'PATHWin32_ProcessgetHandle(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:'\\root\cimv2'PATHWin32_Processcallcreate'calc'簡寫命令如下:

wmicprocesscallcreate'calc'0x03 本地和遠程訪問WMI服務1.查詢主機名稱本地:

wmic/namespace:'\\root\cimv2'PATHWin32_ComputerSystemgetName遠程:

wmic/node:192.168.1.1/user:'administrator'/password:'123456'/namespace:'\\root\cimv2'PATHWin32_ComputerSystemgetName2.註冊表操作具體細節可參考《Study Notes of WMI Persistence using wmic.exe》

這裡列出幾個常用命令:

(1)獲得當前用戶的遠程桌面連接歷史記錄

枚舉註冊表鍵值HKCU:\Software\Microsoft\Terminal Server Client\Servers,命令如下:

wmic/namespace:'\\root\cimv2'pathstdregprovcallEnumKey^h80000001,'Software\Microsoft\TerminalServerClient\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'pathstdregprovcallGetDWORDValue^H80000002,'System\CurrentControlSet\Control\Lsa','DisableRestrictedAdmin'遠程開啟Restricted Admin Mode的wmic命令如下:

wmic/node:192.168.1.1/user:'administrator'/password:'123456'/namespace:'\\root\cimv2'pathstdregprovcallSetDWORDValue^H80000002,'System\CurrentControlSet\Control\Lsa','DisableRestrictedAdmin','0'遠程關閉Restricted Admin Mode的wmic命令如下:

wmic/node:192.168.1.1/user:'administrator'/password:'123456'/namespace:'\\root\cimv2'pathstdregprovcallSetDWORDValue^H80000002,'System\CurrentControlSet\Control\Lsa','DisableRestrictedAdmin','1'3.執行程序本地:

wmicprocesscallcreate'calc'遠程:

wmic/node:192.168.1.1/user:'administrator'/password:'123456'processcallcreate'calc'4.進程操作查詢本地所有進程:

wmic/namespace:'\\root\cimv2'PATHWin32_Processgetname,processid,commandline/FORMAT:list查詢遠程主機所有進程:

wmic/node:192.168.1.1/user:'administrator'/password:'123456'/namespace:'\\root\cimv2'PATHWin32_Processgetname,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的相關基礎知識,結合利用思路,給出防禦建議。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...