GlassWormが悪意のあるChrome拡張機能にRATを隠す
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
GlassWormは、侵害されたnpm、PyPI、GitHub、およびOpenVSXパッケージを悪用してマルチステージのマルウェアプラットフォームを配布します。その第一段階は、ソラナブロックチェーンメモを照会してコマンドアンドコントロールアドレスを取得し、暗号化されたペイロードをダウンロードするローダーを起動します。第二段階では、資格情報、暗号通貨ウォレットファイル、およびホストの詳細を盗み、第三段階では、ブラウザデータをキャプチャするよう設計された悪意のあるChrome拡張機能とともに、永続的なWebSocketベースのRATを展開します。この操作は、主に開発者と暗号通貨保持者を対象としています。
調査
アナリストは、最初の侵害を悪意のあるプレインストールスクリプトおよびさもないと正当なパッケージに埋め込まれたUnicodeベースのローダーと結び付けました。彼らはC2 URLのデッドドロップ拠点として機能する2つのソラナウォレットアドレスを明らかにし、ローダーがいくつかのソラナRPCエンドポイントをポーリングしているのを見ました。第三段階のRATはDHTブートストラップノードに依存し、DHT解決に失敗した場合はソラナベースの取得に戻ります。研究者はまた、データの抜き取りインフラストラクチャを特定し、そのキャンペーンで使用されている悪意のあるChrome拡張機能をマッピングしました。
緩和策
組織は、npmおよびその他のパッケージエコシステムのサプライチェーンスキャンを強制し、パッケージの完全性と発行者の信頼性を確認し、既知の悪意のあるIPやドメインをブロックする必要があります。エンドポイント防御は、不正なNode.jsランタイム、予期しないスケジュールされたタスク、疑わしいレジストリの実行キーを監視する必要があります。ブラウザの資格情報ストアは強化され、暗号通貨ユーザーは可能であればハードウェアウォレットの検証を採用するべきです。
対応
GlassWormが検出された場合、影響を受けたエンドポイントを隔離し、悪意のあるプロセスを停止し、スケジュールされたタスクなどの落とし込まれたファイルと永続化メカニズムを削除します。侵害されたnpmトークンを取り消し、暗号通貨ウォレットの資格情報を回転させ、ブラウザに保存されたパスワードをリセットします。ホストログの完全なフォレンジックレビューを完了し、セキュリティコントロールを更新して、将来のサプライチェーンの妥協のリスクを減らします。
"graph TB %% クラス定義 classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% ノード – 攻撃ステップ step1_initial_access["<b>技術</b> – <b>T1195.001 サプライチェーンの妥協</b><br/>悪意のあるnpm/pyPIパッケージと侵害されたGitHubリポジトリがローダーを配信します。"] class step1_initial_access technique step2_obfuscation["<b>技術</b> – <b>T1027 混乱されたファイルまたは情報</b><br/>ローダーコードは配信後に混乱されコンパイルされます(T1027.004)。"] class step2_obfuscation execution step3_guardrails["<b>技術</b> – <b>T1480 実行ガードレール</b><br/>ローダーは地方、言語、タイムゾーンを確認し、ターゲットロシア地域外での実行を中止します。"] class step3_guardrails execution step4_dead_drop["<b>技術</b> – <b>T1102.001 デッドドロップリゾルバ</b><br/>ローダーはソラナブロックチェーン取引メモをポーリングしてC2 URLを取得します。"] class step4_dead_drop command step5_cred_files["<b>技術</b> – <b>T1552.001 ファイル内の資格情報</b><br/>.npmrc、NPM_TOKEN、クラウドプロバイダ設定、SSH秘密鍵を収集します。"] class step5_cred_files credential step6_browser_creds["<b>技術</b> – <b>T1555.003 ウェブブラウザからの資格情報</b><br/>Chrome、Edge、Firefoxからパスワード、クッキー、オートフィルデータ、支払いカードを抽出し、アプリバウンド暗号化をバイパスします。"] class step6_browser_creds credential step7_private_keys["<b>技術</b> – <b>T1552.004 秘密鍵</b><br/>暗号通貨ウォレットファイルとシードフレーズのスクリーンショットをコピーします。"] class step7_private_keys credential step8_exfil_webhook["<b>技術</b> – <b>T1567.004 ウェブフック経由のデータ抜き取り</b><br/>ステージデータをZIPして攻撃者が制御するHTTPエンドポイントにPOSTします。"] class step8_exfil_webhook exfil step9_persistence_rc["<b>技術</b> – <b>T1037.004 RCスクリプト</b><br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRunのエントリと起動時にPowerShellランチャーを起動するスケジュールされたタスクを作成します。"] class step9_persistence_rc persistence step10_wmi_event["<b>技術</b> – <b>T1546.003 WMIイベントサブスクリプション</b><br/>USBハードウェアウォレットを検出し、フィッシングUIを起動するためのWMIイベントを登録します。"] class step10_wmi_event persistence step11_ps_profile["<b>技術</b> – <b>T1546.013 PowerShellプロファイル</b><br/>PowerShellプロファイルスクリプトを介して永続性を追加します。"] class step11_ps_profile persistence step12_vnc["<b>技術</b> – <b>T1021.005 VNC</b><br/>隠されたVNC(HVNC)ネイティブモジュールをロードして不可視のリモートデスクトップを作成します。"] class step12_vnc command step13_multi_stage["<b>技術</b> – <b>T1104 マルチステージチャネル</b><br/>C2コマンド用の双方向Socket.IO WebSocketチャネルを確立します。"] class step13_multi_stage command step14_input_injection["<b>技術</b> – <b>T1674 入力挿入</b><br/>RAT内でeval()を使用して攻撃者が供給するJavaScriptを実行します。"] class step14_input_injection execution step15_keylog_clip["<b>技術</b> – <b>T1056.001 キーロギング</b> & <b>T1115 クリップボードデータ</b><br/>悪意のあるChrome拡張機能がキー入力を記録し、クリップボードのテキストをキャプチャし、スクリーンショットを撮ります。"] class step15_keylog_clip collection step16_browser_hijack["<b>技術</b> – <b>T1185 ブラウザセッションハイジャック</b><br/>拡張機能がクッキーとセッショントークンを収集し、アクティブなタブを攻撃者が制御するURLにリダイレクトできる可能性があります。"] class step16_browser_hijack collection %% 接続 – 攻撃フロー step1_initial_access –>|へ続く| step2_obfuscation step2_obfuscation –>|へ続く| step3_guardrails step3_guardrails –>|へ続く| step4_dead_drop step4_dead_drop –>|へ続く| step5_cred_files step5_cred_files –>|へ続く| step6_browser_creds step6_browser_creds –>|へ続く| step7_private_keys step7_private_keys –>|へ続く| step8_exfil_webhook step8_exfil_webhook –>|へ続く| step9_persistence_rc step9_persistence_rc –>|へ続く| step10_wmi_event step10_wmi_event –>|へ続く| step11_ps_profile step11_ps_profile –>|へ続く| step12_vnc step12_vnc –>|へ続く| step13_multi_stage step13_multi_stage –>|へ続く| step14_input_injection step14_input_injection –>|へ続く| step15_keylog_clip step15_keylog_clip –>|へ続く| step16_browser_hijack "
攻撃フロー
検出
珍しい場所から実行されるNodeJSバイナリ(cmdline経由)
見る
可能なIPルックアップドメイン通信の試行(DNS経由)
見る
可能な永続化ポイント [ASEPs – Software/NTUSER Hive](レジストリエベント経由)
見る
Publicnode Ethereum悪用試行の可能性あり C2チャネルとして(DNSクエリ経由)
見る
IOC(DestinationIP)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
IOC(HashMd5)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
IOC(HashSha256)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
IOC(HashSha1)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
IOC(SourceIP)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
IOC(電子メール)を検出: 悪意のあるChrome拡張機能に隠されたGlassWorm RAT
見る
GlassWorm RAT およびデータ抜き取り検出 [Windows ネットワーク接続]
見る
Ledger/Trezor フィッシングバイナリエグゼキューションの検出 [Windows プロセス作成]
見る
シミュレーション実行
前提条件: テレメトリ & ベースラインの事前フライトチェックが合格している必要があります。
根拠: このセクションは、検出ルールをトリガーするために設計された敵対者の技術(TTP)の正確な実行を詳細に説明します。コマンドおよび物語は、識別されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目指します。
-
攻撃シナリオ & コマンド:
攻撃者がLedger Live/Trezorウォレットクライアントとして偽装した悪意のあるバイナリを入手しました。バイナリはAssaac.exeと名付けられ、正当な実行可能ファイルに似せています。これはユーザーの%APPDATA%ディレクトリにドロップされ、隠しサブフォルダーにコンパニオンJavaScriptファイル(index.js)が配置されます。QtCvyfVWKHその後、攻撃者がバイナリを実行すると、Windowsは正確なイメージ名とSigmaルールが監視するコマンドラインパスでのプロセス生成イベントをログします。ステップ‑バイ‑ステップ:
- 隠しフォルダを作成し、悪意のあるスクリプトを落とします。
- 悪意のある実行ファイル(
Assaac.exe)をユーザーのAppDataにコピーします。 - 実行可能ファイルを起動し、
index.jsを読み込み、資格情報の窃盗ルーチンを開始します。
-
回帰テストスクリプト:
# ------------------------------------------------------------ # 悪意のあるファイルのセットアップ # ------------------------------------------------------------ $appData = $env:APPDATA $folder = Join-Path $appData "QtCvyfVWKH" $exePath = Join-Path $appData "Assaac.exe" $jsPath = Join-Path $folder "index.js" # 隠しフォルダが存在することを確認 New-Item -ItemType Directory -Path $folder -Force | Out-Null # フォルダを非表示(オプション) (Get-Item $folder).Attributes += 'Hidden' # ダミーの悪意のある実行ファイルをデプロイ(デモではcalc.exeのコピーを使用) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force # ダミーのJavaScriptペイロードをデプロイ(検出には内容は無関係) @" // 悪意のあるペイロードプレースホルダー console.log('Crypto wallet theft executed'); "@ | Set-Content -Path $jsPath -Encoding UTF8 # ------------------------------------------------------------ # 悪意のあるバイナリを実行(これがSigmaルールを発火させるべきです) # ------------------------------------------------------------ & $exePath "$jsPath" # ------------------------------------------------------------ # スクリプトの終わり – 手動でのクリーンアップのためのアーティファクトを残します # ------------------------------------------------------------ -
クリーンアップコマンド:
# まだ実行中の場合は悪意のあるプロセスを終了 Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force # 作成したファイルとフォルダを削除 Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue