Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/sec-consult/aggrokatz
Framework di ExploitPost-ExploitPenetration TestingRed TeamingSviluppo Payload
GitHubsec-consult/aggrokatz

aggrokatz

Vedi Repository
155265 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

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.

Condividi

aggrokatz

aggro_card

Cos'è questo

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.

NOTE IMPORTANTI - PER FAVORE LEGGI

Il dump di LSASS/Registro non è l'obiettivo di questo progetto, solo l'analisi. Motivi:

  1. Molte tecniche di dump sono già implementate da Cobalt Strike (CS) e ampiamente disponibili pubblicamente. Recentemente siamo passati a una versione modificata di CredBandit che scrive i byte grezzi su disco invece del base64. Bel tool, dai un'occhiata.
  2. Vogliamo mantenere privata la nostra tecnica di dump.

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.

Installazione

  • Dovrai installare e configurare pycobalt. C'è un readme sulla loro pagina GitHub.
  • Dovrai installare pypykatz versione >=0.4.8
  • Dovrai avere Cobalt Strike

Configurazione

  • Assicurati che il file aggressor.cna di pycobalt sia configurato e sappia la posizione del tuo interprete Python
  • Modifica il pycobalt_path in aggrokatz.cna per puntare a pycobalt.cna
  • In CS usa le finestre View > Script Console e Cobalt Strike > Script Manager. Usando Script Manager, carica lo script aggkatz.cna.

Utilizzo

  • Se lo script aggkatz.cna è stato caricato con successo, avrai una nuova voce di menu pypykatz quando fai clic destro su un beacon.
  • Durante l'analisi vedrai messaggi di debug nella finestra Script Console.
  • Al termine dell'analisi, i risultati saranno mostrati sia nella finestra Script Console che nella finestra del Beacon.

Parametri del menu di analisi dump LSASS

  • File LSASS: La posizione del file lsass.dmp sul computer remoto. Puoi anche usare percorsi UNC per accedere a file lsass.dmp condivisi via SMB
  • chunksize : La quantità massima che verrà letta in una volta
  • File 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: all
  • Output : Specifica i formati di output
  • Popola scheda Credenziali : Dopo un'analisi riuscita, tutte le credenziali ottenute saranno disponibili nella scheda Credenziali di Cobalt Strike. Questa funzionalità è in beta
  • Elimina file remoto dopo l'analisi : Dopo un'analisi riuscita, il file dump LSASS verrà rimosso dal target

Parametri del menu di analisi dump del Registro

  • File SYSTEM: La posizione del file SYSTEM.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMB
  • File SAM (opzionale): La posizione del file SAM.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMB
  • File SECURITY (opzionale): La posizione del file SECURITY.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMB
  • File SOFTWARE (opzionale): La posizione del file SOFTWARE.reg sul computer remoto. Puoi anche usare percorsi UNC per accedere a file condivisi via SMB
  • chunksize : La quantità massima che verrà letta in una volta
  • File 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 output

Limitazioni

Il 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.

Come funziona

TL;DR

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.

In profondità

Per avere un quadro completo dell'intero processo, ci sono due parti da evidenziare:

  1. come pypykatz si integra con CobaltStrike
  2. come pypykatz esegue l'estrazione delle credenziali senza leggere l'intero file

Integrazione di pypykatz in CobaltStrike

CobaltStrike (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:

  1. Sulla fiducia nel progetto pycobalt:
  • Abbiamo cercato di contattare l'autore ma non abbiamo ricevuto risposta.
  • Non possiamo garantire che il progetto pycobalt sarà mantenuto in futuro.
  • Non controlliamo alcun aspetto dello sviluppo di pycobalt.
  1. Sui problemi tecnici osservati:
  • In generale ci sono alcuni problemi di codifica tra 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.
  • In particolare, la chiamata API 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.
  • Solo API bloccanti fornite dal pacchetto 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.
  • API bloccante + nessun threading + dipendenza dai callback = abbiamo dovuto impiegare alcuni hack strani per far funzionare il tutto.

Analisi delle credenziali su un mazzo di carte

pypykatz e il suo modulo compagno minidump hanno dovuto essere modificati per consentire un'analisi a blocchi più efficiente rispetto a quanto implementato in precedenza, ma questo è un argomento per un'altra occasione.
Dopo che pypykatz è stato in grado di interfacciarsi con CobaltStrike tramite pycobalt, il passo successivo è stato consentire la lettura a blocchi dei file. Purtroppo questa funzionalità non è disponibile per impostazione predefinita in nessuna delle soluzioni C2 che abbiamo visto, quindi abbiamo dovuto implementarla. Il modo in cui abbiamo affrontato questo problema è implementando la lettura a blocchi tramite l'uso dell'interfaccia Beacon Object Files di CobaltStrike, abbreviata in BOF. I BOF sono programmi C che vengono eseguiti sul beacon non come eseguibile separato ma come parte del beacon già in esecuzione. Questa interfaccia è molto utile perché rende i BOF molto più furtivi, poiché tutto il codice viene eseguito in memoria senza scrivere nulla su disco.
La nostra soluzione BOF è una semplice funzione che accetta 4 argomenti:

  • fileName : Percorso completo del file dump LSASS o hive del registro (sull'endpoint remoto)
  • buffsize : Quantità (in byte) da leggere dal file
  • seekSize : Posizione da cui iniziare l'operazione di lettura (dall'inizio del file)
  • rplyid : Numero di identificazione da incorporare nella risposta per evitare possibili collisioni

Con questi parametri, pypykatz (in esecuzione sull'agente) può emettere operazioni di lettura file sul beacon (computer target) che mirano specificamente a determinate parti del file.
Dall'altra parte (in CobaltStrike) aggrokatz registra un callback per monitorare ogni messaggio restituito dal beacon target. Se l'intestazione del messaggio corrisponde all'intestazione di un'operazione di lettura file, verrà elaborato come un blocco di un file minidump e inviato al parser minidump, che invierà il risultato a pypykatz. Nel caso sia necessaria un'ulteriore lettura, pypykatz emetterà una lettura utilizzando il lettore minidump che invierà un nuovo comando di lettura sul beacon tramite l'interfaccia BOF. Questo processo si ripete fino a quando il file non viene analizzato.

Risultati

Dopo aver analizzato circa 100 dump LSASS con questo metodo, possiamo affermare quanto segue (la dimensione del blocco utilizzata era 20k):

  • A seconda della dimensione del file dump LSASS (i nostri dump erano tra 40 MB e 300 MB), in media tutti i segreti potevano essere estratti utilizzando 3,5 MB. Nota che questo numero non dipende dalla dimensione del dump LSASS ma piuttosto dalla quantità di segreti e dal numero di pacchetti che scegli di analizzare.
  • In media sono state utilizzate 250 operazioni di lettura per un'analisi riuscita.
  • Il tempo di analisi dipende solo dalla tua configurazione jitter/sleep, quindi misurarlo è inutile.

Svantaggi

  • Per ogni operazione di lettura, un BOF deve essere caricato sul beacon. (Segretamente speriamo che qualcuno di CobaltStrike veda questo articolo e decida di implementare operazioni di base di lettura file come predefinite, così possiamo evitare di usare questa soluzione).
  • Il numero di operazioni di lettura può essere problematico se stai utilizzando un beacon con un jitter/sleep molto grande.

Riconoscimenti

dcsync - autore di pycobalt
@anthemtotheego Twitter - Creatore di CredBandit
Nicol Jos @shinepaw - design del logo

Scarica lo strumento