ブラウザ乗っ取り: 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 の自動更新メカニズムが有効なままであることを確認します。
対応
検出時には、説明されているアーティファクトを探し、ブラウザのプリファレンスファイル、更新を妨げるレジストリ値、異常なブラウザコマンドラインパラメータの変更を追跡します。影響を受けたマシンを隔離し、揮発性の証拠をキャプチャし、インストールされている拡張機能とアクティブにロードされている拡張機能を徹底的にレビューします。ブラウザ設定を安全なデフォルトにリセットし、更新サービスを再有効化するための自動修復スクリプトを使用します。最後に、コマンドアンドコントロール活動を示す可能性のある関連ネットワークインジケータを監視します。
攻撃フロー
シミュレーション実行
前提条件:テレメトリ&ベースラインの事前チェックが合格している必要があります。
-
攻撃シナリオとコマンド:
敵対者は以前に悪意のある 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