Aviso de Entorno y Alcance Ético: Este ejercicio documenta una prueba técnica realizada exclusivamente sobre una máquina retirada en un laboratorio de entrenamiento autorizado (HackTheBox). No se divulga información confidencial, datos de clientes ni sistemas de producción. El material tiene propósitos didácticos y de defensa.
1. Resumen Ejecutivo del Hallazgo
Durante la fase de auditoría interna de configuraciones en el Directorio Activo corporativo del laboratorio, se identificó que cualquier cuenta de dominio con privilegios mínimos puede solicitar tickets de concesión de servicio (Ticket Granting Service - TGS) para cuentas de usuario asociadas a nombres principales de servicio (Service Principal Names - SPN).
Dado que el controlador de dominio cifra el boleto TGS utilizando el hash NTLM de la cuenta de servicio destino, un atacante interno puede extraer el boleto a memoria y realizar un ataque de fuerza bruta offline (Kerberoasting) sin interactuar más con el controlador de dominio ni activar bloqueos por intentos fallidos de inicio de sesión.
La cuenta de servicio comprometida en este laboratorio (svc_sql_production) poseía membresía delegada en grupos locales de administradores en servidores que procesan transacciones financieras, generando un incumplimiento crítico sobre los controles de acceso lógico y segregación de funciones exigidos por marcos de control interno como SOX Sección 404 e ISO/IEC 27001:2022.
2. Metodología de Reconocimiento y Extracción
2.1. Enumeración de Cuentas con SPN Registrados
Habiendo obtenido credenciales de bajo privilegio en el dominio (CORP.LOCAL\jdoe), se procedió a consultar el catálogo global del Directorio Activo mediante consultas LDAP filtrando por el atributo servicePrincipalName.
Utilizando el script estándar de auditoría GetUserSPNs.py de la suite Impacket:
# Consulta de SPNs activos en el dominio corporativo
python3 GetUserSPNs.py CORP.LOCAL/jdoe:'Welcome2026!' -dc-ip 10.10.10.150 -request
Salida obtenida en consola:
ServicePrincipalName Name MemberOf
-------------------------- ----------------- ---------------------------------------------
MSSQLSvc/db01.corp.local:1433 svc_sql_production CN=SQL Admins,OU=Service Accounts,DC=corp,DC=local
2.2. Solicitud y Extracción del TGS
El protocolo Kerberos no restringe qué usuarios autenticados pueden solicitar un TGS para un SPN publicado. Se solicitó el ticket TGS cifrado en formato Hashcat (Kerberos 5 TGS-REP etype 23):
# Extracción de hash TGS en formato para auditoría offline
python3 GetUserSPNs.py CORP.LOCAL/jdoe:'Welcome2026!' -dc-ip 10.10.10.150 -request -outputfile hashes_kerberoast.txt
Estructura del hash obtenido:
$krb5tgs$23$*svc_sql_production$CORP.LOCAL$MSSQLSvc/db01.corp.local:1433*$45a8f9...[TRUNCATED]...9b12
3. Descifrado Offline y Evaluación de Fortaleza de Contraseñas
El ticket obtenido utiliza el algoritmo de cifrado rc4-hmac (etype 23), vulnerable a ataques acelerados por GPU. Se cargó el hash en una estación de auditoría utilizando hashcat con el modo de ataque 13100:
# Ataque offline de diccionario con reglas corporativas
hashcat -m 13100 -a 0 hashes_kerberoast.txt /usr/share/wordlists/rockyou.txt -r rules/best64.rule
En 4 minutos y 18 segundos, la clave en texto plano fue recuperada:
$krb5tgs$23$*svc_sql_production...:DatabaseAdmin2024!
Análisis de Auditoría de Identidades: La contraseña incumple la directriz de complejidad para cuentas con privilegios elevados: contiene el año actual, longitud inferior a 20 caracteres y un patrón comúnmente predecible en firmas de TI sin rotación automatizada.
4. Impacto en Controles SOX y Gobierno de Accesos
Como auditor de seguridad, la captura de la clave es únicamente la mitad del trabajo. El impacto real debe medirse frente al marco de control interno de la organización:
- Riesgo de Control General de TI (ITGC - Logical Access):
- La cuenta
svc_sql_productiontenía privilegios de administrador local en el clúster de base de datos financieroDB01. Un atacante puede alterar directamente tablas del libro mayor contable o desactivar registros de auditoría de transacciones, invalidando la integridad de los reportes financieros bajo alcance SOX. - Violación de Principio de Menor Privilegio (PoLP):
- La cuenta de servicio no requería pertenecer al grupo
SQL Adminsni poseer privilegios de inicio de sesión interactivo (Allow log on locally). - Ausencia de Cifrado Fuerte Kerberos:
- El atributo
msDS-SupportedEncryptionTypesdel objeto de usuario no exigíaAES128_CTS_HMAC_SHA1_96niAES256_CTS_HMAC_SHA1_96, permitiendo al atacante solicitar deliberadamente un ticket enRC4susceptible a crackeo masivo.
5. Plan de Remediación y Controles ISO/IEC 27001:2022
Para presentar al comité de seguridad de la información y al equipo de infraestructura de TI, se establecen las siguientes tres líneas de defensa:
5.1. Remediación Definitiva: Implementación de gMSA (Group Managed Service Accounts)
- Control ISO/IEC 27001:2022: A.8.5 (Autenticación Segura) y A.8.18 (Gestión de Derechos de Acceso Privilegiado).
- Acción: Migrar todas las cuentas de servicio asociadas a SPNs hacia cuentas de servicio administradas por grupo (gMSA). El Directorio Activo gestiona automáticamente contraseñas de 128 caracteres que rotan cada 30 días, haciendo inviable computacionalmente el ataque offline.
- Comando PowerShell para creación de gMSA:
New-ADServiceAccount -Name "gmsa_sql_prod" `
-DNSHostName "db01.corp.local" `
-PrincipalsAllowedToRetrieveManagedPassword "SQL-Servers-Group" `
-KerberosEncryptionType AES128,AES256
5.2. Control Compensatorio Inmediato: Cifrado Obligatorio AES-256
Si una aplicación legada no tolera gMSA de manera inmediata:
- Establecer una longitud mínima de 25 caracteres para la cuenta de servicio.
- Habilitar exclusivamente cifrado Kerberos AES-128 / AES-256 en la cuenta del usuario en AD:
Set-ADUser -Identity "svc_sql_production" -KerberosEncryptionType AES128,AES256
5.3. Monitoreo y Detección de Telemetría (SIEM / SOC)
- Control ISO/IEC 27001:2022: A.8.16 (Supervisión de Actividades).
- Regla de Detección: Configurar una alerta en el SIEM ante eventos de auditoría de Windows con Event ID 4769 (A Kerberos service ticket was requested) cuando:
- El campo
Ticket Optionssea0x40810000. - El campo
Ticket Encryption Typesea0x17(RC4-HMAC-MD5). - El volumen de solicitudes por un mismo usuario supere el umbral basal de 5 TGS en menos de 60 segundos.
6. Conclusión
Este ejercicio demuestra que la seguridad en Directorio Activo no depende únicamente del parcheado del sistema operativo, sino de la higiene de la gestión de identidades (GIAM) y la correcta configuración de cuentas de servicio. La remediación técnica mediante gMSA cierra la brecha de raíz, satisfaciendo al mismo tiempo los requerimientos de auditoría y cumplimiento regulatorio.