Auditando Active Directory

Active Directory (AD) es el corazón de la mayoría de las redes empresariales basadas en Windows. En él se centraliza la autenticación de usuarios, la gestión de permisos, grupos, políticas y recursos. Precisamente por su importancia, se ha convertido en uno de los principales objetivos de los atacantes durante una intrusión.

Un pentest (prueba de penetración) en Active Directory no busca destruir ni alterar sistemas, sino simular el comportamiento de un atacante para identificar debilidades antes de que alguien con malas intenciones lo haga. Uno de los aspectos más críticos en estos ejercicios son las listas de control de acceso (DACLs), que definen quién puede hacer qué dentro del dominio.

En esta publicación vamos a explicar, de forma clara y práctica, cómo un error de configuración en los permisos —concretamente el llamado GenericAll— puede otorgar un poder total sobre una red. Y lo haremos paso a paso, desde los conceptos más básicos hasta ejemplos reales de explotación.


1. Entendiendo qué es Active Directory y por qué es tan importante

Active Directory es una base de datos jerárquica que almacena objetos: usuarios, equipos, grupos y políticas. Cada objeto tiene atributos (como nombre, contraseña, dirección, etc.) y permisos que determinan qué usuarios pueden interactuar con ellos.

Por ejemplo, en una empresa puede existir un grupo llamado “Finanzas” cuyos miembros tienen acceso a ciertos archivos y aplicaciones. A su vez, los administradores del dominio (Domain Admins) pueden modificar usuarios, cambiar contraseñas y gestionar toda la red.

Por eso, si un atacante logra escalar hasta convertirse en un administrador de dominio, obtiene control total: puede acceder a cualquier recurso, crear nuevas cuentas o incluso apagar sistemas críticos.


2. Qué son las DACL y los permisos en AD

Cada objeto en AD tiene un conjunto de permisos llamado Discretionary Access Control List (DACL). Esta lista define qué usuarios o grupos tienen acceso y qué tipo de acciones pueden realizar: leer, escribir, modificar o eliminar.

Dentro de estas listas existen entradas de control de acceso (ACE), que asignan permisos específicos. Por ejemplo:

  • ReadProperty: permite leer atributos de un objeto.

  • WriteProperty: permite modificarlos.

  • WriteDACL: permite cambiar la propia lista de permisos (muy peligroso).

  • GenericWrite: permite editar algunos atributos.

  • GenericAll: otorga control total sobre el objeto.


3. El permiso “GenericAll”: el poder absoluto

El permiso GenericAll es el equivalente a un “modo dios” sobre el objeto. Un usuario con este privilegio puede:

  • Cambiar contraseñas sin conocer la actual.

  • Agregarse a grupos de alto privilegio como Domain Admins.

  • Delegar control a otros usuarios.

  • Modificar o eliminar el objeto.

Imagina que un empleado con una cuenta estándar, sin privilegios especiales, obtiene por error un permiso GenericAll sobre un grupo de administradores. Con solo unos pocos comandos podría añadirse al grupo y obtener dominio total. Ese es el tipo de configuración insegura que un pentest busca detectar.


4. Preparando un entorno de pruebas

Para comprenderlo mejor, imaginemos un entorno simulado como el que usaría un auditor de seguridad:

  • Controlador de dominio: Windows Server (2019).

  • Cliente atacante: Kali Linux o Windows 10.

  • Herramientas: BloodHound, PowerView, Net RPC, Rubeus, entre otras.

El objetivo será simular a un usuario común que, sin privilegios administrativos, posee sin saberlo un permiso GenericAll sobre un grupo o cuenta sensible.


5. Ejemplo práctico: abuso de permisos en un grupo de administradores

Supongamos que existe un usuario llamado “Usuario1”, miembro del dominio pero sin privilegios elevados. Sin embargo, por error, se le ha asignado el permiso GenericAll sobre el grupo Domain Admins.

Paso 1: Identificar la relación de privilegio

Un pentester utilizaría herramientas como BloodHound, que permite mapear gráficamente las relaciones de permisos dentro del AD. Al cargar los datos del dominio, se puede observar que “Usuario1” tiene control total sobre el grupo de administradores.

Paso 2: Verificar acceso desde línea de comandos

Desde Linux, usando la utilidad net rpc, se pueden listar usuarios y grupos del dominio:

net rpc group members "Domain Admins" -U dominio.local/usuario1%contraseña -S 192.168.1.10

Esto confirma que solo hay un administrador legítimo.

Paso 3: Abusar del permiso

Con el mismo comando, el usuario puede agregarse a ese grupo:

net rpc group addmem "Domain Admins" "usuario1" -U dominio.local/usuario1%contraseña -S 192.168.1.10

Desde ese momento, el usuario1 es administrador de dominio. Ha pasado de ser un usuario estándar a tener el máximo nivel de control sin explotar ninguna vulnerabilidad técnica, únicamente un error de configuración.


6. Otro escenario: control total sobre otro usuario

En un segundo ejemplo, imaginemos que el usuario “TesterA” tiene permisos GenericAll sobre la cuenta “TesterB”.

Con ese permiso, puede:

  • Cambiar la contraseña de TesterB sin conocer la actual.

  • Modificar atributos, como su nombre o correo.

  • Asignarle un Service Principal Name (SPN) y realizar ataques avanzados como Kerberoasting.

Ejemplo de Kerberoasting

En este ataque, el pentester solicita un ticket Kerberos de un servicio asociado al usuario objetivo. Este ticket contiene un hash cifrado de la contraseña que puede ser crackeado offline para descubrir credenciales.

Desde Linux, el atacante puede ejecutar:

./targetedKerberoast.py --dc-ip 192.168.1.8 -d dominio.local -u testera -p Contraseña@1

El script agrega un SPN temporal al usuario objetivo, solicita un ticket de servicio y luego lo elimina para no dejar rastros. Posteriormente, se intenta romper el hash con herramientas como John the Ripper o Hashcat.

Este tipo de ataque es sigiloso, no requiere modificar contraseñas y es muy difícil de detectar si no se monitorean adecuadamente los logs de Kerberos.


7. Cambiar contraseñas: el método más directo

Otra manera en que un atacante puede abusar del permiso GenericAll es simplemente cambiando la contraseña del usuario objetivo.

Por ejemplo, desde Linux con Samba:

net rpc password testb 'NuevaContraseña123!' -U dominio.local/testera%'Contraseña@1' -S 192.168.1.8

O desde PowerShell en Windows:

$NewPassword = ConvertTo-SecureString 'NuevaContraseña123!' -AsPlainText -Force
Set-DomainUserPassword -Identity 'testb' -AccountPassword $NewPassword

Una vez modificada la contraseña, el atacante puede autenticarse como el usuario víctima. Si ese usuario tiene privilegios, la red está comprometida.


8. Cómo detectar y mitigar este tipo de abuso

Un buen pentester no solo demuestra la vulnerabilidad, también enseña a detectarla y corregirla.

Detección:

  • Monitorear eventos de modificación de DACLs en los logs de seguridad de Windows.

  • Revisar cambios de contraseñas sin eventos previos de autenticación exitosa.

  • Detectar solicitudes inusuales de tickets Kerberos (Event ID 4769).

  • Analizar relaciones de permisos con herramientas como BloodHound periódicamente.

Mitigación:

  • Aplicar el principio de menor privilegio: ningún usuario debe tener más permisos de los necesarios.

  • Revisar periódicamente las delegaciones de control y herencias de permisos.

  • Restringir el uso de cuentas con privilegios administrativos solo para tareas específicas.

  • Implementar monitoreo continuo y alertas cuando se agregan usuarios a grupos sensibles.

  • Rotar contraseñas de cuentas de servicio regularmente.


9. Reflexión final: el detalle que compromete todo

Lo más interesante (y peligroso) de este tipo de vulnerabilidad es que no requiere malware, ni exploits, ni técnicas avanzadas de hacking. Basta con un permiso mal configurado.

Un simple error administrativo puede convertir a un usuario común en dueño del dominio completo.
Esto demuestra que la ciberseguridad no es solo cuestión de parches o firewalls, sino de configuración, revisión y control de privilegios.

El pentesting en Active Directory permite descubrir estas configuraciones inseguras antes de que lo haga un atacante real. Es una práctica esencial para cualquier empresa que dependa de entornos Windows, ya que proporciona una visión realista del nivel de exposición y una hoja de ruta clara para la mejora.


10. Conclusión

Para alguien que nunca ha realizado un pentest en Active Directory, este tipo de ejercicio puede parecer complejo. Pero su esencia es simple: entender cómo los permisos y relaciones entre usuarios pueden ser manipulados.

Los pasos descritos —desde el uso de BloodHound hasta la explotación con Net RPC o PowerShell— ilustran cómo los atacantes piensan y actúan dentro de un dominio. Cada técnica tiene su reflejo en las tácticas del marco MITRE ATT&CK, ayudando a clasificar las acciones según su impacto y objetivo.

Al comprender y practicar estos escenarios de forma ética y controlada, los equipos de seguridad desarrollan la capacidad de prevenir ataques reales. La clave está en la educación, la práctica y la mejora continua.

El Active Directory seguirá siendo un objetivo prioritario, pero también puede ser una fortaleza si se configura con cuidado, se monitorea correctamente y se somete a pruebas regulares. En ciberseguridad, el conocimiento siempre será la mejor defensa.

Loading Next Post...
Follow
Search Trending
Popular Now
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

Cart
Cart updating

ShopYour cart is currently is empty. You could visit our shop and start shopping.