Az - PHS - Password Hash Sync
Last updated
Last updated
Apprenez et pratiquez le hacking AWS :HackTricks Formation AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Formation GCP Red Team Expert (GRTE)
Dans la documentation : La synchronisation de hash de mot de passe est l'une des méthodes de connexion utilisées pour réaliser une identité hybride. Azure AD Connect synchronise un hash, du hash, du mot de passe d'un utilisateur depuis une instance Active Directory sur site vers une instance Azure AD basée sur le cloud.
C'est la méthode la plus courante utilisée par les entreprises pour synchroniser un AD sur site avec Azure AD.
Tous les utilisateurs et un hash des hashes de mot de passe sont synchronisés de l'on-prem vers Azure AD. Cependant, les mots de passe en clair ou les hashes originaux ne sont pas envoyés à Azure AD. De plus, les groupes de sécurité intégrés (comme les administrateurs de domaine...) ne sont pas synchronisés avec Azure AD.
La synchronisation des hashes se produit toutes les 2 minutes. Cependant, par défaut, l'expiration des mots de passe et l'expiration des comptes ne sont pas synchronisées dans Azure AD. Ainsi, un utilisateur dont le mot de passe sur site est expiré (non changé) peut continuer à accéder aux ressources Azure en utilisant l'ancien mot de passe.
Lorsqu'un utilisateur sur site souhaite accéder à une ressource Azure, l'authentification a lieu sur Azure AD.
PHS est requis pour des fonctionnalités telles que Identity Protection et les services de domaine AAD.
Lorsque PHS est configuré, certains comptes privilégiés sont automatiquement créés :
Le compte MSOL_<installationID>
est automatiquement créé dans l'AD sur site. Ce compte se voit attribuer un rôle de Comptes de Synchronisation de Répertoire (voir documentation) ce qui signifie qu'il a des permissions de réplication (DCSync) dans l'AD sur site.
Un compte Sync_<nom du serveur ADConnect sur site>_installationID
est créé dans Azure AD. Ce compte peut réinitialiser le mot de passe de TOUT utilisateur (synchronisé ou uniquement cloud) dans Azure AD.
Les mots de passe des deux comptes privilégiés précédents sont stockés dans un serveur SQL sur le serveur où Azure AD Connect est installé. Les administrateurs peuvent extraire les mots de passe de ces utilisateurs privilégiés en clair.
La base de données est située dans C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
Il est possible d'extraire la configuration d'une des tables, étant l'une chiffrée :
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
La configuration chiffrée est chiffrée avec DPAPI et elle contient les mots de passe de l'utilisateur MSOL_*
dans l'AD sur site et le mot de passe de Sync_* dans AzureAD. Par conséquent, en compromettant ceux-ci, il est possible de privesc vers l'AD et vers AzureAD.
Vous pouvez trouver un aperçu complet de la façon dont ces identifiants sont stockés et déchiffrés dans cette présentation.
Si le serveur où Azure AD connect est installé est joint au domaine (recommandé dans la documentation), il est possible de le trouver avec :
Vous pouvez également utiliser adconnectdump pour obtenir ces identifiants.
En compromettant le compte Sync_*
, il est possible de réinitialiser le mot de passe de n'importe quel utilisateur (y compris les Administrateurs Globaux)
Il est également possible de modifier les mots de passe des utilisateurs uniquement cloud (même si cela est inattendu)
Il est également possible d'extraire le mot de passe de cet utilisateur.
Une autre option serait de attribuer des autorisations privilégiées à un principal de service, ce que l'utilisateur Sync a la permission de faire, puis d'accéder à ce principal de service comme moyen de privesc.
Il est possible d'utiliser le SSO Transparent avec PHS, qui est vulnérable à d'autres abus. Vérifiez-le dans :
Az - Seamless SSOApprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)