Az - Escritorio Virtual
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Azure Virtual Desktop
Virtual Desktop es un servicio de virtualización de escritorio y aplicaciones. Permite entregar escritorios completos de Windows, incluyendo Windows 11, Windows 10 o Windows Server a los usuarios de forma remota, ya sea como escritorios individuales o a través de aplicaciones individuales. Soporta configuraciones de sesión única para uso personal y entornos de múltiples sesiones. Los usuarios pueden conectarse desde prácticamente cualquier dispositivo utilizando aplicaciones nativas o un navegador web.
Grupos de Hosts
Los grupos de hosts en Azure Virtual Desktop son colecciones de máquinas virtuales de Azure configuradas como hosts de sesión, proporcionando escritorios virtuales y aplicaciones a los usuarios. Hay dos tipos principales:
-
Grupos de hosts personales, donde cada máquina virtual está dedicada a un solo usuario.
-
Se puede configurar para que el administrador asigne usuarios específicos a las VMs o que esto se haga automáticamente.
-
Esto es ideal para personas con cargas de trabajo intensivas, ya que cada persona tendrá su propia VM. Además, podrán almacenar archivos y configurar ajustes en el disco del SO y estos persistirán ya que cada usuario tiene su propia VM (host).
-
Grupos de hosts agrupados, donde múltiples usuarios comparten recursos en hosts de sesión disponibles.
-
Es posible configurar un número máximo de usuarios (sesiones) por host.
-
Es posible agregar VMs manualmente utilizando claves de registro, o permitir que Azure escale automáticamente el número de hosts sin tener la opción de agregar VMs usando la clave de registro. No es posible escalar automáticamente VMs para grupos personales.
-
Para persistir archivos en las sesiones de los usuarios, es necesario usar FSlogix.
Hosts de Sesión
Estos son las VMs a las que los usuarios se conectarán.
- Si se seleccionó el escalado automático, se creará una plantilla con las características de los hosts que deben ser creados para el grupo.
- Si no, al crear el grupo de hosts es posible indicar las características y el número de VMs que deseas crear y Azure las creará y agregará por ti.
Las principales características para configurar las VMs son:
- El prefijo del nombre de las nuevas VMs
- El tipo de VM: Esto puede ser “máquina virtual de Azure” (para usar VMs de Azure) o “máquina virtual local de Azure” que permite que los hosts se desplieguen en las instalaciones o en el borde.
- La ubicación, zonas, opciones de seguridad de la VM, imagen, CPU, memoria, tamaño del disco…
- La VNet, grupo de seguridad y puertos a exponer a Internet
- Es posible establecer credenciales para unirse automáticamente a un dominio AD, o usar el directorio de Entra ID
- Si es Entra ID, es posible inscribir automáticamente la nueva VM en Intune
- Es necesario establecer un nombre de usuario y contraseña de administrador a menos que Azure escale los hosts, en ese caso se debe configurar un secreto con el nombre de usuario y otro con la contraseña
- Es posible configurar un script para ser ejecutado para configuraciones personalizadas
Grupos de Aplicaciones
Los grupos de aplicaciones controlan el acceso de los usuarios a un escritorio completo o a conjuntos específicos de aplicaciones disponibles en los hosts de sesión dentro de un grupo de hosts.
Hay dos tipos de grupos de aplicaciones:
- Grupos de aplicaciones de escritorio, que dan a los usuarios acceso a escritorios completos de Windows y aplicaciones adjuntas.
- Grupos de RemoteApp, que permiten a los usuarios acceder a aplicaciones individuales.
- No es posible asignar este tipo de grupo de aplicaciones a un Grupo Personal.
- Es necesario indicar la ruta al binario a ejecutar dentro de la VM.
Un Grupo Agrupado puede tener un grupo de aplicaciones de escritorio y múltiples grupos de RemoteApp y los usuarios pueden ser asignados a múltiples grupos de aplicaciones en diferentes grupos de hosts.
Cuando a un usuario se le otorga acceso, se le da el rol Desktop Virtualization User sobre el grupo de aplicaciones.
Espacios de Trabajo y Conexiones
Un espacio de trabajo es una colección de grupos de aplicaciones.
Para conectarse al escritorio o aplicaciones asignadas, es posible hacerlo desde https://windows365.microsoft.com/ent#/devices
Y hay otros métodos descritos en https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client
Cuando un usuario accede a su cuenta, se le presentará separado por espacios de trabajo todo a lo que tiene acceso. Por lo tanto, es necesario agregar cada grupo de aplicaciones a un espacio de trabajo para que los accesos definidos sean visibles.
Para que un usuario pueda acceder a un escritorio o una aplicación, también necesita el rol Virtual Machine User Login o Virtual Machine Administrator Login sobre la VM.
Identidades Administradas
No es posible asignar identidades administradas a grupos de hosts, por lo que las VMs creadas dentro de un grupo las tendrán.
Sin embargo, es posible asignar identidades administradas de sistema y de usuario a las VMs y luego acceder a los tokens desde los metadatos. De hecho, después de lanzar los grupos de hosts desde la web, las 2 VMs generadas tienen habilitada la identidad administrada asignada al sistema (aunque no tiene ningún permiso).
Enumeración
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
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

