RoadK1ll マルウェアがハッキングされたデバイスをネットワークリレーに変える

ハッカーは新しいNode.jsベースのインプラント「RoadK1ll」を展開し、圧縮されたホストをオンデマンドのネットワークリレーに静かに変え、明らかなリモートアクセスツールを公開することなく被害者環境深くへのステルスなピボッティングを可能にしています。

このインプラントの唯一の目的は、初期侵害後の内部ネットワークへの信頼性の高い柔軟なアクセスを攻撃者に提供し、単一の感染したホストを以降のアクティビティのための「アクセス増幅器」に変えることです。

従来のリモートアクセスマルウェアとは異なり、RoadK1llはエンドポイント上に豊富なコマンドセットやヘビーウェイト運用コンソールを公開しません。

BlackpointのResponse Operations Center(BROC)はインシデント対応時にRoadK1llを特定し、フル機能のRATではなく専用のピボッティングツールとして追跡しています。

代わりに、安定したトンネルの維持とトラフィックの仲介に焦点を当て、攻撃者が内部システム、ローカルのみのサービス、通常は外部からアクセスできないセグメント化されたネットワークセグメントに到達できるようにしています。

RoadK1ll マルウェア

RoadK1llはNode.jsで実装され、生のTCPソケット用の「net」とWebSocket通信用の「ws」の2つの主要モジュールに依存し、アウトバウンドWebSocketC2セッションとオンデマンドで開かれたローカルTCP接続の間に配置されます。

設定値は攻撃者が制御するVPSホスト、WebSocketポート、基本認証トークンとして使用される共有トンネルシークレット、および接続が失われた場合にマルウェアがトンネルを再確立するように設計されていることを示す再接続間隔を定義します。

通信は、単一のWebSocket接続上で複数の論理チャネルを多重化するカスタムフレーミングプロトコルで実行されます。

Image

各メッセージは4バイトのチャネルIDと1バイトのメッセージタイプで始まり、その後ペイロードが続き、オペレータが1つのアウトバウンドトンネルを通じて多くの独立したTCPストリームを管理できるようにします。

コアメッセージタイプにはDATA、CONNECT、CONNECTED、CLOSE、ERRORが含まれており、攻撃者にソケットを開く、トラフィックをプッシュする、チャネルをきれいに閉じる、障害を処理するための簡潔だが十分な制御語彙を提供します。

並行アクティビティを追跡するために、RoadK1llは各チャネルIDを対応するTCPソケットに関連付けるランタイムマップを保持します。

encodeMessage関数は固定5バイトヘッダーとオプションペイロードでアウトバウンドフレームを構築し、decodeMessageは処理前にチャネル、タイプ、データを復元するためにインバウンドフレームを検証して解析します。

Image

このペアリングはコアワイアプロトコルを形成し、同じトンネル上のバイナリネットワークトラフィックと単純なステータスメッセージの両方をサポートします。

インプラントは次に、設定されたVPSホスト、ポート、トンネルシークレットを使用してURLを構築し、攻撃者インフラに到達するための「new WebSocket(…)」を発行する接続ルーティンを介してプライマリWebSocketコントロールパスを確立します。

Image

分析中に、研究者はws.binaryType = ‘nodebuffer’の使用を観察し、RoadK1llは単なるテキストコマンドではなく任意のバイナリデータを転送するように設計されていることを示しています。

コメント化されたrejectUnauthorized: falseオプションは、開発者がTLS検証の問題を予測し、様々な環境全体での信頼性のために最適化したことを示唆しています。

ピボッティング、横移動、およびリレーループ

トンネルがライブになると、RoadK1llはリレーからのインバウンドメッセージをリッスンし、各メッセージをCONNECT、DATA、CLOSEメッセージを専用ハンドラーにマップするスイッチスタイルの制御フローを通してルーティングします。

CONNECTコマンドはhandleConnectをトリガーし、ターゲットホストとポートを含む構造化されたペイロードを解析してから、net.createConnection({ host, port })を呼び出して、圧縮されたホストから内部ネットワークへの新しいアウトバウンドTCPセッションを開きます。

Image

成功時に、CONNECTEDメッセージがチャネルの準備ができていることを確認し、攻撃者はそのソケットを通じて内部サービスと対話を開始できます。

handleData関数は指定されたチャネルIDのアクティブソケットを検索し、攻撃者が提供するペイロードをその接続に直接書き込み、一方sendToVpsルーティンのペアが応答、エラー、ステータス更新をパッケージ化してWebSocketトンネルを通じて返送します。

Image

この双方向ループにより、攻撃者は被害者を通じて内部データベース、管理インターフェース、または他のサーバーと通信でき、各チャネルが独立して追跡されるため、同じトンネルを通じて複数の目的地に一度にアクセスできます。

アクセスを利用可能に保つために、RoadK1llはWebSocketセッションが切断されたときにキックインするscheduleReconnect関数を実装し、再接続がまだ進行中でない場合は設定されたインターバル後にタイマーを設定してconnect()を再度呼び出します。

この再接続ループにより、プロセスが実行し続ける限り、インプラントは一時的なネットワーク問題に対して耐性を持ち、オペレータの介入を必要としません。

注目すべきことに、分析者はこのコンポーネントでレジストリ実行キーやスケジュール済みタスクなどの古典的な永続化メカニズムを観察しませんでした。代わりに、RoadK1llの永続性は条件付きで、実行の再確立ではなく接続の保持に焦点を当てています。

Blackpointの分析は、RoadK1llを初期アクセスと侵害後のピボッティングをきれいに分離する現代的な目的別構築トンネル技術の例として強調しています。

トンネルをモジュール機能としてパッケージ化することで、マルウェアは1つの圧縮マシンを再利用可能な低ノイズピボットポイントに変え、ステルス性、柔軟性、最小限のホストフットプリントを優先する侵入ワークフローと密接に一致しています。

侵害の指標

ファイル名 / パス  SHA256  コンテキスト / 注記 
Index.js  b5a3ace8dc6cc03a5d83b2d85904d6e1ee00d4167eb3d04d4fb4f793c9903b7e  RoadK1ll 

翻訳元: https://gbhackers.com/roadk1ll-malware/

ソース: gbhackers.com