Rilideマルウェア:ブラウザーの拡張機能がサイバー攻撃をどう変えているか

マルウェアの赤い三角形の警告サインが表示されたコンピューター画面

Riledeの紹介

LumaC2やCookieGenesisとしても知られるRilideは、Chromiumベースのブラウザーをターゲットにしてユーザーのアクティビティーを乗っ取り、機密データを盗む高度なマルウェアです。2023年に発見されたRilideは、ブラウザーの拡張機能を利用して攻撃を実行します。Rilideは、ブラウザー拡張コンポーネントを悪用して、悪意のあるスクリプトをWebページに挿入します。データ窃盗に加えて、一般的なウォレットやメール・クライアント向けの二要素認証(2FA)操作による主要な機能も備えています。

2025年初頭以来、Trusteer Research Labでは、感染したユーザー・セッションが50,000件を超えており、脅威アクティビティーの規模を示しています。Rilideは、北米、南米、ヨーロッパ、日本を攻撃するTrusteerラボによって検出された世界規模のキャンペーンを継続中です。

この投稿では、Rilideがブラウザー内でどのように動作するかについてはこちらを参考にして、Rilideが攻撃を実行するために使用する手法、特に金融プラットフォームへの影響を検証します。

Rilideの機能は、脅威の全貌が、単一のページ内JavaScriptコードを使用した従来のWebインジェクションからブラウザー拡張機能へと変化していることを浮き彫りにしています。ブラウザー拡張機能は、それなしでは実現が非常に困難な多くの機能を促進します。次の分析では、拡張機能がいかに強力で、なぜ最新のマルウェアがその拡張機能を使用する傾向があるのかを示しています。

ブラウザーにいる男:過去と現在

以前、ほとんどの「ブラウザーへの侵入」攻撃は、マルウェアがブラウザーのメモリーをスキャンして特定のHTMLパターンを識別し、ページのメモリー内コンテンツに<script>タグを直接挿入することで実行されていました。悪意があるにもかかわらず、これらのスクリプトは、サンドボックス環境内で動作すること、同じオリジン・ポリシーに準拠すること、挿入されたページのライフサイクルに関連付けられることなど、依然としてブラウザーのセキュリティー・メカニズムの対象となっていました。

例えば、挿入されたスクリプトは他のソースからクッキーや参考情報にアクセスできず、ページが閉じられた後に永続化または実行することもできませんでした。

これとは対照的に、悪意のあるブラウザー拡張機能を使用する最近の攻撃は、これらの制限のほとんどを克服しています。拡張機能は特定のWebページから独立して動作し、バックグラウンドで永続的に実行できます。また、高い権限を持っているため、同じオリジンの制限をバイパスし、クッキーや参考情報などのブラウザー全体のストレージにアクセスし、どのページも開かれていない場合でもアクティブな状態を維持できます。この変化により、ブラウザー拡張機能は攻撃者にとって強力なツールとなり、従来のWebインジェクション方法をはるかに超えるレベルの永続性と制御を提供します。

拡張機能により、JavaScriptの実行コンテキストにも変更が加えられ、それ自体に悪意のあるメリットがあります。従来のWebインジェクションは、セキュリティー・ツールを含むWebアプリケーション・コードと同じコンテキストで実行されました。残された証拠(スクリプト要素、ネットワーク要求、js変数など)があれば、マルウェアを検出できる可能性があります。

現在、ページ・コンテキストに加えて、2つの異なるJavaScript環境があります。

  1. まず、ページ・ドキュメントにアクセスできるものの、メイン・ページ環境から部分的に分離されているコンテンツ・スクリプト・コンテキストがあります。
  2. さらに、コンテンツ・スクリプトやメイン・ページ環境にはアクセスできないバックグラウンド・コード・コンテキスト(サービス・ワーカー)があります。

これらのコンテキスト間の通信はすべて、ページやその開発者には見えない定義済みのブラウザー・インターフェースを介して行われます。拡張機能のほとんどの動作と証拠は設計により分離されており、メインのドキュメントに変更がなければ、検知は特に困難です。

最新のブラウザーAPIに提供される広範な組み込み機能とアクセス許可のおかげで、強化された回避機能の提供に加え、ブラウザー拡張機能の開発も簡単です。次の分析では、拡張機能によって複雑な攻撃の開発がどのように容易になるかを示しています。

拡張機能が提供する制御、永続性、回避機能の向上、開発の容易さを考慮すると、ブラウザー・ベースの脅威の進化において、従来の「ブラウザー内行動」の手法から拡張機能ベースの攻撃への移行は、理解可能であるだけでなく、避けられないものであると言えます。

ニュースレターを表示しているスマホの画面

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

Rilideブラウザー拡張機能の深掘り

マニフェストの内訳

マニフェスト・ファイルは、拡張機能の機能とアクセス・レベルを概説する重要なコンポーネントであり、Riledeの悪意のある能力を理解するための最初の手がかりになります。

分析された亜種の1つは、Googleドライブの拡張機能として存在します。

マニフェスト拡張機能の説明のコード
図1:マニフェスト拡張機能の説明

その後に、必要な権限のリストがあります。このリストには、以下を含むがこれらに限定されない、複数のクリティカルなブラウザー機能が含まれています。

  • 「Scripting」:WebページにJavaScriptコードを挿入して実行できます。
  • 「Cookies」:ブラウザー・クッキーの読み取り、変更、または削除を可能にします
  • 「WebRequest」:ブラウザーによるネットワーク・リクエストの監視と変更
  • 「ClipboardRead/Write」:ユーザークリップボードコンテンツの読み取りと変更
  • 「ActiveTab」:現在アクティブなタブの内容に一時的にアクセス

「host_permission」では、拡張機能は<all_ urls>(ブラウザーがサポートするスキーム、ドメイン、パス、ポート)にアクセスして、対話することができます。

また、「コンテンツ・スクリプト」も、Document_startのすべてのURLで実行されるように設定されています。つまり、ブラウザーがページの読み込みを開始するとすぐに、コンテンツが完全にレンダリングされる前に実行されるということです。

マニフェスト・スクリプトの構成を示すコード
図2:マニフェスト・スクリプトの構成

main.jsスクリプトには一般的な情報窃取機能が含まれていますが、gmail.jsはGmailメール・クライアント・ページをターゲットとします。それにもかかわらず、すべてのスクリプトがすべてのページに挿入されます。

この拡張機能は「declarative_net_Request」の下で、複数のコンテンツ・セキュリティー・ポリシー(CSP)ヘッダーを削除するルールを構成します。これにより、Rilideはセキュリティー制限を回避し、インライン・コンテンツを挿入することができます。

「バックグラウンド」では、拡張機能のサービス・ワーカーが設定されます。ここで、マルウェアはブラウザー・イベントを監視し、C2サーバーとの通信を確立します。次に、バックグラウンド・スクリプト分析を詳しく掘り下げて、マルウェアがどのようにブラウザー・イベントを監視し、攻撃戦略を実行するかをより深く理解します。

Background.jsスクリプト分析
初期化

Background.jsには、拡張機能のインストール・イベント時に実行するように構成された初期化コードが含まれています。CPUやストレージの詳細などのデバイス情報はchrome.systemコールを使って取得し、インストールされている拡張機能のデータはchrome.mangementを使って取得します。一意のIDは、npm uuidモジュール(jspm経由でインポート)を使用して生成され、ローカルストレージに保存されます。最後に、空のフィルター・パラメーターを指定してChrome.cookies.getAllを使用してすべてのクッキーが取得されます。

初期化コード
図3:初期化コード

このデータはC2サーバーに送信され、その応答によって拡張機能のプロキシ機能を有効にすることができます。インジェクション、コマンド、マルウェアの設定も、拡張機能の初期化時に取得されます。

初期化の最後の部分は、CSP削除ルールを有効にすることです。その後、マルウェアはブラウザー・イベントを設定および監視する準備が整います。繰り返しますが、従来のWebインジェクション技術と比較して、ブラウザー拡張機能を使用することの利点が明確にわかり、すべての情報を簡単に収集できます。

新しいドメイン抽出方法

以前のバージョンのRilideでは、C2ドメインがJavaScriptファイルに直接ハードコードされていました。他の亜種は、指定されたビットコイン・ウォレットからトランザクションの詳細を取得することでドメインを抽出した。

ここで分析された新しい亜種には、Telegramチャットボットからドメインを取得するように設計されたコードが含まれています。Google Chromeアラームを使用してドメインを取得するための定期的な呼び出しは、毎分実行されるように設定されています。

このアプローチにより、マルウェアは、そのうちの1つが検出されてブロックされた場合に、ドメインを簡単に切り替えることができます。

この亜種にはTelegramトークンが含まれていませんでしたが、この方法は将来のバージョンで表示される可能性があります。

Telegramチャットボットからのドメイン抽出のコード
図4:Telegramチャットボットからのドメイン抽出

データ窃盗の準備

コンテンツ・スクリプトは、「new-grabber-info」メッセージ・タイプを持つChrome.runtime.sendMessageを使用して、ページのすべてのインプット要素値を送信します。

次のリスナーは、データをC2サーバーに渡すためにbackground.jsに設定されています。

入力データ・リスナー用のコード
図5:入力データ・リスナー

さらに、バックグラウンドでは「set-screenshot-result」メッセージが待っています。

これらのメッセージは、Chrome.tabs.captureVisibleTabを使用して製品の画面を撮影するトリガーされますそしてデータをC2に送り返します。

製品の画面を撮影してデータを転送するためのコード
図6:製品の画面の撮影とデータの転送

これらの方法を採用することで、ユーザーが銀行のサイトにログインすると、さまざまな機密データが盗まれる可能性があります。これには、ユーザー名とパスワード、口座番号、PINコード、クレジット・カードの詳細、セキュリティーに関する質問の回答、送金受信者情報が含まれます。

バックグラウンド・スクリプトの最後の部分では、「Chrome.alarms」を使用してコマンド取得とプロキシ・チェックの定期的な呼び出しが設定されています。コマンド・アラームは、C2からコマンドのリストを取得し、それらを1つずつ実行します。

プロキシ・チェック・アラームは、プロキシ接続ステータスをチェックし、必要に応じて新しい接続ステータスを開始します。リスナーが設定されると、バックグラウンド・スクリプトの同期実行が終了します。

cmds.js、マルウェアの機能とは。

cmds.jsには、C2からのパラメーターとともに(事前定義されたリストから)コマンドの受信と、該当する場合は成果の送り返しを容易にするコードが含まれています。

興味深いコマンドには次のようなものがあります。

  • 「Extension」:指定されたIDに基づいて拡張機能を有効にします
  • 「Push」:取得したコンテンツでブラウザー通知を作成し、通知クリックで新しいタブを開きます。
  • 「Screenshot」:「chrome.tab.captureVisibleTab」を使用して表示されているタブのコンテンツをキャプチャーします
  • 「History」:閲覧履歴を返します
  • 「Cookies」:初期化コードと同じ、すべてのブラウザー・クッキーを取得します
  • 「URL」:指定されたURLで新しいタブを開きます

他のコマンドを使用すると、拡張機能の設定、デバイス情報の取得、現在のURLなどを変更できます。この一連のコマンドにより、マルウェアのワークフローと実行に動的な変更が可能になり、ユーザーにとってより魅力的な操作が可能になります。これらのコマンドのほとんどは、組み込みのChrome拡張機能を利用するため、マルウェア作成者は開発が容易になります。

main.jsコンテンツ・スクリプト:カスタム・インジェクションとデータ盗難

main.jsコンテンツ・スクリプトは、匿名関数内で初期化されたjQueryライブラリーから始まり、外部インポートなしで完全にインラインに埋め込まれます。その後、悪意のある機能を実行する難読化されたコードが続きます。

Chromium拡張機能アーキテクチャーを使用すると、拡張機能によってインジェクションの責任を分離し、検知を困難にすることができます。サービス・ワーカーは初期化ステップでインジェクションをダウンロードして保存し、コンテンツ・スクリプトはそれらを読み取って実行します。ページ・コンテキスト内ではWebリクエストが送信されなかったため、マルウェアが検知されない状態を維持できていました。main.jsは取得したすべてのインジェクションを反復し、現在のURLがインジェクションURLと一致する場合は、それをインジェクションします。

Rilideは、巧妙な方法でDOMにスクリプトを挿入します。

スクリプト注入用のコード
図7:スクリプト注入

イベント・ハンドラーとしてインジェクションを「オンリセット」するドキュメント属性を作成します。次に、カスタムの「リセット」イベントをすぐに送信し、インジェクションを実行し、最終的に属性を削除します。

この属性は、「setAttribute」呼び出しと「removeAttribute」呼び出しの間の特定の時間に設定されるため、セキュリティー・ツールによる検知が困難になります。

最後の関数呼び出しでは、汎用データ・スティーラー・リスナーを設定します。

コンテンツ・スクリプトインプットリスナー(難読化後、変数の名前を変更した後)
図8:コンテンツ・スクリプトインプットリスナー(難読化後、変数の名前変更後)

jQueryセレクターを使用すると、すべてのインプット要素が選択され、「change」イベントリスナーが設定されます。

「change」イベントは、入力フィールドの値が変更され、焦点を失うたびに発生します(ユーザーが別の要素をクリックする)。例えば、被害者が銀行口座にログインした際、パスワード・フィールドをクリックしたときにユーザー名が収集され、ユーザーがフォームを送信したときにパスワード入力が盗まれます。データは、ランタイムを介してchrome.runtime.sendMessage、その後、C2サーバーに転送されます。

gmail.jsコンテンツ・スクリプト – 暗号の盗難を非表示にする
 

このスクリプトの目的は、撤回された2FA認証リクエストを新しいデバイス認証リクエストに置き換えることです。このアプローチにより、顧客は新しいデバイスの承認を撤回よりも疑わしいと認識しない可能性が高いため、不正な引き出しを認識しないようになると推測しています。

スクリプトは、jQueryライブラリのインライン初期化から始まり、現在の場所が「mail.google」を含むかどうかを確認した後、実行を開始します。インジェクションは一般的な暗号通貨ウォレットからのEメールを定期的にチェックし、検出された場合は対応するウォレット機能を呼び出します。

暗号通貨ウォレットのEメールを検索するためのコード
図9:暗号ウォレットのEメールの検索

jQueryセレクターは非常にシンプルで、テキストにウォレット名を含む「divs」を使用します。

ここでは、特定のベンダーのカスタム・インジェクションを示しますが、ここではすべて同様に動作します。

このコードは、「撤回要求」というテキストを含む要素を検索し、それを「新しいデバイスの承認」に置き換えます。

引き出し通知テキストを変更するためのコード
図10:引き出し通知テキストの変更

また、Eメール・プレビューの内容を置き換えるために、「撤回」というテキストを含むスパン要素も検索します。

インジェクション前。

元の出金通知Eメール
図11:元の撤回通知Eメール

インジェクション後:

新しいデバイスに関する通知Eメール
図12:新しいデバイス通知Eメール

Eメール本文自体は次のようです。

Eメール本文の内容を変更するコード
図13:Eメール本文の変更

つまり、このスクリプトは、「アドレスを慎重に確認してください」というテキストを含んだ「div」要素の派生要素を持つ、CSSクラス「ii」を持つすべての要素を見つけます。また、承認コード・テキストの要素とスタイルに基づいて承認コードを抽出します。スタイル、テキスト、構造の小さな変更によって要素が壊れる可能性があるため、要素を識別するこの方法は非常に安定しています。

撤回EメールHTML
図14:撤回メールHTML

最後に、EメールのHTMLコンテンツがハードコードされたコンテンツで上書きされます。

元のコンテンツ:

元の撤回通知を編集
図15:元の撤回通知

新コンテンツ:

新たに注入されたEメールコンテンツ
図16:挿入されたEメールの内容

このメカニズムにより、脅威アクターはユーザーに引き出しについて警告することなく暗号通貨を引き出すことができます。

プロキシ・コード:概念実証から実際のマルウェアまで

拡張機能を通じて簡単に実装できるもう1つの主要な機能は、プロキシ機能です。Rilideは、被害者のブラウザーをHTTPプロキシに変換し、被害者の認証情報とデータを利用しながらすべてのリクエストを転送できるようにします。

攻撃者は追加の認証チェックをトリガーすることなく、銀行ポータル、取引口座、決済プラットフォームにアクセスできるため、この機能は金融詐欺にとって特に危険です。IPアドレス追跡のような従来のセキュリティー対策を回避し、正当なユーザー・アクティビティーを装ってトランザクションを開始したり、口座設定を変更したり、資金を流出させたりすることができます。被害者になりすますことで、攻撃者は信頼に基づくメカニズムをエクスプロイトしてシームレスに不正行為を行うことができます。

この機能は、この種の攻撃の概念実証を示す教育プロジェクト「CursedChrome」から直接コピーされたもので、実装が非常に簡単でした。

プロキシは、拡張機能サービス・ワーカーを使用して、攻撃者のC2サーバーとのWebSocket接続を設定することで機能します。この接続により、サービス・ワーカーは攻撃者から送信されたコマンドを受信できるようになります。これらのコマンドは、要求の作成やWebサイトのナビゲートなどのプロキシのアクションを指示します。被害者が収集したCookieを使用してリクエストが行われ、応答はC2に送り返されます。

CursedChromeのコード例:

CursedChromeの初期化関数コード
図17:CursedChromeの初期化関数コード

Rilideコードの例:

Rilide startProxy関数コード
図18:Rilide startProxy関数コード

いくつかの命名と関数定義の場所を除いて、コードは同じです。このプロジェクトにはバックエンド・コードと管理ユーザー・インターフェース(UI)も付属しており、攻撃者が作業しやすいものになっています。

拡張機能で安全を確保
 

Rilideは、ブラウザーの拡張機能がブラウザー内行動攻撃の脅威ランドスケープをどのように変えたかを説明しています。拡張機能の固有の機能を活用することで、攻撃者はブラウザーを前例のない制御できるようになり、従来のページ内Webインジェクションの限界をはるかに超える高度で持続的なエクスプロイトが可能になります。この変化は、拡張機能ベースの攻撃のシンプルさとPowerの強さがサイバー犯罪者にとって魅力的なベクトルであるため、警戒と堅牢な防御の必要性が高まっていることを浮き彫りにしています。

身を守るために、ユーザーはインストールされているブラウザー拡張機能を定期的に確認し、見覚えのない拡張機能や疑わしい拡張機能を迅速に削除する必要があります。

さらに、予期しないログインの試みなどの異常なアクティビティーがないかをEメール・アカウントを監視し、不正な取引や未知のアクションがないか、暗号通貨ウォレットを注意深く監視することが不可欠です。積極的かつ慎重にあることは、この進化する攻撃パラダイムによってもたらされるリスクを軽減するのに役立ちます。

IBM® Trusteerは、不正行為とマルウェアの検知、ユーザーの認証、オムニチャネルのカスタマー・ジャーニー全体でのIDの信頼の確立に役立ちます。500を超える主要組織が、顧客のデジタル・ジャーニーを保護し、ビジネスの成長をサポートするためにTrusteerを利用しています。

侵害の兆候

ファイル

historytab.js

 2b72cc2c0c53321a472471c5189fdb56

notif.js

 8679a34885a02e94189c8fec5132245a

config.js

 408d8fa7eade661e9a02b6065b792fca

ico.png

 40de419c81de274c26c63e0f23d91a3f

scrrule.js

 9db73e9a3a24070de075da13fdea01ab

exts.js

 868eb23af363b5790d16103d2dd94178

rules.json

 6c1f6ab3492a615404a70161303de746

manifest.json

 fd7d90a5e31cd19bbc65095d722c1525

utils.js

 bd14616118af50f6e0b886bd90144845

content-scripts-register-polyfill.4.0.0.js

 5bf61a91e003afb1e169e3e3be336cac

app.html

 08785f3794a7ae9aab6b3fa669646794

background.js

 1de94fff2cb80f44d82d69f816139974

main.js

 6c19e1bf9a7eac2c9b44f5e5c0b76d39

gmail.js

 49c851c025506d0a570d75bc00c7605a

csp.js

 15606d8d8d6ca797c2c98c20114619b4

exchangeSettings.js

 2dcf7f099c08f9d074994a0a4f996720

screen.js

 7d0defc1a08d5a58d95f5ca38509c8ef

domain.js

 bb0bc698eb64447a3ab581517273487b

inj.js

 3d67fa8a26390e8819d6bd36a2c5959f

set.js

 8049e7bd36a88f7a393b7ff0746a04db

proxing.js

 b4b2510d7ec41711ef29ddddd4cab09a

cmds.js

 0ebb9b78c38ae45884b85632fe087e49

machine.js

 c43644bed7d94e3ec880af3195e4c906

extFiles.zip

 3113c21eee9704b14437edb5c6f29634

ドメイン:
statbrwsr.digital

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

関連ソリューション
インシデント対応サービス

組織のインシデント対応プログラムを改善し、侵害の影響を最小限に抑え、サイバーセキュリティー・インシデントへの迅速な対応を実現します。

インシデント対応サービスの詳細はこちら
脅威の検知と対応ソリューション

IBMの脅威検知および対応ソリューションを使用して、セキュリティーを強化し、脅威の検知を迅速化します。

脅威検知ソリューションの詳細はこちら
IBM QRadar SOARソリューション

インテリジェントな自動化およびオーケストレーション・ソリューションで、意思決定プロセスを最適化し、SOC効率を向上させ、インシデント対応を迅速化します。

QRadar SOARの詳細はこちら
次のステップ

組織のインシデント対応プログラムを改善し、侵害の影響を最小限に抑え、サイバーセキュリティー・インシデントへの迅速な対応を実現します。

  1. インシデント対応サービスの詳細はこちら
  2. IBM QRadar SOARの詳細はこちら