ブラウザ乗っ取り: 3つの手法の分析
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、ブラウザハイジャッカーが Windows でユーザーブラウザを操作するために使用する3つの異なる技術を探ります。ブラウザのプリファレンスファイルへの直接的な改ざん、スクリプトによるキープレスエミュレーションでのリモートブラウザUIの操作、Chromium のコマンドラインスイッチを悪用して悪意のある拡張機能をサイドロードする方法について扱います。各方法には、代表的なアーティファクトとコード例が伴います。これらのハイジャッカーの主要な目的は、資格情報の盗難や直接的なデータの流出ではなく、広告の挿入や不正なリダイレクトです。
調査
調査者は TamperedChef/BaoLoader キャンペーンに関連するマルウェアをレビューし、Firefox および Chrome のプリファレンスファイルを収集し変更するために利用されるネイティブモジュール UtilityAddon.node を特定しました。2つ目のサンプルでは、アドレスバーを変更し、新しいタブを生成し、偽の広告クリックを行うキーボードショートカットを偽装するブラウザリモートアクセスツール(BRAT)を示しました。3つ目のシナリオは、VBS/PowerShell ベースのハイジャッカーがスケジュールされたタスクを設定し、WMIを介したプロセス作成の監視、Chrome のアップデートの無効化、古くなった Chromium コマンドラインスイッチを介して不正な拡張機能を強制的にロードさせることです。
緩和策
防御者は、UtilityAddon.node、悪意のある .reg エントリ、疑わしい PowerShell スクリプトなどのハイジャッカーコンポーネントを削除または隔離する必要があります。未知または信頼できないスクリプトを呼び出すスケジュールされたタスクを無効化または削除します。信頼できるバックアップからブラウザのプリファレンスファイルを復元し、厳格なファイルアクセス権を適用してください。レガシー Chromium の –load-extension スイッチの使用を監視またはブロックし、Chrome の自動更新メカニズムが有効なままであることを確認します。
対応
検出時には、説明されているアーティファクトを探し、ブラウザのプリファレンスファイル、更新を妨げるレジストリ値、異常なブラウザコマンドラインパラメータの変更を追跡します。影響を受けたマシンを隔離し、揮発性の証拠をキャプチャし、インストールされている拡張機能とアクティブにロードされている拡張機能を徹底的にレビューします。ブラウザ設定を安全なデフォルトにリセットし、更新サービスを再有効化するための自動修復スクリプトを使用します。最後に、コマンドアンドコントロール活動を示す可能性のある関連ネットワークインジケータを監視します。
graph TB %% クラス定義 classDef action fill:#99ccff %% ノード定義 action_create_scheduled_task[“<b>アクション</b> – <b>T1037 起動またはログオン初期化スクリプト</b><br />永続性のために configuration.ps1 を使用してスケジュール済みタスクを作成”] class action_create_scheduled_task action action_wmi_subscription[“<b>アクション</b> – <b>T1546.003 WMI イベントサブスクリプション</b><br />chrome.exe と edge.exe プロセスを監視する WMI イベントサブスクリプションを設定”] class action_wmi_subscription action action_terminate_relaunch[“<b>アクション</b> – <b>T1547.014 ショートカット変更 / T1176 ブラウザ拡張機能</b><br />ブラウザを終了させ、悪意のある拡張機能をロードして再起動”] class action_terminate_relaunch action action_load_extension[“<b>アクション</b> – <b>T1176 ブラウザ拡張機能</b><br />u002du002dloadu2011extension スイッチ経由で悪意のある拡張機能をロード(ポリシー DisableLoadExtensionCommandLineSwitch)”] class action_load_extension action action_disable_updates[“<b>アクション</b> – <b>T1176 ブラウザ拡張機能</b><br />細工された .reg ファイルを適用して Chrome の自動更新を無効化”] class action_disable_updates action action_gather_hmac[“<b>アクション</b> – <b>T1548.006 コンポーネントオブジェクトモデルハイジャック</b><br />UtilityAddon.node は SID およびボリュームシリアル番号を収集し、安全なプリファレンスのために HMAC を計算”] class action_gather_hmac action action_keypress_sim[“<b>アクション</b> – <b>T1185 マンインザブラウザ</b><br />ブラットコンポーネントがキー入力をシミュレートしてブラウザを制御”] class action_keypress_sim action action_ad_injection[“<b>アクション</b> – <b>結果</b><br />アドレスバーを操作し、広告を挿入し、データを盗む”] class action_ad_injection action %% 接続 action_create_scheduled_task u002du002d>|enable| action_wmi_subscription action_wmi_subscription u002du002d>|triggers| action_terminate_relaunch action_terminate_relaunch u002du002d>|uses| action_load_extension action_terminate_relaunch u002du002d>|uses| action_disable_updates action_create_scheduled_task u002du002d>|provides data for| action_gather_hmac action_gather_hmac u002du002d>|supports| action_keypress_sim action_keypress_sim u002du002d>|leads to| action_ad_injection
攻撃フロー
シミュレーション実行
前提条件:テレメトリ&ベースラインの事前チェックが合格している必要があります。
-
攻撃シナリオとコマンド:
敵対者は以前に悪意のある PowerShell スクリプトをドロップしました、その名前は configuration.ps1 場所は%LOCALAPPDATA%DiagnosticNETです。スクリプトは継続的にブラウザプロセス(Chrome, Edge, Firefox)を監視し、それらを終了させ、ユーザーのブラウザを再起動させ、攻撃者が以前にユーザーのプロファイルに置いた悪意のある拡張機能をロードさせます。検出を引き起こすには、攻撃者は直接 PowerShell コールを介してスクリプトを起動します:- 隠しフォルダを作成し、悪意のあるスクリプトをドロップします。
- スクリプトを以下で実行:
powershell.exeクリアテキストコマンドラインを使用して、ルールの条件に一致させます。 - スクリプトはコンソールにその活動をログして(デモ用)ターゲットブラウザを終了します。
-
回帰テストスクリプト:
# --------------------------------------------------------- # 回帰スクリプト – 検出をトリガーする活動を再現します # --------------------------------------------------------- # 1. 隠しディレクトリを準備します $targetDir = "$env:LOCALAPPDATADiagnosticNET" if (-not (Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force | Out-Null # ディレクトリを隠します (Get-Item $targetDir).Attributes = 'Hidden','Directory' } # 2. 悪意のある configuration.ps1 をドロップします $scriptPath = Join-Path $targetDir "configuration.ps1" @' # 悪意のある構成スクリプト – ブラウザを終了します $browsers = @("chrome", "msedge", "firefox") foreach ($proc in $browsers) { Get-Process -Name $proc -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue } Write-Output "ブラウザプロセスを終了しました。" '@ | Set-Content -Path $scriptPath -Encoding UTF8 # 3. PowerShell 経由でスクリプトを実行します – これにより Sigma ルールが発火します $cmd = "$env:WINDIRSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File `"$scriptPath`"" Write-Host "悪意のあるスクリプトを実行しています:" $cmd & $env:WINDIRSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File $scriptPath -
クリーンアップコマンド:
# --------------------------------------------------------- # クリーンアップ – 回帰テストで作成されたアーティファクトを削除します # --------------------------------------------------------- # 終了されたかもしれない迷子のブラウザプロセスを停止します # (アクション不要 – ブラウザは手動で再起動可能です) # 悪意のあるスクリプトと隠しフォルダを削除します $targetDir = "$env:LOCALAPPDATADiagnosticNET" if (Test-Path $targetDir) { Remove-Item -Path $targetDir -Recurse -Force } # 必要に応じて、PowerShell のコマンドライン履歴をクリアする Clear-History