備えよゲーマーたち:チートやmodに偽装した、仮想通貨やパスワードを盗むScavengerトロイの木馬
ウイルスアラート | Hot news | 全てのニュース
2025年7月25日
株式会社Doctor Web Pacific
序論
2024年、Doctor Webはロシア企業に対する標的型攻撃の実行を試みた情報セキュリティインシデントについて調査を行いました。その攻撃手法の一環として、一般的なWebブラウザのDLL検索順序ハイジャッキング脆弱性を悪用するマルウェアが使用されていました。Windowsアプリケーションは、起動されるとその正常な動作に必要なすべてのライブラリを複数のディレクトリから特定の順序で検索します。そこで、アプリを「騙す」ために攻撃者は悪意のあるDLLファイルを最初に検索される場所(アプリのインストールディレクトリなど)に配置します。さらに、このファイルには検索優先順位の低いディレクトリにある正規ライブラリと同じ名前が付けられています。その結果、脆弱なアプリが起動されると悪意のあるDLLファイルが最初に読み込まれるようになります。そしてこの悪意のあるライブラリはアプリの一部として動作し、アプリと同じ権限を取得します。
件のインシデントを踏まえ、Dr.Webアンチウイルス製品にはDLL検索順序ハイジャッキング脆弱性を悪用する試みをトラッキングし、阻止する機能が搭載されるようになりました。この機能のテレメトリデータ解析中にDoctor Webのウイルスアナリストは複数のクライアントのブラウザに未知のマルウェアをダウンロードしようとする試みを検出し、それらの事例について調査を行う中で新たなハッカーキャンペーンの進行が浮かび上がってきました。本記事ではそのキャンペーンについて解説していきます。
悪意のあるプログラム Trojan.Scavenger は、さまざまな方法で標的のシステム内に侵入するダウンローダ型トロイの木馬から始まる多段階プロセスでコンピューターを感染させます。このキャンペーンでは、使用されているトロイの木馬コンポーネントの数が異なる2つの感染チェーンが展開されていることがDoctor Webのスペシャリストによって特定されました。
3つのローダーを用いたチェーン
この感染チェーンを開始するコンポーネントは動的ライブラリ(DLLファイル)であるマルウェア Trojan.Scavenger.1 です。このマルウェアは海賊版ゲームの一部として、あるいはさまざまなパッチやチート、modに偽装して、Torrent(トレント)やゲーム関連サイトを通じて拡散されます。ここでは、パッチに偽装したトロイの木馬の例をみてみます。
まず、Trojan.Scavenger.1 がインストール手順と共にZIPアーカイブに含まれて配信されます。このインストール手順内で、攻撃者はパフォーマンスを向上させるためと称して「パッチ」をゲーム『Oblivion Remastered』のディレクトリ内に配置するようユーザーに促しています。
Drag umpdc.dll and engine.ini to the game folder:
\steamapps\common\Oblivion Remastered\OblivionRemastered\Binaries\Win64
Engine.ini will automatically be loaded by the module.
The module will also apply some native patches to improve performance
悪意のあるファイルに umpdc.dll という名前が付けられているのには理由があります。同じ名前の正規ファイルがWindowsのシステムディレクトリ %WINDIR%\System32 に存在するためです。これはさまざまなプログラムによって使用されるグラフィックスAPIの一部で、ゲームでもこれが使用されます。ユーザーのゲームがパッチ未適用の脆弱性を持つバージョンであった場合、コピーされたトロイの木馬ファイルもゲームと一緒に自動的に起動されます。ここで注目に値するのは、ゲーム『Oblivion Remastered』の調査時点での最新バージョンは umpdc.dll ファイルのライブラリ検索順序を正しく処理していたということです。そのため、この例では Trojan.Scavenger.1 はゲームと同時に自動起動することができず、感染チェーンを進めることはかないませんでした。
起動に成功した場合、トロイの木馬はリモートサーバーから悪意のあるダウンローダ Trojan.Scavenger.2 (tmp6FC15.dll) をダウンロードし、次の段階を開始します。この Trojan.Scavenger.2 が同じファミリーに属する別のモジュール Trojan.Scavenger.3 と Trojan.Scavenger.4 をダウンロードしてシステム内にインストールします。
Trojan.Scavenger.3 は標的となるChromiumベースのブラウザのディレクトリ内にコピーされる動的ライブラリ version.dll です。このファイルの名前は %WINDIR%\System32 ディレクトリにあるシステムライブラリの1つと同じです。DLL検索順序ハイジャッキング脆弱性を持つブラウザはこの名前のライブラリがどこから読み込まれるかをチェックしません。そしてトロイの木馬ファイルがブラウザのディレクトリに置かれているために、正規のシステムライブラリよりも優先されて最初に読み込まれます。Doctor WebのウイルスアナリストはGoogle Chrome、Microsoft Edge、Yandex Browser、Operaのブラウザでこの脆弱性を悪用する試みを検出しました。
起動されると、Trojan.Scavenger.3 は標的ブラウザの保護メカニズム(サンドボックスの起動など)を無効化し、JavaScriptコードが分離環境ではなくメインメモリ領域内で実行されるようにします。また、Trojan.Scavenger.3 はブラウザ拡張機能の検証も無効化します。そのために、まずエクスポート関数 CrashForExceptionInNonABICompliantCodeRange を探すことで、この関数が含まれているChromiumライブラリを見つけ、次にそのライブラリ内で拡張機能検証手順を検索してパッチを適用します。
その後、トロイの木馬は必要な改変をC2サーバーからJavaScriptコードの形で受け取り、ブラウザにインストールされている目的の拡張機能に変更を加えます。改変の標的となったのは次の仮想通貨ウォレットとパスワードマネージャーです。
-
仮想通貨ウォレット
- Phantom
- Slush
- MetaMask
-
パスワードマネージャー
- Bitwarden
- LastPass
この場合、改変されるのはオリジナルファイルではなく、トロイの木馬によってあらかじめディレクトリ %TEMP%/ServiceWorkerCache に置かれていたコピーファイルです。改変された拡張機能をブラウザに「取得」させるため、Trojan.Scavenger.3 は CreateFileW および GetFileAttributesExW 関数をフックし、オリジナルファイルへのローカルパスを改変されたファイルへのパスに置き換えます(Dr.Webは後者を Trojan.Scavenger.5 として検出します)。
改変には次の2つのパターンがあります。
- Cookieにタイムスタンプが追加される
- ユーザーデータをC2サーバーに送信するルーチンが追加される
仮想通貨ウォレットPhantom、Slush、MetaMaskからはニーモニックフレーズ(mnemonic phrases)が攻撃者に送信され、パスワードマネージャーBitwardenとLastPassからはそれぞれ認証Cookieとユーザーが追加したパスワードが送信されます。
一方、Trojan.Scavenger.4 (profapi.dll)は仮想通貨ウォレットExodusがインストールされているディレクトリにコピーされます。このトロイの木馬もDLL検索順序ハイジャッキング脆弱性を悪用してアプリと同時に自動的に起動します(正規システムライブラリ profapi.dll はディレクトリ %WINDIR%\System32 に置かれていますが、脆弱性によりウォレット起動時にはトロイの木馬ファイルが優先して読み込まれます)。
起動後、Trojan.Scavenger.4 はJavaScriptとWebAssemblyの実行エンジンであるV8エンジンから関数 v8::String::NewFromUtf8 フックします。これを利用することで、悪意のあるアプリがさまざまなユーザーデータを取得することが可能になります。Exodusのケースでは、トロイの木馬はキー passphrase を持つJSONを検索してその値を読み込みます。こうして、ユーザーの仮想通貨ウォレットの秘密鍵を復号化したり生成したりするために使用できるニーモニックフレーズを取得します。次に、トロイの木馬は仮想通貨ウォレットの秘密鍵 seed.seco を探り出して読み込み、そしてそれを取得済みのニーモニックフレーズと共にC2サーバーへ送信します。
2つのローダーを用いたチェーン
この感染チェーンは全体として前述のチェーンとほぼ同じですが、ゲームの「パッチ」や「チート」を含んで配信されるアーカイブには Trojan.Scavenger.1 の代わりに Trojan.Scavenger.2 の改変されたバージョンが含まれています。すなわち、この .ASI はDLLファイルではなく .ASI 拡張子を持つファイル(実際には拡張子の変更された動的ライブラリです)になっています。
このアーカイブにもインストール手順が含まれています。
Copy BOTH the Enhanced Nave Trainer folder and "Enhanced Native Trainer.asi" to the same folder as the scripthook and launch GTA.
ユーザーがファイルを指定されたディレクトリにコピーすると、それがゲームのプラグインとして認識されるようになり、ゲームと同時に自動的に起動されるようになります。この先のステップは1つ目の感染チェーンと同じです。
ファミリーに共通する特徴
このファミリーに属するトロイの木馬のほとんどがいくつかの共通した特徴を備えています。そのうちの1つが、仮想マシンやデバッグモードでの実行を検知するための、実行環境を検証する標準化された手順です。仮想環境で実行されている兆候を検出した場合、トロイの木馬は動作を停止します。
もう1つの共通点は、C2サーバーとの通信に使用されているアルゴリズムです。C2サーバーに接続するために、トロイの木馬は暗号化キーの生成と暗号化の検証というプロセスを実行します。このプロセスでは2つのリクエストが送信されます。1つ目のリクエストは特定のリクエストに含まれるパラメータやデータを暗号化するために使用されるキーの一部を受け取るために必要なものです。2つ目のリクエストはキーを検証するために送信され、ランダムに生成された文字列、現在の時刻、暗号化された時刻値などのパラメータを含んでいます。このリクエストに対し、C2サーバーは先に受け取った文字列を返します。以降のリクエストにはすべて時刻パラメータが含まれ、含まれていない場合サーバーは接続確立を拒否します。
検出された悪意のあるプログラムの詳細な技術的情報については、本調査レポートのPDFバージョンまたはDoctor Webウイルスライブラリを参照してください。
Trojan.Scavenger.1の詳細 ※英語
Trojan.Scavenger.2の詳細 ※英語
Trojan.Scavenger.3の詳細 ※英語
Trojan.Scavenger.4の詳細 ※英語
Trojan.Scavenger.5の詳細 ※英語
結論
Doctor Webでは、この度特定されたセキュリティ上の欠陥を悪用されていたソフトウェアのデベロッパーに対し報告を行いましたが、DLL検索順序ハイジャッキング脆弱性は修正不要であると判断されました。ただし、Dr.Web ユーザーに危害が及ぶことはありません。Dr.Webアンチウイルス製品に新たに導入されていたこの種の攻撃に対する保護機能により、標的となったブラウザの脆弱性悪用はマルウェアファミリー Trojan.Scavenger の存在が明らかになるよりも前からすでに確実に阻止されていました。また、本調査を受けて仮想通貨ウォレットExodusも同保護機能の対象に追加されました。