注目

脅威動向 / THREATS / INFOSTEALER

Python NodeStealerがスパイウェア化 — キーロガーと画面窃取、Facebook 20超APIを窃取とNetskopeが報告

Netskope Threat Labsは2026年9月2日、Facebookの広告アカウントを狙うPython製インフォスティーラー「NodeStealer」の新変種を報告した。キーストローク記録、クリップボード監視、画面キャプチャという3つのスパイウェア機能を獲得し、Wi-FiパスワードやPicturesフォルダ、2種の追加ブラウザも窃取対象に加わった。20超のFacebook Graph APIを一括で呼び出して利用者の人物像そのものを収集し、二つのTelegram Botに分けて送り出す手口も確認された。

攻撃手法
ソフトウェア

Netskope Threat Labsは2026年9月2日、Facebookの広告アカウントやブラウザ情報を狙うPython製インフォスティーラー NodeStealer の新変種を報告した。2023年から同社が追跡してきたNodeStealerは、これまでFacebook認証情報とブラウザの保存データを窃取する盗み屋だった。今回確認された変種は、キーストロークの記録、クリップボードの監視、画面キャプチャという3つのスパイウェア機能を新たに獲得し、Wi-FiパスワードやPicturesフォルダ、2種の追加ブラウザまで窃取対象を広げていた。Netskopeは「 capable spyware platform(高性能なスパイウェア基盤)へ進化した」と評価している。

被害はアジアと北米を中心に、複数の業種に広がるが、金融サービスが最も多いと同社は説明する。配信経路は従来通り、偽のFacebookメッセージや添付ファイルが起点とみられる。単なる広告費の窃取を超え、利用者本人の人物像そのものを奪う手口へ変質しており、広告運用者やソーシャル運用担当者は注意が必要だ。

キーロガー・クリップボード監視・画面キャプチャの3点セット

Netskopeが解析した新変種は、Pythonの標準的なライブラリを悪用して監視機能を実装していた。

  • キーロガー(pynput) — すべてのキー入力を keylog({IP}).txt という一時ファイルに記録する。別スレッドが120秒ごとに主Telegram C2へ送信し、送信後に中身を消去する。記録は無期限に続くため、パスワードや機微な入力が継続的に漏えいする
  • クリップボード監視(pyperclip) — 利用者がコピー&ペーストした平文を監視し、被害者のIPアドレスとともに同じC2へ送る。手入力を避けて貼り付けたパスワードも対象になる
  • 画面キャプチャ(pyautogui) — 実行直後と関数終了直前の2回、画面全体のスクリーンショットを取得してC2へ送る。表示中の文書や管理画面の内容がそのまま流出する

これらに加え、新変種はWi-Fiパスワード、Picturesフォルダの中身、2種の追加ブラウザの認証データベースも窃取する。ブラウザの保存パスワードやクッキーに加え、端末内の写真や無線LANの共有鍵まで奪われることで、被害は端末外のクラウドや別サービスへの横断的なアカウント乗っ取りへ拡大するおそれがある。

Facebook 20超APIで「人物ドシエ」を構築

従来のNodeStealerはGraph APIを2件だけ呼び出していた。新変種は20件以上を一括で呼び出し、広告アカウントの情報だけでなく、管理者本人の人物像を再構築する。

Netskopeが確認した呼び出し先は次の4領域にまたがる。

領域 呼び出し例 窃取される情報
Identity /me、/me/location、/me/picture 氏名・メール・誕生日・性別・居住地・学歴・職歴・プロフィール画像
Social graph /me/friends、/me/following、/me/likes 友人・フォロー・いいね
Content /me/posts、/me/groups、/me/events、/me/videos 投稿・グループ・イベント・動画・アクティビティ
Advertising / Pages / Commerce / Security /me/adaccounts、/me/adcampaigns、/me/accounts、/me/businesses、/me/integrations、/me/logins 広告アカウントの残高・消化額・通貨、ページの役割、ビジネス管理者、連携アプリ、ログイン履歴

アカウント単体の乗っ取りにとどまらず、なりすまし詐欺や別プラットフォームでの乗っ取り、窃取データの高額転売に悪用され得るとNetskopeは指摘する。

二つのTelegram Botに分けて送り出すC2

従来は1つのTelegram Botトークンで送受信していた。新変種は2つのBotトークンを使い分ける。

  • 主Bot — ブラウザの認証情報、パスワード、クッキー等のZIPアーカイブ
  • 副Bot — Facebook固有の収集データ(上記20超APIの結果)

Netskopeは、分割の狙いとして運用の分業(窃取データ種別ごとに処理パイプラインを分ける)と冗長性(片方のトークンが遮断・凍結されても、もう片方が生き残る)を挙げている。Telegram Bot APIをC2に悪用する手口は遮断が難しく、Botトークンの差し替えで復活しやすい。

.pycヘッダのnull化とAI支援の痕跡

配布形態にも工夫があった。検体は**コンパイル済みPythonバイトコード(.pyc)**として配布され、CPython 3.12以降のマジックナンバーを持ちつつ、タイムスタンプとソースサイズのフィールドが0でnull化されていた。Unixエポック(1970年1月1日 00:00:00 UTC)に見せかけ、コンパイル時期の推定を妨げ、自動デコンパイルを阻害する狙いとみられる。Netskopeは、解析ツールがヘッダのメタデータに依存していると見逃すおそれがあるため、ヘッダの値にかかわらずバイトコード本体を検査すべきだと呼びかけている。

さらに、Netskopeは新機能のコードにAI支援の痕跡があると推測している。根拠は、すべての新メソッドで装飾的な絵文字が系統的に使われている点と、単一メソッド save_additional_info 内で20超のGraph API呼び出しが絵文字ラベル付きで均一な構造で列挙されている点だ。いずれも過去のNodeStealer検体には見られなかった特徴であり、広範な収集を一括で指示するプロンプトの結果と整合的だと同社は説明する。ただし、同社は推測であり確定ではないと留保している。

防御のポイント — Netskopeが呼びかける対策

Netskope Threat Labsは、今回の分析を踏まえ、次の対策を呼びかけている。

  • Pythonバイトコードの検査をヘッダに依存しない — タイムスタンプやサイズが0でもバイトコード本体を解析する
  • ブラウザの認証データベースへの不審なアクセスを監視する — 正規ブラウザ以外のプロセスによる読み取りを検知する
  • キーストローク収集やTelegram Bot APIへの通信を監視する — 継続的なキー入力の記録や、Telegramへの定期送信を異常として検知する
  • Facebookビジネス管理者は特に注意する — フィッシング耐性のある多要素認証(MFA)と最小権限の役割設定を徹底し、ソーシャル経由の不審な添付ファイルを開かない

NodeStealerは、偽のFacebookメッセージや添付ファイルから感染が始まることが多い。広告運用やSNS運用に関わる担当者は、不審なメッセージのリンクやファイルを開かないことと、ブラウザに保存されたパスワードやクッキーを定期的に棚卸しすることが、被害の拡大を抑える近道になる。

出典

この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。