人気のPCクリーニングツール「CCleaner」の偽バージョンが、Windowsユーザーに「GhostDesk」と呼ばれる悪質なChrome拡張機能を感染させるために利用されています。この拡張機能はブラウザ内でスパイウェアとして動作します。
CCleanerは全世界で20億ダウンロード以上を誇るWindows向けユーティリティとして最もよく知られたツールの一つであり、それゆえにマルウェアを拡散させたいサイバー犯罪者にとって格好の標的となっています。
この攻撃は、CCleanerの公式ダウンロードページを巧妙に模倣したウェブサイトから始まります。インストールされると、この偽アプリケーションはChromeを改変し、悪質な拡張機能コンポーネントをインストールする攻撃を仕掛け、攻撃者に認証情報の窃取、スクリーンショットの取得、キーストロークの記録といった能力を与えてしまいます。
この偽アプリケーションは、PCクリーナーという体裁を装うことで、自らのファイルおよびシステム上の挙動を不審に見えにくくしていると考えられます。

その内部構造を見ると、このマルウェアはCScriptを使って多段階の感染プロセスを起動し、ChromeのSecurity Extensionにパッチを当て、コマンド&コントロール(C2)チャネルを確立した上で、最終的に「GhostDesk」を名乗る悪質なChrome拡張機能をインストールします。
技術的分析
第1段階: CScriptローダーとインジェクション
私たちは、CCleaner公式サイトを模倣するよう作られたウェブサイトccleanerwind[.]top上で、感染の起点となる偽のCCleaner.exeを発見しました。
このページには通常のダウンロードボタンの隣に「CCleaner Pro」ダウンロードオプションが設置されていましたが、どちらのボタンも同一の悪質な実行ファイルをダウンロードするようになっていました。
偽のCCleaner.exeは正規のCCleanerアプリケーションと同じアイコンおよびファイル名を使用していますが、バージョン情報には不自然な点があります。その内部名(svc_it7p)およびオリジナルファイル名(rt_mxk.exe)は、既知のいかなるCCleanerのリリースとも一致しません。私たちはさらに、この感染チェーンを起動する同様のバージョン命名パターン(svc_<ランダムな4文字>およびrt_<ランダムな3文字>.exe)に従う他のファイルも発見しています。
この実行ファイルは、まず正規のCScript(cscript.exe)インスタンスをドロップし、それを使って一連のスクリプトを起動します。これらのスクリプトは以下の動作を行います。
- システム偵察: レジストリに対してマシンGUID、コンピュータ名、対応言語を照会します。
- Runtime Brokerの乗っ取り:
%AppData%\Microsoft\DriverStore\runtimebroker.dllに書き込みを行い、追加のマルウェア用のリフレクティブローダーに置き換えます。 - Chrome Security Extensionへのパッチ適用: Chrome Security Extensionの
manifest.jsonにパッチを当て、サービスワーカー(background.js)とコンテンツスクリプト(content.js)を含めるようにします。これらのJavaScriptファイルは%LocalAppData%\cseフォルダにドロップされます。 - C2接続:
192.168.100.4:49727にローカルのWebSocketエンドポイントを作成し、このエンドポイントを公開ドメイン/ポートであるliderongrade.duckdns[.]org:4444への接続にアップグレードします。接続後はトークン付きのGETリクエストを送信し、以降は攻撃者のサーバーから定期的なキープアライブパケットを受信します。

第2段階: 悪質なChrome拡張機能

CScriptによって書き込まれた2つのJavaScriptファイル、content.jsとbackground.jsが、最終的なペイロードとして機能します。パッチが適用されたChrome Security Extension(CSE)のマニフェストにより、background.jsはChrome起動時に常にバックグラウンドで静かに実行され、一方content.jsはメインの拡張機能として動作します。
この2つのスクリプトはそれぞれ異なるスパイウェア機能を担っていますが、互いに依存し合う関係にあり、chrome.runtime.sendMessageとchrome.runtime.onMessage.addListenerを通じて双方向の通信を維持しています。
content.jsは以下を実行します。
- キーロギング: 入力フィールドに打ち込まれたキーストロークを記録し、バッファに送ります。2秒間操作がない場合、またはユーザーが別のフィールドに切り替えた場合、バッファの内容が処理のために
background.jsへ送信されます。 - フォームベースの認証情報窃取: このスクリプトは送信中のPOSTリクエストとsubmitイベントを監視し、中間者として送信データを捕捉します。認証情報、認証トークン、金融情報に関連する特定のキーワードについてこれらのフォームを監視し、いずれかのキーワードが見つかった場合は、処理のためにフォームの内容を
background.jsへ送信します。 - クリプトジャッキング: このスクリプトはクリップボードの貼り付けイベントを監視し、暗号資産関連の文字列への参照を探します。検出されると、貼り付けられた結果をあらかじめ定義された値に置き換えます。
- スクリプトインジェクション: 特定のURLパターンに一致するページに対して、
<script>要素が動的にウェブページへ注入され、特定の要素が置き換えられます。
一方background.jsは、機能に関連する文字列(暗号資産アドレス、JSインジェクションのルール、フォーム捕捉およびキーロギングの切り替え設定)を認識するために使用される設定データを保持しており、以下を実行します。
- WebSocketを使った情報の外部送信: このスクリプトは
127.0.0.1:7345/extにローカルのWebSocketリレーを開き、データとコマンドを送受信します。永続化機能を備えており、Chromeの起動時または拡張機能のインストール時に接続が失われた場合はリレーを再確立します。 - Cookieの窃取: このスクリプトは
chrome.cookies.getAllを使ってユーザーのブラウザCookieを取得し、WebSocketリレーへ送信します。 - スクリーンキャプチャ:
captureTab関数は、アクティブなブラウザタブのスクリーンショットをWebSocketリレーへ送信します。 - 任意コードの実行:
injectJS関数はchrome.scripting.executeScriptを使い、アクティブなブラウザタブ内で任意のJavaScriptコードを実行します。
これらの拡張機能は自らをGhostDeskと名乗っていますが、これはAIエージェントがユーザーの画面をキャプチャして操作できるようにする正規のオーバーレイソフトウェアと同じ名称でもあります。この名称の選択は、画面キャプチャ機能を偽装する狙いがあると考えられますが、これらの拡張機能はその他の悪質な挙動については特に隠そうとしていません。
安全を確保する方法
多くのトロイの木馬と同様に、この攻撃キャンペーンは人気アプリの評判を悪用し、本物そっくりの偽サイトを通じてマルウェアを拡散させています。プロフェッショナルな見た目のダウンロードページだからといって、そのサイトが正規のものであるとは限りません。
リスクを減らすためのヒントをいくつか紹介します。
- ソフトウェアをダウンロードする前に、ウェブアドレスを注意深く確認してください。スポンサー付きの検索結果は必ずしも信頼できるとは限らず、サイバー犯罪者に悪用される場合があります。ソーシャルメディア、SMS、電子メールに記載されたソフトウェアダウンロードへのリンクは慎重に扱ってください。
- 可能であれば、Microsoft StoreやGoogle Play Storeといった信頼できる情報源、または提供元の公式ウェブサイトを通じてダウンロードリンクを確認してください。
- ウェブ保護機能を備えた最新のリアルタイムアンチマルウェアソリューションを使用してください。Malwarebytesはこのような危険なサイトへの接続をブロックし、ここで説明した偽CCleanerインストーラーをTrojan.Dropperとして検出します。
- オペレーティングシステム、ブラウザ、セキュリティソフトウェアを常に最新の状態に保ってください。
侵害指標(IOC)
- ドメイン:
ccleanerwind[.]top— 偽CCleanerダウンロードサイト - ドメイン:
liderongrade.duckdns[.]org— コマンド&コントロールサーバー(C2) - IP:
193.169.240[.]81— コマンド&コントロールサーバー(C2) - SHA256:
c0b4a4af8a3a8c4b113d7f203fcf480cfac79160102490daf287748634b9ce23— 偽のCCleaner.exe - SHA256:
8d921bdd1f5bc8c03209a5dfacfd9ed313497ac2e3f1b4a2000f4c474a464904—runtimebroker.dllを置き換えるリフレクティブローダー - SHA256:
3d7411e2e445a2210dbbf061f3e8e3dd3476a4fc5d4a2135dcceb0bc705776bf— GhostDesk拡張機能のcontent.js - SHA256:
cfd9c0bcc89ebc68aae889b9b49bc8290c3764bce5f2c9ac8b5ba0ba58e9bf61— GhostDesk拡張機能のbackground.js
その他の感染経路
この攻撃キャンペーンを追跡する過程で、私たちは同一の挙動を示す他の一連の偽アプリケーションも発見しました。以下のプログラムは、スパイウェアのペイロードを配布するために同じCScriptロードの仕組みを使用しています。
590b04e35fc0b3dcd9dabe82f2e96d4d1e0fccc598911cf80f8255232ee75fcb— 偽の7-ZipEcde892dbc28af620ba8e311fa9dd4c66521c7fe95e6aadacc7cd9a5bb57d32d— 偽のAdobe AcrobatCfa3900cefb447d89a7498224f2ecafa65b190336934811e6c1d4196d9b92452— 偽のAdobe Acrobat
これらのサンプルはすべて、同一のC2サーバーであるliderongrade.duckdns[.]orgに接続します。
私たちはさらに、cscript.exeの代わりにwscript.exeを使用する、別の偽Adobe Acrobatサンプルも特定しました。そのSHA256ハッシュ値は以下の通りです。
0bf8f52b28291edc505a64962e6ce04387a9784fc5b18aeff53629adb1f72f56