Skip to content

BloodHound — Overview & Setup

¿Qué es BloodHound?

BloodHound es una herramienta open-source que usa teoría de grafos para representar visualmente las relaciones entre objetos de AD e identificar rutas de ataque que serían imposibles de detectar con enumeración tradicional. Desde la versión 4.0 también soporta Azure.

La idea central es que un usuario aparentemente sin privilegios puede tener una ruta encadenada hacia Domain Admin a través de múltiples relaciones intermedias. BloodHound encuentra esa ruta automáticamente usando el camino más corto.

Ejemplo: Grace es miembro de SQL Admins → SQL Admins tiene ForceChangePassword sobre Peter → Peter es miembro de Domain Admins. Sin BloodHound esa cadena es casi imposible de descubrir manualmente.


Conceptos clave

Nodos son los objetos de AD: usuarios, grupos, computadoras, GPOs, OUs, dominios.

Edges son las relaciones entre objetos: MemberOf, AdminTo, ForceChangePassword, GenericAll, HasSession, etc.

Cypher es el lenguaje de queries de Neo4j que usa BloodHound. Es similar a SQL pero para grafos. Permite construir queries personalizadas para encontrar relaciones específicas.


Instalación en Windows

c
# Instalar Java JDK 11 en silencio
.\jdk-11.0.17_windows-x64_bin.exe /s

# Descomprimir Neo4j
Expand-Archive .\neo4j-community-4.4.16-windows.zip .

# Instalar Neo4j como servicio
.\neo4j-community-4.4.16\bin\neo4j.bat install-service

# Iniciar Neo4j
net start neo4j

# Detener Neo4j
net stop neo4j

Configurar contraseña: abrir http://localhost:7474/ → autenticarse con neo4j/neo4j → cambiar contraseña.

Descargar BloodHound GUI desde: https://github.com/BloodHoundAD/BloodHound/releases


Instalación en Linux

c
# Agregar repo de Neo4j
wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.com stable 4.4' | sudo tee -a /etc/apt/sources.list.d/neo4j.list
sudo apt-get update

# Instalar dependencia
sudo apt-get install apt-transport-https

# Ver versiones disponibles
sudo apt list -a neo4j

# Instalar Neo4j 4.4.16
sudo apt install neo4j=1:4.4.16 -y

# Cambiar Java a versión 11
sudo update-alternatives --config java

# Iniciar Neo4j como consola (para verificar que funciona)
sudo neo4j console

# Iniciar como servicio
sudo systemctl start neo4j

# Detener servicio
sudo systemctl stop neo4j

# Ejecutar BloodHound GUI
cd BloodHound-linux-x64/
./BloodHound --no-sandbox

Usar Neo4j 4.4.x, no la versión 5 que tiene problemas de performance con BloodHound.

Permitir conexiones remotas a Neo4j

c
# Editar /etc/neo4j/neo4j.conf y descomentar:
dbms.default_listen_address=0.0.0.0

Útil cuando Neo4j corre en Linux pero el GUI de BloodHound está en otra máquina.


Recuperar credenciales de Neo4j olvidadas

c
# 1. Detener Neo4j
sudo systemctl stop neo4j

# 2. Editar /etc/neo4j/neo4j.conf y descomentar:
dbms.security.auth_enabled=false

# 3. Iniciar Neo4j
sudo neo4j console

# 4. Ir a http://localhost:7474/ y conectar sin credenciales
# 5. Ejecutar query para cambiar contraseña:
ALTER USER neo4j SET PASSWORD 'Password123';

# 6. Detener Neo4j, volver a comentar la línea en neo4j.conf
# 7. Iniciar Neo4j normalmente