Certified

Publicado: 02 de Junio de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Medium OS: Windows
๐ Descripciรณn
Certified es una mรกquina Windows de dificultad media que simula un entorno de Active Directory con servicios de certificados (ADCS) implementados. La mรกquina requiere explotar vulnerabilidades en la configuraciรณn de certificados digitales y abusar de permisos de Active Directory para lograr la escalada de privilegios.
El proceso de explotaciรณn involucra el uso de credenciales iniciales proporcionadas, enumeraciรณn exhaustiva de usuarios y servicios, abuso de permisos WriteOwner y GenericWrite en Active Directory, implementaciรณn de ataques Shadow Credentials mediante pywhisker, y finalmente explotaciรณn de la vulnerabilidad ESC9 en plantillas de certificados ADCS para obtener acceso administrativo.
Esta mรกquina es especialmente valiosa para practicar tรฉcnicas de post-explotaciรณn en entornos empresariales reales, donde los servicios de certificados son comunes y las misconfigurations pueden llevar a compromisos completos del dominio.
๐ฏ Puntos Clave
Enumeraciรณn de Active Directory: Uso de herramientas como
netexec,impacketybloodhoundpara mapear el dominioAbuso de Permisos ACL: Explotaciรณn de
WriteOwneryGenericWritepara modificar membresรญas de gruposShadow Credentials Attack: Implementaciรณn de credenciales sombra usando
pywhiskerpara obtener hashes NTLMADCS Exploitation: Identificaciรณn y explotaciรณn de la vulnerabilidad ESC9 en plantillas de certificados
Certificate Template Abuse: Manipulaciรณn de UPN (User Principal Name) para suplantar identidades
Pass-the-Hash: Uso de hashes NTLM para autenticaciรณn sin conocer contraseรฑas en texto plano
๐ Informaciรณn de la Mรกquina
IP
10.10.11.41
Dominio
certified.htb
Controlador de Dominio
DC01.certified.htb
Servicios Clave
ADCS, LDAP, SMB, WinRM, Kerberos
Vulnerabilidades
ESC9, Shadow Credentials, ACL Abuse
๐ญ Reconocimiento
๐ Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 128 sugiere que probablemente sea una mรกquina Windows.
๐ Escaneo de puertos
๐ Enumeraciรณn de servicios
โ ๏ธ Aรฑadimos el siguiente vhost a nuestro fichero /etc/hosts:
๐ Anรกlisis de Servicios Detectados
Los puertos abiertos revelan un controlador de dominio Windows con los siguientes servicios clave:
Puerto 53 (DNS): Servicio de resoluciรณn de nombres del dominio
Puerto 88 (Kerberos): Autenticaciรณn del dominio
Puerto 389/636 (LDAP/LDAPS): Directorio activo para consultas
Puerto 445 (SMB): Comparticiรณn de archivos y administraciรณn remota
Puerto 5985 (WinRM): Administraciรณn remota de Windows
Puerto 9389 (.NET Message Framing): Posible servicio ADCS
๐ Credenciales Iniciales
Como es comรบn en las pruebas de penetraciรณn de Windows de la vida real, iniciarรก el cuadro de Administrador con las credenciales de la siguiente cuenta:
Nombre de usuario: judith.mader
Contraseรฑa: judith09
๐ Enumeraciรณn de Servicios
๐๏ธ 445 SMB - Enumeraciรณn Inicial
Ya que disponemos de credenciales, comenzamos tratando de enumerar recursos compartidos, usuarios etc:


๐ฅ Enumeraciรณn de Usuarios del Dominio
Creamos una lista con los usuarios obtenidos:

๐ซ Verificaciรณn AS-Rep Roast
Verificamos si de los usuarios obtenidos hay alguno que tenga la pre-autenticaciรณn de kerberos deshabilitada y podamos obtener un ticket:
โ Resultado: Ningรบn usuario vulnerable a AS-Rep Roast
๐ฏ Verificaciรณn Kerberoasting
Con la credencial de la que disponemos verificamos si hay alguna cuenta sobre la que podamos realizar un ataque de kerberoasting:
Obtenemos un resultado para la cuenta management_svc, no obstante, intentamos crackearlo offline usando hashcat y el diccionario rockyou.txt sin รฉxito:

๐ง Password Spraying
Verificamos si la contraseรฑa de Judith estรก siendo reutilizada por algรบn otro usuario del dominio:
bash
Resultado: Solo Judith usa esta contraseรฑa
๐ฉธ Anรกlisis con BloodHound
Utilizamos bloodhound-python como collector con las credenciales de judith para poder obtener el modelo del dominio y cargar en bloodhound con el fin de analizar posibles vรญas potenciales para ganar acceso.
๐ฏ Hallazgos Clave en BloodHound
Vemos que Judith tiene permisos "WriteOwner" sobre el grupo Management:

Ademรกs, vemos que cualquiera que pertenezca al grupo Management tiene permisos GenericWrite sobre la cuenta del usuario management_svc por lo que ya tenemos aquรญ una vรญa potencial de acceso:

๐ Cadena de Ataque Identificada
judith.mader โ WriteOwner โ Management Group
Management Group โ GenericWrite โ management_svc
management_svc โ Certificate Service DCOM Access โ ADCS Exploitation
๐ Explotaciรณn - Acceso Inicial
๐ Abusando de WriteOwner
Primero necesitamos hacer que judith pertenezca al grupo Management:

Ahora, usarรฉ RPC para agregar a Judith al grupo de management:
๐ Implementando Shadow Credentials
Aquรญ podrรญamos usar targetedKerberoast para tratar de realizar un ataque de kerberoasting sobre la cuenta management_svc y tratar de crackear la contraseรฑa, pero esto ya lo hicimos con otro mรฉtodo anteriormente y vimos que la contraseรฑa no estaba en rockyou.txt

Podemos abusar de las credenciales shadow y obtener un hash de NT usando pywhisker, suponiendo que tengamos el ticket Kerberos (lo cual sรญ tenemos).
Primero, usarรฉ pywhisker para comprobar si management_svc tiene credenciales shadow:
Nos da un error de permisos
Para solucionarlo usamos --action add para agregar un atributo de clave pรบblica (msDS-KeyCredentialLink) al usuario objetivo.
๐ซ Obteniendo TGT con PKINITtools
Harรฉ exactamente los pasos que nos ha indicado el comando del paso anterior y usarรฉ PKINITtools para obtener el TGT:
Actualizamos el reloj del sistema con el DC:
Ahora ejecutarรฉ el comando proporcionando la informaciรณn del comando anterior:
๐ Extrayendo Hash NTLM
Exportamos la variable KRB5CCNAME con el ticket, actualizamos de nuevo la hora y usamos la herramienta getnthash.py para obtener el hash NTLM con el que podremos realizar pass the hash:
๐ Primer Acceso - User Flag
Una vez obtenido el hash realizamos pass the hash usando evil-winrm y ganamos acceso como management_svc y ya podemos obtener la primera flag:
๐ Escalada de Privilegios - ADCS Certificate Attack (ESC9)
๐ Informaciรณn Inicial
Durante la enumeraciรณn del usuario actual, se descubriรณ que pertenece al grupo Certificate Service DCOM Access, lo cual es clave para esta escalada de privilegios.

๐ฏ Objetivo
Necesitamos escalar privilegios desde management_svc hasta ca_operator y finalmente obtener acceso como Administrator aprovechando vulnerabilidades en ADCS (Active Directory Certificate Services).

๐ Fase 1: Shadow Credentials Attack
Contexto
Usuario actual:
management_svcObjetivo:
ca_operatorPrivilegio: GenericAll sobre ca_operator
Tรฉcnica: Certipy shadow credentials
Comando Ejecutado
Resultado Obtenido
โ รxito: Obtenido el hash NTLM de
ca_operator
๐ Fase 2: Enumeraciรณn de Plantillas Vulnerables
Bรบsqueda de Vulnerabilidades ADCS


Hallazgo Crรญtico
๐จ Plantilla Vulnerable Encontrada: Certified Authentication
Vulnerabilidad: ESC9
Impacto: Permite escalada de privilegios a Administrator
โก Fase 3: Explotaciรณn ESC9
Paso 1: Modificaciรณn del UPN
Cambiar el UPN de ca_operator a Administrator:

Paso 2: Solicitud de Certificado
Solicitar la plantilla vulnerable como ca_operator:

Paso 3: Restauraciรณn del UPN
Revertir el UPN para evitar detecciรณn:

Paso 4: Autenticaciรณn con Certificado
Obtener hash NTLM del Administrator:
Resultado Final
๐ Fase 4: Acceso Final como Administrator
Pass-the-Hash Attack
Verificaciรณn de Acceso
Last updated