Troopers 23

En juin 2023, nous étions présents à la conférence Troopers23 qui se tenait à Heidelberg en Allemagne. Cette conférence dispose de 3 tracks :

  • Attack & Research
  • Defense & Management
  • Active Directory & Azure Security

Nous avons assisté aux conférences de la track Active Directory & Azure Security et nous vous présentons les 3 présentations qui nous ont le plus intéressés.

Toutes les informations sur la conférence, les présentations et les archives sont disponibles sur le site de la conférence : https://troopers.de/

Un petit mot sur le badge

Le badge d’accès à la conférence, remis aux participants à leur l’arrivée, était très travaillé ! Il était en effet composé d’une carte électronique avec un écran, des leds, un clavier et une batterie. On pouvait ainsi afficher son nom, voir le programme de la conférence, jouer à la bataille navale pour résoudre un challenge, parcourir les fichiers stockés, etc. Lors de la keynote d’ouverture, les organisateurs ont expliqué les différentes étapes de sa confection et les difficultés rencontrées comme le blocage de la livraison des composants par la douane pendant plusieurs semaines.

Dumping NTHashes from Azure AD (by DrAzureAd)

Dr Netori Syynimaa aka DrAzureAd, spéciatiliste des questions Azure, a présenté comment retrouver les hash des utilisateurs depuis Azure AD. Dans un premier temps, le chercheur a présenté la façon dont sont stockés les mots de passe des comptes Azure dans Azure AD. Beaucoup d’entreprises pensent à tort que Microsoft a accès aux mots de passe de leur collaborateur. Ces derniers ne sont jamais stockés en clair et ne sont jamais exposés à Microsoft. Ils sont stockés sous la forme suivante :

“MD4+salt+PBKDF2+HMAC-SHA256” x 1000 (iterations)

Néanmoins, le composant AD Connect, qui est responsable de la connexion entre un domaine on-premise et un tenant Azure AD peut être configuré pour synchroniser les hashs NTLM ou Kerberos des AD On Premise vers Azure. C’est ce point qui fait l’objet de la présentation de DrAzureAd.

Le service Azure AD Domain Services

Après une brève introduction sur le fonctionnement de la synchronisation des mots de passe dans Azure AD, le chercheur a ensuite présenté Azure AD Domain Services (AADDS) connu aussi sous le nom de DC as-a-service AADDS est comme un Active Directory on-premise mais hébergé et managé par Microsoft. Celui-ci autorise par exemple l’utilisation de logiciel legacy sur Azure qui dépendent d’un Active Directory. Son administration peut s’effectuer par les outils « classique » utilisés sur un AD « on premise » (RSAT/PowerShell). Un groupe AAD DC Administrators permet de donner les droits d’administration, mais les membres de ce groupe ne sont pas administrateurs du domaine. Un compte built-in administrateur du domaine nommé daasadmin cependant existe, mais le mot de passe n’est pas connu des utilisateurs

Il est ainsi possible de synchroniser :

  • Les utilisateurs on-premise vers Azure AD et AADDS
  • Les utilisateurs Azure AD vers AADDS

Attaquer AADDS

Après avoir compromis, avec l’aide de collègues, le domaine managé par Microsoft (AADDS) via des vulnérabilités non corrigées à l’époque par Microsoft, DrAzureAd a pu débuter ses recherches sur la méthode utilisée pour récupérer les hash NT depuis le contrôleur de domaine AADDS.

Au travers de l’analyse de fichiers DLL avec les outils dnSpy et Ghidra, le chercheur explique sa démarche pour retrouver les routines de chiffrement / déchiffrement des hashs lors des processus de synchronisation entre l’AD on-premise et Azure AD. Il s’est ensuite intéressé à la synchronisation entre Azure AD et AADDS effectué via l’API Graph.

Au travers de l’export d’un certificat, DrAzureAd a montré comment récupérer les hashes des mots de passe présents dans AADDS.

Ce procédé montre qu’il est ainsi possible à partir d’un compte administrateur Azure de devenir administrateur sur l’AD on-premise. Ceci nécessitera de déployer AADDS, de devenir Administrateur du domaine AADDS, récupérer les hashes des comptes du domaine on-premise (synchroniser par défaut lors du déploiement du service AADDS) et de tenter de les utiliser ou les casser.

La fin de la présentation était consacrée sur la détection du déploiement du service AADDS au travers des journaux d’événements.

Slides : https://troopers.de/downloads/troopers23/TR23_DumpingNTHashesfromAzureAD.pdf

Vidéo : https://www.youtube.com/watch?v=gT8t5A93qMw

Hidden Pathways: Exploring the Anatomy of ACL-Based Active Directory Attacks and Building Strong Defenses (by Jonas Bülow Knudsen Alexander Schmitt)

Cette présentation a été réalisée par deux chercheurs, dont l’un d’entre eux travaille dans la société SpecterOps, propriétaire de Bloodhound Entreprise. Celle-ci met en avant les difficultés liées aux ACL (Access Control List) dans les Active Directory. Le sujet n’est pas nouveau, mais ces problématiques sont toujours très présentes en entreprise.

Les chercheurs ont présenté des solutions pour tenter de remédier à ces problématiques basées sur le tiering. Les chercheurs (et Microsoft) recommandent de mettre en place des OU (Organization Unit) sécurisées depuis un Active Directory vierge et non de nettoyer les ACL d’un AD existant pour mettre en place du tiering.  

Un script pour faciliter la création d’une structure d’OU sécurisée pour le tiering et un script pour bloquer l’héritage des permissions et mieux les sécuriser ont été publiée. Ils sont disponibles sur les dépôts Github suivants :

https://github.com/teal-technology-consulting/New-TealTierOUs

https://github.com/teal-technology-consulting/Set-TealTierOUAcl

D’autres recommandations ont été présentées :

  • Nettoyer régulièrement le groupe Operateur de compte (Account Operators) et Opérateur d’impression (PrinterOperator). Un script est également disponible sur leur Github.
  • Création des comptes spécifiques pour les différents tiers
  • Création de politiques de restriction d’authentification / authentification en silos
  • Former les administrateurs à utiliser la nouvelle structure de l’AD
  • Nettoyer les ACL des objets déplacés d’une OU à une autre
  • Surveiller les modifications de la structure des OU et des objets qu’elles contiennent

Slides : https://troopers.de/downloads/troopers23/TR23_HiddenPathways.pdf

Vidéo : https://www.youtube.com/watch?v=4aQZUdpmQno

The Power of Coercion Techniques in Windows Environments (by Martin Grottenthaler)

Cette présentation réalisée par Martin Grottenthaler avait pour objectif de présenter les différentes techniques de coersion dans les environnements Windows ainsi que les solutions pour s’en prémunir.

Dans un premier temps, Martin a expliqué le fonctionnement des attaques par coersion. Cette technique consiste à forcer une ressource (serveur ou poste de travail) à venir s’authentifier à la machine de l’attaquant. Une fois que l’authentification est capturée, elle peut être exploitée de diverses manières, par exemple pour relayer cette authentification vers un autre service (une attaque NTLM relais).

Les différentes techniques de coersion ont été présentée dont les 3 premières avec des démonstrations à l’appui.  

Martin rappelle qu’à l’heure actuelle les techniques PetitPotam et PrinterBug fonctionnent toujours et ne sont toujours pas corrigées. Seules des mesures de mitigation existent.

Compte machine admin et délégation Kerberos

Le chercheur a fait ensuite un focus sur les comptes machines qui sont administrateur local d’autres machines du domaine. Cette configuration est effet commune lorsque Microsoft Configuration Manager (anciennement SCCM) est présent dans un environnement Active Directory. Le compte machine sera par défaut administrateur des autres machines du domaine. Une démonstration d’une attaque par coercion exploitant cette vulnérabilité a été réalisée.

Martin a ensuite montré comment les délégations non contraintes sur une machine peuvent être abusée lors d’une attaque par coersion.

Mesures de mitigation

Pour terminer sa présentation, le chercheur a expliqué les différentes contre-mesures qui peuvent être appliquées :

  • Activer le SMB signing qui protège contre les attaques MITM tel que NTLM relai
  • Activer le LDAP signing et channel binding
  • Utiliser les délégations contraintes et jamais les délégations non contraintes
  • Auditer les privilèges administrateur local des machines. Sauf exception, une machine ne doit pas être administrateur d’autres machines.
  • Mettre en place de la segmentation réseau

Slides :

https://troopers.de/downloads/troopers23/TR23_ThePowerOfCoercionTechniquesInWindowsEnvironments.pdf

Vidéo :

https://www.youtube.com/watch?v=u-RsFCXMqfk

Bastien Cacace

Découvrir d'autres articles

  • Conférences

    Retour sur la THCon 2024

    Lire l'article
  • Conférences

    Retour sur WestDataFestival 2024

    Lire l'article
  • Conférences

    DORA et la résilience opérationnelle des fournisseurs

    Lire l'article