GhostPosterの内部:PNGアイコンで5万人のFirefoxユーザーが感染した方法

すべての拡張機能はロゴを持っています。ツールバーにある小さな画像で、信頼の視覚的な略記です。見て、認識して、進む。そのファイルの中身について考えることはおそらくありません。

GhostPosterの作成者はそれに賭けています。

Image

当社のリスク管理エンジン「Wings」は、「Free VPN Forever」というFirefox拡張機能の異常な動作にフラグを立てました。拡張機能は独自のロゴファイルを読むという標準的な動作をしていましたが、その後、生バイトで何か不安な動作をしていました。コードを掘り下げると、隠された抽出ルーチンが見つかりました。拡張機能はロゴを表示しているだけではなく、画像データを検索し、あるべきでないマーカーを探していました。

その優しい小さな惑星アイコンの内部、画像データが終わる場所を超えて、マルウェアを見つけました。PNGファイル自体のバイトに埋め込まれ、抽出と実行を待っていました。

「Free VPN Forever」は2025年9月からFirefox Add-onsマーケットプレイスに掲載されており、16,000を超えるインストール数があります。本稿執筆時点でも稼働中です。そして1つではなく、このキャンペーンは17個のFirefox拡張機能に及び、合計50,000を超えるインストール数があります。無料VPN、翻訳ツール、天気予報、広告ブロッキング機能を約束する拡張機能で、通常の誘い文句です。実際に提供されるのは、閲覧内容を監視し、ブラウザのセキュリティ保護を削除し、リモートコード実行のバックドアを開く多段階マルウェアペイロードです。

Image

段階1:ロゴ

「Free VPN Forever」が読み込まれると、独自のロゴファイル「logo.png」を取得します。どの拡張機能でも標準的な動作です。しかし、その後何か異常なことが起こります。

コードは画像の生バイトを検索し始め、マーカーを探します:3つの等号記号(===)。そのマーカーの後のすべてが画像データではありません。JavaScript、つまり隠れているのに見える場所です。

Image

この技術は「ステガノグラフィ」と呼ばれており、完全に無害に見えるものの中に情報を隠すことです。拡張機能のJavaScriptファイルを検査するセキュリティスキャナーはペイロードを見つけません。コードレビュアーはそれを見ません。ロゴはツールバーに正常に表示されます。何も間違っているように見えません。

しかし、拡張機能が読み込まれるたびに、その隠されたコードを抽出して実行します。

段階2:ローダー

ロゴから抽出されたコードは実際のマルウェアではありません。リモートサーバーから実際のペイロードを取得するだけの小さなプログラム、ローダーです。

ローダーは「www.liveupdt[.]com」に接続します。それが失敗すると、バックアップを試みます:「www.dealctr[.]com」。リクエストには署名パラメータが含まれるため、攻撃者は感染した拡張機能がチェックインしているかを追跡できます。

  • プライマリ: www.liveupdt[.]com/ext/rd.php?f=
  • バックアップ: www.dealctr[.]com/ext/load.php?f=svr.png

しかし、ローダーは毎回連絡するわけではありません。チェックイン間隔は48時間です。そして、それでさえ、実際にペイロードを取得するのは10%の時間だけです。残りの90%? 単にしません。ランダムチャンス。

これは故意です。ネットワークトラフィックを監視するセキュリティ研究者は、感染した拡張機能を数時間監視しても、疑わしいものは何も見えないかもしれません。マルウェアは辛抱強いです。一貫性のない動作は、一貫性のある動作よりも検出しにくいことを知っています。

段階3:暗号

C&Cサーバーからペイロードが到着すると、読み取り可能なJavaScriptではありません。カスタムエンコーディングスキームを使用して変換されています。

デコードアルゴリズムはそのシンプルさでほぼ遊び心があります:

  1. すべての小文字を大文字に変換し、その逆も行う
  2. すべての8と9を入れ替える
  3. 結果をBase64デコードする

Image

デコードされたペイロードは、拡張機能の一意のランタイムIDから派生したキーを使用してXOR暗号化され、ブラウザストレージに保存されます。永続性が達成されます。

段階4:ペイロード

ここから興味深くなります。

C&Cサーバーから引き出され、デコードされ、実行される最終的なペイロードは、ユーザーの知らないうちにブラウザをマネタイズするための包括的なツールキットです。

アフィリエイトリンク乗っ取り

マルウェアは大手e-コマースプラットフォームへのアクセスを監視します。TaobaoまたはJD.comのアフィリエイトリンクをクリックすると、拡張機能がそれを傍受します。あなたの購入から手数料を獲得することになっていた元のアフィリエイトは何ももらいません。マルウェアオペレーターが代わりに支払われます。

Image

ユーザーには見えません。それでも製品ページにたどり着きます。それでも購入をします。唯一の違いは、誰が手数料を獲得するかです。

トラッキング注入

マルウェアは訪問したすべてのページにGoogleアナリティクストラッキングを注入します。トラッキングID: UA-60144933-8。拡張機能のインストール日、感染した日数、訪問したマーチャントネットワーク、ブラウザに結び付けられた一意の識別子を収集します。

隠れたdiv要素が「extwaigglbit」や「extwaiokist」などのIDを持つページに注入されます。これらの要素には、トラッキング属性、インストール日数、署名、マーチャントネットワークデータが含まれており、ページ上のスクリプトまたは拡張機能自体で読み取ることができます。

プロファイリングされており、それを知ることはありません。

セキュリティヘッダーストリッピング

マルウェアは積極的にHTTPレスポンスからセキュリティヘッダーを削除します:

  • Content-Security-Policy – 消滅
  • X-Frame-Options – 消滅

これらのヘッダーはクリックジャッキングとクロスサイトスクリプティング攻撃から保護するために存在します。拡張機能は訪問したすべてのサイトのすべてのレスポンスからそれらを削除します。ブラウザのセキュリティモデルは静かに解体されました。

CAPTCHA回避

マルウェアにはCAPTCHAチャレンジをバイパスするための複数の方法が含まれています。1つの方法は非表示のオーバーレイを作成し、ユーザーのインタラクションをシミュレートします。別の方法は「refeuficn.github.io」から外部CAPTCHAソルバーを読み込みます。3番目の方法はBaiduにログインしているかどうかをチェックし、アカウントステータスを検証として使用します。

マルウェアがなぜCAPTCHAをバイパスする必要があるのでしょうか? 隠れたiframe注入などの操作の一部がボット検出をトリガーするためです。マルウェアは動作を継続するために「人間」であることを証明する必要があります。

隠れたIframe注入

拡張機能はページに非表示のiframeを注入し、攻撃者が管理するサーバーからURLを読み込みます。これらのiframeは詐欺広告、クリック詐欺、追加のトラッキングを可能にします。作成、使用、削除され、目に見える痕跡は残しません。

リファラーポリシーは、トラフィックがどこから来ているのかを隠すために操作されます。iframeは15秒後に消えます。法医学的分析は彼らを現行犯で捕まえる必要があります。

回避プレイブック

GhostPosterを効果的にするのは1つのテクニックではなく、それらがどのように層状にされているかです。

ステガノグラフィは、スキャナーが見ない場所に初期ペイロードを隠します。

段階的な読み込みは、実際のマルウェアがファイルとして存在せず、実行時にフェッチされることを意味します。

カスタムエンコーディングはパターンマッチングを打ち負かします。

ランダムな遅延と確率チェックにより、動作は矛盾し、観察が困難になります。

時間遅延により、マルウェアはインストール後6日以上経つまで活性化されません。これは、ほとんどのセキュリティレビューが完了した後のはるか後です。

XOR暗号化は、保存されたデータを簡単な検査から保護します。

各層自体は特に洗練されていません。組み合わせると、本当に検出が難しいものが作成されます。

17の拡張機能、同じインフラストラクチャ

「Free VPN Forever」は1つではありません。同じC&Cインフラストラクチャと通信している16個の他のFirefox拡張機能を見つけました – liveupdt.comとdealctr.com。異なる拡張機能、異なる誘い、同じバックエンド。

PNGステガノグラフィテクニックを使用するものもあります。JavaScriptを直接ダウンロードして、訪問したすべてのページに注入するものもあります。カスタム暗号を使用してエンコードされたC&Cドメインで隠されたeval()呼び出しを使用するものもあります。

同じ攻撃者。同じサーバー。異なる配信メカニズム。これは実験のように見えます。どのアプローチが最も長く検出を回避するか、最も多くのインストール数を取得するか、最も多くの収益を生成するかをテストします。

総合して、これらの拡張機能は50,000回以上インストールされています。

「無料VPN」パターン

GhostPosterは、無料VPN拡張機能が悪意を持つようになるのを見たのは初めてではありません。パターンになってきています。

Image

今週初め、Googleが推奨する拡張機能「Urban VPN Proxy」(800万人のユーザーを持つ)を暴露しました。この拡張機能はChatGPT、Claude、Geminiとの会話を秘密裏に収集し、データブローカーに販売していました。

その前に、「FreeVPN.One」(もう1つの推奨、検証済み拡張機能で100,000以上のインストール数を持つ)は、銀行口座、プライベート写真、機密文書を含め、ユーザーが閲覧したすべてのスクリーンショットを静かにキャプチャしていました。

無料VPNはプライバシーを約束していますが、人生では無料ではありません。何度も何度も、彼らは代わりに監視を提供します。

最終的な考え

GhostPosterを危険にするのは1つのテクニックではありません。アクセスです。

これらの拡張機能は、訪問したすべてのサイトでブラウザのセキュリティヘッダーを削除します。すべてのページにコードを注入します。攻撃者が管理するサーバーへの永続的な接続を維持し、指示を待機します。ペイロードはいつでも更新できます。明日ブラウザで実行される内容は完全に彼ら次第です。

ステガノグラフィは賢いです。層状の回避テクニックは運用成熟度を示しています。しかし、実際の脅威はより単純です:50,000人のユーザーが攻撃者にブラウザの完全な制御を与えた拡張機能をインストールし、その拡張機能はまだFirefox Add-onsマーケットプレイスで稼働しています。

当社はKoiを構築し、マーケットプレイスレビューをすり抜けてユーザー環境を侵害する悪意のある拡張機能など、これらの種類の脅威を正確に検出するためです。当社のリスク管理エンジンは、隠されたペイロードを抽出する前に、GhostPosterのイメージ読み込みコードの異常な動作にフラグを立てました。

デモを予約する静的分析が見落とした脅威を動作監視がどのように捕捉するかを確認してください。

IOC

拡張機能

  • free-vpn-forever
  • screenshot-saved-easy
  • weather-best-forecast
  • crxmouse-gesture
  • cache-fast-site-loader
  • freemp3downloader
  • google-translate-right-clicks
  • google-traductor-esp
  • world-wide-vpn
  • dark-reader-for-ff
  • translator-gbbd
  • i-like-weather
  • google-translate-pro-extension
  • 谷歌-翻译
  • libretv-watch-free-videos
  • ad-stop
  • right-click-google-translate

ネットワークインジケータ

  • プライマリC2: www.liveupdt[.]com
  • バックアップC2: www.dealctr[.]com
  • 追加のC2: mitarchive[.]info
  • CAPTCHAソルバー: refeuficn.github.io

ファイルインジケータ

  • logo.pngのステガノグラフィマーカー: === (0x3D 0x3D 0x3D)
  • ストレージキー: dipLstCd667dipLstSig667dipLstLd667

トラッキング

  • GoogleアナリティクスID: UA-60144933-8

翻訳元: https://www.koi.ai/blog/inside-ghostposter-how-a-png-icon-infected-50-000-firefox-browser-users

ソース: koi.ai