Az - Device Registration

Support HackTricks

Informações Básicas

Quando um dispositivo se junta ao AzureAD, um novo objeto é criado no AzureAD.

Ao registrar um dispositivo, o usuário é solicitado a fazer login com sua conta (solicitando MFA, se necessário), então ele solicita tokens para o serviço de registro de dispositivo e, em seguida, pede uma confirmação final.

Então, dois pares de chaves RSA são gerados no dispositivo: A chave do dispositivo (chave pública) que é enviada para o AzureAD e a chave de transporte (chave privada) que é armazenada no TPM, se possível.

Então, o objeto é gerado no AzureAD (não no Intune) e o AzureAD devolve ao dispositivo um certificado assinado por ele. Você pode verificar que o dispositivo está unido ao AzureAD e informações sobre o certificado (como se está protegido pelo TPM).

dsregcmd /status

Após o registro do dispositivo, um Primary Refresh Token é solicitado pelo módulo LSASS CloudAP e entregue ao dispositivo. Com o PRT também é entregue a chave de sessão criptografada para que apenas o dispositivo possa descriptografá-la (usando a chave pública da chave de transporte) e é necessária para usar o PRT.

Para mais informações sobre o que é um PRT, consulte:

Az - Primary Refresh Token (PRT)

TPM - Trusted Platform Module

O TPM protege contra a extração de chaves de um dispositivo desligado (se protegido por PIN) e contra a extração do material privado da camada do sistema operacional. Mas ele não protege contra a interceptação da conexão física entre o TPM e a CPU ou uso do material criptográfico no TPM enquanto o sistema está em execução por um processo com direitos de SYSTEM.

Se você verificar a página a seguir, verá que roubar o PRT pode ser usado para acessar como um usuário, o que é ótimo porque o PRT está localizado em dispositivos, então pode ser roubado deles (ou, se não for roubado, abusado para gerar novas chaves de assinatura):

Az - Pass the PRT

Registrando um dispositivo com tokens SSO

Seria possível para um atacante solicitar um token para o serviço de registro de dispositivos da Microsoft a partir do dispositivo comprometido e registrá-lo:

# 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

Which will give you a certificate you can use to ask for PRTs in the future. Portanto, mantendo a persistência e bypassing MFA porque o token PRT original usado para registrar o novo dispositivo já tinha permissões de MFA concedidas.

Note que para realizar este ataque você precisará de permissões para registrar novos dispositivos. Além disso, registrar um dispositivo não significa que o dispositivo será permitido inscrever-se no Intune.

Este ataque foi corrigido em setembro de 2021, pois não é mais possível registrar novos dispositivos usando tokens SSO. No entanto, ainda é possível registrar dispositivos de maneira legítima (tendo nome de usuário, senha e MFA, se necessário). Verifique: roadtx.

Overwriting a device ticket

Era possível solicitar um ticket de dispositivo, sobrescrever o atual do dispositivo e, durante o fluxo, roubar o PRT (então não há necessidade de roubá-lo do TPM. Para mais informações verifique esta palestra.

No entanto, isso foi corrigido.

Overwrite WHFB key

Verifique os slides originais aqui

Resumo do ataque:

  • É possível sobrescrever a chave WHFB registrada de um dispositivo via SSO

  • Isso derrota a proteção TPM pois a chave é interceptada durante a geração da nova chave

  • Isso também proporciona persistência

Os usuários podem modificar sua própria propriedade searchableDeviceKey via Azure AD Graph, no entanto, o atacante precisa ter um dispositivo no tenant (registrado na hora ou tendo certificado + chave roubados de um dispositivo legítimo) e um token de acesso válido para o AAD Graph.

Então, é possível gerar uma nova chave com:

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

e então PATCH as informações do searchableDeviceKey:

É possível obter um token de acesso de um usuário via device code phishing e abusar dos passos anteriores para roubar seu acesso. Para mais informações, confira:

Az - Phishing Primary Refresh Token (Microsoft Entra)

Referências

Support HackTricks

Last updated