NullReceiverが空の暗号送金でEtherHidingを進化させる
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
DPRK関連の脅威アクターがNullReceiverとして知られる新しいブロックチェーンベースのC2解決方法を使用しています。この技術は、C2 IPアドレスをゼロ値イーサリアム転送の受信者アドレスバイト内に埋め込み、従来のEtherHidingよりも検出を困難にします。関連するマルウェアはトロイの木馬化されたnpmパッケージを通じて配布されます。
調査
研究者は、公開されたnpm tarballsの静的解析および公開されているブロックチェーン上の攻撃者制御のトランザクションの読み取り専用調査を通じて活動を調査しました。解析により、2つの悪意のあるnpmパッケージが特定されました。 bianira-ui and fluid-type-ui, これらはNullReceiverを使用してコマンド・アンド・コントロールインフラストラクチャを解決します。
緩和策
ディフェンダーは、既知の攻撃者制御のイーサリアムウォレットに関連するブロックチェーン活動を監視し、ゼロ値転送で使用される受信者アドレスを検査する必要があります。組織は、トロイの木馬化されたパッケージのインストールを防ぐためにnpm依存関係のソフトウェアサプライチェーンコントロールを強化するべきです。
対応
NullReceiverの活動が検出された場合、影響を受けたNode.js環境を直ちに隔離する必要があります。調査者は、悪意のあるnpmパッケージの発信源を特定し、関連するC2 IPアドレスとイーサリアムウォレットアドレスをネットワークおよびアプリケーションレイヤーの両方でブロックすべきです。
攻撃フロー
検出
C2チャネルとしてのPublicnodeイーサリアム悪用の可能性(dns_query経由)
Proof of Value
IOCs(SourceIP)を検出する:NullReceiverのブランクリプトトランスファーはEtherHidingの課題を解決
Proof of Value
IOCs(DestinationIP)を検出する:NullReceiverのブランクリプトトランスファーはEtherHidingの課題を解決
Proof of Value
NullReceiver HTTP/HTTPS接続確立 [Windowsネットワーク接続]
Proof of Value
NullReceiverのブロックチェーンベースのコマンド・アンド・コントロール技術の検出 [Linuxプロセス作成]
Proof of Value
シミュレーション実行
前提条件:テレメトリーとベースライン事前フライトチェックに合格していること。
根拠:このセクションでは、検出ルールを発動させるために設計された敵の技術(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリを生成することを目指します。抽象的または無関係な例は、誤診につながります。
-
攻撃物語&コマンド: 敵は、従来のIPベースのブラックリスティングを回避する秘匿的なC2チャネルを確立しようとしています。これを行うために、彼らは「NullReceiver」技術を使用した悪意のあるnpmパッケージを展開します。スクリプトは特定の難読化された構文を使用してグローバル変数を初期化します(
global.i = "A10-npm3!", global.r = require)そしてすぐにhttps://1rpc.io/ethエンドポイントにアクセスします。これにより、マルウェアは特定のイーサリアムトランザクションの「受取人」フィールドを読み取り、実際のC2サーバーのエンコードされたIPアドレスを取得します。この方法は、合法的なブロックチェーンインフラを使用して悪意のある意図を隠します。 -
回帰テストスクリプト:
#!/bin/bash # NullReceiver C2技術検出のシミュレーションスクリプト # 検出ルールで定義された特定のパターンを模倣する悪意のあるノードスクリプトを作成 cat < malicious_npm_payload.js // Sigmaルールで定義された正確なパターンを模倣 global.i = "A10-npm3!"; global.r = require; const https = require('https'); // マルウェアは特定のRPCエンドポイントにアクセスして指示を取得 const url = 'https://1rpc.io/eth'; console.log("[!] ブロックチェーンベースのC2ルックアップを開始中..."); https.get(url, (res) => { console.log("[!] 接続成功。ブロックチェーン状態を分析中..."); res.on('data', (d) => { // 実際の攻撃では、この部分でC2 IPのために 'recipient' フィールドを解析します console.log("[!] NullReceiver技術による指示を受信。"); }); }).on('error', (e) => { console.error(`[X] 接続に失敗しました: ${e.message}`); }); EOF # 悪意のあるスクリプトをノードで実行 echo "[*] 悪意のあるシミュレーションを実行中..." node malicious_npm_payload.js # スクリプトファイルを清掃 rm malicious_npm_payload.js -
クリーンアップコマンド:
# シミュレーション中に作成されたアーティファクトを削除 rm -f malicious_npm_payload.js