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

This commit is contained in:
Translator
2025-02-25 21:58:01 +00:00
parent a2f7f63350
commit 2c64536872
3 changed files with 138 additions and 1 deletions

View File

@@ -0,0 +1,33 @@
# Az - Virtual Desktop Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Azure Virtual Desktop Privesc
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
Você pode recuperar o token de registro usado para registrar máquinas virtuais dentro de um pool de hosts.
```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")
Com essas permissões, você pode adicionar uma atribuição de usuário ao grupo de Aplicativos, que é necessária para acessar a máquina virtual do desktop virtual.
```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" \
--body '{
"properties": {
"roleDefinitionId": "/subscriptions/<SUBSCRIPTION_ID>/providers/Microsoft.Authorization/roleDefinitions/1d18fff3-a72a-46b5-b4a9-0b38a3cd7e63",
"principalId": "<USER_OBJECT_ID>"
}
}'
```
Além disso, você pode alterar o usuário e a senha da máquina virtual para acessá-la.
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,101 @@
# Az - Virtual Desktop
{{#include ../../../banners/hacktricks-training.md}}
## Azure Virtual Desktop
Virtual Desktop é um **serviço de virtualização de desktop e aplicativos**. Ele permite entregar desktops completos do Windows, incluindo Windows 11, Windows 10 ou Windows Server para usuários remotamente, seja como desktops individuais ou através de aplicativos individuais. Suporta configurações de sessão única para uso pessoal e ambientes de múltiplas sessões. Os usuários podem se conectar de praticamente qualquer dispositivo usando aplicativos nativos ou um navegador da web.
### Host Pools
Os host pools no Azure Virtual Desktop são coleções de máquinas virtuais do Azure configuradas como hosts de sessão, fornecendo desktops e aplicativos virtuais para os usuários. Existem dois tipos principais:
- **Host pools pessoais**, onde cada máquina virtual é dedicada a um único usuário, com seus ambientes
- **Host pools compartilhados**, onde vários usuários compartilham recursos em qualquer host de sessão disponível. Possui um limite de sessão configurável e uma configuração de host de sessão permite que o Azure Virtual Desktop automatize a criação de hosts de sessão com base em uma configuração.
Cada host pool tem um **token de registro** que é usado para registrar máquinas virtuais dentro de um host pool.
### Application groups & Workspace
Os grupos de aplicativos **controlam o acesso do usuário** a um desktop completo ou a conjuntos específicos de aplicativos disponíveis em hosts de sessão dentro de um host pool. Existem dois tipos:
- **Grupos de aplicativos de desktop**, que dão aos usuários acesso a um desktop completo do Windows (disponível tanto com host pools pessoais quanto compartilhados)
- **Grupos RemoteApp**, que permitem que os usuários acessem aplicativos publicados individuais (disponível apenas com host pools compartilhados).
Um host pool pode ter um grupo de aplicativos de desktop, mas múltiplos grupos RemoteApp. Os usuários podem ser atribuídos a múltiplos grupos de aplicativos em diferentes host pools. Se um usuário for atribuído a grupos de desktop e RemoteApp dentro do mesmo host pool, ele verá apenas os recursos do tipo de grupo preferido definido pelos administradores.
Um **workspace** é uma **coleção de grupos de aplicativos**, permitindo que os usuários acessem os desktops e grupos de aplicativos atribuídos a eles. Cada grupo de aplicativos deve estar vinculado a um workspace, e ele pode pertencer a apenas um workspace por vez.
### Key Features
- **Criação Flexível de VM**: Crie máquinas virtuais do Azure diretamente ou adicione máquinas virtuais locais do Azure posteriormente.
- **Recursos de Segurança**: Ative o Trusted Launch (inicialização segura, vTPM, monitoramento de integridade) para segurança avançada de VM (uma rede virtual é necessária). Pode integrar o Azure Firewall e controlar o tráfego via Grupos de Segurança de Rede.
- **Juntar ao Domínio**: Suporte para junções de domínio do Active Directory com configurações personalizáveis.
- **Diagnósticos & Monitoramento**: Ative as Configurações de Diagnóstico para transmitir logs e métricas para Log Analytics, contas de armazenamento ou hubs de eventos para monitoramento.
- **Modelos de imagem personalizados**: Crie e gerencie-os para usar ao adicionar hosts de sessão. Adicione facilmente personalizações comuns ou seus próprios scripts personalizados.
- **Registro de Workspace**: Registre facilmente grupos de aplicativos de desktop padrão em workspaces novos ou existentes para simplificar a gestão de acesso dos usuários.
### Enumeration
```bash
az extension add --name desktopvirtualization
# List HostPool of a Resource group
az desktopvirtualization hostpool list --resource-group <Resource_Group>
# 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"
# 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"
# 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 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
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 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"
# 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"
```
### Conexão
Para se conectar ao desktop virtual via web, você pode acessar através de https://client.wvd.microsoft.com/arm/webclient/ (mais comum), ou https://client.wvd.microsoft.com/webclient/index.html (clássico) Existem outros métodos que são descritos aqui [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
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}