PointBlank: PyPI RATがJSON-BinサービスにC2を隠蔽

PointBlank:無料のノートホスティングサービスを介してコマンドチャネルを実行する、フル機能のPython RAT。

TL; DR

PyPI パッケージ名 gcli-control 完全な Windows リモート アクセス ツールが出荷されました。キー ストローク ロギング、ウェブ カメラとマイクのキャプチャ、クリップ ボードの監視、ブラウザ認証情報アクセス、画面制御、永続性、特権昇格、そして「140 以上のコマンド」という自称機能を備えています。それが何であるかは隠されていませんでした。パッケージの PyPI の概要には、「リモート アクセス ツール」と説明されていました。 npoint.io".

注目すべき点は、そのフレーズである。 「npoint.io経由。」 専用サーバーに電話をかける代わりに、インプラントは npoint[.]io (無料の正規サービスで、小規模なJSONドキュメントをホストできるサービス)をコマンド&コントロールの中継点として利用する。オペレーターはJSONビンにコマンドを書き込み、インプラントはそのビンをポーリングして実行し、結果を書き戻す。攻撃者が所有するドメインをブロックする必要も、新しいIPアドレスをフラグ付けする必要もない。トラフィックは開発者が日常的に使用するサービスに送られる。

約13時間半で6つのバージョンが公開され、それぞれが前のバージョンよりも優れたものとなった。それらすべてにスコアが付けられ、 ml_predicted_safe 手動レビューの前に自動分類器によって、そのファミリーは悪質であると再分類された。

攻撃の解剖学

gcli-control インポートパッケージをインストールします gcli35モジュールのPythonコードベースです。インストール時に hooks — 何も実行されません ピップインストールこの機能はモジュール自体に実装されており、ツールが実行されると呼び出されます。モジュールの構成は製品仕様書のようなものです。

能力領域モジュール
宿主監視keylog, webcam, audio, clipboard, desktop, monitoring
認証情報とデータアクセスbrowser, forensics, fileops, transfer, users
足がかりとエスカレーションpersistence, elevator, registry, security
ホストおよびネットワーク偵察system, processes, network_config, wifi, bluetooth, netutils
コマンド&コントロールclient, host, session, protocol, npoint, crypto, encrypt

興味深いのはコマンドチャネルの部分です。ほとんどのリモートアクセスツールは、オペレーターが管理するサーバー(IPアドレス、ドメイン、ホスティングプロバイダーなど)に接続します。これらのサーバーは、報告されてオフラインにされる可能性があります。 gcli-control 代わりに デッドドロップとして利用できる無料のJSON-binサービスを選択します。 npoint モジュールは小さな JSON ドキュメントを読み書きします npoint[.]io 通常のHTTPSを介して; クリプト/暗号化する モジュールは交換されるペイロードをラップするため、バイナリの内容は平文コマンドではなくなります。その結果、仲介された暗号化リレーが実現します。

  • オペレーターは(暗号化された)命令をJSONビンに格納します。
  • 被害者ホスト上で動作するインプラントは、そのバイナリをポーリングし、復号化し、コマンドハンドラの1つを実行し、(暗号化された)結果を書き戻します。
  • ネットワークモニターから見ると、被害者は単に npoint[.]io ―開発者のトラフィックに表示される正当な理由のあるサービス。

ここでは、第2段階のダウンロードも難読化されたローダーもありません。機能はそのままの形で読みやすいPythonで提供され、唯一の「隠蔽」はリレーの選択とリレーされるペイロードの暗号化のみです。

JSONビンをデッドドロップとして利用する手法が運用上魅力的な理由を詳しく説明しておくことは重要です。なぜなら、この手法が今後も同様のパターンが見られると予想される理由を説明するからです。

  • オペレーター所有のエンドポイントはありません。 登録するC2ドメインはなく、レンタルするVPSもなく、防御者やレジストラが押収するものは何もありません。 パッケージ チャンネルに触れない。 チャンネル これは、汎用SaaSに数百万個の文書の中からたった1つの文書を監視するよう依頼することを意味する。
  • 評判洗浄。 よく知られた開発者向けサービスへのHTTPS送信は、新規ドメインや生のIPアドレスを使用した場合のような評判への悪影響を一切受けません。多くの送信フィルタリング設定では、暗黙的にHTTPS送信が許可されています。
  • 非同期性と否認可能性。 ポーリング方式(インプラントがソケットを開いたままにするのではなく、一定間隔でドキュメントを取得する方式)では、対話型セッションではなく、定期的なAPIポーリングのようなトラフィックが生成されます。ドキュメントの内容を暗号化することで、たとえ分析者がゴミ箱を発見しても、コマンドリストではなく暗号文しか見ることができません。
  • 自明な回転別のビンに移動したり、まったく別のメモ/貼り付けサービスに移動したりする場合、オペレーターは設定を1行変更するだけで済みます。特定のリレーに関連付けられたブロックリストは、出荷された時点で無効になります。

オペレーターが受け入れるトレードオフは、スループットとレイテンシです。デッドドロップリレーは、直接接続よりも速度が遅く、帯域幅も狭くなります。主に短いコマンドを発行し、時間をかけて結果を収集する監視・制御インプラントの場合、このトレードオフは容易に受け入れられます。

タイムライン

事態は急速に拡大した。フラグが立てられたバージョンのチケット作成タイムスタンプから、観測された一連の出来事は約13時間半以内に収まっていることが分かり、スキャナー自身の証拠数もコードと共に増加した。最初のバージョンではフラグが立てられたサイトは数箇所だったが、最新バージョンでは14箇所にまで増えている。

最初に確認された日時(UTC)お願い
0.1.02026-07-21 12:59初回アップロード; フラグ付けされた表面は最小限
0.5.02026-07-21 18:01能力が拡大する
0.2.02026-07-21 18:03(バージョン番号はアップロード順序と単調増加ではありません)
0.6.02026-07-22 00:44より幅広いモジュールセット
0.7.02026-07-22 01:58ほぼ完全なツールキット
0.7.12026-07-22 02:28最新版;35モジュール、フル機能搭載

バージョン番号は厳密な順序で公開されたわけではないが、方向性は明確だ。まず小規模なバージョンを公開し、その後、フル機能版の0.7.1に向けて迅速な反復開発を行う。これは、活発に開発が進められ、成長するにつれてパブリックレジストリにプッシュされていくプロジェクトの形態であり、一回限りのリリースではない。

侵害の兆候

以下のすべての指標は、ディスク上のパッケージ内容とバージョン0.7.1の決定論的指標スキャンによって確認されており、推測に基づくものではありません。

タイプインジケータ
パッケージ(PyPI)gcli-controlバージョン 0.1.0、0.2.0、0.5.0、0.6.0、0.7.0、0.7.1
パッケージをインポートするgcli
C2リレーnpoint[.]io (JSON-binデッドドロップ、暗号化されたペイロード)
指定されたリポジトリgithub[.]com/gcli-control/gcli
行動特性併設型監視モジュール: keylog, webcam, audio, clipboard, browserさらに、永続性、エレベーター、クライアント/ホスト/プロトコルコマンドレイヤーを1つのパッケージに統合。
インストールを開始する hooksなし: 機能はインストール時ではなく、ツール実行時に実行されます

ディフェンダー注: 最も強力で永続的な信号はドメインではなく(リレーホストは自明に回転する) 形状3つ以上の異なるホスト監視プリミティブをバンドルした単一のパッケージ (NAIST) と コマンド/レスポンスループをパブリックコンテンツホスティングサービス経由でルーティングします。ブロッキング npoint[.]io ほとんどの店舗にとって、直接的な対策は非現実的です。入力デバイスをキャプチャし、JSON-binサービスと通信する予期せぬプロセスについてアラートを発する方がはるかに堅牢です。

観察された行動と枠組み

このサンプルが異例な点は2つあり、どちらも動機に関する推論ではなく、観察可能な事実である。

それは自ら宣伝した。 PyPIで配布されたパッケージの概要には、リモートアクセス、デスクトップ制御、ユーザー管理、ウェブカメラ、オーディオ、キーロガー、永続性、ブラウザデータ、WiFi、レジストリ、「140以上のコマンド」といった機能が平易な言葉で列挙されていました。公開レジストリでよく見られるような、ビルドヘルパー、CLIラッパー、AIエージェントユーティリティとしてコードを偽装しようとする試みは一切ありませんでした。このオープンさが、アクセス制御なしで公開されたレッドチームツールを反映しているのか、それとも別の何かを反映しているのかは、パッケージの内容だけでは判断できません。確かなことは、動作する汎用リモートアクセスおよび監視ツールキットが誰でもインストール可能だったということです。 ピップ.

それは、無害なサービスに対する信頼に基づいていた。 使い方 npoint[.]io リレーが決定的な技術であるため、これはより広範なパターンの一例です。正当なSaaS(ペーストサイト、JSONビン、チャットWeb)を介してC2をルーティングします。hooks(クラウドドキュメントなど)悪意のあるトラフィックが通常の開発者の活動に紛れ込み、オペレーターが所有するエンドポイントを奪取できないようにします。リレー上のペイロードは暗号化されているため、一般の人がbinの内容を見てもコマンドとして認識されることはありません。

出版社からのシグナルは弱く、一般的すぎる。 パッケージは 著者 「gcli 貢献者」と MIT ライセンスを付与し、ホームページとリポジトリのフィールドを github[.]com/gcli-control/gcliそれらはどれも検証ではありません。著者文字列は自由記述であり、MITライセンスヘッダーは費用がかからず、パッケージメタデータ内のリポジトリURLは主張であって出所の証明ではありません。真新しい名前、一般的な共同著者、パッケージを中心に作成された自己参照的な組織/リポジトリというパターンは、リモートコントロール機能がたまたま追加された既存のツールではなく、コードを運ぶために特別に立ち上げられたプロジェクトの姿です。これらは観察結果として記録するものであり、目的のために構築されたディストリビューションと矛盾するものではありませんが、それ自体で確立するものではありません。

本件の行為は、その能力と配信方法に基づき、悪意のあるものと判断する。すなわち、完全な実行可能なリモートアクセスおよび監視用インプラントが、秘密の中継を介して公開されたパッケージインデックス上で配布されたものである。標的や動機は特定できない。

影響、傾向、そしてディフェンダーができること

偽装を重視したトリアージにおける盲点。 自動化されたパッケージトリアージキーの多くは 偽装 の信号 典型的なレジストリマルウェア — 難読化されたブロブ、インストール時 hooks認証情報収集用の短いフレーズ。 公然と裏切り者クリーンで読みやすいコードとインストールフックがないため、そのような兆候は一切なく、隠蔽を想定するヒューリスティックをすり抜けることができます。このクラスを確実に検出するシグナルは、偽装に基づくものではなく構造的なものです。機能センサス(1 つのパッケージ内にいくつの異なるホスト監視プリミティブが共存しているか)と C2 シェイプ分析(汎用コンテンツホスティングサービスを経由してルーティングされるコマンド/レスポンスループ)です。これらのチェックは、どれだけ正直であるか、あるいは 難読化 パッケージは。

SaaSをC2(最高管理職)として活用するトレンド。 正規のホスティングサービスをデッドドロップとして悪用する手口は目新しいものではありませんが、サービスをブロックする防御コストが高く、サービスを切り替える攻撃コストがほぼゼロであるため、依然として有効です。今後もこうした手口は増えるでしょう。特定の悪質なドメインに対応したネットワーク防御はすぐに時代遅れになりますが、行動ルール(「このプロセスはクリップボードとウェブカメラを読み取り、その後、メモホスティングAPIと通信する」など)はそうではありません。

具体的な検出手順の概略図。 永続的な規則は名前を挙げない npoint[.]io 全くありません。これは、通常の開発者やCIホストでは個々にはよくあるものの、両方が同時に発生するとまれな2つの現象を組み合わせたものです。

1つのセッション内の単一のプロセスで、以下の両方が同時に発生した場合にアラートを発する:
(A)ホスト監視プリミティブ(入力デバイス(キーボード/マウスフック)、カメラ、マイク、スクリーンキャプチャ、クリップボード読み取りループ、またはブラウザ認証情報ストア("Login データ" / "ローカル状態" / DPAPI); および
(B)は、公開コンテンツホスティング/ペースト/JSONビン/チャットウェブフックサービスにアウトバウンドリクエストを送信し、(B)の具体的なサービスに関係なくレビューを要求します。

どちらか一方だけでは疑わしいとは言えません。正当なツールでもスクリーンショットを撮ったり、JSONデータをホスティングAPIに送信したりすることはよくあります。重要なのは、短命なプロセス内で行われる接続処理であり、これはリレーの切り替え後も維持されます。

チームのための実践的なステップ:

  • 開発者ホストやCIホストへの公開パッケージのインストールは、利便性のためではなく、実行境界として扱うべきです。ビルドエージェント上のRATは、あなたの機密情報を盗み出すRATと同じです。
  • 許可リストに登録された内部ミラーを優先してください。リモートコントロールを連想させる名前で、キーロガーを説明するパッケージは、決して企業インデックス上で解決されるべきではありません。
  • 警告 組み合わせ — 入力デバイスまたは画面キャプチャと、コンテンツ/ペースト/JSONビンサービスへの送信トラフィック — 単独では無害な用途がある単一のプリミティブではなく。
  • ホストへの広範なアクセス権限を持つパッケージについては、自動化された「安全」スコアを最終的な判断基準として頼るべきではありません。必ず人間のレビューに回してください。

当該パッケージ群は悪意のあるものとして分類され、レジストリからの削除対象となっています。リレーベースのC2では、オペレーターが所有するシンクホール用ホストが存在しないため、永続的な防御上の価値は、上記の動作特性にあり、個々のブロックリストエントリにあるのではありません。

sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に