Az - Device Registration

Suporte ao 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), em seguida, solicita tokens para o serviço de registro de dispositivo e depois 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 se o dispositivo está associado ao AzureAD e informações sobre o certificado (como se está protegido por 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:

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 SO. Mas ele não protege contra sniffing da conexão física entre o TPM e a CPU ou usando o material criptográfico no TPM enquanto o sistema está em execução a partir de um processo com direitos 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 nos dispositivos, então pode ser roubado deles (ou se não for roubado, abusado para gerar novas chaves de assinatura):

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

Qual fornecerá um certificado que você pode usar para solicitar PRTs no futuro. Portanto, mantendo a persistência e contornando o MFA porque o token PRT original usado para registrar o novo dispositivo já tinha permissões de MFA concedidas.

Observe 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 para se inscrever no Intune.

Este ataque foi corrigido em setembro de 2021, pois você não pode mais 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). Confira: roadtx.

Sobrescrevendo um ticket de dispositivo

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

No entanto, isso foi corrigido.

Sobrescrever chave WHFB

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 do TPM, pois a chave é capturada durante a geração da nova chave

  • Isso também fornece 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 locatário (registrado rapidamente ou tendo roubado o cert + chave 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 phishing de código de dispositivo e abusar das etapas anteriores para roubar seu acesso. Para mais informações, consulte:

Referências

Support HackTricks

Last updated