Page cover

🩸BloodHound

BloodHound es una herramienta de análisis que se utiliza para identificar y visualizar las relaciones entre objetos de un dominio Active Directory de forma visual con gráficos detallados.

Es la herramienta más utilizada para enumeración en Active Directory en Kali Linux.

triangle-exclamation

Instalación

Instalar y iniciar Docker

Una vez añadido el usuario al grupo docker debemos reiniciar el equipo para que se apliquen los cambios.

circle-exclamation

Descargar Bloodhound CE

Instalar Bloodhound CE

Eso nos genera un contenedor de Docker en la url: http://127.0.0.1:8080/ui/login

Posibles errores

Daemon not running

Este error ocurre porque el usuario no está en el grupo docker o se ejecuta sin sudo:

Debemos añadir nuestro usuario al grupo Docker y reiniciar el equipo:

Ver contenedores de Docker activos

Como vemos nos genera automáticamente 3 contenedores automáticamente:

  • BloodHound

  • Neo4j

  • PostgreSQL

Detener contenedores de Docker

Podemos detener todos los contenedores de Docker con:

Y volver a levantarlos con:

Acceder a la GUI

Nos logueamos con las credenciales por defecto que nos proporciona en la terminal al ejecutar ./bloodhound-cli install:

circle-check

Descargar colectores

Podemos descargar Sharhound directamente desde la GUI:

O podemos descargar la última release del repositorio (recomendable):

Sharphound

circle-exclamation
  • Copiar el raw del repositorio y pegarlo en un documento de texto (o enviar desde Kali a la máquina objetivo)

  • Guardarlo como SharpHound.ps1

circle-check

SharpHound.ps1

SharpHound.exe

ZIP generado

Envío de ZIP a nuestro Kali Linux

Si estamos conectados por RDP de la siguiente manera al host objetivo podemos enviarlo fácilmente con un copy a nuestra carpeta local /home/kali/Escritorio/hack-tools/WINDOWS:

Podemos escribir net use para ver la ubicación de nuestra unidad redirigida:

Y con el siguiente comando lo copiamos a nuestro directorio local:

También lo podríamos copiar con Control+C y pegarlo en Network \\tsclient\home desde el explorador de archivos si estamos conectados por RDP:

Ahora lo tendremos en nuestra ruta: /home/kali/Escritorio/hack-tools/WINDOWS

Bloodhound-python

Para evitar tener que enviar SharpHound a la máquina Windows, y enviar el zip generado de vuelta a Kali Linux para analizarlo, podemos usar bloodhound-python. directamente desde Kali Linux con credenciales válidas de un usuario AD.

Para ello debemos primero configurar el archivo /etc/resolv.conf de la siguiente manera donde spookysec.local es nuestro objetivo:

Con credenciales

Ahora ya podemos ejecutar bloodhound-python de la siguiente manera. Usaremos las credenciales del usuario comprometido backup:

Con hash (Pass the Hash)

Podemos usar bloodhound-python solamente con el hash, sin la contraseña en plano.

circle-exclamation

Importar zip en Bloodhound CE

En Administration hacemos click en Upload Files:

Explorar los gráficos

En el partado Explore podemos empezar a buscar usuarios y grupos de Active Directory.

Inbound / Outbound Object Control

En BloodHound, los conceptos de Inbound Object Control y Outbound Object Control se refieren a quién controla a quién a nivel de objetos en el Active Directory. Son clave para entender relaciones de control entre usuarios, grupos, equipos, OUs, etc.

🟢 Inbound Object Control

“¿Quién puede controlar este objeto?”

Este valor en un nodo (como un usuario o un grupo) te muestra todos los objetos que tienen control sobre él, como vemos en la siguiente imagen:

🔵 Outbound Object Control

“¿Qué objetos controla este nodo?”

Este valor en un nodo te muestra todos los objetos que el nodo actual puede controlar. Por ejemplo:

Member of

Esta opción nos muestra los grupos a los que pertenece un usuario o grupo determinado:

Local Admin Privileges

Esta opción nos muestra los privilegios de administración local de distintos usuarios y grupos:

Pathfinding

Podemos ver la ruta entre varios usuarios o un usuario y un grupo:

FIltros por tipo de nodo

Tenemos los siguientes tipos de nodos que podemos filtrar en BloodHound:

Por ejemplo para filtrar los grupos de administradores podemos escribir:

Cypher Querys

Podemos usar distintas querys de búsqueda en formato cypher para filtrar información de los gráficos. Al igual que SQL existe para MSSQL y otras bases de datos relacionales tradicionales, Cypher es un lenguaje diseñado para bases de datos gráficas con su propia sintaxis.

Cypher básico

Al crear consultas Cypher, es importante tener en cuenta que, por lo general, se intenta crear una ruta utilizando las relaciones disponibles. Veamos una consulta muy básica:

Analicemos cómo se construye esta consulta Cypher. Al consultar la base de datos, iniciamos nuestras consultas con la palabra clave MATCH. La cláusula MATCH permite especificar un patrón en la base de datos.

  • Cada variable en la consulta Cypher se define utilizando un identificador, en este caso, los siguientes: B, A y R. El identificador de las variables puede ser cualquier cosa que desee, incluidas palabras completas, como "grupos".

  • Los nodos se especifican mediante paréntesis, por lo que B y R son nodos en la consulta de ejemplo anterior.

  • Las relaciones se especifican mediante corchetes, por lo que en este ejemplo, A representa relaciones.

A continuación podemos ver algunas querys de búsqueda interesantes:

✅ 1. Ruta más corta hacia los Domain Admins

🔍 2. Rutas con control total a Domain Admins

🧠 3. Usuarios con relaciones AdminTo sobre máquinas donde hay sesiones de Domain Admins

🕵️ 4. Cuentas que pueden comprometer un DA por ACLs (GPOs, WriteDACL, etc.)

🧰 5. Computadoras donde DA ha iniciado sesión (para token impersonation)

Puedes usar esta información con Rubeus, Mimikatz, o token impersonation vía Invoke-TokenManipulation.

🔐 6. Usuarios con privilegios de AddMember sobre grupos sensibles

Esto indica que u puede añadirse a Domain Admins directamente, si tiene privilegios de escritura.

🚨 7. Usuarios que pueden hacer Kerberoasting y no son Domain Admins

💣 8. Usuarios con permisos de delegación (constrained y unconstrained)

🔁 Reutiliza como función Cypher en BloodHound CE

Puedes guardar estas queries en BloodHound CE como queries personalizadas desde la GUI en la sección Custom Queries. Dale nombre y descripción para uso repetido en operaciones.


Ejemplos prácticos

En las siguientes secciones verás varios ejemplos prácticos aplicando el análisis con Bloodhound a distintas máquinas:

🏛️Movimiento lateralchevron-right🏛️Comprometiendo Active Directorychevron-right🟠Attracktive Directorychevron-right

Última actualización