Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Mouvement latéral vers le Cloud avec Pass-the-PRT

Mouvement latéral vers le Cloud avec Pass-the-PRT

May 13, 2023

Les attaquants utilisent une variété de tactiques pour se propager latéralement à travers des machines Windows sur site, y compris les attaques Pass-the-Ticket, Pass-the-Hash, Overpass-the-Hash et Golden Tickets. Mais des techniques similaires sont également efficaces pour se déplacer latéralement d'un poste de travail compromis vers des ressources cloud connectées, contournant des mesures d'authentification fortes comme la MFA.

Cet article explique comment les attaquants peuvent effectuer un mouvement latéral vers le cloud avec une attaque appelée Pass-the-PRT.

Qu'est-ce qu'un PRT ?

Un primary refresh token (PRT) est similaire à un ticket d'autorisation Kerberos (TGT) — les deux sont utilisés pour fournir une authentification unique (SSO). Mais tandis qu'un TGT est pour les systèmes Windows, un PRT vous permet de vous connecter à un appareil Windows 10 puis d'accéder aux ressources Azure et Microsoft 365 sans avoir à vous réauthentifier. L'appareil Windows 10 doit être joint à Azure ou joint hybride à Azure.

Voici un aperçu de la manière dont ce processus fonctionne : Lorsque vous vous connectez, votre appareil Windows 10 communiquera avec le fournisseur d'authentification cloud Windows 10. Son plug-in Azure AD validera vos identifiants et retournera un PRT et une clé de session. Votre appareil va ré-encrypter la clé de session avec son module de plateforme sécurisée (TPM) puis stocker à la fois la clé et le PRT dans LSASS. Ensuite, lorsque vous essayez de vous connecter à un site web en utilisant un navigateur qui prend en charge le SSO vers Azure (soit Edge ou Chrome avec l'extension Windows 10), le fournisseur d'authentification cloud créera un cookie PRT pour le navigateur et utilisera ce cookie pour obtenir des jetons de Azure AD. Azure AD validera le cookie PRT et vous permettra d'accéder.

(Si vous souhaitez approfondir, consultez la documentation Microsoft, le résumé de Jairo Cadena sur le PRT et SSO, cet article sur le PRT de Dirk-jan Mollema, et les projets ROADtoken et RequestAADRefreshToken sur GitHub.)

Pour savoir si vous avez un PRT, exécutez cette commande :

      Dsregcmd.exe /status
      

Dans la section État SSO, vérifiez AzureAdPrt; si elle est définie sur OUI, vous avez un PRT.

Image

Si elle est réglée sur NON, utilisez la commande ci-dessous pour vérifier si votre appareil est joint à Azure AD, car cela est nécessaire pour que les PRTs soient émis.

Image

Réalisation d'une attaque Pass-the-PRT

Si un adversaire parvient à obtenir le PRT d'un utilisateur et la clé de session, il peut créer des cookies PRT qui lui donnent accès aux ressources web en tant que cet utilisateur, contournant toutes les exigences d'accès conditionnel en place. Un PRT est valide pendant 14 jours, donc ils ont accès pendant jusqu'à 2 semaines à moins que le compte ne soit désactivé.

Voyons précisément comment nous pouvons réaliser une telle attaque.

Prérequis : Nous avons compromis un appareil Windows 10 qui possède un PRT émis pour lui, et nous avons des privilèges d'administrateur local sur cette machine.

Aperçu des étapes :

  1. Extrayez le PRT de LSASS et sauvegardez-le pour plus tard.
  2. Extrayez la clé de session.
  3. Déchiffrez la clé de session et utilisez-la à l'aide d'une clé principale DPAPI. Nous avons appris cela lors de l'attaque Pass-the-Cookie et nous utiliserons la même approche.
  4. En utilisant la clé de session déchiffrée pour obtenir la clé dérivée et le contexte. Ceci est nécessaire pour créer notre cookie PRT. La clé dérivée est ce qui est utilisé pour signer le JWT pour le cookie.
  5. Depuis n'importe quel système, utilisez le PRT, la clé dérivée et le contexte pour créer un nouveau cookie PRT.
  6. Importez le cookie dans notre session de navigateur Chrome. Nous serons désormais authentifiés sur les sites web en tant qu'utilisateur — sans jamais connaître leur mot de passe ni avoir à gérer des invites MFA.

Plongeons plus profondément dans chaque étape.

Étape 1. Extraire le PRT de LSASS.

Pour voir les données PRT pour la machine que nous avons compromise, nous utilisons la commande suivante dans Mimikatz release 2.2.0 20200807 ou ultérieure:

      Privilege::debug
Sekurlsa::cloudap
      

Voici le résultat. Nous allons copier la partie étiquetée PRT et la sauvegarder pour plus tard.

Image

Si vous ne voyez aucune donnée PRT, vérifiez si l'appareil est joint à Azure AD en exécutant la commande dsregcmd /status comme indiqué précédemment. Si AzureAdPrt est défini sur OUI, vérifiez quelle version de Windows 10 la machine exécute ; dans notre laboratoire, nous avons dû mettre à niveau à au moins la version 1909 pour que l'attaque fonctionne.

Image

Étape 2. Extrayez la clé de preuve de possession.

Nous allons maintenant extraire la clé de session ou « ProofOfPosessionKey », qui est mise en évidence ci-dessous. Elle est chiffrée et nous devrons utiliser nos clés maîtresses DPAPI pour la déchiffrer.

Image

Étape 3. Déchiffrez la clé de session.

Nous allons maintenant élever nos privilèges à SYSTEM et exécuter sous le contexte de l'ordinateur pour pouvoir utiliser la clé principale DPAPI afin de déchiffrer la clé de session :

      Token::elevate
Dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
      
Image

Maintenant, nous allons copier deux valeurs. La première est la valeur Contexte :

Image

Et le second est la valeur de la clé dérivée :

Image

Étape 4. Générez des cookies PRT.

Nous pouvons effectuer le reste de cette attaque depuis n'importe quel poste de travail. Pour générer des cookies PRT, nous exécutons simplement la commande suivante :

      Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]
      

La sortie inclura un cookie PRT signé après Signature avec clé. Copiez ce texte.

Image

Étape 5. Injectez le cookie PRT dans une session de navigateur.

Lancez Google Chrome en mode incognito et naviguez vers https://login.microsoftonline.com. Lorsque l'on vous demande vos données de connexion, faites un clic droit n'importe où sur la page, puis choisissez Inspecter pour ouvrir les outils de développement pour Chrome.

Allez dans l'onglet Application, double-cliquez sur Cookies, et cliquez sur login.microsoftonline.com. Dans le volet de droite, dans la barre d'action supérieure, cliquez sur le cercle avec une barre oblique pour effacer tous les cookies existants.

Double-cliquez ensuite sur une ligne vide du tableau et ajoutez le nouveau cookie suivant :

      Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above]
HttpOnly: Set to True (checked)

      

Laissez les autres champs à leurs valeurs par défaut.

Image

Rafraîchissez la page et assurez-vous que le cookie n'a pas disparu. Si c'est le cas, vous avez peut-être fait une erreur et devez recommencer le processus.

Accédez à https://login.microsoftonline.com à nouveau et vous devriez être automatiquement connecté en tant qu'utilisateur compromis :

Image

Protection contre les attaques Pass-the-PRT

Les attaques Pass-the-PRT sont difficiles à détecter car elles abusent des processus légitimes de SSO. Une stratégie utile consiste à utiliser un logiciel de protection des points de terminaison qui peut détecter l'utilisation de Mimikatz, qui est exécuté lors de la première étape de l'attaque.

Cependant, la prévention est encore meilleure que la détection. N'oubliez pas que Pass-the-PRT est une technique de mouvement latéral ; pour l'exécuter, l'intrus doit déjà avoir accédé à une machine. Avec un outil comme le Netwrix Active Directory Security Solution, vous pouvez empêcher les malfaiteurs de prendre pied dans votre environnement dès le départ.

De plus, cette attaque nécessite des droits administratifs locaux. En utilisant un logiciel de gestion des terminaux comme Netwrix Endpoint Policy Manager, vous retirez ces droits puissants aux utilisateurs sans nuire à leur productivité. De plus, vous pouvez empêcher les ordinateurs de lancer des logiciels malveillants et même sécuriser les paramètres de leur navigateur.

Partager sur

En savoir plus

À propos de l'auteur

Un homme en veste bleue et chemise carreaux sourit pour lappareil photo

Jeff Warren

Directeur des produits

Jeff Warren supervise le portefeuille de produits Netwrix, apportant plus d'une décennie d'expérience dans la gestion et le développement de produits axés sur la sécurité. Avant de rejoindre Netwrix, Jeff dirigeait l'organisation des produits chez Stealthbits Technologies, où il a utilisé son expérience en tant qu'ingénieur logiciel pour développer des solutions de sécurité innovantes à l'échelle de l'entreprise. Avec une approche pratique et un don pour résoudre des défis de sécurité complexes, Jeff se concentre sur la création de solutions pratiques qui fonctionnent. Il est titulaire d'un BS en Systèmes d'Information de l'Université du Delaware.