Az - Pass the Certificate

Support HackTricks

Pass the Certificate (Azure)

En máquinas unidas a Azure, es posible autenticarse de una máquina a otra utilizando certificados que deben ser emitidos por Azure AD CA para el usuario requerido (como sujeto) cuando ambas máquinas soportan el mecanismo de autenticación NegoEx.

En términos super simplificados:

  • La máquina (cliente) que inicia la conexión necesita un certificado de Azure AD para un usuario.

  • El cliente crea un encabezado de JSON Web Token (JWT) que contiene PRT y otros detalles, lo firma utilizando la clave derivada (usando la clave de sesión y el contexto de seguridad) y lo envía a Azure AD.

  • Azure AD verifica la firma del JWT utilizando la clave de sesión del cliente y el contexto de seguridad, comprueba la validez del PRT y responde con el certificado.

En este escenario y después de obtener toda la información necesaria para un ataque de Pass the PRT:

  • Nombre de usuario

  • ID de inquilino

  • PRT

  • Contexto de seguridad

  • Clave derivada

Es posible solicitar un certificado P2P para el usuario con la herramienta PrtToCert:

RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE]

Los certificados durarán lo mismo que el PRT. Para usar el certificado, puedes utilizar la herramienta de python AzureADJoinedMachinePTC que autenticará en la máquina remota, ejecutará PSEXEC y abrirá un CMD en la máquina víctima. Esto nos permitirá usar Mimikatz nuevamente para obtener el PRT de otro usuario.

Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP

Referencias

Apoya a HackTricks

Last updated