Azure Pentesting

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Informations de base

Apprenez les bases d’Azure et d’Entra ID sur la page suivante :

Az - Basic Information

Méthodologie de Pentesting/Red Team Azure

Pour auditer un environnement AZURE, il est trÚs important de savoir : quels services sont utilisés, ce qui est exposé, qui a accÚs à quoi, et comment les services internes Azure et les services externes sont connectés.

Du point de vue d’une Red Team, le premier pas pour compromettre un environnement Azure est d’obtenir un point d’appui.

ÉnumĂ©ration externe & AccĂšs initial

Le premier pas est bien sĂ»r d’énumĂ©rer les informations sur le locataire que vous attaquez et d’essayer d’obtenir un point d’appui.

En fonction du nom de domaine, il est possible de savoir si l’entreprise utilise Azure, d’obtenir le tenant ID, d’obtenir d’autres domaines valides dans le mĂȘme locataire (s’il y en a plus) et d’obtenir des informations pertinentes comme si SSO est activĂ©, les configurations de messagerie, les emails d’utilisateurs valides


Consultez la page suivante pour apprendre Ă  effectuer l’énumĂ©ration externe :

Az - Unauthenticated Enum & Initial Entry

Avec ces informations, les moyens les plus courants d’essayer d’obtenir un point d’appui sont :

  • OSINT : VĂ©rifiez les fuites sur Github ou toute autre plateforme open source qui pourrait contenir des identifiants ou des informations intĂ©ressantes.
  • RĂ©utilisation de mots de passe, fuites ou password spraying
  • Acheter des identifiants Ă  un employĂ©
  • Phishing commun (identifiants ou application Oauth)
  • Phishing par code de dispositif d’authentification
  • Violations de tiers
  • VulnĂ©rabilitĂ©s dans les applications hĂ©bergĂ©es sur Azure
  • Server Side Request Forgery avec accĂšs Ă  l’endpoint de mĂ©tadonnĂ©es
  • Prises de contrĂŽle de sous-domaines comme dans https://godiego.co/posts/STO-Azure/
  • Autres erreurs de configuration des services Azure
  • Si un ordinateur portable de dĂ©veloppeur est compromis (WinPEAS et LinPEAS peuvent trouver cette info) :
  • À l’intĂ©rieur de <HOME>/.Azure
  • azureProfile.json contient des informations sur les utilisateurs connectĂ©s dans le passĂ©
  • clouds.config contient des informations sur les abonnements
  • service_principal_entries.json contient les identifiants des applications (tenant id, clients et secret). Seulement sur Linux & macOS
  • msal_token_cache.json contient des jetons d’accĂšs et des jetons de rafraĂźchissement. Seulement sur Linux & macOS
  • service_principal_entries.bin et msal_token_cache.bin sont utilisĂ©s sur Windows et sont cryptĂ©s avec DPAPI
  • msal_http_cache.bin est un cache de requĂȘtes HTTP
  • Chargez-le : with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
  • AzureRmContext.json contient des informations sur les connexions prĂ©cĂ©dentes utilisant Az PowerShell (mais pas d’identifiants)
  • À l’intĂ©rieur de C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\* se trouvent plusieurs fichiers .bin avec des jetons d’accĂšs, des jetons ID et des informations de compte cryptĂ©es avec le DPAPI des utilisateurs.
  • Il est possible de trouver plus de jetons d’accĂšs dans les fichiers .tbres Ă  l’intĂ©rieur de C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\ qui contiennent un base64 cryptĂ© avec DPAPI avec des jetons d’accĂšs.
  • Sur Linux et macOS, vous pouvez obtenir des jetons d’accĂšs, jetons de rafraĂźchissement et jetons ID depuis Az PowerShell (s’il est utilisĂ©) en exĂ©cutant pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
  • Sur Windows, cela ne gĂ©nĂšre que des jetons ID.
  • Il est possible de voir si Az PowerShell a Ă©tĂ© utilisĂ© sur Linux et macOS en vĂ©rifiant si $HOME/.local/share/.IdentityService/ existe (bien que les fichiers contenus soient vides et inutiles)

Trouvez des erreurs de configuration d’autres services Azure qui peuvent mener à un point d’appui sur la page suivante :

Az - Unauthenticated Enum & Initial Entry

Note

N’oubliez pas que gĂ©nĂ©ralement, la partie la plus bruyante de l’énumĂ©ration est la connexion, et non l’énumĂ©ration elle-mĂȘme.

Outils Azure & Entra ID

Les outils suivants seront trÚs utiles pour énumérer à la fois les locataires Entra ID et les environnements Azure lentement (pour éviter la détection) ou automatiquement (pour gagner du temps) :

Az - Enumeration Tools

Contournement des politiques d’accùs

Dans les cas oĂč vous avez des identifiants valides mais que vous ne pouvez pas vous connecter, voici quelques protections courantes qui pourraient ĂȘtre en place :

  • Liste blanche d’IP – Vous devez compromettre une IP valide
  • Restrictions gĂ©ographiques – Trouvez oĂč vit l’utilisateur ou oĂč se trouvent les bureaux de l’entreprise et obtenez une IP de la mĂȘme ville (ou du mĂȘme pays au moins)
  • Navigateur – Peut-ĂȘtre qu’un seul navigateur d’un certain OS (Windows, Linux, Mac, Android, iOS) est autorisĂ©. DĂ©couvrez quel OS la victime/l’entreprise utilise.
  • Vous pouvez Ă©galement essayer de compromettre les identifiants de Service Principal car ils sont gĂ©nĂ©ralement moins limitĂ©s et leur connexion est moins examinĂ©e

AprĂšs avoir contournĂ© cela, vous pourriez ĂȘtre en mesure de revenir Ă  votre configuration initiale et vous aurez toujours accĂšs.

Vérifiez :

Az - Conditional Access Policies & MFA Bypass

Qui suis-je

Caution

Apprenez comment installer az cli, AzureAD et Az PowerShell dans la section Az - Entra ID.

L’une des premiĂšres choses que vous devez savoir est qui vous ĂȘtes (dans quel environnement vous ĂȘtes) :

az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default

Entra ID Enumeration & Privesc

Par défaut, tout utilisateur devrait avoir suffisamment de permissions pour énumérer des éléments tels que des utilisateurs, des groupes, des rÎles, des services principaux
 (voir default AzureAD permissions).
Vous pouvez trouver ici un guide :

Az - Entra ID (AzureAD) & Azure IAM

VĂ©rifiez les Post-Exploitation tools pour trouver des outils permettant d’escalader les privilĂšges dans Entra ID comme AzureHound :

Automated Post Exploitation Tools

Azure Enumeration

Une fois que vous savez qui vous ĂȘtes, vous pouvez commencer Ă  Ă©numĂ©rer les services Azure auxquels vous avez accĂšs.

Vous devriez commencer par découvrir les permissions que vous avez sur les ressources. Pour cela :

  1. Trouvez la ressource Ă  laquelle vous avez accĂšs :

Tip

Cela ne nécessite aucune permission spéciale.

La commande Az PowerShell Get-AzResource vous permet de savoir quelles ressources votre utilisateur actuel peut voir.

De plus, vous pouvez obtenir les mĂȘmes informations dans la console web en allant sur https://portal.azure.com/#view/HubsExtension/BrowseAll ou en recherchant “Toutes les ressources” ou en exĂ©cutant :

az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Trouvez les autorisations que vous avez sur les ressources que vous pouvez voir :

Tip

Cela ne nécessite aucune autorisation spéciale.

En parlant Ă  l’API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01, vous pouvez obtenir les autorisations que vous avez sur la ressource spĂ©cifiĂ©e dans le resource_id.

Par conséquent, en vérifiant chacune des ressources auxquelles vous avez accÚs, vous pouvez obtenir les autorisations que vous avez sur elles.

Warning

Vous pouvez automatiser cette Ă©numĂ©ration en utilisant l’outil Find_My_Az_Management_Permissions.

ÉnumĂ©rer les autorisations avec **`Microsoft.Authorization/roleAssignments/read`**

Tip

Notez que vous avez besoin de l’autorisation Microsoft.Authorization/roleAssignments/read pour exĂ©cuter cette action.

  • Avec suffisamment d’autorisations, le rĂŽle Get-AzRoleAssignment peut ĂȘtre utilisĂ© pour Ă©numĂ©rer tous les rĂŽles dans l’abonnement ou l’autorisation sur une ressource spĂ©cifique en l’indiquant comme suit :
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Il est Ă©galement possible d’obtenir ces informations en exĂ©cutant :

az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"

comme dans :

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
  • Une autre option est de rĂ©cupĂ©rer les rĂŽles qui vous sont attribuĂ©s dans azure. Cela nĂ©cessite Ă©galement la permission Microsoft.Authorization/roleAssignments/read :
az role assignment list --assignee "<email>" --all --output table

Ou exĂ©cutez ce qui suit (Si les rĂ©sultats sont vides, cela peut ĂȘtre parce que vous n’avez pas la permission de les obtenir) :

az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
  • Trouvez les autorisations granulaires des rĂŽles qui vous sont attachĂ©s :

Ensuite, pour obtenir l’autorisation granulaire, vous pouvez exĂ©cuter (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.

Ou appelez directement l’API avec

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"

Dans la section suivante, vous pouvez trouver des informations sur les services Azure les plus courants et comment les énumérer :

Az - Services

Escalade de privilĂšges, Post-Exploitation & Persistance

Une fois que vous savez comment l’environnement Azure est structurĂ© et quels services sont utilisĂ©s, vous pouvez commencer Ă  chercher des moyens d’escalader des privilĂšges, de vous dĂ©placer latĂ©ralement, d’effectuer d’autres attaques post-exploitation et de maintenir la persistance.

Dans la section suivante, vous pouvez trouver des informations sur la façon d’escalader des privilùges dans les services Azure les plus courants :

Az - Privilege Escalation

Dans la suivante, vous pouvez trouver des informations sur la façon d’effectuer des attaques post-exploitation dans les services Azure les plus courants :

Az - Post Exploitation

Dans la suivante, vous pouvez trouver des informations sur la façon de maintenir la persistance dans les services Azure les plus courants :

Az - Persistence

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks