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

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).

bash
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):

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:

bash
# 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.

caution

No entanto, isso foi corrigido.

Sobrescrever chave WHFB

Ver 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 já que 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:

bash
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, consulte:

Az - Phishing Primary Refresh Token (Microsoft Entra)

Referências

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