
Estensione di Burp Suite per eseguire l'autenticazione Kerberos
Rilasciato come open source da NCC Group Plc - http://www.nccgroup.trust/
Sviluppato da Richard Turnbull, richard [dot] turnbull [at] nccgroup [dot] com
http://www.github.com/nccgroup/Berserko
Rilasciato sotto licenza AGPL, vedi LICENSE per maggiori informazioni
L'ulteriore sviluppo di Berserko avverrà su https://github.com/rteatea/Berserko
Berserko è un'estensione di Burp per aggiungere il supporto all'autenticazione Kerberos. È utile per i test in un dominio Windows quando l'autenticazione NTLM non è supportata (Burp gestisce già NTLM). Berserko non richiede che la macchina su cui gira Burp sia membro del dominio (o che esegua Windows).
L'unica soluzione esistente che conosciamo attualmente per testare applicazioni Kerberos usando Burp è quella di passare attraverso Fiddler, con l'autenticazione configurata secondo queste istruzioni. Ma Fiddler è disponibile solo per Windows, e concatenare i proxy aggiunge complessità e penalizza le prestazioni, quindi è bello avere la funzionalità Kerberos direttamente in Burp.
Scarica l'ultimo file jar di Berserko dalla scheda Releases o dalla cartella berserko\releases
Vai alla scheda Extender in Burp, seleziona Add, assicurati che Java sia selezionato come Extension type, e poi indica il file jar. Se tutto funziona, la scheda Berserko dovrebbe essere aggiunta all'interfaccia di Burp.
Ci sono vari controlli nella scheda Berserko in Burp.
La casella Do Kerberos authentication è un interruttore generale. Finchè non viene abilitata, Berserko non fa assolutamente nulla.
Il pulsante Restore defaults riporta Berserko alla configurazione predefinita (in cui non sono presenti dettagli del dominio o credenziali utente).
Il pulsante Clear Kerberos state cancella tutti i ticket Kerberos e altro stato sul client. L'unico motivo per cui potresti aver bisogno di usarlo è se sono state apportate modifiche alla configurazione Kerberos lato server e vuoi ripartire da uno stato pulito.
Il pulsante Write tickets to log scrive informazioni sui tuoi ticket Kerberos correnti nello stream di log di Berserko: può essere utile per il debug/risoluzione dei problemi. Per vedere i log, vai alla scheda Extender di Burp, seleziona Berserko e osserva la scheda Output qui sotto. Potrebbe avere senso usare l'opzione Save to file, perché i dati dei ticket possono facilmente riempire il buffer di log nella GUI.
Alcuni controlli hanno un pulsante di aiuto che mostra ulteriori informazioni.
Specifica il Domain DNS Name e il KDC Host usando i controlli di questa sezione. Le caselle di testo non possono essere modificate direttamente; devi usare il pulsante 'Change' per modificarle.
Il Domain DNS Name dovrebbe essere il nome DNS del dominio contro cui desideri autenticarti (per essere precisi, in realtà è il realm Kerberos). Dovrebbe essere qualcosa come mydomain.acme.local. Non dovrebbe essere il nome NETBIOS del dominio (che sarebbe qualcosa come MYDOMAIN).
Il KDC Host dovrebbe essere il nome host (o indirizzo IP) di un KDC Kerberos (Key Distribution Center). In un dominio Windows, un KDC è semplicemente un controllore di dominio.
Dopo aver fornito il Domain DNS Name, puoi usare il pulsante Auto per tentare di individuare automaticamente un KDC. Lo fa inviando una query DNS SRV per il servizio Kerberos. Se uno dei tuoi server DNS è un controllore di dominio per il dominio corretto, dovrebbe funzionare. In caso contrario, non funzionerà. ❗Questa funzionalità non funzionerà nelle versioni recenti di Burp, poiché le librerie DNS richieste non vengono distribuite con la JRE inclusa. Puoi aggirare il problema avviando con una JRE completa come descritto all'inizio di questo README.❗
Quando sono stati inseriti il Domain DNS Name e il KDC Host, usa il pulsante Test domain settings per verificare la connettività. Se tutto va bene, riceverai una risposta Successfully contacted Kerberos service.
Vedi questo file per molte altre informazioni su come ottenere i valori corretti per queste impostazioni di dominio.
Specifica l'Username e la Password per un account di dominio usando i controlli di questa sezione. Le caselle di testo non possono essere modificate direttamente; devi usare il pulsante 'Change' per modificarle.
L'Username dovrebbe essere solo il nome utente semplice. Dovrebbe essere qualcosa come bob. Non dovrebbe essere MYDOMAIN\bob o [email protected] o simili.
Dopo aver fornito le credenziali, puoi usare il pulsante Test credentials. Questo tenterà di acquisire un ticket-granting ticket Kerberos per l'utente specificato. In caso di successo, riceverai una risposta TGT successfully acquired. In caso di insuccesso, tieni presente che si tratta di un tentativo di autenticazione al dominio, quindi fai attenzione a non bloccare il tuo account.
La password non verrà salvata nella configurazione di Berserko per la volta successiva a meno che la casella Save password in Burp config? non sia spuntata. Tutte le altre impostazioni verranno comunque salvate.
Alcune applicazioni usano la delega Kerberos lato server per inoltrare l'identità del client ad altri server (ma non esiste un modo semplice per determinare dal lato client se questa funzionalità è in uso).
Berserko la supporta, ma c'è un problema. La delega funziona solo se l'utente ha un TGT (ticket-granting ticket) forwardable. Purtroppo l'implementazione Java di Kerberos non fornisce un modo per specificare a livello di programmazione che debba essere acquisito un ticket forwardable. Questo può essere fatto solo aggiungendo una voce appropriata al file di configurazione krb5.conf.
Quindi, perché la delega funzioni, Berserko deve essere puntato a un file krb5.conf adatto, e ci sono due possibili approcci.