
Identifica i percorsi di attacco in BloodHound che rompono la tua gerarchia AD
Identifica i percorsi di attacco in BloodHound che violano la tua suddivisione in livelli di Active Directory
ImproHound è un eseguibile standalone .NET x64 per Windows con interfaccia grafica. Per utilizzare ImproHound, devi eseguire SharpHound per raccogliere i dati necessari da AD. Caricherai poi i dati nella tua installazione di BloodHound. ImproHound si collegherà al database Neo4j sottostante di BloodHound. In ImproHound, categorizzerai gli oggetti AD in livelli tramite la struttura delle OU, e ImproHound identificherà le relazioni AD che permettono a oggetti AD di compromettere un oggetto di un livello superiore (più vicino allo zero) e salverà le violazioni della suddivisione in livelli in un file CSV.
Articolo del blog su ImproHound
Video dimostrativo di ImproHound
Presentazione di ImproHound al DEF CON Adversary Village
1. Configura il tuo database BloodHound
Raccogli i dati di BloodHound con SharpHound nel tuo AD
Nota: questo genererà rumore nel tuo antivirus, SIEM, ecc.
Esempio: Esegui SharpHound.exe da cmd, raccogli tutto (sì, GPOLocalGroup non è incluso in All):
SharpHound.exe --CollectionMethods All,GPOLocalGroup
Suggerimento 1: Usa il parametro
Domainper raccogliere dati da altri domini nel forest.
Suggerimento 2: Per ottenere ancora più dati, utilizza The Session Loop Collection Method
Carica i tuoi dati BloodHound nell'interfaccia grafica di BloodHound
C'è un bug in BloodHound che a volte causa la mancata importazione del file JSON del dominio quando si carica un archivio zip di dati BloodHound. Controlla le statistiche del database in BloodHound dopo il caricamento dei dati e assicurati che gli oggetti del dominio esistano.
2. Installa il plugin APOC per Neo4j (abilita le operazioni avanzate sui grafi di cui abbiamo bisogno)
Scarica la versione di APOC corrispondente alla tua versione di Neo4j (apoc-x.x.x.x-all.jar).
Trova la versione di APOC corrispondente alla tua versione di Neo4j nella matrice di compatibilità delle versioni.
Cerca di ricordare dove hai installato Neo4j e posiziona il file jar di APOC sotto: $NEO4J_HOME/plugins/
/var/lib/neo4j/Modifica neo4j.conf nel tuo editor di testo preferito per consentire l'accesso APOC senza restrizioni sostituendo la riga:
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*
con
dbms.security.procedures.unrestricted=apoc.*
/etc/neo4j/neo4j.conf$NEO4J_HOME/conf/neo4j.confSe vuoi eseguire ImproHound su un host e BloodHound su un altro, devi consentire connessioni remote al database Neo4j sull'host di BloodHound. Per farlo, rimuovi il # dalla riga
#dbms.default_listen_address=0.0.0.0inneo4j.conf.
Riavvia Neo4j
systemctl restart neo4jnet stop neo4j && net start neo4j (PowerShell: net stop neo4j; net start neo4j)3. Scarica ed esegui l'ultima versione di ImproHound.exe in Windows (x64)
Conferma di poter accedere al database BloodHound con le stesse credenziali che usi nell'interfaccia grafica di BloodHound.

Inserisci le credenziali del database e stabilisci una connessione. Sono le stesse credenziali che usi nell'interfaccia grafica di BloodHound.

ImproHound crea un'etichetta 'TierX' sui nodi nel database BloodHound. Se hai già usato ImproHound con questo database BloodHound, ti verrà chiesto se vuoi continuare con la suddivisione in livelli già creata o se vuoi ricominciare da capo.

ImproHound ti dà l'opzione di impostare la 'Suddivisione predefinita' che imposta Domain Admins in Tier 0, Domain Users in Tier 2, ecc., o di impostare tutti gli oggetti in Tier 2.

Questa è la pagina in cui categorizzerai gli oggetti AD nei livelli. La finestra mostra la struttura delle OU. Ogni oggetto AD ha un valore di livello che può essere aumentato e diminuito con le frecce.
Imposta i figli al livello
Se selezioni un dominio o un contenitore AD, puoi cliccare su 'Imposta i figli al livello' per impostare tutti i figli (ricorsivamente) al livello del dominio/contenitore specificato.
Imposta i membri al livello
Se selezioni un gruppo, puoi cliccare su 'Imposta i membri al livello' per impostare tutti i membri (ricorsivamente) al livello del gruppo specificato.
Imposta il livello per i GPO
Se clicchi su 'Imposta il livello per i GPO', ogni GPO vedrà il proprio livello impostato al livello dell'OU di livello più alto (più vicino allo zero) a cui il GPO è collegato. I GPO non collegati a una OU non vedranno modificato il loro livello.
Ottieni violazioni della suddivisione in livelli
Trova tutte le relazioni nel database BloodHound in cui un oggetto AD ha il controllo su un oggetto AD di un livello superiore (più vicino allo zero).
Vengono generati due file CSV come output:
adobjects-[timestamp].csv: Tutti gli oggetti AD e il livello in cui si trovano.
tiering-violations-[timestamp].csv: Le violazioni della suddivisione in livelli.
Esempio di record nel CSV delle violazioni:
| SourceTier | SourceType | SourceName | SourceDistinguishedname | Relation | IsInherited | TargetTier | TargetType | TargetName | TargetDistinguishedname |
|---|---|---|---|---|---|---|---|---|---|
| Tier1 | User | [email protected] | CN=svc-monitor,CN=Users,DC=hot,DC=local | ForceChangePassword | True | Tier0 | User | [email protected] | CN=T0_JBK,CN=Users,DC=hot,DC=local |
| Tier2 | Group | [email protected] | CN=Wrk-Admins,CN=Groups,DC=hot,DC=local | GenericWrite | Tier0 | GPO | [email protected] | CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=hot,DC=local |