TL; DR
nolimit-agent は、公開されているバージョンを持つ npm パッケージです。 1.0.299から1.0.3072026年6月26日から2026年6月29日までの4日間にわたってリリースされ、それぞれに 完全なフィッシングおよび大量メール対策フレームワーク 隠された、完全に難読化されたディレクトリ内。どのバージョンでも、メインエントリは次のように解決されます。 .ad/x0.jsこれは、約 4,200 個の JavaScript 難読化文字列配列ブロブを含む、ドットファイル名のフォルダ内の約 86 個のファイルの 1 つです。インストール フックとエントリ レイアウトは、すべての行で同一です。
曖昧さの裏には Microsoft 365 OAuth デバイスコードフロー (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecodeコードが承認されると、Microsoft Graph API を介して被害者の Outlook 受信トレイと送信済みアイテムを読み取ります。オペレーターが提供する受信者リストに基づいて動作する一括 SMTP および SMS 送信エンジン。ブランドなりすましメッセージテンプレート。オープンリダイレクトリンクの構築。DNS-over-HTTPS、WHOIS、および GitHub コード検索による偵察。ランタイムトラフィックビーコンは、オペレーターのインフラストラクチャに送信されます。 api[.]nolimitent[.]xyz:4100.
影響を受けるユーザー: パッケージのいずれかのバージョンをインストールするユーザー、および Microsoft 365 メールボックス 所有者が、それを通して提示されたデバイスコードを承認します。最新バージョンでは、 1.0.307は現在の最新タグであり、同じデバイスコードメールボックス機能を備えています。悪意のあるコードは、1つの古いバージョンに限定されません。
重大度: 重大な影響を受ける生態系: npm最初に確認すべき指標はホストです。 api[.]nolimitent[.]xyz.
攻撃の仕組み
隠されたペイロードを覆う無害な外殻
パッケージの表面はごく普通に見える。 package.json 宣言する インストール後 フック –
text postinstall: node scripts/postinstall.js そして検査の結果 scripts/postinstall.js 無害です。Windows コマンド シムをインストールして終了します。フックは動作が発生する場所ではありません。 メイン (NAIST) と ビン 両方のフィールドが指す 。広告/先頭のドットがカジュアルなものから除外されているディレクトリ ls 出力であり、その内容は一律に機械難読化されている。静的スキャナは、エンコードされたペイロードのスパンを約4,293個カウントした。 。広告/ モジュールセット; javascript-難読化ツール これは宣言された開発依存関係であり、バンドルされたファイルの文字列配列回転の形状と一致します。
この分離こそが、特筆すべき最初の兆候である。レビュー担当者が精査するインストールフックはクリーンなコードである一方、運用コードは1つ離れたディレクトリに隠され、難読化されており、パッケージのエクスポートされたエントリポイントが実行されたときにのみアクセス可能となる。
Microsoft 365 デバイスコード メールボックスへのアクセス
モジュール .ad/x12.js このフレームワークで最も重要な機能を担っています。Microsoft 365 OAuth 2.0 デバイス認証の付与を推進します。
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode デバイスコード付与は、入力制約のあるデバイス向けに設計された正当なマイクロソフトのフローです。サービスがコードを要求し、ユーザーがそのコードを入力 microsoft.com/devicelogin` は 2 番目のデバイスで実行され、承認され、要求元のサービスはトークンを受け取ります。要求元のサービスがメールボックスの所有者以外の人物に属している場合、承認によってその第三者にトークンが渡されます。トークンが取得されると、 `.ad/x12.js` は、Microsoft Graph を介してメールボックスを直接読み取ります。
text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients その $ select 予測機能は、受信トレイから送信者アドレスを、送信済みアイテムから受信者アドレスを取得します。これは、被害者の通信相手を特定するための基礎データとなります。これは、パスワードの取得ではなく、同意に基づく中間者攻撃(AiTM)アクセスです。従来の意味でのフィッシングを行うための認証情報は存在せず、承認を得るためのコードのみが必要です。
なりすましテンプレートを備えた一括メールおよびSMS送信エンジン
郵便受けの入り口の周りには郵送物があります。パッケージにはオペレーターが編集可能なデータファイル(送信者リスト)が同梱されています(senders.txt, smtps.txt)とテンプレートファイル(functions.txt)―そのプレースホルダーアドレスは、なりすましの配役リストのように見える。 security@apple.com, login-検証、OAuthサービス、請求、およびアカウント通知送信者に対して yourdomain.com オペレーターが代行する。SMS側は電話を運ぶ。ebook およびゲートウェイの設定。メーラーは、オペレーターが提供する受信者リストを繰り返し処理し、設定済みのSMTPリレー経由で送信します。
リンクを陸に繋げるには、 .ad/xu.js (NAIST) と .ad/xq.js URL解析の曖昧さとクリック追跡を悪用するURLを作成します。偽装パターンは、信頼できそうなオーソリティをURLの前に埋め込みます。 @ そのため、表示されるプレフィックスは実際のホストとは異なります。
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? このフレームワークは、主要な消費者向けおよび enterprise メールプロバイダー向け — プロバイダーのブランドをあしらった説得力のあるプロンプトやランディングページを表示するための一般的な手法。
標的およびインフラの偵察
いくつかのモジュールは、送信前にコンテキスト情報を収集します。 .ad/x0.js DNS-over-HTTPS を介して名前を解決します (dns[.]google/resolve), .ad/xa.js WHOIS クエリ (api[.]whois[.]vu)、及び .ad/x9.js GitHubコード検索を実行します(api[.]github[.]com/search/code?q=)— 公開されたメールサーバーの設定とSMTP認証情報を発見し、リレーリストに提供するというパターンと一致しています。 .ad/xs.js Wayback MachineのCDXインデックスにクエリを実行します。
コマンドと制御
曖昧なセット全体にわたって、 .ad/x4.js オペレーターエンドポイントを参照します。
text http://api[.]nolimitent[.]xyz:4100 ホストは共有します 制限なし 出版社独自の命名規則を持つブランド、そして :4100 ポートはフレームワークのコールホームチャネルです。これは防御側にとって最も確実な指標です。パッケージ、開発者ワークステーション、またはビルドエージェントが到達します。 api[.]nolimitent[.]xyz このコードを実行しました。
妥協の指標
以下の指標は、防御側が対処できるものです。ロックファイルをgrepで検索したり、ホストをブロックしたり、プロキシやDNSログを検索したりできます。Microsoftエンドポイントが表示されるのは、フレームワークがそれらを悪用しているためであり、それ自体は悪意のあるものではなく、ブロックすべきではありません。
| インジケータ | タイプ | 場所 | ディフェンダーの行動 |
|---|---|---|---|
nolimit-agent (バージョン1.0.299~1.0.307) | パッケージ | npm | ロックファイル/インストールログをgrepする |
api[.]nolimitent[.]xyz (:4100) | C2ホスト | .ad/x4.js | ブロック; DNS + プロキシログを検索 |
.ad/ 隠しディレクトリをメイン/binターゲットとして | Structure | package.json | レジストリレビューにおける静的シグナル |
trusted[.]com@ / %40 / :80@ リンクフォーム | URLスプーフィング | .ad/xu.js, .ad/xq.js | メール/プロキシURLの検査 |
デバイスコード付与 + グラフ inbox/sentitems read | 行動 | .ad/x12.js | M365サインイン+Graph監査レビュー |
トリアージ時に取得されたファイルハッシュ:
- package/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- package/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
このパッケージとは別に調査する価値のある Microsoft 365 テナントシグナル: デバイスコードによるサインインが成功し、その後すぐに Graph の読み取りが行われる。 メールフォルダ/受信トレイ (NAIST) と メールフォルダ/送信アイテム特に、ユーザーが認識していないセッションからのアクセス。
帰属と観察された行動
目に見えるものは、その背後にいる人物とは切り離されたままである。
観察可能な事実:パッケージはハンドル名で公開されています nolimit-agent 未確認のGmailアドレスとリンクされたソースリポジトリがない。 package.json 「高度なメール送信者」と説明し、 レッドチーム キーワード。ランタイムコードは隠蔽され難読化された 。広告/ ツールチェーンが属するディレクトリ(javascript-難読化ツール) は宣言された依存関係であり、コールホームホストです。 api[.]nolimitent[.]xyz 再利用する 制限なし これは単一のブランドであり、通信事業者が管理する単一のインフラストラクチャのランドマークを含むものであり、複数のパッケージからなるクラスターではありません。また、以前に発表されたキャンペーンとの重複も確認されていません。
その レッドチーム キーワードによって分類が変わるわけではありません。デュアルユース機能を備えた正当な攻撃型セキュリティツールは、ソースコードが読みやすく、オペレーターがターゲットを指定し、隠しコールホームがないなど、透過的に動作します。しかし、このパッケージはこれらの特性をすべて覆しています。動作コードは難読化され隠蔽されており、ユーザーが指定したターゲットではなく、固定されたオペレーターのインフラストラクチャにビーコンを送信します。ラベルではなく動作が判断基準となり、これは悪意のある行為です。
ここでは意図は明示されていません。投稿では、コードの動作(デバイスコードの要求、Graph経由でのメールボックスの読み取り、設定済みのリレー経由での一括メール送信、固定ホストへのビーコン送信)について説明していますが、動機は述べられていません。
影響、傾向、および防衛者向けガイダンス
インストール時に重要な影響が 2 つあります。まず、インストールする開発者または CI エージェントは、 nolimit-agent フレームワークをそのホストにインストールし、コールホームを確立します。 api[.]nolimitent[.]xyz第二に、デバイスコード機能はインストール先のホストを超えてその範囲を拡大します。所有者が提示されたコードを承認するように促されたMicrosoft 365メールボックスはGraphを通じて直接読み取られ、パスワードがネットワークを通過することはありません。
より広範な傾向は、内部化することです。デバイスコード(AiTM)フィッシングは、スタンドアロンのフィッシングインフラストラクチャから、公開レジストリ上のパッケージへと移行しました。 npmインストール 電子メールのリンクではなく、このようにキットをパッケージ化することで、フィッシング攻撃者のホスティングとリンク配信の問題をレジストリのリーチと交換し、動作コードをクリーンインストールフックとドットファイル名の難読化ディレクトリの背後に隠蔽することで、手作業での簡単な確認を困難にしています。
防御側にとって:
- レジストリと依存関係の確認。 パッケージを扱う メイン/ビン インストールフックがクリーンに見えるかどうかに関係なく、構造のみに基づいて、統一的に難読化されたファーストパーティコードの隠し(ドットプレフィックス付き)ディレクトリに解決されることを高リスクと判断します。ミニファイは難読化ではありません。行の長さではなく、文字列配列デコーダのシグネチャに基づいてゲートを設定します。
- Microsoft 365 のセキュリティ強化. 運用上必要でない場合は、条件付きアクセスを使用してデバイスコード認証フローを制限してください。デバイスコードによる認証は既知のAiTM攻撃経路であり、対話型ユーザーが必要とするケースは稀です。デバイスコードによるサインインを監査し、その後すぐにGraphメールボックスを列挙してください。
- ネットワーク検出。 ブロックしてアラートを出す api[.]nolimitent[.]xyz開発者およびビルドインフラストラクチャ全体で、アウトバウンドDNSおよびプロキシログを検索して、それを見つけ出します。
- メール経路の検出。 その user @ host URL偽装フォーム(trusted[.]com@…) はメールゲートウェイとプロキシで検出可能。権限コンポーネントが の前にあるリンクにフラグを付ける。 @.
分析時点では、パッケージはnpmで公開されていました。隠されたフレームワークは公開されているバージョンライン全体と現在のバージョンにまたがっているため、 最新の タグ (1.0.307) はデバイスコード機能を備えているため、レジストリの削除は単一のバックバージョンだけでなく、すべてのバージョンを対象とする必要があります。




