SOC Prime Bias: 重大

07 4月 2026 18:30

Mustang PandaとPlugX:フィッシング主導のローダー操作への徹底的な分析

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
Mustang PandaとPlugX:フィッシング主導のローダー操作への徹底的な分析
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

このレポートは、中国系のMustang Pandaグループによる多段階侵入について記述しています。この連鎖は、武装されたWindowsショートカット(LNK)から始まり、PowerShellローダーを起動します。そのローダーはデコイZIPをドロップし、暗号化されたDLLを抽出し、最終的には反射的読み込みとスレッドプール注入を使用してPlugXリモートアクセス型トロイの木馬を展開します。コマンドアンドコントロールのトラフィックはHTTPSを介してcoastallasercompany.comに関連するインフラに送信されます。このインプラントはAPIハッシング、PEBウォーキング、および静的検出を低減するための高度なストリング難読化などの回避技術も実装しています。

調査

アナリストは、最初のLNK起動、PowerShellステージング、DLLサイドローディング、メモリ内復号化、最終的なPlugX実行時を含む実行経路を再構築しました。ツールはDJB2風のAPIハッシングとインポート解決にROL-13ハッシングを使用し、RC4で暗号化された設定バイナリを持っています。HKCU Runレジストリキーの変更を通じて永続性が観察されました。調査では、ファイル名、ハッシュ、HTTPSビーコニングに使用されたC2ドメインを含む検出向けの指標が抽出されました。

緩和策

信頼できない.lnkファイルをブロックまたは隔離し、特にユーザー書き込み可能な場所から読み書きするスクリプトのPowerShell実行を制限します。%LocalAppData%以下でのランダムに生成されたGUIDのような名前の疑わしいファイル作成を監視し、サイドローディングの機会を減らすためにDLL検索順序の動作を強化します。識別されたC2ドメインへのアクセスを拒否するためにDNS/プロキシ制御を適用し、異常なHTTPSビーコンパターンを表面化するために適切な場所でTLS検査を使用します。

対応

疑わしい活動が検出された場合、ホストを隔離し、揮発性メモリをキャプチャし、深い分析のために暗号化された設定を保存します。抽出されたIOCを確認し、ドロップされたアーティファクトを削除し、悪意のあるHKCU Run永続化エントリを削除します。範囲内で資格情報を更新し、PlugXオペレーターのトレードクラフトと一致する横方向の動きの兆候を探します。

"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef artifact fill:#ccffcc classDef process fill:#ccccff classDef registry fill:#ffe599 %% Initial Access initial_zip["<b>アーティファクト</b> – 疑わしいZIPアーカイブが.lnkを含む"] class initial_zip artifact lnk_shortcut["<b>アーティファクト</b> – 隠れたアイコン付きショートカット(.lnk)"] class lnk_shortcut artifact tech_lnk_smack["<b>テクニック</b> – T1027.012 LNKアイコン密輸<br/><b>説明</b>: LNKアイコンを使用して悪意のあるペイロードを隠蔽する"] class tech_lnk_smack technique tech_user_exec["<b>テクニック</b> – T1204.002 ユーザー実行: 悪意のあるファイル<br/><b>説明</b>: 被害者が悪意のあるファイルを開く"] class tech_user_exec technique %% Execution psh_stage["<b>プロセス</b> – .lnkによって実行されたPowerShellステージ"] class psh_stage process tech_psh["<b>テクニック</b> – T1059.001 PowerShell<br/><b>説明</b>: コマンドとスクリプトインタープリター"] class tech_psh technique tech_archive_custom["<b>テクニック</b> – T1560.003 カスタムメソッドによるアーカイブ<br/><b>説明</b>: ZIPを生バイトとして読み取る"] class tech_archive_custom technique extracted_exe["<b>アーティファクト</b> – 抽出された合法性の高い実行ファイル"] class extracted_exe artifact malicious_dll["<b>アーティファクト</b> – Eraser.dll (悪意あり)"] class malicious_dll artifact encrypted_dat["<b>アーティファクト</b> – 暗号化された.datペイロード"] class encrypted_dat artifact %% Persistence run_key["<b>レジストリ</b> – HKCUSoftwareMicrosoftWindowsCurrentVersionRunエントリ"] class run_key registry tech_run_key["<b>テクニック</b> – T1037.001 ログオンスクリプト (ブートまたはログオン初期化スクリプト)<br/><b>説明</b>: 起動キーの永続性"] class tech_run_key technique shortcut_mod["<b>テクニック</b> – T1547.009 ショートカット修正<br/><b>説明</b>: 自動起動のためにショートカットを修正する"] class shortcut_mod technique active_setup["<b>テクニック</b> – T1547.014 アクティブセットアップ<br/><b>説明</b>: アクティブセットアップを介した自動起動用レジストリエントリ"] class active_setup technique psh_profile["<b>テクニック</b> – T1546.013 PowerShellプロファイル<br/><b>説明</b>: 実行用のPowerShellプロファイルにフックする"] class psh_profile technique %% Defense Evasion tech_compress["<b>テクニック</b> – T1027.015 圧縮<br/><b>説明</b>: ZIP内のペイロードを圧縮する"] class tech_compress technique tech_dynamic_api["<b>テクニック</b> – T1027.007 動的API解決<br/><b>説明</b>: ランタイムにハッシュを使用してAPIを解決する"] class tech_dynamic_api technique tech_embedded["<b>テクニック</b> – T1027.009 埋め込みペイロード<br/><b>説明</b>: 暗号化されたペイロードを埋め込む"] class tech_embedded technique tech_deobfuscate["<b>テクニック</b> – T1140 難読化/ファイルまたは情報をデコードする<br/><b>説明</b>: RC4/XOR復号化を実行時に行う"] class tech_deobfuscate technique tech_masquerade["<b>テクニック</b> – T1036.008 偽装: ファイルタイプの偽装<br/><b>説明</b>: デコイPDFのオーバーレイ"] class tech_masquerade technique %% Privilege Escalation / Execution tech_reflective["<b>テクニック</b> – T1620 反射的コード読み込み<br/><b>説明</b>: ディスクに触れずにメモリ内にDLLを読み込む"] class tech_reflective technique tech_injection["<b>テクニック</b> – T1055.001 プロセスインジェクション: DLLインジェクション<br/><b>説明</b>: PEBウォーキングとスレッドプールのコールバックを介してDLLを注入する"] class tech_injection technique %% Command and Control c2_https["<b>プロセス</b> – HTTPS C2通信(port 443)"] class c2_https process tech_nonstd_port["<b>テクニック</b> – T1571 標準外ポート<br/><b>説明</b>: トラフィックを紛らわせるために一般的なポートを使用する"] class tech_nonstd_port technique tech_dead_drop["<b>テクニック</b> – T1102.001 デッドドロップリゾルバー<br/><b>説明</b>: ウェブサービスからサーバーアドレスを取得する"] class tech_dead_drop technique tech_proxy["<b>テクニック</b> – T1090.002 プロキシ: 外部プロキシ<br/><b>説明</b>: 外部プロキシを経由してトラフィックをルーティングする"] class tech_proxy technique %% Connections initial_zip –>|contains| lnk_shortcut lnk_shortcut –>|uses| tech_lnk_smack lnk_shortcut –>|triggers| tech_user_exec tech_user_exec –>|leads to| psh_stage psh_stage –>|executes| tech_psh psh_stage –>|reads| tech_archive_custom tech_archive_custom –>|extracts| extracted_exe tech_archive_custom –>|extracts| malicious_dll tech_archive_custom –>|extracts| encrypted_dat psh_stage –>|writes| run_key run_key –>|implements| tech_run_key psh_stage –>|creates| shortcut_mod psh_stage –>|creates| active_setup psh_stage –>|hooks| psh_profile psh_stage –>|applies| tech_compress psh_stage –>|applies| tech_dynamic_api psh_stage –>|applies| tech_embedded psh_stage –>|applies| tech_deobfuscate psh_stage –>|applies| tech_masquerade malicious_dll –>|acts as| tech_reflective malicious_dll –>|performs| tech_injection tech_injection –>|enables| c2_https c2_https –>|uses| tech_nonstd_port c2_https –>|uses| tech_dead_drop c2_https –>|may route through| tech_proxy %% Class assignments class initial_zip,lnk_shortcut,extracted_exe,malicious_dll,encrypted_dat artifact class psh_stage,c2_https process class run_key registry class tech_lnk_smack,tech_user_exec,tech_psh,tech_archive_custom,tech_run_key,shortcut_mod,active_setup,psh_profile,tech_compress,tech_dynamic_api,tech_embedded,tech_deobfuscate,tech_masquerade,tech_reflective,tech_injection,tech_nonstd_port,tech_dead_drop,tech_proxy technique "

攻撃フロー

検知

Eraser DLLサイドローディング試行の可能性 (image_load経由)

SOC Primeチーム
2026年4月3日

隠されたPowerShellコマンドラインを通した実行の可能性 (cmdline経由)

SOC Primeチーム
2026年4月3日

PowerShellから疑わしい.NETメソッドを呼び出す (powershell経由)

SOC Primeチーム
2026年4月3日

Powershellコマンドラインから疑わしい.NETクラス/メソッドを呼び出す (process_creation経由)

SOC Primeチーム
2026年4月3日

PlugXを検出するためのIOC (HashSha256): Mustang Panda APT内部のMustang Panda: スピアフィッシングチェーンからPlugXへ – ローダーインフラストラクチャの詳細な調査

SOC Prime AI Rules
2026年4月3日

PlugXを検出するためのIOC (HashSha1): Mustang Panda APT内部のMustang Panda: スピアフィッシングチェーンからPlugXへ – ローダーインフラストラクチャの詳細な調査

SOC Prime AI Rules
2026年4月3日

PlugXを検出するためのIOC (HashMd5): Mustang Panda APT内部のMustang Panda: スピアフィッシングチェーンからPlugXへ – ローダーインフラストラクチャの詳細な調査

SOC Prime AI Rules
2026年4月3日

隠れたPowerShellウィンドウの実行とデコイアーカイブの展開 [Windows Powershell]

SOC Prime AI Rules
2026年4月3日

ErsChk.exeによる悪意のあるDLLサイドローディングの検知 [Windowsプロセス作成]

SOC Prime AI Rules
2026年4月3日

シミュレーション実行

前提条件: テレメトリとベースラインの事前確認が通過していること。

理由: このセクションは、検出ルールをトリガーするために設計された敵対者の技術(TTP)の正確な実行を詳細に説明します。コマンドとナラティブは識別されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。

  • 攻撃の流れとコマンド:
    攻撃者は、侵害されたワークステーションで足場を得て、ユーザーに気づかれずに悪意のあるペイロードを準備したいと考えています。彼らはPowerShellを隠しモードで起動し(-w hidden)、UIのポップアップを避けます。同じPowerShellセッション内で、組み込みの tar ユーティリティ(最新のWindowsビルドで利用可能)を使用して、次の段階のペイロードを含むデコイアーカイブを直接 %LocalAppData%という、通常は防御によって見逃されがちな書き込み可能な場所に抽出します。

    ステップ:

    1. 小さなtarアーカイブ(payloads.tar)を作成し、無害なダミーファイル(悪意のあるペイロードを模したもの)を含めます。
    2. アーカイブを一時的な場所に保存します(C:Temp).
    3. )PowerShellの隠しウィンドウを実行し、 tar ターゲットした抽出コマンドを実行します %LocalAppData%.
  • 回帰テストスクリプト:

    # ---------------------------------------------------------
    # ステップ1 – サンプルtarアーカイブを準備する(ペイロードを模擬する)
    # ---------------------------------------------------------
    $tempDir   = "C:Temp"
    $archive   = "$tempDirpayloads.tar"
    $payload   = "$tempDirdummy.txt"
    $destDir   = "$Env:LocalAppDataStagedPayloads"
    
    # 一時フォルダが存在することを確認する
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # アーカイブするダミーファイルを作成する
    "これはダミーペイロードファイルです。" | Set-Content -Path $payload -Encoding UTF8
    
    # tarアーカイブを作成する(Windows tarが必要)
    tar -cf $archive -C $tempDir dummy.txt
    
    # ---------------------------------------------------------
    # ステップ2 – アーカイブを抽出するために隠しPowerShellを実行する
    # ---------------------------------------------------------
    $extractCmd = "tar -xvf `"$archive`" -C `"$Env:LocalAppData`""
    $psArgs     = "-NoProfile -WindowStyle Hidden -Command `$extractCmd"
    
    Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden
    
    # ---------------------------------------------------------
    # ステップ3 – オプション: 抽出を検証する(手動検証用)
    # ---------------------------------------------------------
    Write-Host "Extraction complete. Files should now exist in $Env:LocalAppData"
  • クリーンアップコマンド:

    # 一時ファイルとステージされたペイロードを削除する
    Remove-Item -Path "C:Temppayloads.tar" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "C:Tempdummy.txt"   -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$Env:LocalAppDatadummy.txt" -Force -ErrorAction SilentlyContinue
    # もし作成された場合、ステージングフォルダ全体を削除する
    Remove-Item -Path "$Env:LocalAppDataStagedPayloads" -Recurse -Force -ErrorAction SilentlyContinue