
Aggrokatz è un'estensione del plugin aggressor per Cobalt Strike che consente a pypykatz di interfacciarsi con i beacon in remoto e di analizzare i file dump LSASS e i file hive del registro per estrarre credenziali e altri segreti memorizzati, senza scaricare il file e senza caricare alcun codice sospetto sul beacon.

aggrokatz è un'estensione plugin Aggressor per CobaltStrike che consente a pypykatz di interfacciarsi con i beacon in remoto.
La versione corrente di aggrokatz permette a pypykatz di analizzare file dump LSASS e file del Registro di sistema per estrarre credenziali e altri segreti memorizzati, senza scaricare il file e senza caricare alcun codice sospetto nel beacon (Cobalt Strike è già presente comunque).
In futuro questo progetto mira a fornire funzionalità aggiuntive per operazioni coperte come la ricerca e la decifratura di tutti i segreti DPAPI/kerberoasting/ecc.
Abbiamo pubblicato un breve post sul blog per il rilascio di questo strumento, che include anche alcuni screenshot.
Il dump di LSASS/Registro non è l'obiettivo di questo progetto, solo l'analisi. Motivi:
CredBandit che scrive i byte grezzi su disco invece del base64. Bel tool, dai un'occhiata.Nel client CS, non usare "reload" né provare a scaricare e ricaricare manualmente lo script se lo hai modificato. DEVI rimuoverlo, chiudere il client e riavviarlo, quindi caricare lo script modificato. Altrimenti avrai più versioni in esecuzione contemporaneamente e un sacco di errori e comportamenti strani!
Durante l'analisi dei file LSASS/Registro in remoto, non interagire con il beacon specifico su cui hai avviato lo script. Normalmente non creerebbe problemi, ma non posso dare garanzie.
pycobalt. C'è un readme sulla loro pagina GitHub.pypykatz versione >=0.4.8aggressor.cna di pycobalt sia configurato e sappia la posizione del tuo interprete Pythonaggrokatz.cna per puntare a pycobalt.cnaView > Script Console e Cobalt Strike > Script Manager. Usando Script Manager, carica lo script aggkatz.cna.aggkatz.cna è stato caricato con successo, avrai una nuova voce di menu pypykatz quando fai clic destro su un beacon.Script Console.Script Console che nella finestra del Beacon.File LSASS: La posizione del file lsass.dmp sul computer remoto. Puoi anche usare percorsi UNC per accedere a file lsass.dmp condivisi via SMBchunksize : La quantità massima che verrà letta in una voltaFile BOF : Il file BOF (Beacon Object File) che consente letture a blocchi. Questo file verrà caricato ed eseguito (in memoria) ogni volta che viene letto un nuovo blocco.(modulo) : Specifica quali moduli verranno analizzati. Predefinito: allOutput : Specifica i formati di outputPopola scheda Credenziali : Dopo un'analisi riuscita, tutte le credenziali ottenute saranno disponibili nella scheda Credenziali di Cobalt Strike. Questa funzionalità è in betaElimina file remoto dopo l'analisi : Dopo un'analisi riuscita, il file dump LSASS verrà rimosso dal targetFile SYSTEM: La posizione del file SYSTEM.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMBFile SAM (opzionale): La posizione del file SAM.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMBFile SECURITY (opzionale): La posizione del file SECURITY.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMBFile SOFTWARE (opzionale): La posizione del file SOFTWARE.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMBchunksize : La quantità massima che verrà letta in una voltaFile BOF : Il file BOF (Beacon Object File) che consente letture a blocchi. Questo file verrà caricato ed eseguito (in memoria) ogni volta che viene letto un nuovo blocco.Output : Specifica i formati di outputIl BOF di lettura file attualmente supporta letture fino a 4 GB. Può essere esteso con alcune modifiche, ma finora non sono stati osservati file così grandi.
Normalmente il parser di pypykatz esegue una serie di operazioni di lettura file su disco, ma con l'aiuto di aggrokatz queste operazioni di lettura vengono tunnelizzate al beacon utilizzando un BOF (Beacon Object File) appositamente progettato che consente di leggere il contenuto del file remoto a blocchi. Questo permette a pypykatz di estrarre tutti i segreti dai file remoti senza leggere l'intero file, prelevando solo i blocchi necessari in cui si trovano i segreti.
Per avere un quadro completo dell'intero processo, ci sono due parti da evidenziare:
pypykatz si integra con CobaltStrikepypykatz esegue l'estrazione delle credenziali senza leggere l'intero fileCobaltStrike (agente) è scritto in Java, pypykatz è scritto in Python. Questo è un problema. Fortunatamente per noi, un'entità sconosciuta ha creato pycobalt che fornisce un'interfaccia pulita tra i due mondi, completa di API utili che possono essere invocate direttamente da Python. Nonostante pycobalt sia un pezzo di ingegneria meraviglioso, ci sono alcuni problemi/svantaggi che dobbiamo segnalare:
pycobalt:pycobalt sarà mantenuto in futuro.pycobalt.pycobalt e CobaltStrike. Ciò comporta che alcune chiamate API restituiscano byte che non possono essere utilizzati perché alcuni byte vengono alterati dal codificatore. Esaminando il codice, concludiamo che la maggior parte dei problemi di codifica/decodifica sono dovuti al fatto che pycobalt usa STDOUT/STDIN per comunicare con il processo Java.bof_pack, cruciale per questo progetto, ha dovuto essere implementata come script puramente Aggressor e invocata solo da Python utilizzando strutture dati di base (stringa e int) e non byte.pycobalt senza supporto per il threading. Beh, almeno abbiamo osservato che il threading si rompe in modo casuale, ma in un certo senso ce lo aspettavamo.