複数のテーマのフィッシングメールを利用する新しいXWormキャンペーンの詳細
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
FortiGuard Labsは、悪意のあるExcel添付ファイルを介してXWormリモートアクセス型トロイの木馬を配布する多段階フィッシングキャンペーンを観測しました。この文書はMicrosoft Equation EditorのCVE-2018-0802を悪用してHTAファイルを取得し、その後、.NETローダーがプロセスホロウイングを使って新しく生成されたMsbuild.exeプロセスにXWormを注入します。このRATはAESで暗号化されたトラフィックを使用してC2と通信し、拡張された制御のためのプラグインサポート付き広範なコマンドセットを暴露します。このキャンペーンは、居住型バイナリとファイルレス技術の洗練された使用を示し、侵害されたエンドポイント全体で持続的なリモートコントロールを実現しています。
調査
アナリストは、フィッシングメールからExcel OLEエクスプロイト、HTAの実行、PowerShellベースの.NETモジュールダウンロード、最終的なMsbuild.exeへのプロセスホロウイングまでの流れを再構築しました。静的および動的レビューでは、JPEG画像に隠されたBase64でエンコードされたペイロードデータがハイライトされ、最終的なXWormコンポーネントがメモリにロードされ、実行時にディスクに復号化された実行ファイルが書き込まれないことが確認されました。ネットワークキャプチャは、AESで暗号化されたパケットがポート6000を介してC2ドメインberlin101.comに送信されることを示しました。レポートでは、XWormの大規模なコマンドセットとプラグインアーキテクチャもカタログ化されました。
緩和策
FortiGuardは、マクロおよびOLE保護を有効にし、CVE-2018-0802パッチを適用し、メールコンテンツからのMsbuild、PowerShell、HTAファイルの実行を制限することを推奨します。観測された指標に関連付けられているウェブフィルタリング、フィッシング対策制御、およびIDS/IPSシグネチャを展開して、ゲートウェイでの配信とステージングをブロックします。特にPowerShellから起動されたMsbuild.exeでの異常なプロセスツリーを監視し、早期のエクスプロイトの表面化を目指します。
対応策
検出時には、影響を受けたエンドポイントを隔離し、悪意のあるプロセスを終了し、メモリからロードされたXWormモジュールを駆逐します。コマンドラインのテレメトリー、ネットワークログ、レジストリの変更を含むフォレンジックアーティファクトを収集して侵入の範囲を把握します。潜在的に侵害された資格情報をリセットし、脆弱なEquation Editorコンポーネントを更新し、悪意のあるドメインおよびC2サーバーをブロックします。EDR/SIEM検出への脅威インテルの更新を適用し、再発防止および環境全体での関連活動を検索します。
graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% アクションノード action_phishing[“<b>アクション</b> – T1566.001<br/><b>名称</b>: スピアフィッシング添付ファイル<br/><b>説明</b>: メールで配信される悪意あるExcel .xlam”] class action_phishing action action_user_exec[“<b>アクション</b> – T1204.002<br/><b>名称</b>: ユーザー実行<br/><b>説明</b>: 被害者が添付Excelファイルを開く”] class action_user_exec action exploit_eqnedt[“<b>アクション</b> – T1203<br/><b>名称</b>: クライアント実行のためのエクスプロイト (CVEu20112018u20110802)<br/><b>説明</b>: Equation Editor脆弱性によりシェルコード実行”] class exploit_eqnedt action defense_evasion[“<b>アクション</b> – T1211<br/><b>名称</b>: 防御回避のためのエクスプロイト<br/><b>説明</b>: 脆弱性が従来の防御を回避”] class defense_evasion action action_powershell[“<b>アクション</b> – T1059.001<br/><b>名称</b>: PowerShell実行<br/><b>説明</b>: Base64をデコードし、隠し.NETモジュール付きJPEGをダウンロードしてJScriptを実行”] class action_powershell action action_reflective_load[“<b>アクション</b> – T1620<br/><b>名称</b>: リフレクティブコードロード<br/><b>説明</b>: .NETアセンブリを直接メモリにロード”] class action_reflective_load action action_process_hollowing[“<b>アクション</b> – T1055.012<br/><b>名称</b>: プロセスホローイング<br/><b>説明</b>: 一時停止中のMsbuildプロセスにXWorm RATを注入”] class action_process_hollowing action module_shared[“<b>アクション</b> – T1129<br/><b>名称</b>: 共有モジュール<br/><b>説明</b>: 必要時にロードされる.NETプラグイン”] class module_shared action persistence_active_setup[“<b>アクション</b> – T1547.014<br/><b>名称</b>: Active Setup永続化<br/><b>説明</b>: プラグインバイナリをHKCUレジストリキーに保存”] class persistence_active_setup action action_query_registry[“<b>アクション</b> – T1012<br/><b>名称</b>: レジストリ照会<br/><b>説明</b>: プラグインデータと設定を読み取り”] class action_query_registry action encryption_aes[“<b>アクション</b> – T1001<br/><b>名称</b>: データ難読化<br/><b>説明</b>: すべてのC2通信をAES暗号化”] class encryption_aes action c2_https[“<b>アクション</b> – T1102.003<br/><b>名称</b>: 一方向Webサービス通信<br/><b>説明</b>: berlin101.com:6000への暗号化HTTPS”] class c2_https action %% ツールノード tool_excel_xlam[“<b>ツール</b> – Excel .xlam添付ファイル”] class tool_excel_xlam tool tool_mshta[“<b>ツール</b> – mshta.exe”] class tool_mshta tool tool_powershell[“<b>ツール</b> – PowerShell”] class tool_powershell tool tool_msbuild[“<b>ツール</b> – Msbuild.exe”] class tool_msbuild tool %% マルウェアノード malware_dotnet_module[“<b>マルウェア</b> – 隠し.NETモジュール”] class malware_dotnet_module malware malware_xworm[“<b>マルウェア</b> – XWorm RAT”] class malware_xworm malware %% プロセスノード process_shellcode[“<b>プロセス</b> – シェルコード実行”] class process_shellcode process proc_mshta[“<b>プロセス</b> – mshtaプロセス”] class proc_mshta process proc_msbuild[“<b>プロセス</b> – Msbuildプロセス (一時停止)”] class proc_msbuild process %% 接続 action_phishing –>|添付を配信| tool_excel_xlam tool_excel_xlam –>|被害者が開く| action_user_exec action_user_exec –>|トリガー| exploit_eqnedt exploit_eqnedt –>|有効化| defense_evasion defense_evasion –>|実行| process_shellcode process_shellcode –>|起動| proc_mshta proc_mshta –>|実行| tool_mshta tool_mshta –>|ダウンロードして実行| action_powershell action_powershell –>|ロード| malware_dotnet_module malware_dotnet_module –>|メモリ内でホスト| action_reflective_load action_reflective_load –>|ペイロードをホスト| proc_msbuild proc_msbuild –>|開始元| tool_msbuild tool_msbuild –>|経由でホスト| action_process_hollowing action_process_hollowing –>|注入| malware_xworm malware_xworm –>|使用| module_shared module_shared –>|経由で保存| persistence_active_setup persistence_active_setup –>|設定読み取り| action_query_registry action_query_registry –>|暗号化| encryption_aes encryption_aes –>|送信先| c2_https
攻撃フロー
検出
疑わしいPowershell文字列(powershell経由)
表示
関連するコマンドの検出による疑わしいLOLBAS MSHTA防御回避の挙動(process_creation経由)
表示
疑わしいPowershell文字列(cmdline経由)
表示
Powershellから疑わしい.NETメソッドを呼び出す(powershell経由)
表示
検出するIOCs(HashSha256):マルチテーマのフィッシングメールを利用した新しいXWormキャンペーンの詳細解析
表示
複数の攻撃ベクトルを伴うCVE-2018-0802を悪用したXWormキャンペーン[Windowsプロセス作成]
表示
XWormキャンペーンでのBase64エンコードされたPowerShellペイロードの検出[Windows Powershell]
表示
シミュレーション実行
前提条件:テレメトリーとベースラインの事前チェックが合格している必要があります。
根拠:このセクションでは、検出ルールをトリガーするように設計された攻撃者技術(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリーを生成することを目的としています。
-
攻撃の物語とコマンド:
- 初期ドロップ: 攻撃者は、CVE-2018-0802を悪用する悪意のあるExcelファイルを配信します。シミュレーションのために、エクスプロイトをバイパスし、直接ペイロードを起動します。
- EQNEDT32.EXEを介したプロセスホロウイング: 起動
EQNEDT32.EXEをコマンドラインで呼び出しShellExecuteExW()を正当なOfficeコンポーネントとして偽装する。 - Msbuild.exe横方向実行: スパン
Msbuild.exeを伴うCreateProcessA()を使用してステルスな.NETペイロードをすぐにコンパイルする。 - ファイルレス.NET実行: Use
powershell.exeは、リフレクティブな.NETアセンブリ(T1620)をロードするBase64でエンコードされたコマンドを含んでいます。コマンドラインはルールを満たすために文字列CreateProcessA()を含みます。
-
回帰テストスクリプト:
<# XWorm実行チェーンをシミュレートする: 1. EQNEDT32.exeとShellExecuteExW() 2. Msbuild.exeとCreateProcessA() 3. エンコードされた.NETリフレクティブローダを含むPowerShell #> # 1. EQNEDT32.exe(プロセスホロウイング) $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE" $eqnArgs = "-Command "ShellExecuteExW()"" Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden # 2. Msbuild.exe(動的DLLインジェクション) $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe" $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()"" Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden # 3. PowerShell(ファイルレス.NETリフレクティブロード) # サンプル.NETペイロード(プレースホルダ)Base64でエンコード $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ==" # ダミーBase64 $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()"" Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden Write-Host "XWormシミュレーション完了。" -
クリーンアップコマンド:
# 残留するシミュレーションプロセスを終了する Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force # 一時ファイルを削除する(この純粋なプロセスシミュレーションでは作成されませんでした) Write-Host "クリーンアップ完了。"