Parte: 7 — Red Team y operaciones ofensivas · Fuente: The Hacker Recipes (AD) / Operator Handbook ⏱️ Duración estimada: 110 min · Nivel: Avanzado
Aprender a enumerar un dominio de Active Directory desde una posición de foothold: usuarios, grupos, equipos, políticas, confianzas, SPNs y relaciones. La enumeración es el 80% del trabajo en AD: cuanto mejor entiendas la estructura del dominio, más limpio y dirigido será el ataque. El alumno montará un AD lab (o usará GOAD) y lo mapeará.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Estructura de AD | Dominios, OUs, forest, confianzas |
| 2 | LDAP y objetos | El "lenguaje" de consulta de AD |
| 3 | Enumeración de usuarios/grupos | Mapa de identidades y privilegios |
| 4 | SPNs y cuentas de servicio | Base de Kerberoasting (Clase 171) |
| 5 | GPOs y ACLs | Fuente de rutas de escalado |
| 6 | Confianzas de dominio/forest | Movimiento entre dominios |
| 7 | Sigilo en la enumeración | Evitar disparar alertas |
AD DS no es solamente una lista de usuarios. Es un servicio de directorio distribuido entre controladores de dominio que almacena objetos —cuentas, equipos, grupos, unidades organizativas y políticas— junto con atributos y relaciones. Microsoft especifica LDAP como su protocolo principal de acceso al directorio, mientras Kerberos y NTLM participan en autenticación. Entender esa separación evita atribuir a LDAP funciones que pertenecen a Kerberos o al sistema de autorización.
La enumeración útil reconstruye tres planos: identidad (quién es quién), recursos (qué equipos y servicios existen) y control (quién puede modificar o utilizar qué). Una cuenta aparentemente común puede ser relevante por pertenencia transitiva a grupos, por una ACE sobre otro objeto o porque ejecuta un servicio. El riesgo reside con frecuencia en la relación, no en el nombre del objeto.
Una consulta necesita una base de búsqueda, un alcance, un filtro y los atributos que se desean recuperar. Pedir todo el dominio con todos los atributos es sencillo, pero genera volumen y dificulta el análisis. Una consulta dirigida parte de una pregunta: «¿qué cuentas de usuario poseen un SPN?» o «¿qué grupos contienen a esta identidad?». Entonces limita el filtro y solicita solo los atributos necesarios.
El distinguished name ubica un objeto en el árbol; el sAMAccountName conserva un nombre de inicio de sesión histórico y el SID identifica al principal de seguridad dentro de las relaciones de autorización. Confundirlos causa errores al correlacionar resultados. También hay que considerar replicación: dos controladores pueden mostrar diferencias transitorias después de un cambio.
PowerView, Impacket, NetExec y los colectores de BloodHound son medios de consulta, no conclusiones. Cada resultado importante debe verificarse mediante otra vista o consulta y conservar su procedencia. Por ejemplo, descubrir un SPN identifica una cuenta vinculada a un servicio; no demuestra por sí solo que la contraseña sea débil ni que el servicio sea explotable. Una ACE GenericAll exige confirmar objeto origen, objeto destino, herencia y contexto antes de describir una ruta.
BloodHound representa relaciones como nodos y aristas para ayudar a razonar sobre caminos. Eso no convierte cada camino calculado en uno ejecutable: pueden intervenir segmentación, sesiones caducadas, controles de endpoint o datos desactualizados. La visualización produce hipótesis que luego se validan con el menor impacto posible.
Las lecturas legítimas del directorio son necesarias para la administración, por lo que prevenirlas de forma absoluta no suele ser viable. La defensa busca secuencias, volumen, origen e identidad: un endpoint que consulta rápidamente todos los usuarios, grupos, ACL y relaciones puede diferir de la actividad administrativa habitual. El red team debe medir número de consultas, duración y fuentes empleadas; «low and slow» tampoco garantiza invisibilidad si el patrón acumulado es anómalo.
PowerView (PowerShell), NetExec (nxc), ldapsearch, BloodHound collectors (Clase 173).Impacket (GetADUsers.py, GetUserSPNs.py) desde Linux.⚠️ Todo se realiza contra tu propio laboratorio de AD (o GOAD). Enumerar un dominio ajeno sin autorización es acceso no autorizado. GOAD está diseñado precisamente para practicar esto de forma legal.
lab.local).nxc smb 10.10.10.10 -u user -p 'pass' --users --groups para listar usuarios y grupos.Get-DomainUser, Get-DomainGroupMember "Domain Admins", Get-DomainComputer.GetUserSPNs.py lab.local/user:pass -dc-ip 10.10.10.10 para localizar cuentas de servicio (insumo de la próxima clase).ldapsearch -x -H ldap://10.10.10.10 -D 'user@lab.local' -w pass -b 'DC=lab,DC=local' '(objectClass=user)'.Get-DomainTrust y anota relaciones entre dominios del forest.SharpHound/bloodhound-python) para el análisis de rutas de la Clase 173, y documenta cuentas privilegiadas y ACLs interesantes.PASSWD_NOTREQD o DONT_REQUIRE_PREAUTH.Produce un mapa del dominio de tu AD lab: usuarios privilegiados, cuentas con SPN, GPOs relevantes, confianzas y al menos una relación ACL potencialmente abusable, recogido además con un collector de BloodHound. Criterio de aceptación: entregas un documento/diagrama con esos cinco elementos, cada dato verificable en el lab, y un archivo de recolección listo para importar en BloodHound.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| LDAP no responde | DNS mal configurado o credenciales inválidas; verifica dominio y cuenta |
| PowerView bloqueado por AMSI | Import detectado; aplica lo visto en la Clase 169 en el lab |
| No aparecen SPNs | No hay cuentas de servicio con SPN registrado; revisa el diseño del lab |
| Enumeración muy ruidosa | Consultas masivas; usa peticiones dirigidas y espaciadas |
| El collector falla | Falta conectividad al DC o permisos; ejecuta con la cuenta correcta |
❓ ¿Necesito ser admin para enumerar AD? No necesariamente. Por defecto, una identidad autenticada puede leer muchos objetos y atributos necesarios para operar AD DS, pero ACL, endurecimiento y tipo de objeto pueden limitar la vista. La práctica mide lo que esa identidad concreta puede consultar, no asume acceso universal.
❓ ¿PowerView o BloodHound? Ambos: PowerView para consultas puntuales interactivas; BloodHound para visualizar relaciones y rutas de ataque (Clase 173).
❓ ¿Qué es GOAD? Game of Active Directory: un laboratorio vulnerable y reproducible pensado para practicar ataques a AD de forma legal en tu propia máquina.
T1069). https://attack.mitre.org/techniques/T1069/ — referencia para explicar el valor ofensivo y la detección de enumeración de grupos.Clase 169 — Ofuscación de payloads y bypass de AMSI
Clase 171 — Active Directory: Kerberoasting y ataques a Kerberos