Az - Device Registration
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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 dispositivos e, por fim, 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.
Em seguida, 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:
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 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 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
O que lhe dará 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.
tip
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 para se inscrever no Intune.
caution
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 ver esta palestra.
.png)
caution
No entanto, isso foi corrigido.
Sobrescrever chave WHFB
Resumo do ataque:
- É possível sobrescrever a chave WHFB registrada de um dispositivo via SSO
- Isso derrota a proteção do TPM já que a chave é capturada durante a geração da nova chave
- Isso também fornece persistência
.png)
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:
.png)
É 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, consulte:
Az - Phishing Primary Refresh Token (Microsoft Entra)
.png)
Referências
- https://youtu.be/BduCn8cLV1A
- https://www.youtube.com/watch?v=x609c-MUZ_g
- https://www.youtube.com/watch?v=AFay_58QubY
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.