
Un ingestor basado en Python para BloodHound
Necesitaba BloodHound con soporte para Kerberos y encontré este comentario. Resulta que había una rama con soporte para autenticación Kerberos todo este tiempo. Me tomé la libertad de fusionar esta rama en master para obtener las exportaciones de BloodHound 4.2+. Todo el crédito es para la gente que realmente escribió el código :)
Como dijo el propio Sr. Dirkjan, esto "necesita más trabajo y pruebas". Puede que no funcione en todos los casos, así que por favor reporta cualquier problema que encuentres e intentaremos solucionarlo. Quizás algún día podamos enviar esto como un PR al repositorio principal.
$ python3 /opt/BloodHound.py/bloodhound.py -u redacted -k -d absolute.htb -dc dc.absolute.htb -ns 10.129.202.227 --dns-tcp --zip -no-pass -c All
INFO: Found AD domain: absolute.htb
INFO: Using TGT from cache
INFO: Found TGT with correct principal in ccache file.
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.absolute.htb
INFO: Found 18 users
INFO: Found 55 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.absolute.htb
INFO: Ignoring host dc.absolute.htb since its reported name does not match
INFO: Done in 00M 02S
INFO: Compressing output into 20220926135518_bloodhound.zip
Si tienes errores de DNS, puedes intentar apuntar el DNS a ti mismo -ns 127.0.0.1 mientras ejecutas dnschef:
python3 dnschef.py --fakeip <dc ip> --fakedomains <domain> -q
BloodHound.py es un ingestor basado en Python para BloodHound, basado en Impacket.
Esta versión de BloodHound.py solo es compatible con BloodHound 4.2 o superior. Para la serie 3.x, usa la versión 1.1.1 desde pypi. A partir de la versión 1.3, BloodHound.py solo es compatible con Python 3; Python 2 ya no se prueba y podría dejar de funcionar en el futuro.
BloodHound.py actualmente tiene las siguientes limitaciones:
Puedes instalar el ingestor mediante pip con pip install bloodhound, clonando este repositorio y ejecutando python setup.py install, o con pip install ..
BloodHound.py requiere impacket, ldap3 y dnspython para funcionar.
La instalación añadirá la herramienta de línea de comandos bloodhound-python a tu PATH.
Para usar el ingestor, como mínimo necesitarás credenciales del dominio al que te estás conectando.
Tendrás que especificar la opción -u con un nombre de usuario de este dominio (o username@domain para un usuario en un dominio de confianza). Si tienes tu DNS configurado correctamente y el dominio de AD está en tu lista de búsqueda de DNS, BloodHound.py detectará automáticamente el dominio por ti. Si no, tienes que especificarlo manualmente con la opción -d.
Por defecto, BloodHound.py consultará LDAP y los equipos individuales del dominio para enumerar usuarios, equipos, grupos, confianzas, sesiones y administradores locales.
Si quieres restringir la recopilación, especifica el parámetro --collectionmethod, que admite las siguientes opciones (similar a SharpHound):
Varios métodos de recopilación deben separarse con una coma, por ejemplo: -c Group,LocalAdmin
Puedes anular algunas de las opciones de detección automática, como el nombre de host del Controlador de Dominio principal si quieres usar un Controlador de Dominio diferente con -dc, o especificar tu propio Catálogo Global con -gc.
docker build -t bloodhound .docker run -v ${PWD}:/bloodhound-data -it bloodhoundbloodhound-python dentro del contenedor; todos los datos se almacenarán en la ruta desde donde inicies el contenedor.