
Herramienta para explotar automáticamente rutas de escalada de privilegios de Active Directory mostradas por BloodHound
autobloodyautobloody es una herramienta para explotar automáticamente las rutas de escalada de privilegios de Active Directory mostradas por BloodHound.
Esta herramienta automatiza la escalada de privilegios de AD entre dos objetos de AD, el origen (el que poseemos) y el destino (el que queremos) si existe una ruta de escalada en la base de datos de BloodHound. La automatización consta de dos pasos:
bloodyADDebido a que autobloody depende de bloodyAD, admite autenticación mediante contraseñas en texto claro, pass-the-hash, pass-the-ticket o certificados y se conecta a los servicios LDAP de un controlador de dominio para realizar la escalada de privilegios de AD.
Un paquete de Python está disponible:
pip install autobloody
O puedes clonar el repositorio:
git clone --depth 1 https://github.com/CravateRouge/autobloody
pip install .
Para un mejor rendimiento, se recomienda tener instalada la biblioteca GDS en Neo4j. Sin ella, autobloody usará consultas CYPHER nativas que son más lentas pero aún funcionales.
Se puede instalar un entorno ligero de BloodHound con el plugin GDS ejecutando ./bloodhound-ce desde https://github.com/CravateRouge/Single-User-BloodHound.
Primero los datos deben importarse en BloodHound (por ejemplo, usando SharpHound o BloodHound.py) y Neo4j debe estar ejecutándose.
⚠️ Los valores -ds y -dt distinguen entre mayúsculas y minúsculas
Uso simple:
autobloody -p 'Password123!' --host 192.168.10.2 -dp 'neo4jP@ss' -ds '[email protected]' -dt 'BLOODY.LOCAL'
Ayuda completa:
[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)
Primero se encuentra una ruta de escalada usando el algoritmo de Dijkstra implementado en la biblioteca GDS de Neo4j. El algoritmo de Dijkstra permite resolver el problema del camino más corto en un grafo ponderado. Por defecto, las aristas creadas por BloodHound no tienen peso, sino un tipo (por ejemplo, MemberOf, WriteOwner). Luego se agrega un peso a cada arista según el tipo de arista y el tipo de nodo alcanzado (por ejemplo, usuario, grupo, dominio).
Una vez que se genera una ruta, autobloody se conectará al controlador de dominio (DC) y ejecutará la ruta, limpiando lo que sea reversible (todo excepto ForcePasswordChange y setOwner).
Por ahora, solo las siguientes aristas de BloodHound están soportadas para explotación automática:
¿Te gusta este proyecto? Las donaciones son bienvenidas
¿Necesitas soporte personalizado? envíame un correo electrónico para formaciones o funcionalidades personalizadas.