Recientemente se ha encontrado una nueva vulnerabilidad detectada en los servicios de certificados de Active Directory (PKI), reportada por Justin Bollinger de TrustedSec y bautizada ya como ESC15 o EKUwu.
Se trata de una vulnerabilidad muy parecida a la ESC2, pero mucho más peligrosa, ya que permite realizar solicitudes de certificado offline contra plantillas de certificado de versión 1. Lo que nos explica Justin Bollinger en su artículo a modo de resumen es que un atacante puede crear un CSR para incluír políticas de aplicación bajo la configuración de atributos con uso de clave extendida especificados en la plantilla.
La raíz del problema radica en el módulo de política predeterminado de Windows que forma parte de los servicios de certificados de Active Directory. Otra cosa es que estés utlizando el servicio de NDES en tu infraestructura, en ese caso no vas a poder desactivar las plantillas de versión 1 ya que, dejaría de funcionar. No he llegado a profundizar en esto pero tal vez una opción sería la de eliminar la extensión de “Políticas de publicación” en los certificados existentes.
¿Cómo detectarlo?
Para detectar esta nueva vulnerabilidad de forma rápida podemos usar la herramienta Bloodhound con la siguiente query:
MATCH p=(:Base)-[:MemberOf*0..]->()-[:Enroll|AllExtendedRights]->(ct:CertTemplate)-[:PublishedTo]->(:EnterpriseCA)-[:TrustedForNTAuth]->(:NTAuthStore)-[:NTAuthStoreFor]->(:Domain)
WHERE ct.enrolleesuppliessubject = True
AND ct.authenticationenabled = False
AND ct.requiresmanagerapproval = False
AND ct.schemaversion = 1
RETURN p
Mitigaciones
Desactivar todas las plantillas de versión 1 standard
- ExchangeUserSignature
- ExchangeUser
- CEPEncryption
- OfflineRouter
- IPSECIntermediateOffline
- SubCA
- CA
- WebServer
- EnrollmentAgentOffline
Podemos desactivarlas mediante el comando de Powershell.
"ExchangeUserSignature", "ExchangeUser", "CEPEncryption", "OfflineRouter", "IPSECIntermediateOffline", "SubCA", "CA", "WebServer", "EnrollmentAgentOffline" | % { if ( (Get-CATemplate).Name.Contains($_)) { Remove-CATemplate -Force }}
Impedir la publicación de plantillas de versión 1 en instalaciones nuevas de una PKI
Cuando realizamos una instalación nueva de manera predeterminada se plublican automáticamente las plantillas de versión 1. Para modificar este comportamiento debemos modificar la directiva LoadDefaultTemplates en el archivo capolicy.inf
[Versión]
Firma="$Windows NT$"
[Certsrv_Servidor]
Cargar plantillas predeterminadas = 0
El archivo debe guardarse en el directorio C:\Windows antes de configurar la función de autoridad de certificación.
Eliminar la extensión “Políticas de aplicación” de los certificados emitidos existentes
De manera predeterminada, el módulo “Política predeterminada” de Windows de la PKI es responsable de escribir esta extensión de certificado en los certificados emitidos.
La extensión del certificado “Políticas de aplicación” se puede deshabilitar con el siguiente comando:
certutil -setreg política\DisableExtensionList +1.3.6.1.4.1.311.21.10
a partir de ese momento los certificados emitidos solo contendrán la extensión “Uso extendido de claves”
Fuentes: uwe gradenegger, trustedsec.com