mcpField
H
hunting-for-persistence-via-wmi-subscriptions

hunting-for-persistence-via-wmi-subscriptions

github.com/mukul975セキュリティ35.2k45 回インストール8 週間前に更新
リポジトリ

hunting-for-persistence-via-wmi-subscriptions について

Windows のインシデント対応担当者向けに、WMI 永続化を調査するスキルです。Sysmon、Windows イベント、PowerShell ログを使い、サブスクリプションの作成、トリガー、実行を確認します。

主な機能

  1. 01永続的な WMI イベントサブスクリプションの列挙
  2. 02Sysmon イベント 19、20、21 の監視
  3. 03コンシューマーの種類とトリガー条件の確認
  4. 04WmiPrvSe.exe の子プロセスの調査
  5. 05mofcomp.exe とサブスクリプション作成の相関

活用シーン

  1. 01再起動後も残る悪意ある永続化の調査
  2. 02WmiPrvSe.exe が起動した不審なプロセスの調査
  3. 03標準的な永続化場所の外にある不審な活動の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill hunting-for-persistence-via-wmi-subscriptions

インストール後、Claude Code で/hunting-for-persistence-via-wmi-subscriptionsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

WMI サブスクリプションによる永続化の調査

使用するタイミング

  • Windows 環境でファイルレス永続化の仕組みを能動的に探索するとき
  • 脅威インテリジェンスレポートで APT グループ(APT29、APT32、FIN8)による WMI ベースの永続化が示されたとき
  • クリーンアップを試みても、マルウェアが再起動後も存続しているシステムを調査するとき
  • 標準的な永続化の場所(Run キー、スケジュールタスク)に異常がない状態でインシデント対応を行うとき
  • WmiPrvSe.exe が想定外の子プロセスを生成しているのが確認されたとき

前提条件

  • Sysmon イベント ID 19、20、21(WMI イベントフィルター/コンシューマー/バインディング)が有効であること
  • Microsoft-Windows-WMI-Activity の Windows イベント ID 5861(WMI アクティビティログ)が利用可能であること
  • PowerShell ロギング(スクリプトブロックロギング、モジュールロギング)が有効であること
  • 列挙のための WMI リポジトリへのアクセスがあること
  • イベントの相関分析のための SIEM プラットフォームがあること

ワークフロー

  1. 既存の WMI サブスクリプションの列挙: 対象システム上のすべての永続的な WMI イベントサブスクリプションを照会します。クリーンなシステムには永続的なサブスクリプションがほとんどないか、まったくない場合が多いため、異常を容易に発見できます。
  2. WMI イベント作成の監視(Sysmon 19/20/21): Sysmon イベント 19 は WmiEventFilter のアクティビティ、イベント 20 は WmiEventConsumer のアクティビティ、イベント 21 は WmiEventConsumerToFilter のバインディングを記録します。
  3. コンシューマーの種類の分析: 永続化に悪用される危険な種類である ActiveScriptEventConsumer(VBScript/JScript を実行)と CommandLineEventConsumer(コマンドを実行)に注目します。
  4. イベントフィルターのトリガーの確認: サブスクリプションが何をトリガーとしているかを調べます。よくある悪意のあるトリガーには、システム起動(Win32_ProcessStartTrace)、ユーザーログオン、タイマーベースの実行間隔があります。
  5. WmiPrvSe.exe の子プロセスの調査: WMI サブスクリプションが発火すると、そのアクションは WmiPrvSe.exe によって実行されます。WmiPrvSe.exe の不審な子プロセスを探索します。
  6. MOF コンパイルとの相関分析: mofcomp.exe の使用を検知します。これは MOF ファイルをコンパイルし、プログラム的に WMI サブスクリプションを作成するために使われます。
  7. 検証と対応: 悪意のあるサブスクリプションであることを確認し、削除したうえで、初期感染経路までさかのぼって調査します。

主要な概念

概念説明
T1546.003イベントトリガー実行: WMI イベントサブスクリプション
__EventFilterトリガー条件を定義する WMI クラス
__EventConsumer実行するアクションを定義する WMI クラス
__FilterToConsumerBindingフィルターとコンシューマーを関連付ける
ActiveScriptEventConsumerVBScript または JScript を実行するコンシューマー
CommandLineEventConsumerコマンドラインを実行するコンシューマー
WmiPrvSe.exeサブスクリプションのアクションを実行する WMI プロバイダーホスト
MOF ファイルWMI オブジェクトを定義するために使用される Managed Object Format

検知クエリ

Splunk -- Sysmon による WMI サブスクリプションの作成
index=sysmon (EventCode=19 OR EventCode=20 OR EventCode=21)
| eval event_type=case(EventCode=19, "EventFilter", EventCode=20, "EventConsumer", EventCode=21, "FilterToConsumerBinding")
| table _time Computer User event_type EventNamespace Name Query Destination Operation
Splunk -- Windows イベント 5861 による WMI サブスクリプション
index=wineventlog source="Microsoft-Windows-WMI-Activity/Operational" EventCode=5861
| table _time Computer NamespaceName Operation PossibleCause
PowerShell -- WMI サブスクリプションの列挙
Get-WmiObject -Namespace root\subscription -Class __EventFilter
Get-WmiObject -Namespace root\subscription -Class __EventConsumer
Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding
KQL -- 不審な子プロセスを生成する WmiPrvSe.exe
DeviceProcessEvents
| where Timestamp > ago(7d)
| where InitiatingProcessFileName =~ "wmiprvse.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine
Sigma ルール
title: WMI Event Subscription Persistence
status: stable
logsource:
    product: windows
    category: wmi_event
detection:
    selection_consumer:
        EventID: 20
        Destination|contains:
            - 'ActiveScriptEventConsumer'
            - 'CommandLineEventConsumer'
    condition: selection_consumer
level: high
tags:
    - attack.persistence
    - attack.t1546.003

よくあるシナリオ

  1. APT29 の WMI 永続化: システム起動時に VBScript バックドアを実行する ActiveScriptEventConsumer を作成し、再起動や資格情報のリセット後も存続します。
  2. Turla の WMI バックドア: Win32_ProcessStartTrace フィルターと CommandLineEventConsumer を組み合わせ、隠密にコマンドを実行します。
  3. FIN8 の WMI タイマー: 間隔ベースの __IntervalTimerEvent を使用し、30 分ごとにエンコードされた PowerShell のダウンロードをトリガーします。
  4. MOF ベースのインストール: 攻撃者が .mof ファイルを配置し、mofcomp.exe でコンパイルして、永続的なサブスクリプションを密かに作成します。

出力形式

Hunt ID: TH-WMI-[DATE]-[SEQ]
Host: [Hostname]
Subscription Name: [Filter/Consumer name]
Filter Query: [WQL trigger condition]
Consumer Type: [ActiveScript/CommandLine]
Consumer Action: [Script content or command]
Binding: [Filter-to-Consumer link]
Created: [Timestamp]
User Context: [SYSTEM/User]
Risk Level: [Critical/High/Medium/Low]

コメント