
Clona e importa cookie e password di Chromium attraverso i browser con decrittografia offline della chiave di stato DPAPI, supportando database crittografati AES-256 GCM per operazioni red team.
Chlonium è un'applicazione progettata per clonare i cookie di Chromium.
A partire da Chromium 80 e versioni successive, i cookie sono crittografati utilizzando AES-256 GCM, con una chiave di stato memorizzata nel file Local State. Questa chiave di stato è crittografata tramite DPAPI. Si tratta di un cambiamento rispetto alle versioni precedenti, che utilizzavano DPAPI per crittografare ogni singolo cookie nel database dei cookie. Ciò significa che, se si dispone della chiave di stato, è sempre possibile decrittografare offline il database dei cookie, senza bisogno di un accesso continuo alle chiavi DPAPI.
Questo rende essenzialmente i database dei cookie "portabili", ovvero possono essere spostati da una macchina all'altra, a patto di aver estratto la chiave di stato. I cookie stessi devono essere ricrittografati quando vengono importati, poiché le chiavi di stato differiranno per ogni profilo utente e macchina. Questo può essere fatto utilizzando lo stesso processo di decrittografia, decrittografando prima la chiave di stato dal browser "di destinazione", e poi ricrittografando ogni elemento con la nuova chiave.
Il progetto è scritto in C# e ha due componenti separati. Il primo componente, chlonium.exe, è il binario collector. Semplicemente decrittografa la chiave di stato e la stampa. Prendete nota di questa chiave e potrete decrittografare i cookie in futuro scaricando il file del database Cookies ogni volta che avrete bisogno di cookie aggiornati. Per impostazione predefinita, tenterà di decrittografare la chiave di stato di Chrome. Se volete estrarre la chiave di stato per un altro browser (es. Edge), potete specificare un percorso per la chiave.
Ad esempio:
> Chlonium.exe "c:\users\user\AppData\Local\Microsoft\Edge\User Data\Local State"
[+] Statekey = 3Cms3YxFXVyJRUbulYCnxqY2dO/jubDkYBQBoYIvqfc=
Il secondo componente, ChloniumUI.exe, è lo strumento "importatore". Si occupa di decrittografare un dato file di database Cookies con una data chiave di stato, ricrittografare i valori con la chiave di stato dell'utente corrente e importare i cookie nel browser scelto. Viene eseguito sulla macchina in cui si desidera importare i cookie.
Per usarlo, eseguire l'eseguibile ChloniumUI.exe. Inserire la chiave di stato precedentemente estratta, scegliere il file Cookies che si desidera importare e selezionare il browser in cui si vogliono importare i cookie. Quindi fare clic su "Import Cookies" e i cookie verranno importati.
ChloniumUI attualmente supporta tre browser basati su Chromium: Edge, Chrome e Vivaldi. Browser aggiuntivi possono essere aggiunti in Browsers.cs. Questo offre il vantaggio involontario di poter importare un file di cookie di Edge in Chrome, o viceversa (ad esempio), anche se probabilmente non è una buona idea dato che lo user-agent sarà diverso.
Nota importante: Quando si importa il file dei cookie nel browser, tutti i vecchi cookie vengono cancellati! Una copia di backup viene copiata nella directory corrente (con il timestamp pertinente). Se è necessario ripristinare i cookie precedenti, è sufficiente copiare il file di backup sul file Cookies.
Strumenti come Mimikatz e SharpChromium hanno già la capacità di estrarre i cookie di Chrome 80, perché un altro strumento?
Questo strumento è specificamente progettato per facilitare l'importazione dei cookie in un altro browser. Mentre questi strumenti fanno un ottimo lavoro nell'estrarre i cookie di Chromium (e altro!), volevo avere qualcosa che mi permettesse di importare facilmente in un altro browser. Esistono plugin di terze parti per la gestione dei cookie, ma li ho sempre trovati complessi e soggetti a fallimenti. CloniumUI è progettato per semplificare questo processo importando i cookie direttamente nel database sqlite del browser.
Sebbene questo progetto sia dotato del collector chlonium.exe, che aiuta a estrarre la chiave di stato, questo è in realtà solo un esempio. Altri strumenti come Mimikatz possono anche estrarre la chiave di stato per voi, in modo potenzialmente più stealth (a seconda dell'ambiente operativo, del metodo di esecuzione, ecc.). Inoltre, SharpDPAPI vi permetterà di decrittografare il file della chiave di stato di Chromium se avete le chiavi di stato DPAPI, la password corrente o la chiave di backup del dominio - consentendovi di estrarre i cookie da remoto tramite SMB!
Quando si effettuano attività di Red Teaming, a volte è necessario estrarre i cookie di un utente più volte in un periodo prolungato (es. giornaliero/settimanale). Usare un assembly .NET, una DLL riflessa o altre tecniche di esecuzione in memoria per estrarre singoli cookie dal file dei cookie direttamente sul sistema di destinazione non è necessario ed espone l'operatore a un maggior rischio di rilevamento. Invece, è sufficiente estrarre la chiave di stato una volta e copiare il file del database Cookies ogni volta che si hanno bisogno di cookie freschi, senza necessità di esecuzione aggiuntiva.
Vedere qui per una demo video.
ChloniumUI supporta anche l'importazione e l'esportazione delle password. Per utilizzare questa funzionalità, basta fornire il percorso del database Login Data invece del db Cookies, insieme alla chiave di stato, e selezionare il browser in cui si desidera importarle (per l'esportazione questo non è rilevante). Ciò consente di esportare le password in chiaro in un file, o di importarle nel browser. Come per i cookie, è possibile importare le password di Chrome in Edge, le password di Edge in Vivaldi, ecc.
Chlonium supporta la decrittografia offline della chiave di stato, tramite la quale è possibile decrittografare la chiave di stato dell'utente offline se si dispone di tutti i seguenti file:
C:\Users\<user>\AppData\Local\<browser>\User Data\Local StateC:\Users\<user>\AppData\Roaming\Microsoft\Protect\<SID>\e uno dei seguenti:
LsaRetrievePrivateData di Mimikatz/SharpDPAPI)Ora basta fornire questi valori nella scheda "Decrittografia offline della chiave di stato", e Chlonium tenterà di decrittografare la chiave di stato crittografata decrittografando prima le masterkey DPAPI (usando la chiave di backup o la password), e poi usando queste chiavi per decrittografare la chiave di stato. Una volta decrittografata la chiave di stato, questa può essere utilizzata nella scheda "Importa o Esporta Database" per recuperare cookie/password.
Nota sull'uso: Quando si utilizza la password dell'utente per decrittografare la masterkey DPAPI, Chlonium tenterà prima di estrarre il SID dell'utente dal file BK-<NETBIOSDOMAINNAME> all'interno della cartella delle masterkey DPAPI. Se questo fallisce (o se il file non esiste), proverà invece a ottenere il SID dal nome della cartella delle masterkey DPAPI (che per impostazione predefinita sarà denominata in base al SID dell'utente). Se avete rinominato la cartella, o non avete una copia del file BK, non sarete in grado di decrittografare la masterkey usando una password.
Questa funzionalità fa uso degli eccellenti progetti SharpChrome e SharpDPAPI di @harmj0y. Il merito va interamente agli autori originali di SharpDPAPI.
Quando si importa un database di Cookie o Login, Chlonium offre un'opzione per scegliere un "Importatore". È possibile scegliere tra Database Importer (predefinito) o StateKey Importer. Il Database Importer predefinito decrittografa ogni elemento nel database di origine, lo ricrittografa con la vostra chiave di stato corrente e poi lo importa nel database del vostro browser corrente. Questo di solito funziona bene, tuttavia; se un aggiornamento del browser causa una modifica dello schema del database, allora Chlonium potrebbe aver bisogno di un aggiornamento per gestire il nuovo schema. Per cercare di aggirare questo problema, è stato creato StateKey Importer. Invece di ricrittografare ogni elemento nel database (e dipendere dalla conoscenza dello schema DB), possiamo semplicemente ricrittografare (con DPAPI) la StateKey memorizzata nel file Local State in modo che corrisponda a quella del database di origine. A quel punto possiamo semplicemente sostituire il file DB dei Cookie senza dover alterare il contenuto del database tramite SQL. Sebbene questo metodo dovrebbe essere più resiliente ai cambiamenti di schema, ha l'effetto collaterale di non poter più utilizzare il vecchio file dei Cookie - poiché la StateKey non sarà più valida. Per evitare problemi con il ripristino, il file Local State viene sottoposto a backup nella directory corrente insieme al database originale di Cookie/Login. Questi possono essere ripristinati manualmente se necessario. Inoltre, poiché non è necessario ricrittografare ogni elemento del database, StateKey Importer è molto più veloce!
TL;DR: Se avete problemi con Database Importer, provate a selezionare StateKey Importer invece :)
Impostare un SACL sui file Local State e Cookies di Chrome (così come su altri file sensibili come Login Data e History). Cercare processi sospetti (ad es. non correlati al browser) che aprono uno di questi file.
Date un'occhiata a questo ottimo post sul blog di @cryps1s sull'impostazione dei SACL per il rilevamento.
Per i vendor AV che utilizzano un driver di filtro del file system, considerare di bloccare l'apertura di questi file da parte di processi non correlati al browser. Ad esempio, PowerShell che apre il file Cookies.