サイバー脅威
ペイロードをプロンプトで操る:npmサプライチェーン攻撃がAI搭載Linuxインプラント「RedC2」を配布
TrendAI™ Researchは、npmのオープンソースエコシステムで最近発見された高度な脅威、RedC2 Linuxインプラントを包括的に分析しました。
- 正規のカレンダ・継続日数計算ツールを装うトロイの木馬化されたnpmパッケージ群には、日付計算コードとともに悪意あるLinux ELFペイロードが組み込まれていました。モジュールが読み込まれると、同梱バイナリを特定して実行権限を付与し、切り離されたバックグラウンドプロセスとして起動します。インストールフックの呼び出しは不要で、依存関係グラフ内のどこかで一度インポートされるだけでペイロードが実行されます。これは推移的依存関係からのインポートでも同様です。
- RedC2 4.0では、同梱ペイロードとしてRedShellが導入されました。RedShellは、Windows、macOS、Linuxのビーコンに対応するクロスプラットフォームC&CフレームワークとしてHack Forumsで販売されている、ネイティブLinuxインプラントです。また、Red Agentも搭載しています。これは「/ra」で利用できるLLMベースのレイヤで、認証情報のダンプやファイルの検索といった自然言語の指示を、順序付けされたビーコンコマンド列に変換します。
- このインプラントはダブルフォークによってデーモン化し、通信を複数のチャネルに分けます。主要なC&CコマンドはTLSで暗号化されたTCP上を流れ、独自の3ラウンドXORおよびROR1処理でさらに難読化されます。一方、大量のデータ抽出とペイロード取得には平文HTTPを使い、外部へのファイル転送にはlitterbox.catbox.moeなどのサードパーティサービスを利用します。
- オペレータは幅広いコマンドと機能を利用できます。任意のシェルコマンド実行、対話型リバースシェル、システムおよびネットワークの偵察、ファイル転送と大量データ抽出、SSH鍵・ブラウザデータ・データベースを対象とする認証情報の収集、プロセスとローカルアカウントの管理、SOCKS5およびTCPポート転送によるネットワークピボットなどが含まれます。
- 組み込みルーチンは、cronジョブ、「~/.bashrc」の編集、ユーザレベルのsystemdサービス、またはXDG自動起動エントリを使って永続化します。
TrendAI™ Researchは、日付ユーティリティにLinuxバックドアを隠したトロイの木馬化npmパッケージ群を起点とするサプライチェーン侵害を分析しました。ドロップされたバイナリは、RedC2 4.0フレームワークのLinuxインプラントであることが判明しました。RedC2は、Windows、macOS、Linuxに対応し、監視、認証情報窃取、ペイロードの読み込み、大規模オペレーション機能を備えるツールキットとしてHack Forumsで積極的に販売されています。
RedC2は、AI駆動型コンポーネント「Red Agent」によって制御レイヤを拡張しています。オペレータは自然言語コマンドを使い、ネットワーク偵察から認証情報のダンプまで、侵害後の複雑なタスクを実行できます。
サプライチェーン:正常に動作する日付計算に隠されたトロイの木馬ローダ
TrendAI™ Researchの分析では、カレンダや継続日数を計算する小規模で依存関係のないユーティリティとして公開された、以下のnpmパッケージ群が確認されました。日別の値のグループ化、日数差の計算、目標を達成した日の抽出といった機能を備え、ドキュメントどおりに動作します。これらのコードは「dist/internal/daymath.mjs」にあり、一見したところ不審な点はありません。
- streak-metrics-math@1.0.0,1.0.1
- kit-map-vim@1.0.0
- streak-map-cache@1.0.0
- streak-map-kit@1.0.0
- map-streak-kit@1.0.0
- streak-cache-map@1.0.0
- streak-calc-metrics@1.0.0
- streak-calc-math@1.0.0
- streak-math-abz@1.0.0
- streak-metricsaz@1.0.0
- streak-math-metrics@1.0.0
- streak-metricazbd@1.0.0
- streak-metricsazb@1.0.0
- streak-kit-map@1.0.0
各パッケージには、ソースコード上でネイティブの計算アクセラレータとして扱われるLinux ELFバイナリも含まれています。ファイル名はパッケージによって異なり(「math-core.bin」「math-calc.bin」「calc-math.dat」「calc-cache.bin」「calc.bin」「calc-mapping.bin」)、配置先も「dist/」直下または「dist/internal/」配下と一定ではありません。ただし、実体はいずれもRedC2 4.0フレームワーク用のRedShell Linuxインプラントです。
配布を担うのは、パッケージのエントリファイル「dist/index.mjs」です。このファイルはトロイの木馬ローダとして機能し、日付計算用のヘルパーを再エクスポートすると同時に、モジュールが読み込まれた時点で同梱インプラントを起動します。インストールフックも、エクスポートされた関数の呼び出しも必要ありません。
index.mjs内のトロイの木馬ローダ
分析の結果、「index.mjs」は「internal/daymath.mjs」から5つの日付計算ヘルパーを再エクスポートし、利用者がパッケージ名でインポートできるようにしていました。それ以外の部分は初期化ルーチンであり、エクスポートされた関数から呼び出されることはありません。
このルーチンは、モジュール読み込み時に評価される非同期IIFE(即時実行関数式)です。エクスポートされたシンボルを呼び出す必要はなく、preinstallや「postinstall」フックも使わないため、「--ignore-scripts」では防げません。開発者が自ら選んでいない推移的依存関係を含め、依存関係グラフ内のどこかで一度インポートされれば十分です。対象の「internal/calc-cache.bin」は「import.meta.url」を使ってモジュール自身の位置を基準に解決されるため、インストール先やホストプロセスの作業ディレクトリに左右されません。ルーチンはペイロードを起動する前に、次の3段階を実行します。
- ファイルシステムの確認: バイナリが存在しない場合、ネイティブアクセラレータが見つからないという警告を記録して終了します。
- 権限の変更: 「fs.chmodSync(binaryPath, 0o755)」でファイルに実行権限を付与します。ファイルを読み込む前に実行されるため、内容に関係なくモードが適用されます(別の亜種では、この手順がない場合もあります)。
- 完全性の検証: ファイルのSHA-256ダイジェストをハードコードされた定数と比較し、オペレータが用意した正確なビルドだけを実行します。
一致した場合、「cp.spawn」が引数なしでバイナリを起動します。「shell: false」によってプロセスツリーにインタプリタを介在させず、「detached: true」によって子プロセスを独自のプロセスグループに配置し、インポート元のNodeプロセス終了後も動作を続けられるようにします。標準出力と標準エラー出力には、いずれも空のハンドラが割り当てられています。
このフレームワークは、幅広いペイロード形式に対応しています。Windowsでは、ネイティブC++およびC#(.NET)実行ファイル、DLL、位置独立シェルコード、JavaScript、VBScript、Javaアーカイブ(.jar)を利用できます。macOSでは、ネイティブSwiftアプリケーションバンドル(arm64+x86_64のユニバーサル形式)、単体のMach-O実行ファイル、JavaScript for Automation(JXA)ビーコンに対応しています。Linuxには、ネイティブのRedShell Linux ELFインプラントが用意されています。
C&CサーバはWindowsまたはLinuxで稼働し、管理インターフェースは3つの対応OSからのコールバックを1つのダッシュボードに集約します。
RedC2は基本的なビーコン通信に加え、ターミナルアクセス、ファイル転送、段階的なペイロード配布、データ収集と取得物の管理、複数ビーコンの操作、ネットワークの可視化、ホスト間トンネリング、Beacon Object File(BOF)・.NETアセンブリ・シェルコードのメモリ内実行を提供します。
また、標準的なPEファイルを検知回避型シェルコードに変換するユーティリティ(Red VertおよびRed Runner)、ターミナル操作用の外部CLI(RedC2 EXT)、AIアシスタント「Red Agent」も同梱しています。
図6は統合ダッシュボードです。各行が稼働中のビーコンを表し、「Type」列で完全なRedShellインプラントと軽量な通常コールバックを区別しています。
Red Agent
TrendAI™ Researchの分析から、大規模言語モデル(LLM)を攻撃用セキュリティツールに統合すると、オペレータの作業手順が根本的に変わることが分かりました。初期にはモデルがツールから切り離されており、オペレータはいったんチャット画面に移ってクエリを組み立てたり、特定のコマンドを確認したりしていました。AIを対話型ガイドとして使い、その結果をコンソールへ貼り付けていたのです。
現在は、この手間がなくなりつつあります。モデルがフレームワークへネイティブに組み込まれ、セッションの状態をすべて把握したうえで、実行権限を持って動作するようになりました。目標を伝えるだけで、モデルが達成に必要なツールを動的につなぎ合わせるため、オペレータが手順を一つずつ指示する必要はありません。
RedC2には、LLMベースのコマンド実行レイヤであるAIアシスタント「Red Agent」が搭載されています。自然言語の指示をフレームワークのビーコンコマンドへ変換し、Web UIとEXTクライアントのどちらでも、任意のビーコンターミナルから「/ra」で利用できます。ドキュメントによれば、Red Agentはフレームワークのコマンドセットとビーコン機能を学習しており、「キーポイント分析」によって1つのプロンプトを順序付けされたタスク列へ分解します。
- v2.0(2025年8月23日): 外部CLIクライアント「RedC2 EXT」を導入し、Red Agent、MongoDBバックエンド、SOCKSプロキシ、ポート転送、リフレクティブDLLローディングを強化しました。RedC2の更新ページでは、このリリース日を2026年1月7日とも記載しています。
- v3.0(2026年1月24日): 複数オペレータ用ターミナルを追加し、サーバ起動、認証情報抽出、リモートデスクトップ、macOSビーコン、EXTを改善しました。
- v3.0.1(2026年2月19日): 新規インストール時のMongoDB認証を修正しました。
- v4.0(2026年6月1日): ネイティブのRedShell LinuxインプラントとLinuxサーバ対応を導入しました。WindowsおよびLinuxビーコンのコンパイル機能をフレームワーク内へ移し、SQLiteも追加しました。
- v4.1(2026年7月19日): Network Mapから操作する、ネットワークをまたぐシェルトンネリングを追加しました。オペレータはリレービーコンを別ネットワーク上の対象ビーコンへ接続し、両ホスト間に直接のP2P経路を設けることなく、C&Cサーバが仲介するシェルを開けます。このリリースでは、Windows、Linux、macOSビーコンのシェルのみをサポートします。
- v4.1.2(2026年7月23日): Windowsビーコンのコンパイラ不具合とmacOSフィンガープリント処理を修正しました。macOSビーコンではAESでラップされた転送方式を再び既定で有効にしたため、それ以前にビルドされたビーコンとは互換性がなくなりました。
- v4.1.3(2026年8月5日): サーバとビーコンでWindows Subsystem for Linux(WSL)をサポートし、Linux対応を拡張しました。RedC2 EXTをLinuxへ移植し、xAI SDKの欠落によって発生していたLinux版Red Agentの不具合も修正しました。
RedC2 Linuxインプラントの分析
RedC2のネイティブLinux対応は比較的新しい機能です。バージョン4.0で、開発者が「ネイティブかつ回避性能を備えたLinuxインプラント」と説明するRedShell for Linuxとして導入されました。2026年6月に公開された同じ更新では、Linuxサーバランタイムを追加し、WindowsおよびLinuxビーコンのコンパイル機能をフレームワーク本体へ移しています。なお、macOSビルダは引き続き独立したコンポーネントです。
フレームワークのドキュメントによれば、Linuxインプラントのビルドホストにはg++が必要で、「RedShellLinux」というネイティブバイナリとして生成されます。配備後は「/bin/sh」を介した対話型シェルを提供し、システム探索、ファイル操作、収集、実行、永続化、ネットワークピボットに用いるLinux固有のコマンドを公開します。
主な機能は次のとおりです。
- システム、プロセス、ユーザ、環境、インターフェース、ネットワークの探索。
- ファイルのアップロード、ダウンロード、圧縮、大量データ抽出。
- SSH鍵およびブラウザ認証情報の収集。
- ホスト上に存在するデータベースの検出。
- memfdによるELFのメモリ内実行。
- 実行可能なメモリマッピングを使ったシェルコード実行。
- dlopenによる共有オブジェクトの読み込み。
- cron、「.bashrc」、systemd、XDG自動起動による永続化。
- SOCKS5プロキシおよびTCPポート転送。
- フレームワークのRed AgentコンポーネントによるAI支援型のタスク実行。
マルウェアは実行されると、まず「SIGPIPE」シグナルを無視し、ネットワークパイプの切断による終了を防ぎます。続いてダブルフォーク方式でデーモン化し、制御端末から切り離してバックグラウンドで動作します。その後、起動時の作業ディレクトリをグローバルパスに記録し、以後のシェルコマンドで使用します。
次に、無限ループへ入りC&Cサーバへの接続を確立します。最初に、ハードコードされたプライマリIPアドレス217.60.77.63のポート8792へ接続し、失敗すると同じポートの127.0.0.1へフォールバックします。
「connect_to_c2」関数は、切断された接続をすばやく検出するため、TCPキープアライブを積極的に設定します。Nagleアルゴリズム(TCP_NODELAY)を無効にし、無通信状態が1秒続くとキープアライブプローブを開始します。以後3秒間隔で繰り返し、5回失敗すると接続を切断します。
TCP接続が確立すると、マルウェアはソケットをTLSセッションでラップします。遅延初期化されるSSLコンテキスト「g_ssl_ctx」は最初の接続時に一度だけ作成され、以後の再接続でも再利用されます。「SSL_VERIFY_NONE」によって証明書検証が明示的に無効化されているため、マルウェアは検証せずにあらゆるサーバ証明書を受け入れます。C&Cオペレータは、自己署名証明書やその他の無効な証明書も自由に利用できます。
古い脆弱なプロトコルへのフォールバックを防ぐため、最低バージョンとしてTLS 1.2を強制します。また、不安定なネットワーク環境でも安定して動作できるよう、コンテキストレベルで部分書き込みモードと移動書き込みバッファモードを有効にします。
セッションごとに新しいSSLオブジェクトを割り当て、「SSL_set_fd()」でソケットへ関連付けます。さらに「SSL_MODE_AUTO_RETRY」を設定し、再ネゴシエーションによる割り込みを自動処理して、ビーコンループが停止しないようにします。「SSL_connect()」が成功すると「beacon_main_loop()」へ制御が移り、暗号化チャネル上で完全なC&C通信を行います。ループを抜けるとセッションを適切に終了して解放し、基盤となるTCPソケットを閉じてから、3秒後に再接続を試みます。
ネットワーク通信
感染システムを登録するため、マルウェアはユーザ名、ホスト名、OS情報、root権限の有無などのシステム情報を収集し、チェックインメッセージを組み立てます。
ローカルインターフェースを照会し、公開IPアドレスの取得先であるapi.ipify.orgへアクセスしてネットワーク識別子を生成します。さらに、永続的なインストール識別子も提供します。マルウェアは「$HOME」を解決し、環境変数が未設定なら「/tmp」へフォールバックして、隠しファイル「~/.config/.rsvc」にキャッシュされた値を探します。ファイルが存在して1行分の値があれば、末尾の空白を削除し、16文字以上残る場合はその値を再利用します。
値がなければ、OpenSSLの「RAND_bytes」が出力する8バイトから、16文字の大文字16進数で新しい識別子を生成します。乱数生成に失敗した場合は、現在のUnixタイムスタンプとプロセスIDをそれぞれ8桁の16進数に変換し、連結して使用します。新しい値は同じファイルに書き戻されるため、再起動後も保持され、サーバは同じ感染ホストからの各チェックインを関連付けられます。
次の図は、マルウェアが送信するチェックインメッセージの例です。
コマンドの復号
「SECURE_BEACON」メッセージを送信した後、マルウェアはコマンド処理ループへ入ります。サーバから送られるコマンドは長さプレフィックス付きバイナリフレームで、4バイトのビッグエンディアン形式のペイロード長と、その直後に続く暗号化済みコマンドバイトで構成されます。
次の図は、マルウェアが受信するコマンドの例です。
図12は、マルウェアがコマンドを復号する仕組みを示しています。
コマンドを復号して空白を除去すると、一連の文字列比較によって評価します。優先コマンドを最初に処理し、C&Cからセッションの終了、プロセスの再起動、ディスク上のマルウェア削除を実行できるようにしています。マルウェアは幅広い組み込みコマンドに対応します。「/sysinfo」「/whoami」「/ps」「/netstat」などの多くは、ハードコードされたシェルコマンドへ直接変換され、「execute_shell_command」へ渡されます。この関数は「/bin/sh -c」でコマンドを実行し、パイプを使ってstdoutとstderrを取得します。タイムアウトは120秒です。
表2に、マルウェアが受け付けて実行するコマンドと説明を示します。
RedShellはWindowsおよびmacOS向けのクロスプラットフォームインプラントも提供しており、共通のコマンド文法を使用します。どちらもファイル操作、ホストおよびネットワーク偵察、ユーザ列挙、データ収集という中核機能に対応しています。
Windows版は大幅に多機能で、macOS版にはないユーザアカウント制御(UAC)の回避、ウイルス対策製品およびEDRの妨害、メモリ内実行、水平移動(ラテラルムーブメント)機能が追加されています。
すべてのコマンドには「/」が付きます。各プラットフォームで利用できるコマンドを表3と表4に示します。
RedShell Linuxインプラントのマルウェア通信概要
表5は、影響を受けたホストから見たインプラントのネットワーク通信を整理したものです。永続的なメインC&Cチャネルを使うコマンド、別のアウトバウンド接続またはインバウンド待受を作成するコマンド、関連するエンドポイントとポート、転送中の通信が暗号化されるかどうかを示します。
結論
カレンダと継続日数を計算する依存関係のないユーティリティとして公開されたトロイの木馬化npmパッケージ群は、正常に動作する日付計算ロジックと、ネイティブの計算アクセラレータを装うLinux ELFを配布します。実行にインストールフックやエクスポートされた関数の呼び出しは必要ありません。依存関係グラフ内のどこかでインポートされるだけです。この仕組みでは、ローダが「--ignore-scripts」の対象外となり、悪意あるnpmの挙動はライフサイクルフック内で発生するという前提に立つ対策でも検知できません。
ペイロードは、RedC2 4.0で追加されたネイティブインプラント「RedShell for Linux」です。侵害後に利用できる機能は包括的で、対話型シェル、ネットワークをまたぐトンネリング、SSH鍵およびブラウザ認証情報の収集、データベース探索、平文HTTPによる大量データ抽出、「memfd_create」と「mmap」を使ったファイルレスELFおよびシェルコード実行、4種類の永続化方式、SOCKS5およびポート転送を使った内部ネットワークへのピボットが含まれます。
RedC2自体は、公開情報の少ないAI統合型C&Cフレームワークです。Red Agentコンポーネントは、1つの自然言語プロンプトを、順序付けされたコマンド列へ変換します。
以上から、次の2点が浮かび上がります。
- この公開情報の少ないAI統合型C&Cフレームワークは、実際に流通しています。RedC2はトロイの木馬化npmパッケージを通じて配布されており、攻撃用セキュリティツールへAIを直接組み込み、タスクとコマンドの実行を自動化する事例です。
- AIは参入障壁を下げます。レッドチーム作戦向けに調整されたモデルへ自然言語で指示すると、フレームワークが実行可能なコマンド列へ変換します。この抽象化により、熟練度の異なるオペレータでも、複雑な複数段階の侵害を効率的に実行できます。
TrendAI Vision One™によるプロアクティブなセキュリティ
TrendAI Vision One™は、サイバーリスクのエクスポージャー管理とセキュリティ運用を一元化し、オンプレミス、ハイブリッド、マルチクラウド環境に堅牢な多層防御を提供する、唯一のAI搭載エンタープライズサイバーセキュリティプラットフォームです。
TrendAI Vision One™ Network Security
47909: HTTP: Backdoor.Linux.RedShellixo.A Runtime Detection
TrendAI Vision One™ Threat Intelligence Hub
進化し続ける脅威に先回りするため、TrendAI™のお客さまは、TrendAI™ Researchが新たな脅威や攻撃者についてまとめた最新情報を提供するTrend Vision One™ Threat Insightsを利用できます。
TrendAI Vision One™ Threat Insights
新たな脅威:RedC2 Linux Implant Delivered via npm Supply Chain(npmサプライチェーンを通じて配布されるRedC2 Linuxインプラント)
TrendAI Vision One™ Intelligence Reports(IoCスイープ)
RedC2 Linux Implant Delivered via npm Supply Chain(npmサプライチェーンを通じて配布されるRedC2 Linuxインプラント)
ハンティングクエリ
TrendAI Vision One™ Search App
TrendAI Vision One™のお客さまは、Search Appを使用して、本記事で取り上げた悪意あるインジケータと自社環境のデータを照合したり、ハンティングしたりできます。
# Hash-based detection – Linux RedShell
objectFileHashSha256:"4537B1189CE419F1A595CF47216C03F80E9170CE80DAD8D9227A1E52F9CB3466"
# Hardcoded C&C IP
eventId:3 AND (dst:"217.60.77.63" OR src:"217.60.77.63")
# chmod on a bundled .bin (the loader's fs.chmodSync(binaryPath, 0o755))
processName:"chmod" AND
(processCmd:"*node_modules*.bin*" OR
processCmd:"*dist/internal/calc*" OR
processCmd:"*dist/math-calc.bin*" OR
processCmd:"*dist/calc-mapping.bin*" OR
processCmd:"*dist/calc-cache.bin*")
# Payload detection
objectFilePath:(
"*/dist/internal/calc-cache.bin" OR
"*/dist/math-calc.bin" OR
"*/dist/calc.bin" OR
"*/dist/internal/calc-mapping.bin" OR
"*/dist/math-core.bin" OR
"*/dist/internal/calc-math.dat"
)
Threat Insights Entitlementが有効なTrendAI Vision One™のお客さまは、さらに多くのハンティングクエリを利用できます。
侵入の痕跡(IoC: Indicators Of Compromise)
本記事に関する侵入の痕跡(IoC)は、こちらをご参照ください。
参考記事
Prompting the Payload: How an npm Supply Chain Attack Delivers the RedC2 AI-Powered Linux Implant
By : Aliakbar Zahravi
翻訳:与那城 務(Platform Marketing, Trend Micro™ Research)