Saltar al contenido

BloodHound: cómo se visualizan (y se cortan) las rutas de ataque en Active Directory

    BloodHound:

    cómo se visualizan (y se cortan) las rutas de ataque en Active Directory

    Serie Blue Team / Active Directory  |  unfantasmaenelsistema.com

    En el artículo sobre el modelo de seguridad de Active Directory quedó una idea clave: un dominio no cae por un exploit espectacular, sino porque existe una cadena de permisos, pertenencias y sesiones que lleva, paso a paso, desde «un usuario cualquiera» hasta «Domain Admin». El problema es que esa cadena es invisible en las consolas de administración: hay que reconstruirla objeto por objeto, y nadie tiene tiempo para eso.

    BloodHound es la herramienta que hizo ese problema visible. Convierte los datos de Active Directory en un grafo dirigido y responde a una pregunta que antes costaba semanas de auditoría: «desde esta cuenta, ¿qué camino más corto me lleva a controlar el dominio?». La usan los equipos ofensivos, pero está pensada tanto para atacar como para defender, y este artículo se centra en lo segundo: cómo leer el grafo, cómo interpretar las rutas y, sobre todo, cómo eliminarlas de tu propio dominio.

    Qué aprenderás en este artículo

    Por qué los permisos de Active Directory forman un grafo y qué significa eso para la seguridad · Qué recogen los colectores (SharpHound y equivalentes) y qué NO tocan · Los nodos y las aristas que de verdad importan al leer una ruta de ataque · Cómo se interpreta un «shortest path to Domain Admins» sin dramatizar ni minimizar · Uso defensivo: identificar rutas, priorizar cuáles cortar y medir la mejora · Qué aporta BloodHound Community Edition y el análisis continuo frente a la foto puntual

    1. La idea de fondo: Active Directory es un grafo

    Estamos acostumbrados a ver Active Directory como un árbol: dominios, unidades organizativas, carpetas dentro de carpetas. Esa vista jerárquica es útil para organizar, pero engaña para la seguridad, porque las relaciones que importan a un atacante no son jerárquicas. Son transversales: «este usuario pertenece a este grupo, que es administrador local de este servidor, donde ahora mismo hay una sesión de esta otra cuenta, que puede cambiar la contraseña de esta tercera, que…».

    Matemáticamente, eso es un grafo dirigido: un conjunto de nodos (los objetos) unidos por aristas (las relaciones), donde cada arista tiene un sentido. Y si es un grafo, encontrar «la forma más rápida de llegar de A a B» es un problema resuelto desde hace décadas: es la búsqueda del camino más corto, lo mismo que calcula un GPS. BloodHound recoge los datos, los mete en una base de datos de grafos y aplica esas búsquedas. El cambio de perspectiva —de árbol a grafo— es toda la aportación conceptual, y es la que necesita el defensor.

    2. Los colectores: qué datos alimentan el grafo

    El grafo no sale de la nada. Un colector (el más conocido es SharpHound, y existen equivalentes multiplataforma y en Python) consulta el dominio con las mismas credenciales que tendría cualquier usuario y recopila información que ya es legible para casi todo el mundo:

    Categoría recogidaEjemplosDe dónde sale
    Objetos y propiedadesUsuarios, equipos, grupos, GPO, OU, dominios, confianzasConsultas LDAP normales al DC
    Pertenencias a gruposQuién está en «Domain Admins», grupos anidadosAtributo memberOf / member en LDAP
    Permisos (ACL)Quién tiene GenericAll, WriteDacl, ForceChangePassword sobre quéDescriptores de seguridad de cada objeto
    Administradores locales y sesionesQuién es admin local de un equipo; qué cuentas tienen sesión abiertaSAMR / consultas remotas a cada equipo
    Configuración peligrosaDelegación sin restricciones, cuentas sin preautenticación, SPN registradosAtributos userAccountControl y servicePrincipalName

    Qué NO hace un colector

    No explota nada, no cambia nada y no necesita privilegios de administrador: se limita a leer lo que el propio directorio expone a un usuario autenticado. Por eso la recogida es difícil de distinguir de la actividad legítima de administración, aunque genera un volumen anómalo de consultas LDAP y de conexiones SAMR a muchos equipos en poco tiempo, y eso sí se puede detectar (ver sección 6).

    3. Nodos y aristas: el vocabulario del grafo

    Para leer una ruta hay que entender sus dos ingredientes. Los nodos son los tipos de objeto: usuarios, equipos, grupos, GPO, OU, dominios y contenedores. Las aristas son las relaciones, y son las que cuentan la historia. Estas son las que aparecen una y otra vez en las rutas reales:

    AristaQué significaPor qué es una ruta
    MemberOfEl nodo pertenece a un grupoHereda todos los permisos y el poder de ese grupo (y de forma anidada)
    AdminToLa cuenta es administrador local de ese equipoPuede ejecutar código y volcar credenciales de quien tenga sesión ahí
    HasSessionEsa cuenta tiene una sesión abierta en ese equipoSus credenciales están en memoria y pueden ser reutilizadas si el equipo cae
    GenericAllControl total sobre el objetoPuede resetear contraseñas, añadirse a grupos, tomar el control por completo
    WriteDaclPuede modificar la lista de control de acceso del objetoSe concede a sí mismo cualquier permiso sobre ese objeto
    ForceChangePasswordPuede cambiar la contraseña del usuario sin saber la actualSe apodera de esa cuenta directamente
    AddMemberPuede añadir miembros a un grupoSe mete a sí mismo en un grupo con privilegios
    AllowedToDelegateLa cuenta puede suplantar a otras vía delegación KerberosActúa en nombre de cuentas más privilegiadas ante otros servicios
    Owns / WriteOwnerEs propietario del objeto o puede serloEl propietario siempre puede reescribir los permisos

    La clave defensiva: casi ninguna de estas aristas se ve en «Usuarios y equipos de Active Directory». Los permisos GenericAll o WriteDacl mal puestos —una delegación antigua, un script de aprovisionamiento que dejó permisos de más, un becario al que se le dio control «temporal»— son exactamente lo que BloodHound saca a la superficie y lo que una revisión manual casi nunca encuentra.

    4. Consultas: de los botones a Cypher

    La interfaz trae consultas predefinidas que cubren el 80% de los casos: «Find all Domain Admins», «Find Shortest Paths to Domain Admins», «Find Principals with DCSync Rights», «Shortest Path from Owned Principals». Se marcan nodos como «owned» (comprometidos, reales o hipotéticos) y se pide el camino desde ahí.

    Por debajo, todo son consultas en Cypher, el lenguaje de la base de datos de grafos. No hace falta dominarlo para empezar, pero saber leerlo ayuda a hacer preguntas propias. Una consulta típica busca cuentas con un SPN (candidatas a Kerberoasting) que además tengan un camino hacia un grupo privilegiado:

    // Usuarios con SPN (kerberoastables) que llegan a 'Domain Admins'
    MATCH (u:User {hasspn:true})
    MATCH (g:Group) WHERE g.name STARTS WITH 'DOMAIN ADMINS@'
    MATCH p = shortestPath((u)-[*1..]->(g))
    RETURN p
     
    // Objetos sobre los que 'Authenticated Users' tiene control peligroso
    MATCH p=(n:Group {name:'AUTHENTICATED USERS@LAB.LOCAL'})
            -[:GenericAll|WriteDacl|WriteOwner|ForceChangePassword]->(m)
    RETURN p

    Ese segundo tipo de consulta —»¿qué puede hacer cualquiera?»— es oro para defender: revela permisos concedidos a grupos gigantes como «Authenticated Users» o «Everyone» que nunca deberían tener control sobre nada.

    5. Leer un «shortest path to Domain Admins» sin dramatizar

    Cuando aparece una ruta con cinco saltos de un usuario normal a «Domain Admins», el instinto es el pánico. Conviene leerla con calma, salto a salto, porque no todos los tramos tienen el mismo coste para un atacante:

    • MemberOf es gratis e instantáneo: si la ruta pasa por pertenencias a grupos anidados, ese tramo ya está «hecho», no hay nada que ejecutar
    • ForceChangePassword o AddMember son un único comando y son ruidosos: dejan eventos claros (un cambio de contraseña, una modificación de grupo) que un SIEM bien configurado detecta
    • HasSession es oportunista y volátil: depende de que una cuenta privilegiada tenga sesión abierta en un equipo concreto justo ahora; si esa sesión se cierra, el tramo desaparece
    • AdminTo hacia un equipo con sesiones de cuentas Tier 0 es el tramo realmente grave: es el punto donde se saltan las capas del modelo de tiering

    La conclusión no es «hay una ruta, estamos perdidos», sino «hay una ruta, ¿cuál es el eslabón más barato de romper?». Muchas veces basta con eliminar un permiso ACL sobrante o mover una cuenta de servicio para que la ruta entera se corte.

    6. Detectar la recogida de datos

    Antes de que exista un grafo, alguien ha tenido que ejecutar un colector dentro del dominio. Esa actividad tiene firmas:

    SeñalDónde se vePor qué es sospechosa
    Consultas LDAP masivas y genéricasAuditoría de LDAP en el DC, Event ID 1644, ETWUn enumerado completo del directorio en segundos, no consultas puntuales
    Conexiones SAMR a muchos equiposEvent ID 4799 (enumeración de grupo local) repetido en toda la flotaUn solo origen preguntando «¿quién es admin local?» a cientos de máquinas
    Sesiones de red en cascadaEvent ID 4624/4672 tipo 3 desde un host a todo el parqueBarrido de sesiones abiertas para trazar HasSession
    Herramienta conocida en disco o memoriaEDR, reglas YARA, hash de SharpHound y variantesFirmas públicas bien conocidas de los colectores más habituales

    Honeytokens que ayudan

    Una cuenta trampa con un SPN atractivo (algo como «svc-sql-admin») y contraseña larguísima y aleatoria que nadie usa: si alguien pide un ticket para ella o intenta autenticarse, es actividad de reconocimiento por definición. Lo mismo con un objeto al que se le pone un permiso llamativo y una alerta al primer acceso. BloodHound los mostrará en el grafo, y ese es justo el cebo.

    7. Uso defensivo: del grafo a un plan de remediación

    La forma correcta de usar BloodHound en azul es como herramienta de auditoría periódica sobre tu propio dominio. El ciclo:

    • Recoger con el colector desde una cuenta de auditoría y en una ventana acordada, para no confundir a tu propio SOC (o para probar si lo detecta)
    • Marcar el Tier 0 real: identifica qué grupos y cuentas son de verdad «game over» (Domain Admins, Enterprise Admins, cuentas con DCSync, admins de la PKI, de la copia de seguridad, de los hipervisores)
    • Listar rutas hacia ese Tier 0 desde grupos amplios: «Domain Users», «Authenticated Users», el grupo de todos los empleados
    • Priorizar por impacto y esfuerzo: una arista GenericAll de «Domain Users» sobre una OU con cuentas privilegiadas se arregla en cinco minutos y elimina cientos de rutas; empieza por esas
    • Corregir: quitar el permiso ACL sobrante, sacar la cuenta del grupo, cerrar la sesión de la cuenta privilegiada en el equipo de bajo nivel y prohibir que vuelva (Authentication Policies), convertir la cuenta de servicio débil en gMSA
    • Volver a medir: recoger otra vez y comparar el número de rutas y la longitud del camino más corto. Es una métrica que se puede llevar a un comité

    7.1 BloodHound Community Edition y el análisis continuo

    La versión Community Edition (CE), gratuita y de código abierto, cambió el modelo: se despliega como un servicio web con su base de datos, ingiere datos de forma continua y ofrece un panel de exposición que puntúa el riesgo de cada activo del Tier 0 y muestra la evolución en el tiempo. Para un equipo defensivo, eso convierte a BloodHound de «foto que hago una vez al año» en «indicador que vigilo cada semana». Existe además una variante comercial con detección de rutas en vivo y recomendaciones guiadas, pero la CE ya cubre de sobra un laboratorio y buena parte de un entorno real.

    8. Montarlo en el laboratorio

    Para practicar necesitas un dominio de Active Directory de pruebas, aislado y sin salida a producción —por ejemplo, un par de máquinas virtuales (un DC y un cliente Windows) en un rango 192.168.56.x—. Sirve cualquier laboratorio de AD didáctico ya montado, o uno propio con dos o tres cuentas y algún permiso mal puesto a propósito para verlo aparecer en el grafo.

    • Levanta BloodHound CE (la forma habitual es con contenedores: la base de datos de grafos, la de aplicación y la interfaz web)
    • Ejecuta el colector desde el cliente con una cuenta de usuario normal del dominio de laboratorio
    • Sube el resultado a la interfaz y lanza «Shortest Paths to Domain Admins»
    • Introduce un fallo (da GenericAll a «Domain Users» sobre una cuenta admin), vuelve a recoger y observa cómo aparece la nueva ruta; corrígelo y confirma que desaparece

    Uso legal y ético

    BloodHound recopila de forma exhaustiva la configuración de un directorio activo. Ejecutar el colector, enumerar o analizar un Active Directory que no sea tuyo, o para el que no tengas autorización expresa y por escrito (un contrato de auditoría con su alcance definido), es ilegal, aunque la herramienta «solo lea» datos. · En España, el acceso no autorizado a un sistema de información y su mantenimiento contra la voluntad de quien tiene derecho a excluirlo está tipificado en el art. 197 bis del Código Penal; la obtención o facilitación de herramientas concebidas para ello, en el art. 197 ter; y los daños u obstaculización de sistemas ajenos, en el art. 264 y siguientes. · Practica únicamente en un dominio de laboratorio propio y aislado (rango 192.168.56.x sin salida a producción). Si lo usas en tu organización, hazlo con autorización interna, una cuenta de auditoría y una ventana comunicada al equipo de seguridad.

    Referencias

    SpecterOps — Documentación de BloodHound Community Edition (bloodhound.specterops.io) · SpecterOps — «The Dog Whisperer’s Handbook» y material introductorio de Cypher · Microsoft — Securing privileged access y Enterprise Access Model (aka.ms/privsec) · MITRE ATT&CK — T1069 (Permission Groups Discovery), T1482 (Domain Trust Discovery) · Nuestro artículo sobre el modelo de seguridad de Active Directory y el de Kerberoasting y AS-REP Roasting

    Conclusión

    BloodHound no descubre vulnerabilidades: descubre decisiones. Cada arista peligrosa del grafo es un permiso que alguien concedió, un grupo en el que alguien entró, una sesión que alguien dejó abierta. Verlas dibujadas como un mapa de carreteras hacia el controlador de dominio es incómodo, pero es la única forma de priorizar bien: no todas las rutas cuestan lo mismo de recorrer ni lo mismo de cortar.

    Para un equipo defensivo, el valor está en la repetición: recoger, marcar el Tier 0, listar rutas desde los grupos grandes, cortar los eslabones más baratos y volver a medir. La longitud del camino más corto a «Domain Admins» es una métrica honesta de la salud de tu Active Directory, y subirla es un trabajo que casi nunca requiere comprar nada.

    unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.