SOC Prime Bias: クリティカル

08 4月 2026 18:14

UAT-10608 公開: ウェブアプリケーションに対する自動化された大規模な資格情報窃盗

Author Photo
Ruslan Mikhalov SOC Primeの脅威リサーチ責任者 linkedin icon フォローする
UAT-10608 公開: ウェブアプリケーションに対する自動化された大規模な資格情報窃盗
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Cisco Talosは、Next.jsアプリでのReact2Shellの弱点を利用して、大規模なオペレーションで資格情報を大量に盗む活動を報告しています。攻撃者は、NEXUS Listenerと呼ばれる専用のフレームワークを使用して、環境変数、SSH鍵、クラウドとKubernetesのトークン、API資格情報など、侵害されたホストから高価値の秘密情報を抽出します。Talosは複数の地域とクラウドプロバイダーにわたって766以上の影響を受けたシステムを観測しました。盗まれたデータはHTTPコールバックを介して中央のC2エンドポイントにプッシュされます。

調査

Talosは、CVE-2025-55182を介して届けられるペイロードを分析し、無作為に名付けられたシェルスクリプトを/tmpにドロップし、継続的に実行するためにnohupを使用してそれを実行します。このスクリプトは、環境の秘密情報、SSH資料、クラウドメタデータ、Kubernetesのトークン、Dockerの詳細、コマンド履歴をカバーする段階的な収集モジュールを実行します。結果はポート8080を介してNEXUS Listenerサービスに戻されます。調査員は、NEXUS ListenerのWeb UI、バックエンドデータストレージ、関連するネットワークテレメトリをレビューして、資格情報の種類と収集の規模を検証しました。

緩和策

影響を受けた Next.js 展開を修正してReact2Shellの露出を軽減します。クラウドメタデータエンドポイントでIMDSv2を施行し、潜在的に露出した秘密を即座に回転させ、環境と役割によるSSH鍵の使用を分離します。SSXスタイルのインジェクション試みをキャッチするように設計されたRASP制御またはWAFルールを追加します。クラウドチームはシークレットスキャンを有効にし、インスタンスの役割の権限を最小限にし、機密の環境変数の偶発的な露出を防ぐためにサーバー側の構成をレビューする必要があります。

対応

特にドットプレフィックスまたは無作為に名付けられたファイルから/tmpで実行される意図しないnohup発生スクリプトを警戒し、ポート8080で不明な宛先へのアウトバウンドHTTPトラフィックを監視します。既知のNEXUS Listenerコールバックパターンと一致する流出URLをブロックします。影響を受けたホストを隔離し、侵害された鍵/トークンを取り消し、収集されたデータがどこで使用されたかを理解するために法医学的なレビューを行います。React2Shellの悪用を検出するためのIDS検出を展開し、メタデータと秘密ストアに対する最小権限アクセスを強化します。

"graph TB %% クラス定義 classDef technique fill:#ffcc99 classDef tool fill:#99ccff classDef malware fill:#ccffcc %% ノード定義 tech_initial_access["<b>技術</b> – <b>T1189 ドライブバイ妥協</b><br/><b>説明</b>: 攻撃者は、パブリックに面したウェブサイトの脆弱性を利用して、犠牲者のシステムでコードを実行することで初期アクセスを得ます。"] class tech_initial_access technique tool_react2shell["<b>ツール</b> – <b>名前</b>: React2Shell (CVE-2025-55182)<br/><b>説明</b>: Next.jsアプリにおける認証前リモートコード実行の脆弱性。"] class tool_react2shell tool tech_exploit_client["<b>技術</b> – <b>T1203 クライアント実行のためのエクスプロイト</b><br/><b>説明</b>: ターゲットシステムでコードを実行するためのソフトウェアの脆弱性を利用します。"] class tech_exploit_client technique tech_script_proxy["<b>技術</b> – <b>T1216 システムスクリプトプロキシ実行</b><br/><b>説明</b>: システムスクリプトを使用して悪意のコードの実行をプロキシします。"] class tech_script_proxy technique malware_loader["<b>マルウェア</b> – <b>名前</b>: ローダースクリプト<br/><b>説明</b>: ランダムな名前で/tmpに配置され、nohupで起動される小さなシェルスクリプト。"] class malware_loader malware tech_hide_artifacts["<b>技術</b> – <b>T1564.011 アーティファクトの隠蔽: プロセス中断を無視する</b><br/><b>説明</b>: 発見を回避するためにバックグラウンドで悪意のあるプロセスを実行します。"] class tech_hide_artifacts technique tech_network_logon["<b>技術</b> – <b>T1037.003 ネットワークログオンスクリプト</b><br/><b>説明</b>: ユーザーがネットワークにログオンするたびに実行されるログオンスクリプトを設定します。"] class tech_network_logon technique tech_private_keys["<b>技術</b> – <b>T1552.004 プライベートキー</b><br/><b>説明</b>: ファイルシステムからSSHプライベートキーを検索して抽出します。"] class tech_private_keys technique tech_credentials_files["<b>技術</b> – <b>T1552.001 ファイル内の資格情報</b><br/><b>説明</b>: .env、authorized_keys、Docker構成などのファイルに保存された資格情報を収集します。"] class tech_credentials_files technique tech_cloud_metadata["<b>技術</b> – <b>T1552.005 クラウドインスタンスメタデータAPI</b><br/><b>説明</b>: クラウドプロバイダーメタデータサービスをクエリして一時的なIAM資格情報を取得します。"] class tech_cloud_metadata technique tech_container_api["<b>技術</b> – <b>T1552.007 コンテナAPI</b><br/><b>説明</b>: ポッドのファイルシステムからKubernetesサービスアカウントのトークンにアクセスします。"] class tech_container_api technique tech_remote_staging["<b>技術</b> – <b>T1074.002 リモートデータのステージング</b><br/><b>説明</b>: 流出する前に収集データをローカルでステージングします。"] class tech_remote_staging technique tech_automated_exfil["<b>技術</b> – <b>T1020 自動化されたデータ流出</b><br/><b>説明</b>: スクリプトプロセスを通じてデータ流出を自動化します。"] class tech_automated_exfil technique tech_web_service["<b>技術</b> – <b>T1102 ウェブサービス</b><br/><b>説明</b>: コマンドとコントロールの通信に合法的なウェブサービスを利用します。"] class tech_web_service technique tech_dead_drop["<b>技術</b> – <b>T1102.001 ドロップリゾルバ</b><br/><b>説明</b>: 流出したデータをデッドドロップ場所として機能するウェブサービスに保存します。"] class tech_dead_drop technique tech_ssh["<b>技術</b> – <b>T1021.004 SSH</b><br/><b>説明</b>: リモートサービスの横移動にSSHを使用します。"] class tech_ssh technique tech_ssh_hijack["<b>技術</b> – <b>T1563.001 SSHハイジャック</b><br/><b>説明</b>: 収集したプライベートキーを再利用して既存のSSHセッションをハイジャックします。"] class tech_ssh_hijack technique tool_nexus["<b>ツール</b> – <b>名前</b>: NEXUS Listener<br/><b>説明</b>: 収集されたデータを受信してオペレーターに表示するウェブベースのGUI。"] class tool_nexus tool %% 接続 tech_initial_access –>|使用| tool_react2shell tool_react2shell –>|起動| tech_exploit_client tech_exploit_client –>|有効化| tech_script_proxy tech_script_proxy –>|開始| malware_loader malware_loader –>|適用| tech_hide_artifacts malware_loader –>|設置| tech_network_logon malware_loader –>|収集| tech_private_keys malware_loader –>|収集| tech_credentials_files malware_loader –>|クエリ| tech_cloud_metadata malware_loader –>|アクセス| tech_container_api malware_loader –>|ステージング| tech_remote_staging tech_remote_staging –>|によって流出| tech_automated_exfil tech_automated_exfil –>|使用| tech_web_service tech_automated_exfil –>|使用| tech_dead_drop tech_web_service –>|C2提供| tool_nexus tool_nexus –>|有効化| tech_ssh tech_ssh –>|追加| tech_ssh_hijack tech_ssh_hijack –>|再利用| tech_private_keys "

攻撃フロー

シミュレーション実行

前提条件: テレメトリ & ベースラインの予備チェックをパスしている必要があります。

理由: このセクションは、検出ルールをトリガーするために設計されたアドバーサリーテクニック (TTP) の正確な実行を詳細に説明します。コマンドとナレーションは、特定されたTTPに直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目的としています。

  • 攻撃の説明とコマンド:
    攻撃者が資格情報収集スクリプトのコピーを入手しました (.eba9ee1e4.sh) が /etc/passwdを読み取り、SSH鍵を検索し、ターゲットのWebアプリケーションに対してブルートフォースログインを試みます。攻撃者はSSHセッション終了後もスクリプトを実行し続けるため、およびインタラクティブな監視を回避するために、スクリプトを /tmp/.eba9ee1e4.sh にアップロードし、nohup sh を使って起動します。検出ルールはリテラルコマンドラインを探しているため、この正確な実行が期待されるテレメトリを生成します。 を探しているため、この正確な実行が期待されるテレメトリを生成します。, this exact execution will generate the expected telemetry.

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

    #!/bin/bash
    # -------------------------------------------------------------
    # シグマルールをトリガーするためのリグレッションスクリプト:
    #   `nohup sh /tmp/.eba9ee1e4.sh`の検出
    # -------------------------------------------------------------
    
    # 1. 悪質と思われるスクリプトをドロップ (テストのための無害なコンテンツ)
    cat < /tmp/.eba9ee1e4.sh
    #!/bin/bash
    echo "シミュレートされた資格情報収集 - 実際の活動はありません"
    EOF
    chmod +x /tmp/.eba9ee1e4.sh
    
    # 2. nohupを使ってバックグラウンドでスクリプトを実行 (正確なコマンドライン)
    nohup sh /tmp/.eba9ee1e4.sh >/dev/null 2>&1 &
    
    echo "シミュレーションが開始されました - 検出のためにSIEMを確認してください。"
  • クリーンアップコマンド:

    # テストスクリプトの残り続けているバックグラウンドインスタンスを終了
    pkill -f "/tmp/.eba9ee1e4.sh" || true
    
    # テストスクリプトを削除
    rm -f /tmp/.eba9ee1e4.sh
    
    echo "クリーンアップ完了。"