攻撃者が検索結果を悪用し、Ghidra、dnSpy、SpiderFootといった人気のセキュリティツールを装ったプロフェッショナルな見た目の偽ダウンロードサイトを通じてマルウェアを配布しています。
これらのサイトでは、ユーザーが「ダウンロード」ボタンを最初にクリックした瞬間を捕捉し、トラフィック配布システム(TDS)に密かに誘導します。このTDSは、情報窃取マルウェア(インフォスティーラー)、クリッパー型マルウェア、そして「SessionGate」と名付けられた高度なローダーフレームワークへと被害者を振り分ける機能を持っています。
これらの偽サイトは精巧に作られており、GitHubなどの本物のリソースを参照している場合も多く、関連する検索クエリで驚くほど上位に表示されることもあります。
実際の感染ロジックは可視状態のHTMLには含まれておらず、ページに埋め込まれたCloudFront経由のJavaScriptステージングレイヤーに隠されています。
ユーザーが正規のダウンロードリンクに見えるものをクリックすると、このスクリプトがイベントをハイジャックし、ブラウザをTDSインフラへリダイレクトします。TDSはセッションごとに、正規のソフトウェア、迷惑プログラム(PUA)、または完全なマルウェアのいずれを提供するかを判断します。
偽サイトは元のダウンロードリンク(hrefの値)を保持しており、多くの場合は正規のプロジェクトの場所を指しているため、ステータスバーのプレビューや簡単な目視確認では正常に見えます。
同時に、注入されたCloudFrontスクリプトがブラウザ固有のハンドラ(Chromeではmousedown、Firefoxではclickなど)を通じて最初の有効なクリックを傍受し、キャッシュされたwindow.open、擬似クリック、一時的なブランクタブといった手法を用いてTDS管理下のURLへナビゲーションを差し替えます。
GBhackersと共有されたレポートでCheckpointが報告した内容によると、Ghidra、dnSpy、SpiderFootといったセキュリティ研究者が利用する高信頼性ツールを含む、オープンソースおよびフリーウェアプロジェクトのクローンサイトを中核とした大規模な攻撃基盤が発見されました。
ルーティングの判断はlocalStorageとアンチボットロジックによってステートフルに管理されており、最初のクリックのみが悪意ある挙動をし、繰り返しのアクセスでは表示上の正規リンクにフォールバックする仕組みになっています。これにより、分析者が再現しようとしても困難な状況が生まれています。
TDSはその後、複数のリダイレクターとコンテンツロッカーを経由して分岐し、正規ソフトウェアのアフィリエイトインストール、PUAバンドル、またはマルウェアペイロードへと振り分けられます。
確認されたエントリドメインには、同一のキャンペーンスクリプトを埋め込む100以上のアクティブなサイトの中に、ghidralite.comやdnspy.orgといった偽装ドメインが含まれています。
このTDSスタックの下流では、RemusStealer、AnimateClipper、そして新たに発見されたフレームワーク「SessionGate」を含む複数のマルウェアファミリーが研究者によって確認されています。
SessionGateは、Amazon S3バケットから被害者ごとに短命なURLで配信される多段階ローダーチェーンであり、Windowsの実行ファイルへのアクセスを許可する前に難読化されたJavaScriptで被害者を検証するという特徴を持っています。
SessionGateのローダーには7-ZipのSFXアーカイブが組み込まれており、ゲーティング条件を満たさない場合は無害なインストーラーUIへ切り替わる一方、高度に難読化されたコード、ジャンク命令、暗号化された文字列によって静的解析を困難にしています。
このローダーは広範な環境チェックおよびウイルス対策ソフトのチェックを実行し、署名付きリクエストで専用のC2インフラに接続します。また、最初のDLLが2つ目のコアペイロードモジュール用のワンタイム復号鍵を生成する「キーブローカー」として機能する、2DLLアーキテクチャを採用しています。
復号されたモジュールはサーバー主導のインストーラーフレームワークとして動作し、追加のソフトウェアを静かにダウンロード・実行する機能を持つため、将来的なマルウェアの柔軟な配信手段となっています。
別の経路では、TDSチェーンはパスワード保護されたアーカイブへと到達し、最終的にアンダーグラウンドフォーラムで宣伝されているMaaS(Malware-as-a-Service)型インフォスティーラーであるRemusStealerを起動します。
RemusStealerは暗号化されたタスキングプロトコルを使用し、ChromiumおよびFirefoxからCookie、パスワード、Vaultデータといったブラウザ情報を窃取します。また、数百種類のブラウザ拡張機能を標的としており、特に暗号資産ウォレット、パスワードマネージャー、2FAプラグインに重点を置いています。
3つ目の経路は、ClickFix型のフィッシングページへと誘導します。被害者を騙してmshtaベースの悪意あるダウンローダーチェーンを実行させ、最終的にAnimateClipperと呼ばれる暗号資産クリッパーへと到達します。
このクリッパーは、バンドルされたPython環境を通じてステージングされたシェルコードを使用し、BNBスマートチェーンのテストネット上のスマートコントラクトへのクエリによってC2を解決します。そしてクリップボード上のウォレットアドレスをハイジャックし、バイナリに埋め込まれた攻撃者制御のウォレットアドレスに差し替えます。
Ghidra、dnSpy、SpiderFootを装うことで、攻撃者はセキュリティ研究者、リバースエンジニア、技術に精通したユーザーという特に魅力的な被害者層にアクセスできます。これらのユーザーは多くの場合、高い権限を持ち、機密性の高い環境にアクセスできます。
関連サンプルに対するVirusTotalへの数千件の公開提出件数に反映されるこのキャンペーンの規模は、これが主にトラフィック獲得と収益化のパイプラインであり、そのフィードが選択的にマルウェア配布者に販売または転送されていることを示唆しています。
偽サイトは正規プロジェクトのブランドを忠実に模倣し、本物のリポジトリリンクを保持しているため、「Googleの上位検索結果かつ公式に見えるウェブサイト」はもはや安全の保証にはなりません。
防御側にとって、このキャンペーンはTDSベースのエコシステムがグレーな収益化活動と露骨なマルウェア配布の境界線をいかに曖昧にするかを示す事例であり、よく知られたセキュリティツールであっても、ダウンロード元の厳格な検証、DNSテレメトリー、スクリプトレベルの挙動監視が今や不可欠であることを示しています。
IOC(侵害の痕跡)
| 種別 | 指標 | 説明 |
|---|---|---|
| SHA-256 | 598b023e56c45b19173e8f96c1c88036d732fec305cf6bf1b9cf4dbe304beb7f | SessionGate ステージ1 |
| SHA-256 | 74091f5a8746a1c68d73e1fc1e4e1ff514632ee3f632a8b306f35dabae2d2b64 | SessionGate ステージ1 |
| SHA-256 | 15e6df0c95f2147952308e640d55270e9d097639eaebb34d4b352415f1c6bceb | SessionGate ステージ1 |
| SHA-256 | 3bb92771e287aa0a8bdd8e5b5bb697427223eaefded3d9b64b5d5c32ad40f3c2 | SessionGate ステージ1 |
| SHA-256 | cbad672d9bd06ce91ce465d049e50696fbaec9d209ca0ab1fd814d993d04bc9b | SessionGate ステージ1 |
| SHA-256 | 4cdb1f7ac502289119f7f8256f00baaa994e6ecfb4000dcf5e1c46073508fcb3 | SessionGate ステージ2 |
| SHA-256 | cbad672d9bd06ce91ce465d049e50696fbaec9d209ca0ab1fd814d993d04bc9b | SessionGate ステージ2 DLL #1 |
| SHA-256 | ce0888df5e28716432013a8ae002437bd3e993fbe8362c5ff9efbddabfe0ab77 | SessionGate ステージ2 DLL #1 |
| SHA-256 | 26f2abfc254a59c2386dd46dca16744f7147a0f0366cb6008e1d53219175f44c | SessionGate ステージ2 DLL #2 |
| SHA-256 | e6a1a428a7c09c9946f7c0179d89b263f442dc3208b5144a9146c200e4185bd6 | AnimateClipper |
| SHA-256 | 87361ba2bb412dcf49f8738f3b8b9b7dccb557ad2e76ea8d98ffa5b098ae3886 | AnimateClipper |
| SHA-256 | 39dc2327fe1e5a56ac5ad9dc02f0386cff3d83dcfdc558cacba42ebb9dcc5ec2 | RemusStealer |
| SHA-256 | 2e842eab0c16ddd1a2ec4a56610adb58d115b65a1e08e9b67e7e375f8eed0873 | RemusStealer |
| Domain | appfreshstart[.]com | SessionGate |
| Domain | appgetonline[.]com | SessionGate |
| Domain | webinnosetup[.]com | SessionGate |
| Domain | appmakingcenter[.]com | SessionGate |
| Domain | yourfastcrc[.]com | SessionGate |
| Domain | mobileversioncrc[.]com | SessionGate |
| Domain | webcrcprove[.]com | SessionGate |
| Domain | integritycrc[.]com | SessionGate |
| URL | http://buccstanor[.]pics:28313 | RemusStealer |
| URL | http://baxe[.]pics:48261 | RemusStealer |
| URL | http://217.156.122[.]75:1378 | RemusStealer |
| URL | http://intem[.]lat:9592 | RemusStealer |
| URL | http://ropea[.]top:28313 | RemusStealer |
| URL | http://forestoaker[.]com:6290 | RemusStealer |
| URL | http://buccstanor[.]pics:48261 | RemusStealer |
| URL | http://94.231.205[.]229:28313 | RemusStealer |
| URL | http://gluckcreek[.]online:48261 | RemusStealer |
| URL | https://185.0xA1.0xFB[.]58/navy.7z | AnimateClipper |
| URL | http://194.150.220[.]218/4SLEYpfAk57hGubo/fo0suc2ki2.rtf | AnimateClipper |
| URL | https://cdn-1415.brightcanvas[.]digital/fo0suc2ki2.rtf | AnimateClipper |
| Domain | kr.hugo-lapp[.]co | AnimateClipper |
| Domain | io.hugo-lapp[.]lat | AnimateClipper |
| Domain | cw.hugo-lapp[.]lat | AnimateClipper |
| Domain | st.hugo-lapp[.]lat | AnimateClipper |
| Domain | td.hugo-lapp[.]lat | AnimateClipper |
| Domain | fd.hugo-lapp[.]lat | AnimateClipper |
| Domain | ed.hugo-lapp[.]lat | AnimateClipper |
| Domain | flame-guard[.]cc | AnimateClipper |
| Domain | carlessclapped[.]com | AnimateClipper |
注意: IPアドレスおよびドメインは、誤った名前解決やハイパーリンク化を防ぐため、意図的にデファング処理(例:[.])が施されています。MISP、VirusTotal、SIEMなどの管理されたスレットインテリジェンスプラットフォーム内でのみリファング(元の形式への復元)を行ってください。
翻訳元: https://gbhackers.com/fake-ghidra-dnspy-spiderfoot-sites/