Sapir Federovsky et Tomer Nahum

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.

SMTP Matching-PS Source Anchor
Figure 1

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.

Correspondance SMTP : rôle éligible
Figure 2

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).

Correspondance SMTP : rôle actif
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).

Correspondance SMTP : compte synchronisé
Figure 4
Correspondance SMTP : utilisateur synchronisé
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).

Correspondance SMTP : utilisateurs actifs, état de la synchronisation
Figure 6

Correspondance SMTP : utilisateurs actifs, état de la synchronisation

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 :

  1. Créez un compte AD avec le même userPrincipalName que le compte Azure AD.
  2. 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.

Correspondance SMTP : Propriétés de l'utilisateur AD sur site
Figure 8

La figure 9 montre les propriétés de l'utilisateur Lee Gu sur Azure AD.

Correspondance SMTP : Propriétés de l'utilisateur Azure AD
Figure 9

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).

Correspondance SMTP : Nouvel utilisateur
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).

Correspondance SMTP : Objet utilisateur 1
Figure 11

Correspondance SMTP : Objet utilisateur 2

Figure 12

Vous pouvez vous connecter avec le nouveau compte utilisateur cloud et le mot de passe on-prem et configurer MFA(Figure 13).

Correspondance SMTP : Configuration de l'AMF
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).

Correspondance SMTP : rôle d'administrateur global
Figure 14

Vous utilisez la correspondance SMTP pour synchroniser cet utilisateur avec un nouvel utilisateur sur site(Figure 15).

Correspondance SMTP : utilisation de la correspondance SMTP
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 16

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).

Correspondance SMTP : journaux Azure AD
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é.

Correspondance SMTP : détection de l'activation des rôles
Figure 19

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 :