TL; DR
単一の npm パブリッシャー、 deadcode09284814は、正当な axios (NAIST) と chalk-template 2026年5月中旬以降のパッケージ。
このキャンペーンは、従来型の認証情報とウォレットの窃盗として始まり、データを Serveo HTTPSトンネル.
On 2026-05-17、と axois-utils:1.0.9オペレーターはペイロードを完全に交換しました。同じトリプルインストールフックの足場、同じ発行者、同じパッケージ名です。
しかし、そのインストールスクリプトは現在、クロスプラットフォームのDDoSボットネットの構成要素となっている。
ペイロードは localhost.run トンネルを掘り、フラッドコマンドを受け入れることで、感染した環境をDDoS攻撃が可能なボットネットの一部に変えます。
オペレーターは、 C2サーバーバイナリ tarballの内部には、認証情報の窃盗からアクティブなボットネットインフラストラクチャへの明確なエスカレーションが示されている。
レジストリ上で現在も有効なパッケージは2つ、バージョンは4つあり、1つのオペレーターが両方のモジュールを並行して実行している。
深刻度:高。
攻撃:その仕組み
このキャンペーンは、意図的に退屈な配信の枠組みの上に構築されています。2 つのタイポスクワットのパッケージ名は、毎週数億のダウンロードがあるパッケージと 1 文字だけ違います (アクシオス, チョークテンプレート)とトリプルインストール hooks 実行を保証するもの。興味深いのは、足場が何であるかということだ。 運ぶ ―そして、運送業者が他の何も変更せずに貨物だけを変更したという事実。
共有足場
両パッケージの公開バージョンはすべて同じ3つのライフサイクルを宣言しています hooks in package.json:
ペイロードを3つすべてにリストアップする hooks やりすぎだ — インストール後 単独ではデフォルトで実行されます npmインストール選択は重要です。 npm install –ignore-scripts スクリプトはスキップされますが、いくつかの一般的なワークフロー(CI キャッシュはライフサイクルを再実行して復元します) hooks 選択的に、または監査のみを行う開発者 インストール後)三重冗長宣言を攻撃者にとって最も安全な選択肢にする。
チョークテンプレート 2つ目のメカニズムを追加します。 axios-utils:^1.0.7 ランタイムとして 依存関係. typosquatted をインストールします チョークテンプレート そのため、兄弟パッケージであるtyposquatも取り込まれ、両方のペイロードが実行されます。この2つのパッケージは連携したペアであり、独立したリストではありません。
フェーズA — 認証情報/財布窃盗犯(2026年05月15日~現在)
フェーズAは元のペイロードです。ローダーは短い postinstall.js これはServeo HTTPSリバーストンネルを指し示しています。
Serveoサブドメインは宛先IPをエンコードします(80.200.28.28ホスト名に直接 ) が含まれているのは、そのサービスでは認識しやすい慣例です。オペレーターは、単純なドメインブロックリストを回避するために、バージョン間でランダムなサブドメインプレフィックスをローテーションしますが、基となる IP アドレスは変更されません。チョークテンプレート:1.0.14 中古 8a3e818ea8f11186-80-200-28-28…; 1.0.16 / 1.0.19 / 1.0.20 を使用する f04a273bd84c0622-….)
postinstall.js 手を離して phantom.js7,667行からなるバンドルされた「コレクター」モジュール。 phantom.js ホストを案内する:
SSH 秘密鍵 (~/.ssh/*) |
.npmrc 内容およびその他 npm_* 環境トークン |
| AWS、GCP、Azureの認証情報ファイル |
GitHubパーソナルアクセストークンの正規表現(ghp_*, gho_*, ghu_*, ghs_*) |
| ビットコイン、エクソダス、エレクトラム、モネロ、ライトコイン、ドージコイン、Zcash、ダッシュ用の暗号通貨ウォレット |
再帰的 .env* 通り抜ける ~/projects, ~/dev, ~/code, ~/workspaceインストール先cwd |
シェルの歴史と完全な process.env |
バンドルはServeoトンネルにPOSTされます。 / 収集難読化も、アンチVMロジックも、ステージングも一切なく、オペレーターの賭けは量とスピードにある。
フェーズB — PhantomBot DDoS攻撃者の募集(2026年05月17日、axois-utils:1.0.9のみ)
フェーズ B では、phantom.js + postinstall.js を distrube.js という単一のファイルに置き換えます (タイプミスはオペレーターによるものです)。 package.json のトリプルフックの骨組みは変更されていません。パッケージは同じ名前、スコープ、バージョンアップパターンを維持しています。外見上は、axois-utils:1.0.9 は 1.0.6 のマイナーアップデートのように見えますが、内部的には別のマルウェアファミリーです。
distrube.js オペレーター独自のブランド名を指定する設定ブロックから始まります。
// axois-utils-1.0.9/distrube.js:11-15 |
// Use your localhost.run HTTPS URL (the tunnel handles HTTP internally) |
const C2_HOST = 'b94b6bcfa27554.lhr.life'; // Your localhost.run tunnel |
const C2_PORT = 443; // HTTPS port - tunnel handles SSL |
const BOT_ID = `${os.hostname()}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`; |
このコメントは、将来このキットを実行するオペレーターに向けたものです(「localhost.run HTTPS URLを使用してください」)。これに加えて、ボットクライアントに同梱されているものから、これは単なる被害者ペイロードではなく、キットそのものであることが分かります。
流れ:
- 固執 最初に実行されます。スクリプトは OS ごとに 3 つの異なる方法でインストールされます (レジストリ ラン + スタートアップフォルダ + シュタスク Windowsの場合; crontab + ファントムボットサービス systemdユニット+ .bashrc/.zshrc + を追加する /etc/rc.local Linux上で動作します。 LaunchAgent com.phantom.bot.plist macOS 上) 永続化サービス名と LaunchAgent ラベルはどちらも ファントムボット / com.phantom.botそして、それがキャンペーン名の由来でもある。
- システム情報exfil 一度だけ実行されます。ホスト名、プラットフォーム、アーキテクチャ、ユーザー名、CPU/RAM、ネットワークインターフェース、process.env、cwd、homedir、nodeバージョン、パブリックIPを含む指紋情報をb94b6bcfa27554.lhr.life:443/collectにPOST送信します。これはフェーズAよりもはるかに攻撃性が低く、SSH、ウォレット、.envの再帰は使用しません。ボットの役割は登録であり、盗むことではありません。
- 心拍ループ 30秒ごとにb94b6bcfa27554.lhr.life:443/に対してHTTPS POSTリクエストを開きます。User-AgentはPhantomBot/1.0です。TLS検証は明示的に無効になっています(rejectUnauthorized: false)。C2からの応答は{type, target, port, duration, threads, method}の形式のJSONとして解析され、送信されます。
- 洪水兵器庫 6つのコマンドに接続されています。
| コマンドの種類 | モジュール | Notes |
|---|---|---|
| ping | ライブネス応答 | ボットが自身を識別する |
| HTTP | HTTP フラッド | レイヤー7リクエストフラッド |
| HTTPS | HTTPSフラッド | httpと同じだが、TLSでラップされている。 |
| TCP | TCPフラッド | 65KBのランダムペイロードスパム |
| UDP | UDP フラッド | 65,507バイトのUDPパケット |
| 急速な | HTTP/2 高速リセット DoS 攻撃 | 2023年のCVE-2023-44487の手法 |
5 つの洪水モジュールはすべて ターゲット, ポート, デュレーション, スレッド 反論:このボットは特定の標的を定めていない、汎用的な攻撃ツールである。攻撃者の標的リストはパッケージ内ではなく、C2サーバー上に保存されている。
新機能 — 出荷されたC2バイナリ
フェーズAはよく知られた形です。認証情報の窃盗、インストールフック、ベンダートンネルC2。フェーズBは また 見慣れた形 ― DDoS ボットネットは、悪意のある npm パッケージの定番となっている。珍しいのは、オペレーターが サーバー側 npm tarball 内のキットについて:
- c2 — コンパイル済みのGo ELFバイナリ(4メガバイト)
- c2.go — そのバイナリの426行のGoソースコード
どちらのファイルもインストールフックによって呼び出されることはありません。これらは被害者のペイロードの一部ではありません。ドキュメントファイルと同じようにパッケージディレクトリに配置されています。最も可能性の高い解釈は、攻撃者がファイルリストを精査せずに開発作業ツリーをnpmにプッシュしてしまった(これは明らかなセキュリティ上のミスです)ため、被害者が実行するクライアントと攻撃者が実行するサーバーという、完全な両面キットが出荷されたということです。
これは「ターンキーボットネットキット」という枠組みを正当化する物語の部分です。ダウンロードした人は誰でも axios-utils:1.0.9 テイクダウンを行う前に、彼らは被害者のサンプルだけでなく、稼働中のC2サーバーも入手している。
ピボットを1文で表すと
同じ出版社、同じパッケージ名、同じ三重フック構造、同じ「幻の」ブランド――しかし ペイロードは一夜にして収益化モデルを変更した「転売できる秘密を収穫する」から「リースできるフラッド容量を借りる」まで。防御側が監視すべきインストール時のTTPは、両フェーズでほぼ同じです。フェーズAのウォレットパス文字列または phantom.jsの7,667ラインのコレクターでは、フェーズBを完全に見逃していただろう。
| 日付(UTC) | イベント |
|---|---|
| 2026-05-15 | 初版発行: axois-utils:1.0.4 (LANテストビルド、開発リグは 192.168.129.19) |
| 2026-05-15 | axois-utils:1.0.6 公開済み — フェーズA C2が交換されました 80.200.28.28 Serveoトンネル経由。ソースコメント // Change to '80.200.28.28' for public 開発環境から本番環境への切り替えを確認する |
| 2026-05-16 | chalk-tempalte:1.0.14 (NAIST) と 1.0.16 公開済み — チェーンローダー宣言 axois-utils:^1.0.7 ランタイム依存関係として。Serveoサブドメインが回転 |
| 2026-05-16 | フェーズAのキャンペーンは、定期的なnpmスキャン中に発見され、悪意のある行為と判断されました。 |
| 2026-05-17 | axois-utils:1.0.9 公開済み — ペイロードのピボット: PhantomBot DDoS が localhost.run トンネル経由でリクルート。オペレーター側 c2 バイナリと c2.go ソースコードはtarballに同梱されています。 |
| 2026-05-17 | chalk-tempalte:1.0.19 (NAIST) と 1.0.20 公開済み — フェーズA(窃盗犯)のまま。オペレーターは現在、両方のモジュールを並行して実行している。 |
| 2026-05-17 | 定期スキャン中にフェーズBが発見され、判定は全範囲に適用される。 2026-05-17 バージョン |
| (継続中) | 削除要請は保留中です。この記事執筆時点では、公開された4つのパッケージすべてがレジストリ上で閲覧可能です。 |
侵害の兆候
エクストラ
| 生態系 | パッケージ | バージョン |
|---|---|---|
| npm | axois-utils (axiosのタイポスクワット) | 1.0.4, 1.0.6, 1.0.9 |
| npm | chalk-tempalte (チョークテンプレートのタイポスクワット) | 1.0.14, 1.0.16, 1.0.19, 1.0.20 |
著者のアイデンティティ
| フィールド | 値 |
|---|---|
| npm publisher | deadcode09284814 |
| 発行者メール | phantomdeadcode@tutamail.com |
| SCM アカウント登録 | なし |
指揮統制
| 相 | エンドポイント | 輸送 |
|---|---|---|
| A | f04a273bd84c0622-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPSトンネル |
| A | 8a3e818ea8f11186-80-200-28-28.serveousercontent.com:443/collect | Serveo HTTPSトンネル(旧バージョン) |
| A | 80.200.28.28:443/collect | 基盤となるVPSエンドポイント |
| B | b94b6bcfa27554.lhr.life:443/ | localhost.run HTTPS リバーストンネル |
ファイルダイジェスト(SHA-256)
| File | SHA-256 | Notes |
|---|---|---|
c2 (Go ELF形式、4MB) | 165fa92d237fd017c227d00da06ab788212a62be94bf61e95df2d22d00377ef2 | オペレーター側のC2サーバー、同梱 axois-utils:1.0.9 |
c2.go (426行) | 7d0ae79fdb1e9968f3323a3712b624643a782ba3efb2cf3a2cb9c4c5513cea30 | C2バイナリのGoソース |
distrube.js | 308b15c023088a7188dea4ef609010ac2493eb4c365b103053d7621a9ca5b935 | フェーズBボットクライアント |
phantom.js (chalk-tempalte:1.0.19) | 9e380ec88d3ccf3929e1a104e3b868d4d7b59ca189a8a431a54e9f3357dfdd81 | フェーズAの資格証明書/ウォレットコレクター |
phantom.js (chalk-tempalte:1.0.20) | d1c9e3f296ee9f7d5032f73f9c504cede50334bc14c394055fd5cb9c3a6e08b3 | フェーズAコレクター(バージョン1.0.20) |
postinstall.js (chalk-tempalte:1.0.19 = 1.0.20) | ffba9bdd6793edd5b38e12900252c1813a693f59c25af51c3b658cf3f27b6162 | フェーズAローダーは、両バージョンでバイト単位で同一です。 |
帰属と動機
私たちはこのキャンペーンを次のように追跡しています ファントムボットオペレーター独自のブランドを ユーザーエージェント: PhantomBot/1.0 ハートビートヘッダー、 ファントムボットサービス systemdユニット、 com.phantom.bot LaunchAgentラベル、そして phantomdeadcode@ メールアドレス。このオペレーターは、少なくとも4つの成果物において、この名前を一貫して使用している。
シグナルカタログ
- Publisher - デッドコード09284814 npm で。シングルハンドルアカウント、Tutamail 使い捨てメール、なし SCM 確認済み。本キャンペーン以外に過去の出版履歴はありません。
- ブランド再利用 — 「phantom」は発行者メール、フェーズAコレクターファイル名に表示されます(phantom.js)、フェーズ B の永続性サービス名 (ファントムボットサービスLaunchAgent ラベル (com.phantom.bot)、ボットのユーザーエージェント(ファントムボット/1.0).
- インフラ — 1台のVPSで 80.200.28.28 Serveoサブドメイン回転によりフェーズAを前面に出し、フェーズBは localhost.run 逆トンネル(b94b6bcfa27554.lhr.lifeどちらのベンダーサービスも無料で、オペレーター側では発信SSHのみを必要とするため、低予算、低セキュリティのセットアップに適しています。
- コードスタイル — 全体を通してプレーンな JavaScript。難読化、文字列エンコーディング、アンチ VM チェックなし。変数名は説明的です (stealSystemInfo, executeCommand, httpFlood)コメント distrube.js 将来のオペレーターに直接指示する(「localhost.run HTTPS URLを使用してください」)ことから、このファイルは単一の攻撃者によって使用されるのではなく、キットとして再配布されることを意図していたことが示唆される。
- OpSecのスリップ — フェーズ B の tarball には、ボット クライアントとオペレーター側の C2 サーバーの両方が含まれています (c2 エルフ+ c2.go ソース)。これは、ファイルリストを監査せずに作業ツリーを npm にプッシュしたオペレーターと一致します。オペレーターが経験不足であるか、キットが 意味した 一般公開される予定であり、C2バイナリは製品の一部です。
- 自己確認 - axios-utils:1.0.4 ソースコメントが含まれています // 公開用には「80.200.28.28」に変更してください 12行目で、オペレーターが通常否定する開発/ステージング/本番環境への移行状況を確認する。
動機
フェーズAのペイロードは、単純な金銭窃盗です。認証情報、クラウドキー、GitHubトークン、暗号通貨ウォレットはすべて、流動性の高い転売市場を持っています。フェーズBも金銭的なものですが、間接的です。DDoS攻撃代行サービス(「ブーター」)は、フラッド攻撃の容量を分単位でレンタルしており、今回出荷されたようなボットは、これらのサービスが稼働するための在庫です。30秒のハートビート、一般的な ターゲット/ポート/デュレーション コマンド スキーマ、および 5 つのプロトコル フラッド アーセナルは、 standard ブートオペレーターの製品。
両方のモジュールを並行して実行する — チョークテンプレート:1.0.19 (NAIST) と 1.0.20 盗品を発送し続ける axios-utils:1.0.9 ボットを出荷するということは、オペレーターがフェーズAを放棄するのではなく、収益源をヘッジしていることを示唆している。ピボットは 添加代替品ではありません。
私たちが主張していないこと
我々は、 デッドコード09284814 このキャンペーンは特定の攻撃者、グループ、または国によるものとは断定できません。「ファントム」というブランド名は、複数の成果物で一貫しており、単一のオペレーターによるものと考えられますが、C2バイナリがキット形式で配布されていることから、無関係なハンドルから今後送られるパッケージで同じコードが再利用される可能性も残されています。
影響、傾向、そしてディフェンダーが取るべき行動
影響
正当なスクワットのターゲット アクシオス (NAIST) と チョークテンプレート JavaScriptのエコシステムにおいて広く依存されている。 アクシオス 単独で、最もダウンロードされたnpmパッケージのトップ30に入っています。タイポスクワットの名前は、実際の名前とキーストロークが1つしか違いません(軸索 ↔ アクシオス, テンプル ↔ template)、そしてどちらも言語学的にあり得るスペルミスです。
削除前に悪意のあるバージョンの信頼できるダウンロード統計を取得できませんでした。npm はパッケージが非公開になった後、バージョンごとのダウンロード数を保持しないため、 npms.ioこの規模では、スタイルのプロキシはノイズが多い。ロックファイルがパッケージに解決される組織は、 axios-utils or チョークテンプレート 出版社より デッドコード09284814 侵害されているものとして扱うべきである: に存在するすべての認証情報をローテーションする プロセス.env 影響を受けるホスト上で、OS ごとに永続化ベクトルを監査し (下記の「防御側が行うべきこと」を参照)、依存関係を削除します。
出現するパターン
このキャンペーンは、最近のnpm関連の事件で見られた変化を象徴するものです。 設置フック足場は耐久性のある資産ですペイロードは交換可能です同じ出版社、同じパッケージ、同じ プレインストール / install / インストール後 トリプル、そして同じバージョンアップのペースでさえ、 axios-utils:1.0.6 (NAIST) と axios-utils:1.0.9 ファイルは hooks 実行。フェーズ A ペイロード (ウォレット パス文字列、 phantom.jsの 7,667 行のコレクターである Serveo C2 ホストは、最初の 3 つのバージョンを検出してフェーズ B を完全に見逃しただろう。
我々が追跡してきた他の2026キャンペーンでも同様のパターンが見られる。安定した基盤を持つ単一のオペレーターが、認証情報の窃盗、試験不正行為を行うクライアント、Telegramボットによるデータ流出、そして現在はDDoS攻撃によるリクルート活動など、様々な手口を使い分けている。ペイロードの署名に頼る防御側は、どのキャンペーンでも第2ラウンドで敗北し続けるだろう。
その結果として、 インストール時のTTPの方がより良いシグナルだ. トリプルインストールフック宣言、インポートするインストールスクリプト HTTPS or 子プロセスユーザー起動フォルダーに書き込むスクリプトをインストールし、無料のリバーストンネルサービス (Serveo、 localhost.runngrok、cloudflared などは、正規のパッケージではまれですが、悪意のあるパッケージではよく見られます。
ディフェンダーがすべきこと
- ロックファイル監査. すべての検索 パッケージロック.json / 糸ロック / pnpm-lock.yaml 組織内で正確な文字列を確認する axios-utils (NAIST) と チョークテンプレート試合はすべて妥協の産物として捉える。
- 秘密を回転させる 影響を受けたホスト上で。 フェーズ A は、SSH、クラウド、GitHub、npm、ウォレットの認証情報を一括収集します。 プロセス.env, ~ / .ssh, ~/.aws, ~/.npmrc, 〜/ .config、または .env* 影響を受けるホスト上のファイルが公開されています。
- 永続性を排除する(フェーズB)。 Windowsでは、削除します。 HKCU\Software\Microsoft\Windows\CurrentVersion\Run\SystemUpdate、 削除する %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\system-update.bat, schtasks /delete /tn SystemUpdate /fLinuxでは、 crontab -e と削除 @reboot node …, systemctl –user disable –now phantom-bot.service その後削除します ~/.config/systemd/user/phantom-bot.serviceこすり洗い .bashrc / .zshrc / /etc/rc.localmacOSでは、 launchctl unload ~/Library/LaunchAgents/com.phantom.bot.plist 次に、plistファイルを削除します。
- C2ホストをブロックする。 IOCテーブルにある4つのC2エンドポイントを、送信ブロックリストに追加してください。 *.serveousercontent.com (NAIST) と *.lhr.life 環境においてリバーストンネルサービスに正当な用途がない場合、サービス全体をブロックすることができます。
- インストール時のTTPによるハントペイロードではない。 インベントリロックファイルエントリ package.json 宣言してい プレインストール, install, インストール後 すべて同じスクリプトを指しています。パッケージの発行日と発行元の検証状況と照合してください。このパターンは正規のパッケージではまれであり、PhantomBotが再利用する最も信頼性の高いシグナルです。
- C2バイナリの監査。 ダウンロードした人は誰でも axios-utils:1.0.9 オペレーターのC2サーバーがあります(c2 ELF、sha256 165fa92d…ディスク上に ) があります。キャッシュと CI アーティファクト ストアをスキャンします。バイナリ自体は休止状態ですが、ワークステーション上に存在すれば、パッケージがインストールされたことの明確な証拠となります。
クロージングライン
同じオペレーター、同じパッケージ、同じインストールフックでも、48時間以内に全く異なる脅威をばらまく可能性がある。ペイロードではなく、足場となる部分に注意を払うべきだ。




