Az - Virtual Desktop

Reading time: 7 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Azure Virtual Desktop

Virtual Desktop ni huduma ya virtualisasi ya desktop na programu. Inaruhusu kutoa desktops kamili za Windows, ikiwa ni pamoja na Windows 11, Windows 10, au Windows Server kwa watumiaji kwa mbali, ama kama desktops binafsi au kupitia programu binafsi. Inasaidia mipangilio ya kikao kimoja kwa matumizi ya kibinafsi na mazingira ya kikao nyingi. Watumiaji wanaweza kuungana kutoka kwa kifaa chochote kwa kutumia programu za asili au kivinjari cha wavuti.

Host Pools

Host pools katika Azure Virtual Desktop ni makusanyo ya mashine za Azure virtual zilizowekwa kama wenyeji wa kikao, zikitoa desktops na programu za virtual kwa watumiaji. Kuna aina mbili kuu:

  • Host pools za kibinafsi, ambapo kila mashine ya virtual inatengwa kwa mtumiaji mmoja.

  • Inaweza kuwekwa ili msimamizi aweze kupeana watumiaji maalum kwa VMs au kufanya hivyo kiotomatiki.

  • Hii ni bora kwa watu wenye kazi nzito kwani kila mtu atakuwa na VM yake. Aidha, wataweza kuhifadhi faili na kuweka mipangilio kwenye diski ya OS na hizi zitaendelea kama kila mtumiaji ana VM yake (mwenyeji).

  • Host pools zilizoshirikiwa, ambapo watumiaji wengi wanashiriki rasilimali kwenye wenyeji wa kikao waliopo.

  • Inawezekana kuweka idadi ya juu ya watumiaji (kikao) kwa mwenyeji.

  • Inawezekana kuongeza VMs kwa mikono kwa kutumia funguo za usajili, au kuruhusu Azure kujiendesha kiotomatiki idadi ya wenyeji bila kuwa na chaguo la kuongeza VMs kwa kutumia funguo za usajili. Haiwezekani kujiendesha kiotomatiki VMs kwa host pools za kibinafsi.

  • Ili kuhifadhi faili katika vikao vya watumiaji, inahitajika kutumia FSlogix.

Session Hosts

Hizi ni VMs ambazo watumiaji wataungana nazo.

  • Ikiwa kujiendesha kiotomatiki kumechaguliwa, kigezo kitaandaliwa na sifa za wenyeji ambazo zinahitaji kuundwa kwa pool.
  • Ikiwa sivyo, unapounda Host pool inawezekana kuashiria sifa na idadi ya VMs unazotaka kuunda na Azure itaunda na kuziongeza kwako.

Vipengele vikuu vya kuweka VMs ni:

  • Jina la prefix la VMs mpya
  • Aina ya VM: Hii inaweza kuwa ā€œAzure virtual machineā€ (kutumia Azure VMs) au ā€œAzure Local virtual machineā€ ambayo inaruhusu wenyeji kupelekwa kwenye tovuti au kwenye ukingo.
  • Mahali, maeneo, chaguzi za usalama za VM, picha, CPU, kumbukumbu, ukubwa wa Diski…
  • VNet, kundi la usalama na bandari za kufichua kwa mtandao
  • Inawezekana kuweka akidi za kujiunga kiotomatiki na AD domain, au kutumia Entra ID directory
  • Ikiwa ni Entra ID, inawezekana kiotomatiki kujiandikisha VM mpya katika Intune
  • Inahitajika kuweka jina la mtumiaji wa msimamizi na nenosiri isipokuwa Azure itajiendesha wenyeji, katika kesi hiyo siri inapaswa kuwekwa na jina la mtumiaji na nyingine na nenosiri
  • Inawezekana kuweka script itakayotekelezwa kwa usanidi wa kawaida

Application Groups

Makundi ya programu yanadhibiti ufikiaji wa mtumiaji kwa desktop kamili au seti maalum za programu zinazopatikana kwenye wenyeji wa kikao ndani ya pool ya mwenyeji.

Kuna aina mbili za makundi ya programu:

  • Makundi ya programu za desktop, ambayo yanawapa watumiaji ufikiaji wa desktops kamili za Windows na programu zilizounganishwa.
  • Makundi ya RemoteApp, ambayo yanaruhusu watumiaji kufikia programu binafsi.
  • Haiwezekani kupeana aina hii ya kundi la programu kwa Pool ya Kibinafsi.
  • Inahitajika kuashiria njia ya binary ya kutekeleza ndani ya VM.

Pool iliyoshirikiwa inaweza kuwa na kundi moja la programu za Desktop na makundi mengi ya RemoteApp na watumiaji wanaweza kupewa makundi mengi ya programu katika pools tofauti za wenyeji.

Wakati mtumiaji anapopewa ufikiaji anapewa jukumu Desktop Virtualization User juu ya kundi la programu.

Workspaces & Connections

Workspace ni mkusanyiko wa makundi ya programu.

Ili kuungana na Desktop au programu zilizotolewa inawezekana kufanya hivyo kutoka https://windows365.microsoft.com/ent#/devices Na kuna njia nyingine zilizoelezwa kwenye https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client

Wakati mtumiaji anafikia akaunti yake atawasilishwa kwa kutenganishwa na workspaces kila kitu alichonacho. Hivyo, inahitajika kuongeza kila kundi la programu katika workspace moja ili ufikiaji ulioainishwa uwe wazi.

Ili mtumiaji aweze kufikia Desktop au programu, pia anahitaji jukumu Virtual Machine User Login au Virtual Machine Administrator Login juu ya VM.

Managed Identities

Haiwezekani kupeana utambulisho wa kusimamiwa kwa host pools hivyo VMs zilizoundwa ndani ya pool zitakuwa nazo. Hata hivyo, inawezekana kupeana utambulisho wa mfumo na wa mtumiaji kwa VMs na kisha kufikia tokeni kutoka kwa metadata. Kwa kweli, baada ya kuzindua host pools kutoka kwenye wavuti, VMs 2 zilizoundwa zina utambulisho wa kusimamiwa wa mfumo ulioanzishwa (ingawa haina ruhusa yoyote).

Enumeration

bash
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

Az - Virtual Desktop Privesc

Post Exploitation & Persistence

Az - Virtual Desktop Post Exploitation

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks