
raccogliere raccogliere raccogliere
raccogli raccogli raccogli

Jackdaw è qui per raccogliere tutte le informazioni nel tuo dominio, archiviarle in un database SQL e mostrarti bei grafici su come gli oggetti del tuo dominio interagiscono tra loro e come un potenziale attaccante potrebbe sfruttare queste interazioni. Include anche una pratica funzionalità per aiutarti in un progetto di cracking delle password memorizzando/consultando/reportando hash/password/utenti.
dbinitenum. Questo può essere fatto automaticamente su Windows facendo doppio clic sul file eseguibile, o digitando jackdaw.exe auto.nest per ottenere l'interfaccia web. Di default viene servita su http://127.0.0.1:5000/nest; c'è un'API documentata con SWAGGER su http://127.0.0.1:5000/ui.Generate graph cache una sola volta per ottenere le informazioni sugli archi in un file cache. Potrebbe volerci un po', ma nella riga di comando vedrai una barra di avanzamento.graph view ma non dimenticare di selezionare il numero di cache corretto in alto a sinistra.Questa sezione verrà aggiornata regolarmente in base ai feedback degli utenti.
Nessun consiglio qui; mentre alcuni miglioramenti possono essere fatti nel codice, non c'è nulla che un generico possa fare.
La generazione del file cache dei dati del grafico deve essere eseguita una volta per ogni grafico (e una sola volta), il che può richiedere un po' di tempo usando lo strumento sqlalchemy predefinito.
Le prestazioni e la velocità possono migliorare significativamente (oltre 50x più velocità e 20x meno memoria) se usi il backend sqlite E metti l'utilità da riga di comando "sqlite3" da qualche parte nel PATH. Lo consiglio a tutti gli utenti.
Qui entra in gioco il grande compromesso. Le prime implementazioni di Jackdaw usavano il modulo networkx come backend del grafico poiché è completamente scritto in Python. Ma questo comportava un costo significativo in termini di memoria e velocità. Per mantenere Jackdaw puramente Python, questa opzione esiste ancora, tuttavia l'uso del backend igraph è ora predefinito.
Nota: igraph è una libreria C++ con binding Python. Ha wheel precompilati per Windows e le principali distribuzioni Linux, ma se usi Jackdaw su qualcos'altro (sistemi embedded/telefoni cellulari/browser web) dovrai tornare a networkx o sopportare ore di compilazione.
Non c'è bisogno di pre-inizializzare il database, verrà fatto automaticamente.
Usando il binario distribuito puoi semplicemente fare doppio clic su jackdaw.exe
Usando come script Python: jackdaw auto
jackdaw --sql sqlite:///<percorso completo>/test.db dbinit
SU SISTEMI LINUX <percorso completo> include la prima / quindi avrai //// quattro (4) trattini prima del nome del file. Non preoccuparti.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<dominio>\<segnaposto>@10.10.10.2' 'smb+sspi-ntlm://<dominio>\<segnaposto>@10.10.10.2'
La password è Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\vittima:[email protected]' 'smb+ntlm-password://TEST\vittima:[email protected]'
La password è Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\vittima:[email protected]'
jackdaw --sql sqlite:///<PERCORSO COMPLETO AL DB> nest
Apri http://127.0.0.1:5000/ui per l'API
Vedi la sezione Costruire l'interfaccia utente più avanti per imparare come costruire l'UI. Una volta costruita:
Apri http://127.0.0.1:5000/nest per l'interfaccia del grafico (mostra il grafico, ma ben lontano dall'essere funzionante)
La fase di enumerazione LDAP acquisisce dati su informazioni AD, oggetti Utente, Macchina, OU, Gruppo che saranno rappresentati come nodi nel grafico e come tabelle separate nel DB. Inoltre, il Descrittore di Sicurezza di tutti gli oggetti menzionati verrà analizzato e gli ACL per il DACL aggiunti al DB. Questo, insieme alle informazioni di appartenenza, sarà rappresentato come archi nel grafico. Inoltre, quando necessario, è possibile eseguire query SQL personalizzate su qualsiasi tipo di dato sopra menzionato.
La fase di enumerazione SMB acquisisce dati su condivisioni, gruppi locali, sessioni, dati NTLM tramite connessione a ciascuna macchina nel dominio (acquisita tramite LDAP)
Il modulo Kerberos esegue automaticamente kerberoasting e aspreproasting
Il framework permette agli utenti di caricare dump di memoria LSASS per memorizzare le credenziali e ampliare la tabella delle informazioni sulle sessioni. Entrambi saranno usati come archi aggiuntivi nel grafico (rispettivamente password condivise e sessioni). Il framework usa anche queste informazioni per creare un report sulle password deboli/condivise/crackate.
Il framework permette agli utenti di caricare file DCSYNC di impacket per memorizzare le credenziali. Questo sarà usato come archi aggiuntivi nel grafico (password condivise). Il framework usa anche queste informazioni per creare un report sulle password deboli/condivise/crackate.
Il framework permette di estendere manualmente il DB disponibile in ogni aspetto. Esempio: quando vengono scoperte informazioni sulle sessioni utente su un dato computer (al di fuori dell'enumerazione automatica), c'è la possibilità di caricare manualmente queste sessioni, che popoleranno il DB e anche il grafico risultante.
Il framework può generare un grafico usando le informazioni disponibili nel database e visualizzarlo tramite l'interfaccia web (nest). Inoltre, la generazione del grafico e i calcoli dei percorsi possono essere invocati programmaticamente, sia tramite l'API web (endpoint /ui) sia tramite le funzioni dell'oggetto grafico.
Il framework può identificare le misconfigurazioni AD comuni senza generare il grafico. Attualmente solo tramite l'API web.
Il rilevamento di anomalie utente include la rilevazione di permessi UAC insicuri e valori estesi nella descrizione dell'utente. Si prevede che questo insieme di funzionalità cresca in futuro man mano che verranno implementate nuove funzionalità.
Il rilevamento di anomalie macchina include la rilevazione di permessi UAC insicuri, firma SMB non obbligatoria, versione del sistema operativo obsoleta, macchine fuori dal dominio. Si prevede che questo insieme di funzionalità cresca in futuro man mano che verranno implementate nuove funzionalità.
Il framework non esegue alcun cracking, si limita a organizzare gli hash e i risultati del cracking
attualmente l'attenzione principale è sui risultati dcsync di impacket e aiosmb! solo hash NT e LM!
Il processo di esempio è il seguente:
nota dell'autore: Questa funzionalità è stata implementata sia per gli attaccanti che per i difensori. Personalmente non vedo molto valore aggiunto da nessuna delle due parti, poiché una volta ottenuto l'hash NT di un utente è altrettanto valido quanto la password... Tuttavia, sempre più aziende stanno effettuando esercizi sulla robustezza delle password, e questa funzionalità le aiuterebbe. Per quanto riguarda gli attaccanti: a questo punto è solo per mettersi in mostra, ma fate pure. Forse spaventare la direzione per punti extra.
Questo progetto è in fase sperimentale! Ciò significa diverse cose:
Jackdaw utilizza il modulo ORM SQLAlchemy, che ti dà la possibilità di usare qualsiasi backend SQL DB tu preferisca. I test sono principalmente fatti su SQLite per ovvie ragioni. Non ci saranno comandi specifici per backend utilizzati in questo progetto che potrebbero limitarti.
QUESTO È NECESSARIO SOLO SE INSTALLI TRAMITE GIT E/O MODIFICHI QUALCOSA NEL CODICE DELL'UI
L'UI è stata scritta in React. Prima del primo uso/installazione devi costruirla. Per questo, avrai bisogno di nodejs e npm installati. Poi:
jackdaw/nest/site/nuinpm installnpm run buildUna volta fatto quanto sopra, l'UI è pronta per essere utilizzata.
"Se ho visto più lontano, è perché stavo sulle spalle di giganti."
Team di BloodHound
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
vedi la sezione riconoscimenti nei moduli aiosmb e msldap