Az - Bureau Virtuel
Reading time: 8 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Bureau Virtuel Azure
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.
-
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).
-
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.
Hôtes de Session
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
Et il existe d'autres méthodes décrites sur 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
az extension add --name desktopvirtualization
# List HostPools
az desktopvirtualization hostpool list
# List Workspaces
az desktopvirtualization workspace list
# List Application Groups
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 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 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"
# List MSIX Packages
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/hostPools/{hostPoolName}/msixPackages?api-version=2024-04-03"
# 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"
Privesc
Post Exploitation & Persistence
Az - Virtual Desktop Post Exploitation
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.