SOC Prime Bias:

17 Jun 2026 12:58 UTC

どのようにVHDXファイルがRemcos RATを配信するか

Author Photo
SOC Prime Team linkedin icon フォローする
どのようにVHDXファイルがRemcos RATを配信するか
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

サマリー

多段階のマルウェアキャンペーンは、一般的なセキュリティコントロールを回避するために、VHDXディスクイメージを含む武器化されたZIPアーカイブを使用します。VHDXがマウントされると、難読化されたJavaScriptファイルが実行され、WMIを通じて一連のPowerShellステージを起動します。最終ペイロードはRemcos RATで、正規のWindowsプロセスに注入されてその実行を隠蔽します。

調査

リサーチャーは、悪意のあるZIPアーカイブと組み込まれたVHDXコンテナを調べて、完全な攻撃フローを再構築しました。分析により、WMIベースのプロセス作成を利用した親子関係の偽装、XORおよびBase64文字列難読化、反射型.NETローダーを含む複雑な実行チェーンが明らかになりました。感染経路は、最初のJavaScript実行から最終的なRemcosペイロードの展開まで成功裏に追跡されました。

緩和策

組織は、信頼できないソースからのVHDXディスクイメージのマウントを防止するため、厳格なコントロールを適用するべきです。セキュリティツールはまた、 Win32_Process.Create JavaScriptやPowerShellなどのスクリプトエンジンによってトリガーされる疑わしい活動を監視するべきです。既知の悪意のあるドメインをブロックし、レジストリ内の異常なRunキーの持続性を監視することで、リスクをさらに低減できます。

対応

この活動が検出された場合、指令と管理通信を停止させるために、影響を受けたエンドポイントを直ちに隔離してください。注入されたRemcosペイロードと反射型.NETローダーをキャプチャするためにメモリダンプを取得してください。その後、完全なフォレンジックレビューを実施して、悪意のあるRunキーのエントリ、追加のVHDXファイル、環境内の他の部分での疑わしいPowerShell活動を検索してください。

graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% 初期アクセスと実行 action_phishing[“<b>アクション</b> – <b>T1566.001 フィッシング: スピアフィッシング添付ファイル</b><br/>説明: 悪意のあるZIPアーカイブを<br/>メール経由で配布する。”] class action_phishing action action_user_exec[“<b>アクション</b> – <b>T1204.002 ユーザー実行: 悪意のあるファイル</b><br/>説明: ユーザーが<br/>悪意のあるZIPファイルを実行する。”] class action_user_exec action tool_vhdx[“<b>ツール</b> – <b>名前</b>: VHDXファイル<br/>説明: Escape to Host T1611を利用して<br/>ペイロードを隠すためのマルウェアコンテナ。”] class tool_vhdx tool %% 難読化とスクリプト file_js[“<b>ファイル</b>: Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>説明</b>: 文字列汚染およびXOR復号化を使用した<br/>コマンド難読化 T1027.010 を実装する悪意のあるJavaScriptファイル。”] class file_js tool action_wmi[“<b>アクション</b>: WMI経由のPowerShell<br/><b>説明</b>: WMIを使用してPowerShellスクリプトを起動し、<br/>プロセス関係監視を回避する。”] class action_wmi action %% 侵入ツール転送とマルウェア段階 action_ingress_1[“<b>アクション</b> – <b>T1105 侵入ツール転送</b><br/><b>説明</b>: PowerShellスクリプトが<br/>第2段階ファイルをダウンロードする。”] class action_ingress_1 action file_dsp[“<b>ファイル</b>: Exoticisms121.dsp<br/><b>説明</b>: %APPDATA% に保存される<br/>第2段階ファイル。”] class file_dsp tool tool_loader[“<b>ツール</b>: リフレクティブ .NET ローダー<br/><b>説明</b>: 第2段階ファイルから<br/>シェルコードを実行する。”] class tool_loader tool action_ingress_2[“<b>アクション</b> – <b>T1105 侵入ツール転送</b><br/><b>説明</b>: シェルコードが<br/>最終ペイロード Remcos RAT を取得する。”] class action_ingress_2 action malware_remcos[“<b>マルウェア</b>: Remcos RAT<br/>説明: コマンド&コントロール TA0011 のために<br/>確立される最終ペイロード。”] class malware_remcos malware %% プロセスとC2 process_bg_task[“<b>プロセス</b>: backgroundTaskHost.exe<br/>説明: マルウェア注入の<br/>対象プロセス。”] class process_bg_task process c2_server[“<b>C2サーバー</b>: animal342.duckdns.org:53562<br/>説明: コマンド&コントロール通信に<br/>使用されるリモートサーバー。”] class c2_server tool %% 永続化 action_persistence[“<b>アクション</b> – <b>T1547.001 ブートまたはログオン自動開始実行: Registry Run キー / Startupフォルダ</b><br/>説明: cmd.exeを使用してPowerShellローダー用の<br/>レジストリ自動起動キーを作成する。”] class action_persistence action %% 接続 action_phishing –>|につながる| action_user_exec action_user_exec –>|を展開する| tool_vhdx tool_vhdx –>|を含む| file_js file_js –>|WMI経由で実行| action_wmi action_wmi –>|実行する| action_ingress_1 action_ingress_1 –>|ダウンロードする| file_dsp file_dsp –>|処理される| tool_loader tool_loader –>|実行する| action_ingress_2 action_ingress_2 –>|取得する| malware_remcos malware_remcos –>|注入する| process_bg_task malware_remcos –>|通信する| c2_server malware_remcos –>|確立する| action_persistence

攻撃フロー

## シミュレーションの実行

前提条件:テレメトリおよびベースラインの事前フライトチェックが合格している必要があります。

理由:このセクションでは、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診につながる可能性があります。

  • 攻撃の説明とコマンド: 対戦相手は、伝統的なAVによる検出を回避するためにメモリ内で悪意のあるペイロードを実行することを目指しています。彼らはPowerShellスクリプトを利用し、 [System.Reflection.Assembly]::Load() を使用して、コンパイル済みの.NET DLLをバイト配列から直接カレントプロセスに取り込みます。持続性を維持し、監視を逃れるために、 backgroundTaskHost.exe、正規のWindowsプロセスを利用して、標準のシステムバックグラウンドタスク内に実行スレッドを隠そうとしています。

  • リグレッションテストスクリプト:

    # シミュレーションスクリプト: Reflective .NETロードとプロセスの相互作用
    # このスクリプトは、検出ルールにキャプチャされたロジックを模倣します。
    
    # 1. ダミーバイト配列を作成し、.NETアセンブリを表す(シミュレーション用に簡略化)
    $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # MZヘッダーを模倣
    
    Write-Host "[+] Reflective .NETアセンブリの読み込みを試みています..." -ForegroundColor Cyan
    try {
        # この特定の文字列は検出ルールの目標です
        $assembly = [System.Reflection.Assembly]::Load($assemblyBytes)
        Write-Host "[!] 成功:アセンブリがメモリに読み込まれました(シミュレーションのみ)。" -ForegroundColor Green
    } catch {
        Write-Host "[-] アセンブリの読み込みが失敗しました(無効なダミーバイトのために予期される)、ただしコマンドは送信された。" -ForegroundColor Yellow
    }
    
    Write-Host "[+] detectionをトリガーするためにbackgroundTaskHost.exeを起動しています..." -ForegroundColor Cyan
    # この特定の文字列は検出ルールの目標です
    Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection"
  • クリーンアップコマンド:

    # クリーンアップ:起動したbackgroundTaskHostプロセスを終了する
    Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue
    Write-Host "[+] クリーンアップ完了。BackgroundTaskHostが終了されました。" -ForegroundColor Green