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完整的功能細節和使用方法
界面如下圖
點擊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的相關基礎知識,結合利用思路,給出防禦建議。
Recommended Comments