Az - Device Registration

Support HackTricks

Información Básica

Cuando un dispositivo se une a AzureAD, se crea un nuevo objeto en AzureAD.

Al registrar un dispositivo, se le pide al usuario que inicie sesión con su cuenta (solicitando MFA si es necesario), luego solicita tokens para el servicio de registro de dispositivos y luego pide una confirmación final.

Luego, se generan dos pares de claves RSA en el dispositivo: La clave del dispositivo (clave pública) que se envía a AzureAD y la clave de transporte (clave privada) que se almacena en TPM si es posible.

Luego, se genera el objeto en AzureAD (no en Intune) y AzureAD devuelve al dispositivo un certificado firmado por él. Puedes verificar que el dispositivo está unido a AzureAD y la información sobre el certificado (como si está protegido por TPM).

dsregcmd /status

Después del registro del dispositivo, se solicita un Primary Refresh Token por el módulo LSASS CloudAP y se entrega al dispositivo. Con el PRT también se entrega la clave de sesión cifrada para que solo el dispositivo pueda descifrarla (usando la clave pública de la clave de transporte) y es necesaria para usar el PRT.

Para más información sobre qué es un PRT, consulta:

Az - Primary Refresh Token (PRT)

TPM - Trusted Platform Module

El TPM protege contra la extracción de claves de un dispositivo apagado (si está protegido por PIN) y contra la extracción del material privado de la capa del SO. Pero no protege contra el sniffing de la conexión física entre el TPM y la CPU o el uso del material criptográfico en el TPM mientras el sistema está en funcionamiento desde un proceso con derechos de SYSTEM.

Si revisas la siguiente página, verás que robar el PRT puede ser utilizado para acceder como el usuario, lo cual es excelente porque el PRT se encuentra en los dispositivos, por lo que puede ser robado de ellos (o si no es robado, abusado para generar nuevas claves de firma):

Az - Pass the PRT

Registrando un dispositivo con tokens SSO

Sería posible que un atacante solicitara un token para el servicio de registro de dispositivos de Microsoft desde el dispositivo comprometido y lo registrara:

# Initialize SSO flow
roadrecon auth prt-init
.\ROADtoken.exe <nonce>

# Request token with PRT with PRT cookie
roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie <cookie>

# Custom pyhton script to register a device (check roadtx)
registerdevice.py

Lo que te dará un certificado que puedes usar para solicitar PRTs en el futuro. Por lo tanto, manteniendo la persistencia y eludiendo MFA porque el token PRT original utilizado para registrar el nuevo dispositivo ya tenía permisos de MFA otorgados.

Ten en cuenta que para realizar este ataque necesitarás permisos para registrar nuevos dispositivos. Además, registrar un dispositivo no significa que el dispositivo será autorizado para inscribirse en Intune.

Este ataque fue solucionado en septiembre de 2021, ya que ya no puedes registrar nuevos dispositivos utilizando tokens SSO. Sin embargo, aún es posible registrar dispositivos de manera legítima (teniendo nombre de usuario, contraseña y MFA si es necesario). Consulta: roadtx.

Sobrescribiendo un ticket de dispositivo

Era posible solicitar un ticket de dispositivo, sobrescribir el actual del dispositivo y durante el flujo robar el PRT (por lo que no es necesario robarlo del TPM. Para más información consulta esta charla.

Sin embargo, esto fue solucionado.

Sobrescribir la clave WHFB

Consulta las diapositivas originales aquí

Resumen del ataque:

  • Es posible sobrescribir la clave WHFB registrada de un dispositivo a través de SSO

  • Elude la protección TPM ya que la clave es capturada durante la generación de la nueva clave

  • Esto también proporciona persistencia

Los usuarios pueden modificar su propia propiedad searchableDeviceKey a través del Azure AD Graph, sin embargo, el atacante necesita tener un dispositivo en el inquilino (registrado sobre la marcha o habiendo robado el certificado + clave de un dispositivo legítimo) y un token de acceso válido para el AAD Graph.

Luego, es posible generar una nueva clave con:

roadtx genhellokey -d <device id> -k tempkey.key

y luego PATCH la información del searchableDeviceKey:

Es posible obtener un token de acceso de un usuario a través de phishing de código de dispositivo y abusar de los pasos anteriores para robar su acceso. Para más información, consulta:

Az - Phishing Primary Refresh Token (Microsoft Entra)

Referencias

Apoya a HackTricks

Last updated