
Collettore di dati di Active Directory basato su TUI che acquisisce oggetti LDAP, esegue la raccolta remota RPC/SMB/HTTP e genera dump compatibili con BloodHound CE per l'analisi dei percorsi di attacco.
Una TUI per la raccolta di Active Directory.
Gli obiettivi principali di questo progetto sono:
Flashingestor implementa 3 passaggi di base separati: LDAP Ingestion, Remote Collection e Conversion, contrariamente ad altri collector che eseguono i metodi specificati in un unico passo:
Ingest (Ctrl+l) - Raccoglie dati grezzi degli attributi degli oggetti da LDAP e li memorizza in output/ldap in file msgpack intermedi. Le query possono essere personalizzate in config.yaml.
Remote (Ctrl+r) - Legge questi file intermedi in memoria, calcola l'elenco dei computer da raccogliere ed esegue una serie di richieste RPC/SMB/HTTP per ottenere informazioni remote rilevanti per gli oggetti Computer ed EnterpriseCA, che vengono memorizzate in output/remote.
Convert (Ctrl+s) - Legge i file intermedi in memoria, unisce le informazioni delle fasi di ingestion e raccolta remota e genera un dump compatibile con Bloodhound in output/bloodhound – questo passaggio è completamente offline.
Per ulteriori dettagli tecnici e approfondimenti, consulta la nostra 📖 Wiki.
$ git clone https://github.com/Macmod/flashingestor
$ cd flashingestor
# To build only:
$ go build ./cmd/flashingestor
# To install the executable to $GOBIN or $GOPATH/bin:
$ go install ./cmd/flashingestor
[!NOTE] Puoi anche utilizzare i binari precompilati dai Releases forniti.
Prima autenticati con uno dei seguenti:
# Anonymous
# [Requires dSHeuristics of 0000002 in the DirectoryServices object
# and can have limited visibility due to lack of Read ACEs]
$ ./flashingestor -u '@<DOMAIN>' -p '' [...]
# User + Password
$ ./flashingestor -u <USER>@<DOMAIN> -p <PASSWORD> [-k] [...]
# User + NTHash
$ ./flashingestor -u <USER>@<DOMAIN> -H <NTHASH> [-k] [...]
# User + PFX
$ ./flashingestor -u <USER>@<DOMAIN> --pfx <PFXPATH> [--pfx-password <PFXPASS>] [-k] [...]
# User + PEM
$ ./flashingestor -u <USER>@<DOMAIN> --cert <PEMPATH> --key <KEYPATH> [-k] [...]
# User + AESKey
$ ./flashingestor -u <USER>@<DOMAIN> --aes-key <AESKEY> -k [...]
# User + Ticket
$ ./flashingestor -u <USER>@<DOMAIN> --ccache /path/to/ticket.ccache -k [...]
or
$ KRB5CCNAME=/path/to/ticket.ccache ./flashingestor -u <USER>@<DOMAIN> -k [...]
Quindi esegui i passaggi come desiderato. Per una raccolta solo LDAP (DCOnly con eccezione di GPOLocalGroup e CertServices), basta premere Ctrl+l, verificare che l'ingestion sia riuscita e poi premere Ctrl+s per generare il dump finale.
Si consiglia di specificare --dc e --dns per eseguire flashingestor. Se non specifichi --dc, flashingestor cercherà di trovarlo con ricerche SRV / A, che potrebbero ritardare il passo iniziale di Ingest.
Devi quindi specificare --dns se il tuo server DNS standard non è a conoscenza del dominio - quando è in uso DNS integrato AD, punta semplicemente --dns al DC che lo ospita. Inoltre, indipendentemente da --dc, se vuoi eseguire il passo Remote Collection e il tuo server DNS non è a conoscenza dei computer nel dominio, allora devi specificare --dns per le ricerche.
[!TIP] In ambienti con più DC, puoi anche utilizzare l'utility
dcprobeper misurare la latenza verso tutti i DC e trovare un buon candidato per l'ingestion:$ go build ./cmd/dcprobe $ ./dcprobe --dns 192.168.88.6 -d creta.local -r 10
Se il file di configurazione non è presente nella directory corrente come config.yaml o nel percorso fornito tramite --config, verranno assunte le opzioni predefinite (le stesse del config.yaml fornito) – sono hardcoded in config/fallback.go. Per maggiori informazioni, leggi File di Configurazione.
Considera di utilizzare --log per specificare un file di output per i log (nel caso dovessi rivederli dopo aver chiuso la TUI) e -vv per vedere i messaggi di log di debug, poiché possono aiutare a risolvere possibili problemi. Per un riferimento completo degli argomenti da riga di comando, leggi Argomenti da Riga di Comando.
[!NOTE] Le query predefinite nel
config.yamlfornito sono progettate tenendo conto delle informazioni necessarie per la conversione in Bloodhound. Puoi scegliere di personalizzare query o attributi inconfig.yaml, ma è meglio cercare di non rimuovere attributi necessari e di non modificare il significato dei filtri di ricerca.
Se recurse_trusts è impostato su true, verranno ingeriti ricorsivamente tutti i domini attendibili trovati con le credenziali iniziali fornite per l'ingestion.
Se search_forest è impostato su true, verranno ingeriti i domini che fanno parte della stessa foresta del dominio iniziale dalla partizione Configuration – non verranno emesse ulteriori query, poiché questo è già parte del piano di ingestion predefinito. Entrambe le opzioni possono essere impostate contemporaneamente e flashingestor ingerirà ogni dominio trovato una sola volta (tramite un trust o tramite la foresta corrente).
Se recurse_trusts è abilitato e recurse_feasible_only è anch'esso impostato su true, proverà ad ingerire un dominio attendibile solo se il trust è:
Ciò significa che i trust solo outbound non verranno attraversati e, a parte il primo livello di trust, i percorsi di ingestion si fermano ai trust non transitivi – se B si fida di A non transitivamente, allora A può ancora autenticarsi in B; ma se anche C si fida di B non transitivamente, A non può autenticarsi in C.