保管庫の向こう側:DumpBrowserSecretsはいかにして最新ブラウザの暗号化を回避するのか

DumpBrowserSecrets

最新のChromium系およびGecko系ブラウザ(Chrome、Microsoft Edge、Firefox、Opera、Opera GX、Vivaldi)から、リフレッシュトークン、Cookie、保存された認証情報、クレジットカード、自動入力エントリ、閲覧履歴、ブックマークなどのブラウザ保存データを抽出します。

仕組み

本プロジェクトは DumpChromeSecrets の改良版であり、同様に2つのコンポーネントで構成されています:

  1. 実行ファイル(DumpBrowserSecrets.exe

ヘッドレスのChromiumプロセスを作成し、 Early Bird APCインジェクション によりDLLを注入し、抽出された復号鍵を受け取ります。これらの鍵は、App-Bound(Chrome、Brave、Microsoft Edgeから抽出)またはDPAPI鍵(Opera、Opera GX、Vivaldiで使用)のいずれかです。必要な鍵を回収すると、この実行ファイルはディスク上のブラウザのSQLiteデータベースおよびJSONファイルを解析し、認証情報、Cookie、トークン、その他の閲覧データを含む保存データを復号します。さらに、非Chromium系ブラウザ(例:Firefox)を対象とする場合、 DumpBrowserSecrets.exe がデータ抽出と復号に必要な全手順を(DLLインジェクションなしで)処理します。

  1. DLL(DllExtractChromiumSecrets.dll

Chromiumブラウザ内で実行され、 IElevator COMインターフェイスを使用してApp-Bound暗号化キーを復号します。 IElevator COMインターフェイスを活用してApp-Bound暗号化キーを復号し、対象ブラウザの Local State ファイルから app_bound_encrypted_key および encrypted_key の復号済み値を取得します。これらの値は実行ファイルに返され、実行ファイルがすべての抽出処理を実行します。

注記

 DumpChromeSecrets プロジェクトとは異なり、本実装ではブラウザデータの抽出はすべて DumpBrowserSecrets.exe 実行ファイル内で行われ、DLLはChromium系ブラウザから暗号化キーを取得することに限定されています。

抽出されるデータ

以下の表は、対応ブラウザごとに使用される正確なデータの場所、形式、暗号化モデルを示しています。

Chrome(App-Bound)

データ種別 データベースパス 形式 暗号化
Cookie %LOCALAPPDATA%\Google\Chrome\User Data\Default\Network\Cookies SQLite V20
ログイン情報 %LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data SQLite V20
クレジットカード %LOCALAPPDATA%\Google\Chrome\User Data\Default\Web Data SQLite V20
トークン %LOCALAPPDATA%\Google\Chrome\User Data\Default\Web Data SQLite V20
自動入力 %LOCALAPPDATA%\Google\Chrome\User Data\Default\Web Data SQLite 暗号化なし
履歴 %LOCALAPPDATA%\Google\Chrome\User Data\Default\History SQLite 暗号化なし
ブックマーク %LOCALAPPDATA%\Google\Chrome\User Data\Default\Bookmarks JSON 暗号化なし

Edge(App-Bound)

データ種別 データベースパス 形式 暗号化
Cookie %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Network\Cookies SQLite V20
ログイン情報 %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Login Data SQLite V20
クレジットカード %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Web Data SQLite V20
トークン %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Web Data SQLite X
自動入力 %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Web Data SQLite 暗号化なし
履歴 %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\History SQLite 暗号化なし
ブックマーク %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Bookmarks JSON 暗号化なし

Brave(App-Bound)

データ種別 データベースパス 形式 暗号化
Cookie %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Network\Cookies SQLite V20
ログイン情報 %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Login Data SQLite V20
クレジットカード %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Web Data SQLite V20
トークン %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Web Data SQLite X
自動入力 %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Web Data SQLite 暗号化なし
履歴 %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\History SQLite 暗号化なし
ブックマーク %LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\Bookmarks JSON 暗号化なし

Opera(DPAPI)

データ種別 データベースパス 形式 暗号化
Cookie %APPDATA%\Opera Software\Opera Stable\Default\Network\Cookies SQLite V10
ログイン情報 %APPDATA%\Opera Software\Opera Stable\Default\Login Data SQLite V10
クレジットカード %APPDATA%\Opera Software\Opera Stable\Default\Web Data SQLite V10
トークン %APPDATA%\Opera Software\Opera Stable\Default\Web Data SQLite V10 + Base64
自動入力 %APPDATA%\Opera Software\Opera Stable\Default\Web Data SQLite 暗号化なし
履歴 %APPDATA%\Opera Software\Opera Stable\Default\History SQLite 暗号化なし
ブックマーク %APPDATA%\Opera Software\Opera Stable\Default\Bookmarks JSON 暗号化なし

Opera GX(DPAPI)

データ種別 データベースパス 形式 暗号化
Cookie %APPDATA%\Opera Software\Opera GX Stable\Default\Network\Cookies SQLite V10
ログイン情報 %APPDATA%\Opera Software\Opera GX Stable\Default\Login Data SQLite V10
クレジットカード %APPDATA%\Opera Software\Opera GX Stable\Default\Web Data SQLite V10
トークン %APPDATA%\Opera Software\Opera GX Stable\Default\Web Data SQLite V10 + Base64
自動入力 %APPDATA%\Opera Software\Opera GX Stable\Default\Web Data SQLite 暗号化なし
履歴 %APPDATA%\Opera Software\Opera GX Stable\Default\History SQLite 暗号化なし
ブックマーク %APPDATA%\Opera Software\Opera GX Stable\Default\Bookmarks JSON 暗号化なし

Vivaldi(DPAPI)

データ種別 データベースパス 形式 暗号化
Cookie %LOCALAPPDATA%\Vivaldi\User Data\Default\Network\Cookies SQLite V10
ログイン情報 %LOCALAPPDATA%\Vivaldi\User Data\Default\Login Data SQLite V10
クレジットカード %LOCALAPPDATA%\Vivaldi\User Data\Default\Web Data SQLite V10
トークン %LOCALAPPDATA%\Vivaldi\User Data\Default\Web Data SQLite X
自動入力 %LOCALAPPDATA%\Vivaldi\User Data\Default\Web Data SQLite 暗号化なし
履歴 %LOCALAPPDATA%\Vivaldi\User Data\Default\History SQLite 暗号化なし
ブックマーク %LOCALAPPDATA%\Vivaldi\User Data\Default\Bookmarks JSON 暗号化なし

Firefox(NSS)

データ種別 ファイル/データベースパス 形式 暗号化
Cookie %APPDATA%\Mozilla\Firefox\Profiles\<profile>\cookies.sqlite SQLite 暗号化なし
ログイン情報 %APPDATA%\Mozilla\Firefox\Profiles\<profile>\logins.json JSON AES‑256‑CBC または 3DES‑CBC
トークン %APPDATA%\Mozilla\Firefox\Profiles\<profile>\signedInUser.json JSON 暗号化なし
自動入力 %APPDATA%\Mozilla\Firefox\Profiles\<profile>\formhistory.sqlite SQLite 暗号化なし
履歴 %APPDATA%\Mozilla\Firefox\Profiles\<profile>\places.sqlite SQLite 暗号化なし
ブックマーク %APPDATA%\Mozilla\Firefox\Profiles\<profile>\places.sqlite SQLite 暗号化なし

ダウンロード

翻訳元: https://meterpreter.org/beyond-the-vault-how-dumpbrowsersecrets-bypasses-modern-browser-encryption/

ソース: meterpreter.org