Windowsの脅威によるCOM使用の紹介
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この研究では、マルウェアがWindowsコンポーネントオブジェクトモデル(COM)を悪用して横移動、永続化、防御回避などの悪意のある行動を支援する方法を調査します。COMが異なるプログラミング言語がWindowsサービスとやり取りできるようにする方法を説明し、脅威アクターがCOMインターフェースを介した間接的なvtable呼び出しの背後で機能を隠す方法を示しています。この記事には、Qakbot、Gh0stRAT、Attor、WarmCookieなどのマルウェアファミリーに関する技術的なケーススタディが含まれており、これらの手法を実践で示しています。
調査
調査は、COMを多用するバイナリを逆向きに解析して不透明なGUIDとvtableオフセットを意味のあるWindowsクラスとメソッド呼び出しに変換することに重点を置いています。研究者は、OleView.NETやComViewといったツールを使ってレジストリ登録やインターフェース定義を検査しました。ケーススタディでは、COMアクティベーションAPIを分析することで、マルウェアサンプルの実際の目的と動作を明らかにできることを示しました。
緩和策
この記事は特定の強化策よりもむしろ分析と検出に重点を置いていますが、異常なCOMアクティベーションの行動を監視し、CLSIDやIIDに紐付けられたレジストリエントリーを監査することが可視性を向上させると示唆しています。BITSやタスクスケジューラーなど、COMを利用するサービスについての深い理解も効果的な監視と脅威ハンティングのために重要です。
対応
疑わしいCOM活動が特定された場合、レスポンダーはCOMアクティベーションを開始したプロセスを分析し、どのCLSIDとIIDが呼び出されているかを判断する必要があります。また、親プロセスを追跡し、関連するスケジュールされたタスクやBITSジョブを探すことも重要です。動的挿入とCOMに特化したログツールは、悪意のあるAPI活動の完全な連鎖を再構築するのに役立ちます。
"フローチャート TD step_initial_access["初期アクセス: Qakbotはフィッシングメールを介して配布され、ローダーとして機能します。"] step_c2_ingress["C2およびイングレスツール転送: Attorは、BITS(IBackgroundCopyJob)を使用して信頼性の高いペイロード配信を行います。"] step_persistence["永続化: Gh0stRATとWarmCookieはタスクスケジューラーCOMインターフェース(ITaskService)を使用してスケジュールされたタスクを作成します。"] rules_for_persistence("<b>ルール名</b>: COMオブジェクト経由の可能性のあるスケジュールタスク(cmdline経由)<br/><b>ルールID</b>: 75015b1f-6813-4288-aa82-b92bb31d8473") step_lateral_movement["横移動とリモート実行: ネットワーク全体でのリモートオブジェクトアクティベーションのためのDCOMの使用。"] step_initial_access –>|lead_to| step_c2_ingress step_c2_ingress –>|lead_to| step_persistence step_persistence –>|lead_to| step_lateral_movement step_persistence -.->|detected_by| rules_for_persistence "
攻撃フロー
検出
COMオブジェクトを使用したUAC回避の可能性(cmdline経由)
表示
インラインVBスクリプト実行の可能性(プロセス作成経由)
表示
DCOMを介したラテラルムーブメントの可能性 [Excel/Visio/Word/Access/PowerPoint.Application](cmdline経由)
表示
COMオブジェクトを介したスケジュールタスクの可能性(cmdline経由)
表示
PowerShellとWMIを使用した自動化とタスクスケジューリングによるCOMオブジェクトの作成を検出 [Windows Powershell]
表示
COMとDCOMのセキュリティ初期化の検出 [Windowsプロセス作成]
表示
シミュレーション実行
前提条件: テレメトリとベースラインの事前チェックが合格している必要があります。
理由: このセクションでは、検出ルールをトリガーするように設計された敵対者の技術(TTP)の正確な実行を詳細に説明します。コマンドや説明は特定されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成することを目標としています。抽象的または無関係な例は誤診につながります。
-
攻撃シナリオとコマンド: 敵対者は、ラテラルムーブメントやリモートサービスの操作を行おうとしています。一般的なツールのパターンを探す単純なシグネチャベースの検出を回避するために、彼らは特定のユーティリティ(ここでは
example.exeとしてシミュレーションされる)を使用し、COM/DCOMセキュリティ初期化をトリガーする特定の引数を渡します。CoCreateInstanceExandCoInitializeSecurityをコマンドライン引数として渡すことで、攻撃者はアウトオブプロセスのCOMインターフェースのセキュリティコンテキストを設定し、リモート通信を容易にしようとしています。 -
回帰テストスクリプト:
# 注意: このスクリプトは、ルールロジックに従って'System32'に'example.exe'が存在すると仮定しています。 # これはプレースホルダーであるため、テストのために実行可能ファイルをシミュレートするためのダミーファイルを作成します。 $targetPath = "C:WindowsSystem32example.exe" # シミュレーション目的で存在しない場合、ダミーの実行可能ファイルを作成 if (-not (Test-Path $targetPath)) { Write-Host "シミュレーションのためにダミーの実行可能ファイルを作成中..." New-Item -Path $targetPath -ItemType File -Force } # 疑わしいコマンドラインの実行をシミュレート # このコマンドは検出ルールのCommandLineの選択をトリガーするために設計されています Start-Process -FilePath $targetPath -ArgumentList "--action CoCreateInstanceEx --setup CoInitializeSecurity" -Wait -
クリーンアップコマンド:
# シミュレーションのために作成したダミーの実行可能ファイルを削除 Remove-Item -Path "C:WindowsSystem32example.exe" -Force