複数のテーマのフィッシングメールを利用する新しい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検出への脅威インテルの更新を適用し、再発防止および環境全体での関連活動を検索します。
攻撃フロー
検出
疑わしい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 "クリーンアップ完了。"