Dans sa présentation TROOPERS19 ("I'm in your cloud ... reading everyone's email"), Dirk-jan Mollema a parlé d'un problème qu'il a découvert et qui permet l'utilisation de la correspondance SMTP (également appelée correspondance douce) pour synchroniser les utilisateurs d'Active Directory (AD) avec Azure AD, dans le but de détourner les comptes non synchronisés. Jan a déclaré que Microsoft avait bloqué la possibilité de synchroniser des comptes sur site qui avaient des affectations actives à des rôles administratifs dans Azure AD.
Nous nous sommes penchés sur cette déclaration. Mauvaise nouvelle : Nos recherches montrent que toute personne disposant de privilèges de création de compte dans un environnement AD peut modifier le mot de passe d'un utilisateur Azure AD et, moyennant quelques conditions préalables, obtenir un accès privilégié par le biais d'attributions de rôles éligibles.
Qu'est-ce qui a conduit à cette vulnérabilité d'Azure AD ?
La plupart des organisations utilisent Active Directory pour gérer les autorisations et l'accès aux ressources du réseau. Nombre d'entre elles commencent également à utiliser Azure AD, un service de gestion des identités et des accès basé sur le cloud, pour gérer les identités des utilisateurs et les privilèges d'accès à des ressources telles que le portail Azure et Office 365.
Dans les implémentations d'identité hybride, les objets sont synchronisés entre les environnements AD sur site et les locataires Azure AD. Dans ces environnements, les utilisateurs peuvent utiliser la même identité pour AD sur site et Azure AD.
Azure AD Connect
Azure AD Connect est une application Microsoft conçue pour obtenir une identité hybride en synchronisant les objets AD sur site avec les objets Azure AD. Azure AD Connect comprend de nombreuses fonctionnalités, dont les plus importantes sont la synchronisation du hachage des mots de passe, l'authentification pass-through, l'intégration de la fédération (avec ADFS) et la synchronisation (avec Azure AD Connect Sync). La synchronisation par hachage de mot de passe et la synchronisation générale sont les plus pertinentes pour cette discussion.
Lors de l'installation d'Azure AD Connect Express, de nouveaux comptes sont créés pour prendre en charge la synchronisation.
- Compte du connecteur AD DS :
- Utilisé pour lire et écrire dans AD
- Les autorisations Replicate Directory Changes et Replicate Directory Changes All pour l'utilisation de Password Hash Sync ont été accordées.
- Préfixe MSOL_########
- Compte du service ADSync : Utilisé pour la synchronisation et l'accès à la base de données SQL
- Compte Azure AD Connector :
- Utilisé pour écrire des informations dans Azure AD
- Le rôle spécial Comptes de synchronisation d'ann uaires, qui permet uniquement d'effectuer des tâches de synchronisation d'annuaires, lui a été attribué.
- Préfixe avec Sync_*
Dans une mise en œuvre d'identité hybride, l'intégrité entre les environnements sur site et les locataires Azure AD est importante. Pour atteindre cet objectif, Azure AD Connect fait correspondre les objets utilisateur entre Azure AD et AD.
Lors de la configuration initiale d'Azure AD Connect et de la synchronisation, un attribut d'ancrage de source est choisi. Cet attribut identifie de manière unique un objet utilisateur entre AD et Azure AD. Azure AD Connect effectue la mise en correspondance en examinant cet attribut et fait correspondre les objets utilisateur entre Azure AD et AD à l'aide de l'une des deux techniques suivantes :
- Correspondance difficile
- Correspondance douce (SMTP)
Correspondance difficile
Si vous laissez Azure gérer l'ancre de source, Azure AD Connect recherche l'un des deux attributs sourceAnchor possibles :
- Azure AD Connect version 1.1.486.0 et antérieures utilisent objectGUID.
- Azure AD Connect version 1.1.524.0 et plus récente utilise mS-DS-ConsistencyGuid.
Lorsque l'attribut mS-DS-ConsistencyGuid n'est pas renseigné, Azure AD Connect écrit l'objectGUID de l'utilisateur dans cet attribut. ImmutableID est la valeur correspondante de l'objet Azure AD, c'est-à-dire l'objectGUID encodé en base64. La figure 1 montre un exemple d'obtention de l'ImmutableID d'un objet Azure AD à partir de l'objectGUID de l'utilisateur AD sur site.
Correspondance douce (SMTP)
La correspondance douce (SMTP) utilise deux attributs qui existent à la fois dans AD et Azure AD :
- nomduprincipalutilisateur
- proxyAddress
La correspondance souple réussit à faire correspondre les objets de l'utilisateur, pour autant que deux conditions soient remplies :
- L'attribut userPrincipalName dans Azure AD correspond à celui d'AD.
- L'attribut proxyAddress primaire dans AD correspond au proxyAddress dans Azure AD.
Lorsqu'une correspondance dure ou souple réussit, l'objet utilisateur correspondant est mis à jour. S'il n'y a pas de correspondance, un objet utilisateur est créé dans le locataire Azure AD pour correspondre à l'objet utilisateur AD sur site, en utilisant les attributs du compte.
Synchronisation du hachage du mot de passe
La synchronisation du hachage du mot de passe est une méthode d'authentification mise en œuvre dans les environnements d'identité hybride Azure AD. Cette méthode, qui est activée par défaut, synchronise toutes les deux minutes le hachage du mot de passe AD de l'utilisateur sur site avec Azure AD. La synchronisation du hachage du mot de passe permet aux utilisateurs d'utiliser le même mot de passe pour se connecter à la fois à AD et à Azure AD. (Pour une explication plus détaillée de la synchronisation du hachage du mot de passe, voir Semperis - Understanding Azure AD Password Hash Sync).
Rôles actifs ou éligibles
Les utilisateurs Azure AD peuvent se voir attribuer des rôles qui leur permettent de gérer diverses ressources Azure AD. Les rôles peuvent être actifs ou éligibles.
Les affectations éligibles exigent que l'utilisateur active le rôle. Pour ce faire, l'utilisateur doit effectuer une action d'AMF, fournir une justification commerciale ou demander l'approbation des approbateurs désignés. Les rôles éligibles peuvent être attribués de manière permanente ou pour une période spécifique(Figure 2). Il n'y a pas de limite de temps pour l'activation d'un rôle éligible attribué de manière permanente.
Les attributions actives ne nécessitent aucune action de la part de l'utilisateur pour l'utilisation du rôle. Les utilisateurs disposent des privilèges associés à un rôle tant qu'ils restent affectés à ce rôle(figure 3).
Comment la correspondance SMTP devient une vulnérabilité d'Azure AD
Un objet dans Azure AD peut être géré dans Azure AD ou dans AD sur site. Chaque objet dispose d'un drapeau indiquant si le compte a été synchronisé avec un compte sur site. L'exemple suivant montre cet indicateur dans le panneau Utilisateurs Azure. L'utilisateur Lee Gu est synchronisé(figure 4) ; l'utilisateur Lynne Robbins ne l'est pas(figure 5).
Figure 5Vouspouvez également voir ces paramètres dans le panneau Utilisateurs actifs d'Office 365, dans la colonne État de la synchronisation(Figure 6 et Figure 7).
Figure 7
Il peut arriver que vous souhaitiez transférer la source d'autorité d'un compte d'utilisateur géré dans le nuage. Par exemple, supposons qu'un compte d'utilisateur soit créé directement à partir d'Office 365, ce qui rend l'utilisateur géré dans le nuage. Mais vous souhaitez gérer cet utilisateur via AD sur site, comme nous le faisons pour le reste de vos utilisateurs.
Pour ce faire, vous pouvez utiliser la synchronisation d'annuaire. Cette méthode utilise la correspondance SMTP pour synchroniser le compte utilisateur Office 365 avec un compte utilisateur sur site, sur la base de l'attribut proxyAddress.
Pour synchroniser les comptes à l'aide de la correspondance SMTP, deux étapes sont nécessaires :
- Créez un compte AD avec le même userPrincipalName que le compte Azure AD.
- Configurer l'attribut proxyAddress pour qu'il corresponde à l'adresse proxy de l'utilisateur Azure AD.
La figure 8 montre les propriétés de l'utilisateur Lee Gu dans AD sur site. Ici, vous créez l'utilisateur et lui attribuez les mêmes proxyAddress et userPrincipalName qu'à l'utilisateur Lee Gu géré dans le nuage.
La figure 9 montre les propriétés de l'utilisateur Lee Gu sur Azure AD.
Si Azure AD Connect trouve un objet dans Azure AD avec les attributs userPrincipalName et proxyAddress correspondants, la correspondance SMTP se produit. Si la synchronisation du hachage des mots de passe est configurée, ce qui est le cas par défaut, ce processus remplace le mot de passe existant pour le compte Azure AD par le mot de passe du compte sur site.
Remarques importantes sur le processus de correspondance SMTP :
- L'utilisateur AD doit être synchronisé à nouveau.
- Dirk-jan a constaté que si l'utilisateur Azure AD est un utilisateur actif à haut privilège, la synchronisation ne fonctionne pas. Par exemple, vous ne pouvez pas synchroniser un utilisateur sur site avec un utilisateur Azure AD Global Administrator actif. (Ce problème a été corrigé après que Dirk-jan l'ait découvert).
- Si le userPrincipalName de l'utilisateur sur site ne correspond pas à l'utilisateur dans le nuage, un nouvel utilisateur dans le nuage est créé. Cet utilisateur est synchronisé avec l'utilisateur sur site et possède une adresse électronique Office 365 valide, qui est déterminée par son attribut userPrincipalName plutôt que par son proxyAddress.
Par exemple, si vous essayez de synchroniser l'utilisateur Megan Bowen en utilisant l'attribut proxyAddress mais un userPrincipalName différent, le résultat est un nouvel utilisateur Azure AD, même si vous n'avez pas d'accès ou d'autorisations sur Azure AD(Figure 10).
Si vous créez un nouvel utilisateur sur site avec le même attribut proxyAddress mais un userPrincipalName différent(figure 11), vous obtenez deux objets utilisateur nommés Megan Bowen, chacun avec un userPrincipalName différent. Le nouvel objet est synchronisé et l'objet original est géré dans le nuage par Azure AD(figure 12).
Figure 12
Vous pouvez vous connecter avec le nouveau compte utilisateur cloud et le mot de passe on-prem et configurer MFA(Figure 13).
Comment l'appariement SMTP peut conduire à des abus
L'équipe de recherche de Semperis a découvert qu'il est possible d'utiliser la correspondance SMTP pour synchroniser les utilisateurs sur site avec les utilisateurs Azure AD qui sont éligibles pour les rôles administratifs. Les attaquants qui ont obtenu un accès sur site peuvent utiliser cette approche pour compromettre Azure AD.
Le processus de correspondance SMTP fonctionne pour les utilisateurs à haut privilège qui sont éligibles à un privilège qui n'a pas été activé. Les abus sont possibles, que le rôle administratif ait été rendu éligible directement à l'utilisateur ou par l'intermédiaire d'un groupe Azure qui est éligible pour activer le rôle.
Pour abuser de la correspondance SMTP, l'AMF doit être inutilisée ou l'activation du rôle ne doit pas nécessiter de vérification de l'AMF. Nous avons créé une liste de tous les rôles à privilèges élevés qui ne nécessitent pas de vérification MFA pour l'activation du rôle(tableau 1).
Tableau 1. Rôles à haut privilège et exigences de vérification de l'AMF
Exiger l'AMF | Ne nécessite pas d'AMF |
Administrateur de la protection des informations Azure Administrateur de la facturation Administrateur d'applications en nuage Administrateur de la conformité Administrateur d'accès conditionnel Approbateur de l'accès au coffre-fort du client Rédacteur d'annuaire Administrateur Dynamics 365 Administrateur Exchange Administrateur Global Administrateur Intune Support partenaire de niveau 1 Support Tier2 des partenaires Administrateur Power BI Administrateur de rôles privilégiés Administrateur sécurité Administrateur SharePoint Administrateur Skype for Business Administrateur de Skype for Business |
Utilisateur invité Utilisateur invité restreint Inviteur invité Administrateur du service d'assistance Administrateur du service d'assistance Utilisateur Lecteurs de l'annuaire Utilisateurs de dispositifs Azure AD Joined Device Administrateur local Jonction d'appareils Jonction d'appareils sur le lieu de travail Comptes de synchronisation de l'annuaire Gestionnaires d'appareils Administrateur d'application Développeur d'applications Lecteur de sécurité Lecteur de rapports Lecteur du centre de messages Administrateur Desktop Analytics Administrateur de licences Administrateur de dispositifs dans le nuage Administrateur d'authentification Administrateur d'authentification privilégiée Administrateur Teams Communications Ingénieur support pour les communications d'équipes Spécialiste du support des communications d'équipes Administrateur des équipes Administrateur Insights Message Center Privacy Reader ID externe Administrateur de flux d'utilisateurs Administrateur d'attributs de flux d'utilisateurs d'ID externe Administrateur de jeux de clés B2C IEF Administrateur de politiques B2C IEF Administrateur du fournisseur d'identité externe Administrateur des données de conformité Opérateur de sécurité Administrateur Kaizala Lecteur global Administrateur de recherche Editeur de recherche Administrateur de mot de passe Administrateur d'imprimante Technicien d'imprimante Administrateur de la politique d'authentification Administrateur de groupes Administrateur Power Platform Administrateur Azure DevOps Administrateur d'identité hybride Administrateur Office Apps Administrateur réseau Chef d'entreprise Insights Administrateur Teams Devices Administrateur de simulations d'attaques Auteur de la charge utile de l'attaque Rapports de synthèse sur l'utilisation Lecteur Administrateur des connaissances Gestionnaire des connaissances Administrateur de noms de domaine Administrateur de la définition des attributs Administrateur de l'attribution d'attributs Lecteur de définition d'attribut Lecteur d'attribution d'attributs Administrateur des destinataires d'Exchange Administrateur de la gouvernance des identités Administrateur de la sécurité des applications en nuage Administrateur du déploiement de Windows Update Administrateur Windows 365 Administrateur Edge Administrateur Visites virtuelles Analyste Insights |
Par exemple, supposons que l'utilisateur Lidia Holloway soit éligible au rôle d'administrateur global(Figure 14).
Vous utilisez la correspondance SMTP pour synchroniser cet utilisateur avec un nouvel utilisateur sur site(Figure 15).
Après avoir utilisé le mot de passe de Lidia pour se connecter à Azure AD, le rôle d'administrateur global peut être activé(Figure 16). Pour ce faire, vous devez utiliser le MFA ("Vérification supplémentaire requise"). Si l'utilisateur cloud d'origine n'avait pas besoin de MFA, vous pouvez simplement le configurer et ensuite activer le rôle(Figure 17).
Figure 17
Vous pouvez activer un rôle qui ne nécessite pas de vérification supplémentaire MFA mais qui peut être élevé au rang d'administrateur global, tel que l'administrateur d'application. Et comme le décrit Dirk-jan, ce rôle peut ensuite être directement escaladé vers le rôle d'administrateur global.
Utilisation de Semperis DSP pour détecter cette vulnérabilité Azure AD
Semperis Directory Services Protector ( DSP) collecte les données de changement d'Azure AD. Pour détecter une tentative d'exploitation de cette vulnérabilité, DSP recherche le schéma d'attaque spécifique, qui comprend la synchronisation d'un utilisateur AD avec un utilisateur Azure AD éligible à un rôle à haut privilège, suivie de l'activation de ce rôle. DSP security indicator (SI) "Azure AD Role activation after synchronization" (Activation de rôle Azure AD après synchronisation) identifie ce schéma. DSP identifie également l'indicateur de sécurité "AAD user eligible for a high privilege role that is not synced to AD", qui indique les utilisateurs Azure AD qui sont éligibles pour un rôle à haut privilège et ont l'attribut proxyAddress mais ne sont pas synchronisés avec un compte sur site, ce qui les rend vulnérables à cette attaque.
Autres détections d'abus de correspondance SMTP
Une autre option consiste à utiliser les journaux d'audit Azure pour rechercher toute synchronisation et activation de rôle dans votre environnement(Figure 18).
Dans cet exemple, vous pouvez voir que le nom du client d'action est "DirectorySync" et que l'ancienne valeur de LastDirSyncTime est vide. Ces informations indiquent que c'est la première fois que l'utilisateur se synchronise avec AD on-prem.
Le journal suivant montre l'activation d'un rôle(Figure 19). En utilisant l'attribut RoleDefinitionOriginId, vous pouvez rechercher le rôle activé.
Remédiation aux abus de correspondance SMTP
Pour empêcher cet exploit, Microsoft recommande d'exiger le MFA pour tous les utilisateurs ("Harden your Azure AD Connect server"). Pour atténuer ce problème, il faut s'assurer que les utilisateurs ont configuré le MFA avant de leur attribuer un rôle éligible. Vous pouvez également désactiver l'option d'utilisation de la correspondance souple pour la synchronisation.
Divulgation
Ce problème a été signalé via le Microsoft Security Response Center (MSRC) le 10 juin 2022. Microsoft a répondu le 13 juillet : "[B]ased on our assessment, there are mitigative controls in place that a user can use to avoid this vulnerability. Nous avons déterminé que ce comportement était le fruit d'une conception."
En savoir plus
Pour en savoir plus sur la protection de votre organisation contre les vulnérabilités d'AD et d'Azure AD, consultez les ressources suivantes :