Az - Device Registration

Soutenez HackTricks

Informations de base

Lorsqu'un appareil rejoint AzureAD, un nouvel objet est créé dans AzureAD.

Lors de l'enregistrement d'un appareil, l'utilisateur est invité à se connecter avec son compte (en demandant une MFA si nécessaire), puis il demande des jetons pour le service d'enregistrement de l'appareil et demande ensuite une confirmation finale.

Ensuite, deux paires de clés RSA sont générées dans l'appareil : La clé de l'appareil (clé publique) qui est envoyée à AzureAD et la clé de transport (clé privée) qui est stockée dans le TPM si possible.

Ensuite, l'objet est généré dans AzureAD (pas dans Intune) et AzureAD renvoie à l'appareil un certificat signé par lui. Vous pouvez vérifier que l'appareil est rejoint à AzureAD et des informations sur le certificat (comme s'il est protégé par TPM).

dsregcmd /status

Après l'enregistrement de l'appareil, un Primary Refresh Token est demandé par le module LSASS CloudAP et donné à l'appareil. Avec le PRT est également livré la clé de session chiffrée de sorte que seul l'appareil puisse la déchiffrer (en utilisant la clé publique de la clé de transport) et elle est nécessaire pour utiliser le PRT.

Pour plus d'informations sur ce qu'est un PRT, consultez :

Az - Primary Refresh Token (PRT)

TPM - Trusted Platform Module

Le TPM protège contre l'extraction de clés d'un appareil éteint (si protégé par un code PIN) et contre l'extraction du matériel privé de la couche OS. Mais il ne protège pas contre le sniffing de la connexion physique entre le TPM et le CPU ou l'utilisation du matériel cryptographique dans le TPM pendant que le système fonctionne à partir d'un processus avec des droits SYSTEM.

Si vous consultez la page suivante, vous verrez que voler le PRT peut être utilisé pour accéder comme un utilisateur, ce qui est génial car le PRT est situé sur les appareils, donc il peut être volé à partir de ceux-ci (ou s'il n'est pas volé, utilisé pour générer de nouvelles clés de signature) :

Az - Pass the PRT

Enregistrer un appareil avec des jetons SSO

Il serait possible pour un attaquant de demander un jeton pour le service d'enregistrement d'appareil Microsoft à partir de l'appareil compromis et de l'enregistrer :

# 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

Ce qui vous donnera un certificat que vous pouvez utiliser pour demander des PRT à l'avenir. Ainsi, vous maintenez la persistance et contournez le MFA car le jeton PRT original utilisé pour enregistrer le nouvel appareil avait déjà les permissions MFA accordées.

Notez que pour effectuer cette attaque, vous aurez besoin des permissions pour enregistrer de nouveaux appareils. De plus, enregistrer un appareil ne signifie pas que l'appareil sera autorisé à s'inscrire dans Intune.

Cette attaque a été corrigée en septembre 2021 car vous ne pouvez plus enregistrer de nouveaux appareils en utilisant des jetons SSO. Cependant, il est toujours possible d'enregistrer des appareils de manière légitime (en ayant le nom d'utilisateur, le mot de passe et le MFA si nécessaire). Consultez : roadtx.

Remplacement d'un ticket d'appareil

Il était possible de demander un ticket d'appareil, de remplacer celui actuel de l'appareil, et pendant le processus voler le PRT (donc pas besoin de le voler depuis le TPM. Pour plus d'infos consultez cette présentation.

Cependant, cela a été corrigé.

Remplacement de la clé WHFB

Consultez les diapositives originales ici

Résumé de l'attaque :

  • Il est possible de remplacer la clé WHFB enregistrée d'un appareil via SSO

  • Cela défait la protection TPM car la clé est reniflée pendant la génération de la nouvelle clé

  • Cela fournit également une persistance

Les utilisateurs peuvent modifier leur propre propriété searchableDeviceKey via l'Azure AD Graph, cependant, l'attaquant doit avoir un appareil dans le locataire (enregistré à la volée ou ayant volé le certificat + clé d'un appareil légitime) et un jeton d'accès valide pour l'AAD Graph.

Ensuite, il est possible de générer une nouvelle clé avec :

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

et ensuite PATCH les informations du searchableDeviceKey :

Il est possible d'obtenir un jeton d'accès d'un utilisateur via device code phishing et d'abuser des étapes précédentes pour voler son accès. Pour plus d'informations, consultez :

Az - Phishing Primary Refresh Token (Microsoft Entra)

Références

Soutenez HackTricks

Last updated