
Strumento per sfruttare automaticamente i percorsi di escalation dei privilegi di Active Directory mostrati da BloodHound
autobloodyautobloody è uno strumento per sfruttare automaticamente i percorsi di escalation dei privilegi di Active Directory mostrati da BloodHound.
Questo strumento automatizza l'escalation dei privilegi AD tra due oggetti AD: la sorgente (quella che possediamo) e il target (quella che vogliamo) se esiste un percorso di escalation nel database di BloodHound. L'automazione si compone di due fasi:
bloodyADPoiché autobloody si basa su bloodyAD, supporta l'autenticazione tramite password in chiaro, pass-the-hash, pass-the-ticket o certificati e si connette ai servizi LDAP di un controller di dominio per eseguire l'escalation AD.
È disponibile un pacchetto Python:
pip install autobloody
Oppure puoi clonare il repository:
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .
Per migliori prestazioni, si consiglia di avere installata la libreria GDS in Neo4j. Senza di essa, autobloody utilizzerà query CYPHER native che sono più lente ma comunque funzionali.
Un ambiente BloodHound leggero con il plugin GDS può essere installato lanciando ./bloodhound-ce da https://github.com/CravateRouge/Single-User-BloodHound.
Prima i dati devono essere importati in BloodHound (ad esempio usando SharpHound o BloodHound.py) e Neo4j deve essere in esecuzione.
⚠️ I valori di -ds e -dt sono case sensitive
Utilizzo semplice:
autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds '[email protected]' -dt 'BLOODY.LOCAL'
Aiuto completo:
[bloodyAD]$ ./autobloody.py -h
usage: autobloody.py [-h] [--dburi DBURI] [-du DBUSER] -dp DBPASSWORD -ds DBSOURCE -dt DBTARGET [-d DOMAIN] [-u USERNAME] [-p PASSWORD] [-k] [-c CERTIFICATE] [-s] --host HOST [-y] [-v] [--timeout TIMEOUT]
AD Privesc Automation
options:
-h, --help show this help message and exit
--dburi DBURI The host neo4j is running on (default is "bolt://localhost:7687")
-du DBUSER, --dbuser DBUSER
Neo4j username to use (default is "neo4j")
-dp DBPASSWORD, --dbpassword DBPASSWORD
Neo4j password to use
-ds DBSOURCE, --dbsource DBSOURCE
Case sensitive label of the source node (name property in bloodhound)
-dt DBTARGET, --dbtarget DBTARGET
Case sensitive label of the target node (name property in bloodhound)
-d DOMAIN, --domain DOMAIN
Domain used for NTLM authentication (optional, default is dbsource domain)
-u USERNAME, --username USERNAME
Username used for NTLM authentication (optional, default is dbsource sAMAccountName)
-p PASSWORD, --password PASSWORD
Cleartext password or LMHASH:NTHASH for NTLM authentication
-k, --kerberos
-c CERTIFICATE, --certificate CERTIFICATE
Certificate authentication, e.g: "path/to/key:path/to/cert"
-s, --secure Try to use LDAP over TLS aka LDAPS (default is LDAP)
--host HOST Hostname or IP of the DC (ex: my.dc.local or 172.16.1.3)
-y, --yes Assume yes to apply the generated privesc
-v, --verbose Enable verbose output (-v for INFO, -vv for DEBUG)
--timeout TIMEOUT Connection timeout in seconds (default is 60)
Prima viene trovato un percorso di escalation utilizzando l'algoritmo di Dijkstra implementato nella libreria GDS di Neo4j. L'algoritmo di Dijkstra permette di risolvere il problema del percorso più breve su un grafo pesato. Di default, gli archi creati da BloodHound non hanno peso ma un tipo (es. MemberOf, WriteOwner). Un peso viene quindi aggiunto a ciascun arco in base al tipo di arco e al tipo di nodo raggiunto (es. utente, gruppo, dominio).
Una volta generato un percorso, autobloody si connetterà al DC, eseguirà il percorso e pulirà ciò che è reversibile (tutto tranne ForcePasswordChange e setOwner).
Per ora, solo i seguenti archi di BloodHound sono supportati per lo sfruttamento automatico:
Ti piace questo progetto? Le donazioni sono ben accette
Hai bisogno di supporto personalizzato? Inviami una email per formazione o funzionalità personalizzate.