シャイ=フルドのクローン:TeamPCPの模倣者が登場
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
研究者たちは、情報スティーラー機能と分散型サービス拒否(DDoS)機能を組み合わせた4つの悪意のあるnpmパッケージを発見しました。これらのパッケージはタイポスクワッティングを通じて人気のあるライブラリになりすまし、攻撃者が制御する指令・制御サーバーを使用するように改変されたオープンソースのShai-Huludコードを含んでいます。これらのパッケージのいずれかをインストールすると、資格情報の盗難、クラウドシークレットの抽出、またある場合には感染したホストをDDoSボットネットに参加させられる危険があります。この発見はnpmエコシステム内でのサプライチェーンリスクの高まりを浮き彫りにしています。
調査
アナリストは chalk-tempalte パッケージを漏洩したShai-Huludソースコードと比較し、カスタムの指令・制御エンドポイントで設定されたほぼ完全な未暗号化のコピーであることを発見しました。残りのパッケージは、盗まれたデータを別の悪意のあるドメインまたはポート 2222を介してIPアドレスに転送しました。ある変種はDDoS活動に使用されるGoベースのローカルボットサービスも展開しました。全てのパッケージは同じnpmアカウントによって公開され、これらの関係を強固にしました。
緩和策
企業は、これらの悪意のあるパッケージをすぐにプロジェクトから削除し、開発環境やビルドシステムから関連する構成アーティファクトを削除すべきです。露出した可能性のあるすべての資格情報はローテーションされるべきであり、該当する悪意のあるドメインやIPアドレスへのネットワークアクセスを遮断するべきです。チームはまた、同様の正当なライブラリを模倣するタイポスクワッティングされたパッケージのnpm依存関係を監視するべきです。
対応策
防御側は、特定された指令・制御ドメインおよびIPアドレスへの外部接続の検出を作成し、4つの悪意のあるパッケージ名のインストールを警告し、マルウェアに関連する公開鍵が埋め込まれているシステムをスキャンする必要があります。パッケージの1つをインストールしたシステムは、持続的なサービス、スケジュールタスク、追加のペイロードが配備されたかどうかを確認するためにフォレンジックレビューを受ける必要があります。
graph TB %% Class definitions classDef technique fill:#99ccff classDef operator fill:#ff9900 initial_access[“<b>テクニック</b> – <b>T1195.002 サプライチェーン侵害</b><br/>ソフトウェアのサプライチェーンを侵害し初期アクセスを獲得する。”] class initial_access technique automated_collection[“<b>テクニック</b> – <b>T1119 自動収集</b><br/>認証情報、環境変数、クラウド設定ファイルを自動的に収集する。”] class automated_collection technique creds_in_files[“<b>テクニック</b> – <b>T1552.001 保護されていない認証情報</b><br/>ファイル内に保存された認証情報を収集する。”] class creds_in_files technique private_keys[“<b>テクニック</b> – <b>T1552.004 保護されていない認証情報</b><br/>安全でない場所から秘密鍵を抽出する。”] class private_keys technique victim_identity[“<b>テクニック</b> – <b>T1589 被害者の識別情報収集</b><br/>被害者の個人識別情報を収集する。”] class victim_identity technique victim_org[“<b>テクニック</b> – <b>T1591.001 被害組織情報収集</b><br/>被害組織の物理的所在地を特定する。”] class victim_org technique code_repos[“<b>テクニック</b> – <b>T1213.003 情報リポジトリからのデータ</b><br/>コードリポジトリを収集する。”] class code_repos technique npm_persistence[“<b>テクニック</b> – <b>T1176 ソフトウェア拡張機能</b><br/>悪意あるnpmパッケージによる永続化。”] class npm_persistence technique exfil_over_http[“<b>テクニック</b> – <b>T1011 その他のネットワーク媒体による持ち出し</b><br/>HTTP/HTTPS経由でC2へデータ送信。”] class exfil_over_http technique cloud_transfer[“<b>テクニック</b> – <b>T1537 クラウドアカウントへのデータ転送</b><br/>盗んだデータをクラウドへ移動する。”] class cloud_transfer technique initial_access –>|へ続く| automated_collection automated_collection –>|収集| creds_in_files automated_collection –>|収集| private_keys automated_collection –>|収集| victim_identity automated_collection –>|収集| victim_org automated_collection –>|収集| code_repos automated_collection –>|収集| npm_persistence creds_in_files –>|持ち出し| exfil_over_http private_keys –>|持ち出し| exfil_over_http victim_identity –>|持ち出し| exfil_over_http victim_org –>|持ち出し| exfil_over_http code_repos –>|持ち出し| exfil_over_http npm_persistence –>|持ち出し| exfil_over_http exfil_over_http –>|保存先| cloud_transfer
攻撃フロー
検出
不審な実行可能ファイルのダウンロード(プロキシ経由)
見る
非通常ディレクトリでの可能性のあるVscode自動タスク構成ファイル作成[MACOS](ファイルイベントによる)
見る
標準ツールによるリモートファイルのアップロード/ダウンロード(cmdlineによる)
見る
非通常ディレクトリでの可能性のあるVscode自動タスク構成ファイル作成[LINUX](ファイルイベントによる)
見る
Linuxホストで作成された隠しファイル(ファイルイベントによる)
見る
可能性のある永続ポイント[ASEPs – ソフトウェア/NTUSERハイブ](レジストリエベントによる)
見る
永続性のためのSchtasksまたはATの使用の可能性(コマンドラインによる)
見る
可能性のある永続ポイント[ASEPs – ソフトウェア/NTUSERハイブ](コマンドラインによる)
見る
自動起動場所の怪しいバイナリ/スクリプト(ファイルイベントによる)
見る
IPルックアップドメインによる試みられた可能性のある通信(DNSによる)
見る
珍しいトップレベルドメイン(TLD)による不審な指揮・制御(DNSによる)
見る
直接実行のためのCrontab使用の可能性(コマンドラインによる)
見る
検出するIOC(SourceIP):新たなアクターがShai-Huludクローンを展開:TeamPCPがここに現れる
見る
検出するIOC(DestinationIP):新たなアクターがShai-Huludクローンを展開:TeamPCPがここに現れる
見る
Shai-Hulud C2サーバーへの外向きネットワーク接続の検出【ファイアウォール】
見る
悪意のあるNPMパッケージ実行の検出【Windowsプロセス作成】
見る
悪意のあるnpmパッケージ実行の検出【Linuxプロセス作成】
見る
シミュレーション実行
前提条件: テレメトリーとベースラインの事前フライトチェックが完了している必要があります。
根拠: このセクションは、検出ルールをトリガーするために設計された敵の技術を詳細に説明します。コマンドとナラティブはTTPで特定されたものを直接反映し、検出ロジックによって期待される正確なテレメトリーを生成することを目的としています。
-
攻撃の流れとコマンド:
- 初期リコン(オプション): 攻撃者は、犠牲者のNode.js環境を列挙して確認します。
npmが存在します。 - 悪意のあるパッケージ取得: 攻撃者は正当なユーティリティに似た悪意のあるnpmパッケージをダウンロードします(例:
@deadcode09284814/axios-util). - インストールと実行: 攻撃者は、1行のコマンドを使用してグローバルにパッケージをインストールし、すぐにリバースシェルを開くJavaScriptペイロードを実行します。
- 持続性(範囲外): 攻撃者は悪意のあるパッケージを
package.jsonに追加して、将来再利用することができます。
- 初期リコン(オプション): 攻撃者は、犠牲者のNode.js環境を列挙して確認します。
-
回帰テストスクリプト: スクリプトは、正確に手順2-3を反復し、Sigmaルールが一致するコマンドライン文字列を生成します。
# malicious_npm_execution.sh # ------------------------------------------------- # 1️⃣ Node.jsランタイムが存在することを確認 if ! command -v node >/dev/null 2>&1; then echo "[*] Node.jsとnpmをインストール中" sudo apt‑update && sudo apt‑install -y nodejs npm fi # 2️⃣ 悪意のあるnpmパッケージをインストール(シミュレート) # (実際のテストでは実際の悪意のあるパッケージを置き換えてください) MALICIOUS_PKG="@deadcode09284814/axios-util" echo "[*] 悪意あるパッケージをインストール中: $MALICIOUS_PKG" npm install -g "$MALICIOUS_PKG" # 3️⃣ ペイロードを実行、パッケージによって出荷されたもの # ここでは単にパッケージを必要とします。パッケージのpostinstall # スクリプトは攻撃者のコードを実行します。 echo "[*] 悪意のあるペイロードをトリガー" node -e "require('$MALICIOUS_PKG');" # 4️⃣ オプション: 観察のためにシェルを開いたままにする sleep 30 echo "[*] テスト完了" # ------------------------------------------------- -
クリーンアップコマンド: 悪意のあるパッケージと生成されたファイルを削除します。
# cleanup_malicious_npm.sh # ------------------------------------------------- echo "[*] 悪意のあるnpmパッケージを削除中" npm uninstall -g "@deadcode09284814/axios-util" || true # ホームディレクトリから残存するnode_modulesを削除 rm -rf "$HOME/.npm/_cacache" echo "[*] クリーンアップ完了" # -------------------------------------------------