sangre automática es una herramienta que aprovecha automáticamente las rutas de escalada de privilegios de Active Directory que muestra BloodHound.
Tabla de Contenidos
describir
Esta herramienta realiza automáticamente un AD privesc entre dos objetos AD, el origen (lo que tenemos) y el destino (lo que queremos), si la ruta privesc existe en la base de datos de BloodHound. La automatización consta de dos pasos:
- Encontrar el mejor camino para privesc utilizando datos de Bloodhound y consultas neo4j.
- Ejecutar la ruta encontrada usando
bloodyAD
embalar
Porque autobloody depende de Anuncio sangrientoque admite la autenticación mediante contraseñas de texto sin formato, pass-the-hash, pass-the-ticket o certificados, y se vincula con el servicio LDAP del controlador de dominio para realizar AD privesc.
Instalar
Primero, si está ejecutando esto en Linux, debe tener libkrb5-dev
Instálelo en su sistema operativo para que Kerberos funcione:
# Debian/Ubuntu/Kali apt-get install libkrb5-dev # Centos/RHEL yum install krb5-devel # Fedora dnf install krb5-devel # Arch Linux pacman -S krb5
Un paquete de python está disponible:
pip install autobloody
O puedes clonar el repositorio:
git clone --depth 1 pip install .
dependencias
- Anuncio sangriento
- controlador de Python Neo4j
- Neo4j con GWD
- sabueso
- pitón 3
- Gssapi (Linux) o Winkerberos (Windows)
cómo usarlo
Primero, los datos deben importarse a 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 sencillo:
autobloody -u john.doe -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 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 -u USERNAME, --username USERNAME Username used for NTLM authentication -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)
cómo funciona
Primero se encuentra una ruta privada utilizando 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 grafos ponderados. Por defecto, los bordes creados por BloodHound no tienen peso, pero tienen un tipo (por ejemplo, MemberOf, WriteOwner). Luego, se agregan pesos a cada borde según el tipo de borde y el tipo de nodo al que llega (por ejemplo, usuario, grupo, dominio).
Después de generar la ruta, autobloody
se conectará al DC y ejecutará la ruta y limpiará cosas reversibles (excepto ForcePasswordChange
con setOwner
).
límite
Actualmente, solo los siguientes bordes de BloodHound son compatibles con la explotación automatizada:
- miembro
- forzar cambio de contraseña
- Añadir miembros
- agregar uno mismo
- Sincronización de datos
- obtener cambios / obtener todos los cambios
- Universal todo
- Escribir datos
- escritura universal
- escribir propietario
- tengo
- Incluir
- Todos los derechos extendidos