ZeroCrumb — アプリ固有に保護された資格情報とクッキーのダンプツール
概要
ZeroCrumbは「Dumping App Bound Protected Credentials & Cookies Without Privileges.」を標榜するツールで、アプリケーション固有に保護された(App‑Bound)資格情報やブラウザのクッキー/パスワード等を、システム特権を取得することなく抽出・復号することを目的としています。実装はC++で、Named Pipeを用いるアーキテクチャにより、キーの受け渡しをプロセス間で行える点が特徴です。ライブラリとして組み込んで他ツールと連携することも可能で、KeyDumper等のモジュールが同梱されています。フォレンジックや脆弱性検証用途に適した設計ですが、悪用防止の観点から適切な運用が必要です。
リポジトリの統計情報
- スター数: 82
- フォーク数: 3
- ウォッチャー数: 82
- コミット数: 30
- ファイル数: 6
- メインの言語: C++
主な特徴
- App‑Bound(アプリ固有)に保護されたデータの復号を非特権環境で試みることができる。
- Named Pipeベースの鍵受け渡しにより、Windows APIを利用できる任意のプロセスから鍵を取得可能。
- ライブラリ化を意識した設計で、既存ツールへ組み込みやすい。
- KeyDumper等のサブモジュールを備え、用途別に役割が分かれている。
技術的なポイント
ZeroCrumbの核となるアイデアは「App‑Bound Key」を利用した保護領域に対するアプローチです。Windowsはアプリケーション単位やAppContainerに紐づいた鍵や保護コンテキストを使い、DPAPIなどでデータを暗号化する仕組みを持ちます。ZeroCrumbは、対象プロセスや環境からその「アプリバウンド」キーを取得し、それを用いてブラウザ等が保存したクッキーやパスワードを復号するワークフローを実装しています。
設計面での特徴はNamed Pipeを中継点として用いる点です。Named Pipeによりプロセス間通信(IPC)がシンプルに扱え、Windows APIを介して接続できる任意のプログラムがZeroCrumbのパイプにアクセスして鍵を受け取れるため、侵入経路や権限昇格を必要とせずに鍵情報を移送できます。これにより、ZeroCrumb本体を直接動かせない状況でも、別プロセス経由で鍵を取り出して復号処理を行うことが可能になります。
実装はC++で行われ、プロジェクトにはKeyDumperといったサブディレクトリが含まれており、鍵の抽出ロジックや復号処理のモジュール化が行われています。Visual Studioソリューション(ZeroCrumb.sln)が提供され、Windows向けのビルドやデバッグが容易です。また、READMEにはライブラリとしての利用方法や、パイプを介したメリットについての説明が記載され、ツールの組込み/再利用を想定した設計方針が示されています。
攻撃や解析の観点では、ZeroCrumbが示す手法は「権限が限定されている環境でも、プロセス間の設計ミスや緩いアクセス制御を突くことで保護対象のキーやデータが漏洩し得る」ことを実証します。防御側としては、Named Pipeのアクセス制御リスト(ACL)を厳格に設定する、Credential GuardやProtected Processの利用、DPAPIマスタキーの保護や最小権限原則の徹底などが対策になります。
プロジェクトの構成
主要なファイルとディレクトリ:
- .github: dir(CI設定やIssueテンプレート等がある可能性)
- KeyDumper: dir(App‑Boundキーの抽出・処理に関する実装を格納)
- KeyDumper内には鍵取得ロジックや復号ユーティリティが含まれていることが想定される
- LICENSE: file(ライセンス条項)
- README.md: file(使い方・説明・設計メモ)
- READMEではNamed Pipeの利点、ライブラリとしての組込み方、ブラウザ復号の説明などが記載
- ZeroCrumb.sln: file(Visual Studioのソリューションファイル)
- …他 1 ファイル
ディレクトリ構造はシンプルで、ビルド/開発に必要な最小限のコンポーネントが整理されています。KeyDumperを核にZeroCrumb本体がそれを呼び出す形、あるいは逆にKeyDumperをライブラリとして別プロジェクトから利用する形が想定されます。
まとめ
非特権環境でもApp‑Bound保護の弱点を突く実証コードで、調査・検査向けに有用。運用には注意が必要。
リポジトリ情報:
- 名前: ZeroCrumb
- 説明: Dumping App Bound Protected Credentials & Cookies Without Privileges.
- スター数: 82
- 言語: C++
- URL: https://github.com/Sfregs/ZeroCrumb
- オーナー: Sfregs
- アバター: https://avatars.githubusercontent.com/u/127401522?v=4
READMEの抜粋:
ZeroCrumb
Dumping App Bound Protected Credentials & Cookies Without Privileges.
Explanation
After this, ZeroCrumb decrypts the cookies/passwords for the specified browser with the key fetched earlier.
Merits With The Named Pipe Approach
Usage of named pipes in ZeroCrumb allows any program, As long as it can use the Windows API, To connect to the ZeroCrumb named pipe and read the App Bound Key from it.
Using ZeroCrumb As A Library
If you want to use ZeroCrumb as a library, You wi…