Tutoriales

Una herramienta que explota automáticamente la ruta de escalada de privilegios de Active Directory que muestra BloodHound

sangre automática es una herramienta que aprovecha automáticamente las rutas de escalada de privilegios de Active Directory que muestra BloodHound.

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

LEER  Cómo encontrar una versión de paquete en Linux

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba