|
|
|
|
@@ -4,61 +4,104 @@
|
|
|
|
|
|
|
|
|
|
## Azure Virtuele Desktop
|
|
|
|
|
|
|
|
|
|
Virtuele Desktop is 'n **desktop- en toepassingsvirtualiseringsdiens**. Dit stel in staat om volledige Windows-desktops, insluitend Windows 11, Windows 10, of Windows Server aan gebruikers op afstand te lewer, hetsy as individuele desktops of deur individuele toepassings. Dit ondersteun enkel-sessie opstellings vir persoonlike gebruik en multi-sessie omgewings. Gebruikers kan van feitlik enige toestel af aansluit met behulp van inheemse toepassings of 'n webblaaier.
|
|
|
|
|
Virtuele Desktop is 'n **desktop en app virtualiseringsdiens**. Dit stel in staat om volledige Windows-desktops, insluitend Windows 11, Windows 10, of Windows Server aan gebruikers op afstand te lewer, hetsy as individuele desktops of deur individuele toepassings. Dit ondersteun enkel-sessie opstellings vir persoonlike gebruik en multi-sessie omgewings. Gebruikers kan van feitlik enige toestel aansluit met behulp van inheemse toepassings of 'n webblaaier.
|
|
|
|
|
|
|
|
|
|
### Gasheerpoele
|
|
|
|
|
|
|
|
|
|
Gasheerpoele in Azure Virtuele Desktop is versamelings van Azure virtuele masjiene wat as sessiegashere geconfigureer is, wat virtuele desktops en toepassings aan gebruikers bied. Daar is twee hoofsoorte:
|
|
|
|
|
- **Persoonlike gasheerpoele**, waar elke virtuele masjien aan 'n enkele gebruiker toegewy is, met sy omgewings
|
|
|
|
|
- **Gepoolde gasheerpoele**, waar verskeie gebruikers hulpbronne op enige beskikbare sessiegasheer deel. Dit het 'n konfigureerbare sessiegrens en 'n sessiegasheer-konfigurasie laat Azure Virtuele Desktop die skepping van sessiegashere outomatiseer op grond van 'n konfigurasie.
|
|
|
|
|
Gasheerpoele in Azure Virtuele Desktop is versamelings van Azure virtuele masjiene wat as sessiegashere geconfigureer is, wat virtuele desktops en toepassings aan gebruikers bied. Daar is twee hoof tipes:
|
|
|
|
|
|
|
|
|
|
Elke gasheerpoel het 'n **registrasietoken** wat gebruik word om virtuele masjiene binne 'n gasheerpoel te registreer.
|
|
|
|
|
- **Persoonlike gasheerpoele**, waar elke virtuele masjien aan 'n enkele gebruiker toegewy is.
|
|
|
|
|
- Dit kan geconfigureer word sodat die **admin spesifieke gebruikers aan VM's kan toewys** of dit kan **outomaties** gedoen word.
|
|
|
|
|
- Dit is ideaal vir mense met intensiewe werklas, aangesien elke persoon sy eie VM sal hê. Boonop sal hulle in staat wees om lêers te stoor en instellings in die OS-skyf te konfigureer en hierdie sal voortduur aangesien **elke gebruiker sy eie VM (gasheer)** het.
|
|
|
|
|
|
|
|
|
|
### Toepassing groepe & Werkruimte
|
|
|
|
|
Toepassing groepe **beheer gebruikers toegang** tot óf 'n volledige desktop óf spesifieke stelle toepassings wat beskikbaar is op sessiegashere binne 'n gasheerpoel. Daar is twee tipes:
|
|
|
|
|
- **Desktoptoepassing groepe**, wat gebruikers toegang gee tot 'n volledige Windows-desktop (beskikbaar met beide persoonlike en gepoolde gasheerpoele)
|
|
|
|
|
- **RemoteApp groepe**, wat gebruikers toelaat om toegang te verkry tot individuele gepubliseerde toepassings (slegs beskikbaar met gepoolde gasheerpoele).
|
|
|
|
|
'n Gasheerpoel kan een Desktoptoepassing groep hê, maar verskeie RemoteApp groepe. Gebruikers kan aan verskeie toepassing groepe oor verskillende gasheerpoele toegeken word. As 'n gebruiker aan beide desktop- en RemoteApp groepe binne dieselfde gasheerpoel toegeken word, sien hulle slegs hulpbronne van die voorkeurgroep tipe wat deur administrateurs gestel is.
|
|
|
|
|
- **Gedeelde gasheerpoele**, waar verskeie **gebruikers hulpbronne deel** op beskikbare sessiegashere.
|
|
|
|
|
- Dit is moontlik om 'n **maksimum aantal gebruikers** (sessies) per gasheer te configureer.
|
|
|
|
|
- Dit is moontlik om **VM's handmatig by te voeg** met behulp van registrasiesleutels, of **toelaat dat Azure outomaties die aantal gashere skaal** sonder die opsie om VM's met die registrasiesleutel by te voeg. Dit is nie moontlik om VM's outomaties te skaal vir persoonlike poele nie.
|
|
|
|
|
- Om lêers in gebruikerssessies te behou, is dit nodig om **FSlogix** te gebruik.
|
|
|
|
|
|
|
|
|
|
'n **Werkruimte** is 'n **versameling van toepassing groepe**, wat gebruikers toelaat om toegang te verkry tot die desktops en toepassing groepe wat aan hulle toegeken is. Elke toepassing groep moet aan 'n werkruimte gekoppel wees, en dit kan slegs aan een werkruimte op 'n slag behoort.
|
|
|
|
|
### Sessiegashere
|
|
|
|
|
|
|
|
|
|
### Sleutelkenmerke
|
|
|
|
|
- **Buigsame VM-skepping**: Skep Azure virtuele masjiene direk of voeg later Azure Plaaslike virtuele masjiene by.
|
|
|
|
|
- **Sekuriteitskenmerke**: Aktiveer Betroubare Begin (veilige opstart, vTPM, integriteitsmonitering) vir gevorderde VM-sekuriteit ('n virtuele netwerk is nodig). Kan Azure Firewall integreer en verkeer via Netwerk Sekuriteitsgroepe beheer.
|
|
|
|
|
- **Domeinverbinding**: Ondersteuning vir Aktiewe Gids domeinverbinding met aanpasbare konfigurasies.
|
|
|
|
|
- **Diagnostiek & Monitering**: Aktiveer Diagnostiese Instellings om logs en metrieke na Log Analytics, stoor rekeninge, of gebeurtenis hubs te stroom vir monitering.
|
|
|
|
|
- **Pasgemaakte beeldsjablone**: Skep en bestuur hulle om te gebruik wanneer sessiegashere bygevoeg word. Voeg maklik algemene aanpassings of jou eie pasgemaakte skripte by.
|
|
|
|
|
- **Werkruimte Registrasie**: Registreer maklik standaard desktoptoepassing groepe aan nuwe of bestaande werkruimtes vir vereenvoudigde gebruikers toegang bestuur.
|
|
|
|
|
Dit is die **VM's waaraan gebruikers sal aansluit.**
|
|
|
|
|
|
|
|
|
|
### Enumerasie
|
|
|
|
|
- As outomatiese skaal gekies is, sal 'n sjabloon geskep word met die **kenmerke van die gashere** wat vir die poel geskep moet word.
|
|
|
|
|
- As nie, wanneer die Gasheerpoel geskep word, is dit moontlik om die **kenmerke en die aantal VM's** wat jy wil skep aan te dui en Azure sal dit vir jou skep en byvoeg.
|
|
|
|
|
|
|
|
|
|
Die hoofkenmerke om die **VM's te configureer** is:
|
|
|
|
|
|
|
|
|
|
- Die **prefix** naam van die nuwe VM's
|
|
|
|
|
- Die **VM tipe**: Dit kan “Azure virtuele masjien” wees (om Azure VM's te gebruik) of “Azure Plaaslike virtuele masjien” wat toelaat dat gashere op die perseel of aan die rand ontplooi word.
|
|
|
|
|
- Die ligging, sones, VM-sekuriteitsopsies, beeld, CPU, geheue, skyfgrootte…
|
|
|
|
|
- Die **VNet, sekuriteitsgroep en poorte** om aan die internet bloot te stel
|
|
|
|
|
- Dit is moontlik om akrediteer te stel om outomaties **aan 'n AD-domein aan te sluit**, of gebruik Entra ID-gids
|
|
|
|
|
- As Entra ID, is dit moontlik om die nuwe VM outomaties **in Intune te registreer**
|
|
|
|
|
- Dit is nodig om 'n **administrateur gebruikersnaam en wagwoord** in te stel tensy Azure die gashere sal skaal, in daardie geval moet 'n **geheim geconfigureer word met die gebruikersnaam en nog een met die wagwoord**
|
|
|
|
|
- Dit is moontlik om 'n **script te configureer wat uitgevoer moet word** vir aangepaste konfigurasie
|
|
|
|
|
|
|
|
|
|
### Toepassing Groepe
|
|
|
|
|
|
|
|
|
|
**Toepassing groepe** beheer gebruikers toegang tot óf 'n volledige desktop óf spesifieke stelle toepassings wat op sessiegashere binne 'n gasheerpoel beskikbaar is.
|
|
|
|
|
|
|
|
|
|
Daar is twee tipes toepassing groepe:
|
|
|
|
|
|
|
|
|
|
- **Desktop toepassing groepe**, wat gebruikers toegang gee tot 'n volledige Windows-desktop en aangehegte toepassings.
|
|
|
|
|
- **RemoteApp groepe**, wat gebruikers toelaat om toegang te verkry tot individuele toepassings.
|
|
|
|
|
- Dit is nie moontlik om hierdie soort toepassing groep aan 'n Persoonlike Poel toe te wys nie.
|
|
|
|
|
- Dit is nodig om die pad na die binêre wat binne die VM uitgevoer moet word aan te dui.
|
|
|
|
|
|
|
|
|
|
'n Gedeelde Poel kan **een Desktop toepassing** groep en **meerdere RemoteApp groepe** hê en gebruikers kan aan meerdere toepassing groepe oor verskillende gasheerpoele toegewy word.
|
|
|
|
|
|
|
|
|
|
Wanneer 'n gebruiker **toegang verleen** word, word die rol **`Desktop Virtualization User`** oor die toepassing groep gegee.
|
|
|
|
|
|
|
|
|
|
### Werkruimtes & Verbindinge
|
|
|
|
|
|
|
|
|
|
'n **werkruimte** is 'n versameling van toepassing groepe.
|
|
|
|
|
|
|
|
|
|
Om te **verbinde** met die Desktop of toepassings wat toegewy is, is dit moontlik om dit te doen vanaf [https://windows365.microsoft.com/ent#/devices](https://windows365.microsoft.com/ent#/devices)
|
|
|
|
|
En daar is ander metodes beskryf op [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)
|
|
|
|
|
|
|
|
|
|
Wanneer 'n gebruiker sy rekening toegang, sal hy **geskei deur werkruimtes alles wat hy toegang het tot** aangebied word. Daarom is dit nodig om **elke toepassing groep aan een werkruimte** toe te voeg sodat die gedefinieerde toegang sigbaar is.
|
|
|
|
|
|
|
|
|
|
Om 'n gebruiker in staat te stel om toegang te verkry tot 'n Desktop of 'n toepassing, het hy ook die rol **`Virtual Machine User Login`** of **`Virtual Machine Administrator Login`** oor die VM nodig.
|
|
|
|
|
|
|
|
|
|
### Gemanagte Identiteite
|
|
|
|
|
|
|
|
|
|
Dit is nie moontlik om gemanagte identiteite aan gasheerpoele toe te wys nie, so die geskepte VM's binne 'n poel sal dit hê.
|
|
|
|
|
Dit is egter moontlik om **stelsel en gebruiker gemanagte identiteite aan die VM's toe te wys** en dan toegang tot die tokens vanaf die metadata te verkry. Trouens, na die bekendstelling van die gasheerpoele vanaf die web, het die 2 gegenereerde VM's die stelsel toegewyde gemanagte identiteit geaktiveer (alhoewel dit geen regte het nie).
|
|
|
|
|
|
|
|
|
|
### Opsomming
|
|
|
|
|
```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"
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
### Verbinding
|
|
|
|
|
|
|
|
|
|
Om via die web met die virtuele desktop te verbind, kan jy toegang verkry deur https://client.wvd.microsoft.com/arm/webclient/ (meest algemeen), of https://client.wvd.microsoft.com/webclient/index.html (klassiek)
|
|
|
|
|
Daar is ander metodes wat hier beskryf word [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}}
|
|
|
|
|
|