Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az

This commit is contained in:
Translator
2025-02-26 16:10:24 +00:00
parent 239ec7ae77
commit 306fd1ef92
5 changed files with 132 additions and 61 deletions

View File

@@ -454,7 +454,7 @@
- [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md)
- [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md)
- [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md)
- [Az - CosmosDB Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md)
- [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md)
- [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md)
- [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md)
@@ -465,6 +465,7 @@
- [Az - Service Bus Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md)
- [Az - Table Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-table-storage-post-exploitation.md)
- [Az - SQL Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md)
- [Az - Virtual Desktop Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md)
- [Az - VMs & Network Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-vms-and-network-post-exploitation.md)
- [Az - Privilege Escalation](pentesting-cloud/azure-security/az-privilege-escalation/README.md)
- [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md)

View File

@@ -0,0 +1,21 @@
# Az - VMs & Réseau Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Bureau Virtuel
Pour plus d'informations sur le Bureau Virtuel, consultez la page suivante :
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### Techniques courantes
- Écraser un **package MSIX depuis le compte de stockage** pour obtenir RCE dans n'importe quelle VM utilisant cette application.
- Dans un remoteapp, il est possible de changer le **chemin du binaire à exécuter**.
- **S'échapper des applications** vers un shell pour obtenir RCE.
- Toute attaque de post exploitation & persistance depuis **Azure VMs.**
- Il est possible de **configurer un script à exécuter** dans le pool pour appliquer des configurations personnalisées.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,14 +4,24 @@
## Azure Virtual Desktop Privesc
Pour plus d'informations sur Azure Virtual Desktop, consultez :
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
Vous pouvez récupérer le jeton d'enregistrement utilisé pour enregistrer des machines virtuelles au sein d'un pool d'hôtes.
```bash
az desktopvirtualization hostpool retrieve-registration-token -n testhostpool -g Resource_Group_1
```
### ("Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write") && ("Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write")
### Microsoft.Authorization/roleAssignments/read, Microsoft.Authorization/roleAssignments/write
Avec ces autorisations, vous pouvez ajouter une affectation d'utilisateur au groupe d'application, ce qui est nécessaire pour accéder à la machine virtuelle du bureau virtuel.
> [!WARNING]
> Un attaquant avec ces permissions pourrait faire des choses beaucoup plus dangereuses que celle-ci.
Avec ces permissions, vous pouvez ajouter une attribution d'utilisateur au groupe d'application, ce qui est nécessaire pour accéder à la machine virtuelle du bureau virtuel :
```bash
az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments/<NEW_ROLE_ASSIGNMENT_GUID>?api-version=2022-04-01" \
@@ -22,12 +32,6 @@ az rest --method PUT \
}
}'
```
De plus, vous pouvez changer l'utilisateur et le mot de passe de la machine virtuelle pour y accéder.
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
Notez que pour qu'un utilisateur puisse accéder à un Bureau ou à une application, il doit également avoir le rôle `Virtual Machine User Login` ou `Virtual Machine Administrator Login` sur la VM.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -343,12 +343,22 @@ az vm identity assign \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
```
Ensuite, l'attaquant doit avoir **compromis d'une manière ou d'une autre la VM** pour voler des jetons des identités gérées assignées. Vérifiez **plus d'infos dans** :
Alors, l'attaquant doit avoir **compromis d'une manière ou d'une autre la VM** pour voler des jetons des identités gérées assignées. Vérifiez **plus d'infos dans** :
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
{{#endref}}
### "Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write"
Ces permissions permettent de changer l'utilisateur et le mot de passe de la machine virtuelle pour y accéder :
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
Selon les [**docs**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), cette permission vous permet de gérer le système d'exploitation de votre ressource via Windows Admin Center en tant qu'administrateur. Il semble donc que cela donne accès au WAC pour contrôler les VMs...

View File

@@ -4,61 +4,104 @@
## Bureau Virtuel Azure
Bureau Virtuel est un **service de virtualisation de bureau et d'applications**. Il permet de fournir des bureaux Windows complets, y compris Windows 11, Windows 10 ou Windows Server aux utilisateurs à distance, soit sous forme de bureaux individuels, soit via des applications individuelles. Il prend en charge des configurations à session unique pour un usage personnel et des environnements à sessions multiples. Les utilisateurs peuvent se connecter depuis pratiquement n'importe quel appareil en utilisant des applications natives ou un navigateur web.
Bureau Virtuel est un **service de virtualisation de bureau et d'application**. Il permet de fournir des bureaux Windows complets, y compris Windows 11, Windows 10 ou Windows Server aux utilisateurs à distance, soit sous forme de bureaux individuels, soit via des applications individuelles. Il prend en charge des configurations à session unique pour un usage personnel et des environnements à sessions multiples. Les utilisateurs peuvent se connecter depuis pratiquement n'importe quel appareil en utilisant des applications natives ou un navigateur web.
### Pools d'Hôtes
Les pools d'hôtes dans Bureau Virtuel Azure sont des collections de machines virtuelles Azure configurées en tant qu'hôtes de session, fournissant des bureaux et des applications virtuels aux utilisateurs. Il existe deux types principaux :
- **Pools d'hôtes personnels**, où chaque machine virtuelle est dédiée à un seul utilisateur, avec ses environnements
- **Pools d'hôtes partagés**, où plusieurs utilisateurs partagent des ressources sur n'importe quel hôte de session disponible. Il a une limite de session configurable et une configuration d'hôte de session permet à Bureau Virtuel Azure d'automatiser la création d'hôtes de session en fonction d'une configuration
Chaque pool d'hôtes a un **jeton d'enregistrement** utilisé pour enregistrer des machines virtuelles au sein d'un pool d'hôtes.
- **Pools d'hôtes personnels**, où chaque machine virtuelle est dédiée à un seul utilisateur.
- Il peut être configuré de sorte que **l'administrateur puisse assigner** des utilisateurs spécifiques aux VM ou que cela soit fait **automatiquement**.
- Cela est idéal pour les personnes ayant des charges de travail intensives, car chaque personne aura sa propre VM. De plus, elles pourront stocker des fichiers et configurer des paramètres sur le disque OS et ceux-ci persisteront car **chaque utilisateur a sa propre VM (hôte)**.
### Groupes d'Applications & Espace de Travail
Les groupes d'applications **contrôlent l'accès des utilisateurs** soit à un bureau complet, soit à des ensembles spécifiques d'applications disponibles sur les hôtes de session au sein d'un pool d'hôtes. Il existe deux types :
- **Groupes d'applications de bureau**, qui donnent aux utilisateurs accès à un bureau Windows complet (disponible avec des pools d'hôtes personnels et partagés)
- **Groupes RemoteApp**, qui permettent aux utilisateurs d'accéder à des applications publiées individuelles (disponibles uniquement avec des pools d'hôtes partagés).
Un pool d'hôtes peut avoir un groupe d'applications de bureau mais plusieurs groupes RemoteApp. Les utilisateurs peuvent être assignés à plusieurs groupes d'applications à travers différents pools d'hôtes. Si un utilisateur est assigné à la fois à des groupes de bureau et à des groupes RemoteApp au sein du même pool d'hôtes, il ne voit que les ressources du type de groupe préféré défini par les administrateurs.
- **Pools d'hôtes partagés**, où plusieurs **utilisateurs partagent des ressources** sur des hôtes de session disponibles.
- Il est possible de configurer un **nombre maximum d'utilisateurs** (sessions) par hôte.
- Il est possible d'**ajouter des VM manuellement** en utilisant des clés d'enregistrement, ou **permettre à Azure de mettre automatiquement à l'échelle** le nombre d'hôtes sans avoir l'option d'ajouter des VM en utilisant la clé d'enregistrement. Il n'est pas possible de mettre automatiquement à l'échelle des VM pour des pools personnels.
- Pour persister des fichiers dans les sessions des utilisateurs, il est nécessaire d'utiliser **FSlogix**.
Un **espace de travail** est une **collection de groupes d'applications**, permettant aux utilisateurs d'accéder aux bureaux et aux groupes d'applications qui leur sont assignés. Chaque groupe d'applications doit être lié à un espace de travail, et il ne peut appartenir qu'à un seul espace de travail à la fois.
### Hôtes de Session
### Caractéristiques Clés
- **Création de VM Flexible** : Créez des machines virtuelles Azure directement ou ajoutez des machines virtuelles locales Azure plus tard.
- **Fonctionnalités de Sécurité** : Activez le Trusted Launch (démarrage sécurisé, vTPM, surveillance de l'intégrité) pour une sécurité avancée des VM (un réseau virtuel est nécessaire). Peut intégrer Azure Firewall et contrôler le trafic via des groupes de sécurité réseau.
- **Jointure de Domaine** : Support pour les jointures de domaine Active Directory avec des configurations personnalisables.
- **Diagnostics & Surveillance** : Activez les paramètres de diagnostic pour diffuser des journaux et des métriques vers Log Analytics, des comptes de stockage ou des hubs d'événements pour la surveillance.
- **Modèles d'images personnalisées** : Créez et gérez-les à utiliser lors de l'ajout d'hôtes de session. Ajoutez facilement des personnalisations courantes ou vos propres scripts personnalisés.
- **Enregistrement d'Espace de Travail** : Enregistrez facilement des groupes d'applications de bureau par défaut à de nouveaux espaces de travail ou à des espaces de travail existants pour simplifier la gestion de l'accès des utilisateurs.
Ce sont les **VMs auxquelles les utilisateurs vont se connecter.**
- Si la mise à l'échelle automatique a été sélectionnée, un modèle sera créé avec les **caractéristiques des hôtes** qui doivent être créés pour le pool.
- Sinon, lors de la création du pool d'hôtes, il est possible d'indiquer les **caractéristiques et le nombre de VMs** que vous souhaitez créer et Azure les créera et les ajoutera pour vous.
Les principales fonctionnalités pour **configurer les VMs** sont :
- Le **préfixe** du nom des nouvelles VMs
- Le **type de VM** : Cela peut être “machine virtuelle Azure” (pour utiliser des VMs Azure) ou “machine virtuelle locale Azure” qui permet de déployer des hôtes sur site ou à la périphérie.
- L'emplacement, les zones, les options de sécurité des VM, l'image, le CPU, la mémoire, la taille du disque…
- Le **VNet, le groupe de sécurité et les ports** à exposer à Internet
- Il est possible de définir des identifiants pour **rejoindre automatiquement un domaine AD**, ou d'utiliser le répertoire Entra ID
- Si Entra ID, il est possible de **enrôler automatiquement la nouvelle VM dans Intune**
- Il est nécessaire de définir un **nom d'utilisateur et un mot de passe administrateur** à moins qu'Azure ne mette à l'échelle les hôtes, dans ce cas un **secret doit être configuré avec le nom d'utilisateur et un autre avec le mot de passe**
- Il est possible de **configurer un script à exécuter** pour une configuration personnalisée
### Groupes d'Applications
Les **groupes d'applications** contrôlent l'accès des utilisateurs à un bureau complet ou à des ensembles spécifiques d'applications disponibles sur des hôtes de session au sein d'un pool d'hôtes.
Il existe deux types de groupes d'applications :
- **Groupes d'applications de bureau**, qui donnent aux utilisateurs accès à des bureaux Windows complets et aux applications associées.
- **Groupes RemoteApp**, qui permettent aux utilisateurs d'accéder à des applications individuelles.
- Il n'est pas possible d'assigner ce type de groupe d'application à un Pool Personnel.
- Il est nécessaire d'indiquer le chemin vers le binaire à exécuter à l'intérieur de la VM.
Un Pool Partagé peut avoir **un groupe d'applications de bureau** et **plusieurs groupes RemoteApp** et les utilisateurs peuvent être assignés à plusieurs groupes d'applications à travers différents pools d'hôtes.
Lorsqu'un utilisateur se voit **accorder l'accès**, il reçoit le rôle **`Utilisateur de Virtualisation de Bureau`** sur le groupe d'applications.
### Espaces de Travail & Connexions
Un **espace de travail** est une collection de groupes d'applications.
Pour **se connecter** au bureau ou aux applications assignées, il est possible de le faire depuis [https://windows365.microsoft.com/ent#/devices](https://windows365.microsoft.com/ent#/devices)
Et il existe d'autres méthodes décrites sur [https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client](https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client)
Lorsqu'un utilisateur accède à son compte, il va se voir **présenter séparément par espaces de travail tout ce à quoi il a accès**. Par conséquent, il est nécessaire d'ajouter **chaque groupe d'applications à un espace de travail** afin que les accès définis soient visibles.
Pour qu'un utilisateur puisse accéder à un bureau ou à une application, il a également besoin du rôle **`Connexion Utilisateur de Machine Virtuelle`** ou **`Connexion Administrateur de Machine Virtuelle`** sur la VM.
### Identités Gérées
Il n'est pas possible d'assigner des identités gérées aux pools d'hôtes, donc les VMs créées à l'intérieur d'un pool les auront.
Cependant, il est possible de **assigner des identités gérées système et utilisateur aux VMs** et ensuite d'accéder aux jetons depuis les métadonnées. En fait, après le lancement des pools d'hôtes depuis le web, les 2 VMs générées ont l'identité gérée système assignée activée (bien qu'elle n'ait aucune autorisation).
### Énumération
```bash
az extension add --name desktopvirtualization
# List HostPool of a Resource group
az desktopvirtualization hostpool list --resource-group <Resource_Group>
# List HostPools
az desktopvirtualization hostpool list
# List Workspaces
az desktopvirtualization workspace list
# List Application Groups
az desktopvirtualization applicationgroup list --resource-group <Resource_Group>
# List Application Groups By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/applicationGroups?api-version=2024-04-03"
az desktopvirtualization applicationgroup list
# List Applications in a Application Group
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/applications?api-version=2024-04-03"
# Check if Desktops are enabled
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/desktops?api-version=2024-04-03"
# List Assigned Users to the Application Group
az rest \
--method GET \
--url "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" \
| jq '.value[] | select((.properties.scope | ascii_downcase) == "/subscriptions/<subscription_id_in_lowercase>/resourcegroups/<resource_group_name_in_lowercase>/providers/microsoft.desktopvirtualization/applicationgroups/<app_group_name_in_lowercase>")'
# List hosts
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts?api-version=2024-04-03"
# List Workspace in a resource group
az desktopvirtualization workspace list --resource-group <Resource_Group>
# List Workspace in a subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/workspaces?api-version=2024-04-03"
# List App Attach Package By Resource Group
# List App Attach packages
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List App Attach Package By Subscription
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03"
# List user sessions
az rest --method GET --url "https://management.azure.com/ssubscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostpools/{hostPoolName}/sessionhosts/{hostPoolHostName}/userSessions?api-version=2024-04-03"
# List Desktops
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/desktops?api-version=2024-04-03"
@@ -68,35 +111,27 @@ az rest --method GET --url "https://management.azure.com/subscriptions/{subscrip
# List private endpoint connections associated with hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateEndpointConnections?api-version=2024-04-03"
# List private endpoint connections associated By Workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateEndpointConnections?api-version=2024-04-03"
# List the private link resources available for a hostpool.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/privateLinkResources?api-version=2024-04-03"
# List the private link resources available for this workspace.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/workspaces/{workspaceName}/privateLinkResources?api-version=2024-04-03"
# List sessionHosts/virtual machines.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts?api-version=2024-04-03"
# List start menu items in the given application group.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/applicationGroups/{applicationGroupName}/startMenuItems?api-version=2024-04-03"
# List userSessions.
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/sessionHosts/{sessionHostName}/userSessions?api-version=2024-04-03"
# List userSessions By Host Pool
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/userSessions?api-version=2024-04-03"
```
### Connexion
Pour se connecter au bureau virtuel via le web, vous pouvez accéder à https://client.wvd.microsoft.com/arm/webclient/ (le plus courant), ou https://client.wvd.microsoft.com/webclient/index.html (classique)
Il existe d'autres méthodes décrites ici [https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows](https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client?tabs=windows)
## Privesc
{{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#endref}}
## Post Exploitation & Persistence
{{#ref}}
../az-post-exploitation/az-virtual-desktop-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}