|
|
|
|
@@ -8,57 +8,100 @@ Virtual Desktop ist ein **Desktop- und Anwendungsvirtualisierungsdienst**. Er er
|
|
|
|
|
|
|
|
|
|
### Host-Pools
|
|
|
|
|
|
|
|
|
|
Host-Pools in Azure Virtual Desktop sind Sammlungen von Azure-virtuellen Maschinen, die als Sitzungs-Hosts konfiguriert sind und Benutzern virtuelle Desktops und Anwendungen bereitstellen. Es gibt zwei Haupttypen:
|
|
|
|
|
- **Persönliche Host-Pools**, bei denen jede virtuelle Maschine einem einzelnen Benutzer gewidmet ist, mit ihren Umgebungen
|
|
|
|
|
- **Pooled Host-Pools**, bei denen mehrere Benutzer Ressourcen auf einem verfügbaren Sitzungs-Host teilen. Es hat ein konfigurierbares Sitzungs-Limit und eine Sitzungs-Host-Konfiguration ermöglicht es Azure Virtual Desktop, die Erstellung von Sitzungs-Hosts basierend auf einer Konfiguration zu automatisieren.
|
|
|
|
|
Host-Pools in Azure Virtual Desktop sind Sammlungen von Azure-virtuellen Maschinen, die als Sitzungs-Hosts konfiguriert sind und Benutzern virtuelle Desktops und Apps bereitstellen. Es gibt zwei Haupttypen:
|
|
|
|
|
|
|
|
|
|
Jeder Host-Pool hat ein **Registrierungstoken**, das verwendet wird, um virtuelle Maschinen innerhalb eines Host-Pools zu registrieren.
|
|
|
|
|
- **Persönliche Host-Pools**, bei denen jede virtuelle Maschine einem einzelnen Benutzer zugewiesen ist.
|
|
|
|
|
- Es kann so konfiguriert werden, dass der **Administrator spezifische Benutzer** den VMs zuweisen kann oder dies **automatisch** erfolgt.
|
|
|
|
|
- Dies ist ideal für Personen mit intensiven Arbeitslasten, da jede Person ihre eigene VM hat. Darüber hinaus können sie Dateien speichern und Einstellungen auf der OS-Disk konfigurieren, und diese werden bestehen bleiben, da **jeder Benutzer seine eigene VM (Host)** hat.
|
|
|
|
|
|
|
|
|
|
### Anwendungsgruppen & Arbeitsbereich
|
|
|
|
|
Anwendungsgruppen **steuern den Benutzerzugang** zu entweder einem vollständigen Desktop oder spezifischen Anwendungssets, die auf Sitzungs-Hosts innerhalb eines Host-Pools verfügbar sind. Es gibt zwei Typen:
|
|
|
|
|
- **Desktop-Anwendungsgruppen**, die Benutzern Zugriff auf einen vollständigen Windows-Desktop gewähren (verfügbar sowohl mit persönlichen als auch mit pooled Host-Pools)
|
|
|
|
|
- **RemoteApp-Gruppen**, die es Benutzern ermöglichen, auf einzelne veröffentlichte Anwendungen zuzugreifen (verfügbar nur mit pooled Host-Pools).
|
|
|
|
|
Ein Host-Pool kann eine Desktop-Anwendungsgruppe, aber mehrere RemoteApp-Gruppen haben. Benutzer können mehreren Anwendungsgruppen in verschiedenen Host-Pools zugewiesen werden. Wenn ein Benutzer sowohl Desktop- als auch RemoteApp-Gruppen innerhalb desselben Host-Pools zugewiesen ist, sieht er nur Ressourcen aus der bevorzugten Gruppenart, die von den Administratoren festgelegt wurde.
|
|
|
|
|
- **Geteilte Host-Pools**, bei denen mehrere **Benutzer Ressourcen** auf verfügbaren Sitzungs-Hosts teilen.
|
|
|
|
|
- Es ist möglich, eine **maximale Anzahl von Benutzern** (Sitzungen) pro Host zu konfigurieren.
|
|
|
|
|
- Es ist möglich, VMs manuell mit Registrierungsschlüsseln **hinzuzufügen** oder **Azure zuzulassen, die Anzahl der Hosts automatisch zu skalieren**, ohne die Option zu haben, VMs mit dem Registrierungsschlüssel hinzuzufügen. Es ist nicht möglich, VMs für persönliche Pools automatisch zu skalieren.
|
|
|
|
|
- Um Dateien in Benutzersitzungen zu speichern, muss **FSlogix** verwendet werden.
|
|
|
|
|
|
|
|
|
|
Ein **Arbeitsbereich** ist eine **Sammlung von Anwendungsgruppen**, die es Benutzern ermöglicht, auf die ihnen zugewiesenen Desktops und Anwendungsgruppen zuzugreifen. Jede Anwendungsgruppe muss mit einem Arbeitsbereich verknüpft sein, und sie kann nur zu einem Arbeitsbereich gleichzeitig gehören.
|
|
|
|
|
### Sitzungs-Hosts
|
|
|
|
|
|
|
|
|
|
### Hauptmerkmale
|
|
|
|
|
- **Flexible VM-Erstellung**: Erstellen Sie Azure-virtuelle Maschinen direkt oder fügen Sie später Azure Local-virtuelle Maschinen hinzu.
|
|
|
|
|
- **Sicherheitsmerkmale**: Aktivieren Sie Trusted Launch (sicherer Start, vTPM, Integritätsüberwachung) für erweiterte VM-Sicherheit (ein virtuelles Netzwerk ist erforderlich). Kann Azure Firewall integrieren und den Datenverkehr über Netzwerk-Sicherheitsgruppen steuern.
|
|
|
|
|
- **Domain Join**: Unterstützung für Active Directory-Domain-Join mit anpassbaren Konfigurationen.
|
|
|
|
|
- **Diagnose & Überwachung**: Aktivieren Sie Diagnos Einstellungen, um Protokolle und Metriken an Log Analytics, Speicherkonten oder Event Hubs zur Überwachung zu streamen.
|
|
|
|
|
- **Benutzerdefinierte Bildvorlagen**: Erstellen und verwalten Sie diese zur Verwendung beim Hinzufügen von Sitzungs-Hosts. Fügen Sie problemlos gängige Anpassungen oder Ihre eigenen benutzerdefinierten Skripte hinzu.
|
|
|
|
|
- **Arbeitsbereichsregistrierung**: Registrieren Sie problemlos Standard-Desktop-Anwendungsgruppen für neue oder vorhandene Arbeitsbereiche zur vereinfachten Benutzerzugriffsverwaltung.
|
|
|
|
|
Dies sind die **VMs, mit denen Benutzer eine Verbindung herstellen**.
|
|
|
|
|
|
|
|
|
|
### Enumeration
|
|
|
|
|
- Wenn automatisches Skalieren ausgewählt wurde, wird eine Vorlage mit den **Merkmalen der Hosts** erstellt, die für den Pool erstellt werden müssen.
|
|
|
|
|
- Andernfalls ist es beim Erstellen des Host-Pools möglich, die **Merkmale und die Anzahl der VMs** anzugeben, die Sie erstellen möchten, und Azure wird sie für Sie erstellen und hinzufügen.
|
|
|
|
|
|
|
|
|
|
Die Hauptmerkmale zur **Konfiguration der VMs** sind:
|
|
|
|
|
|
|
|
|
|
- Der **Präfix**-Name der neuen VMs
|
|
|
|
|
- Der **VM-Typ**: Dies kann „Azure-virtuelle Maschine“ (um Azure-VMs zu verwenden) oder „Azure Local Virtual Machine“ sein, die es ermöglichen, Hosts vor Ort oder am Edge bereitzustellen.
|
|
|
|
|
- Der Standort, Zonen, VM-Sicherheitsoptionen, Bild, CPU, Speicher, Festplattengröße…
|
|
|
|
|
- Das **VNet, die Sicherheitsgruppe und die Ports**, die ins Internet exponiert werden sollen
|
|
|
|
|
- Es ist möglich, Anmeldeinformationen festzulegen, um automatisch **einem AD-Domain beizutreten**, oder das Entra ID-Verzeichnis zu verwenden
|
|
|
|
|
- Bei Entra ID ist es möglich, die neue VM automatisch **in Intune zu registrieren**
|
|
|
|
|
- Es ist erforderlich, einen **Administratorbenutzernamen und ein Passwort** festzulegen, es sei denn, Azure skaliert die Hosts, in diesem Fall muss ein **Geheimnis mit dem Benutzernamen und ein weiteres mit dem Passwort konfiguriert werden**
|
|
|
|
|
- Es ist möglich, ein **Skript zu konfigurieren, das ausgeführt werden soll** für benutzerdefinierte Konfigurationen
|
|
|
|
|
|
|
|
|
|
### Anwendungsgruppen
|
|
|
|
|
|
|
|
|
|
**Anwendungsgruppen** steuern den Benutzerzugang zu entweder einem vollständigen Desktop oder spezifischen Anwendungssets, die auf Sitzungs-Hosts innerhalb eines Host-Pools verfügbar sind.
|
|
|
|
|
|
|
|
|
|
Es gibt zwei Arten von Anwendungsgruppen:
|
|
|
|
|
|
|
|
|
|
- **Desktop-Anwendungsgruppen**, die Benutzern Zugriff auf vollständige Windows-Desktops und angehängte Apps gewähren.
|
|
|
|
|
- **RemoteApp-Gruppen**, die es Benutzern ermöglichen, auf einzelne Anwendungen zuzugreifen.
|
|
|
|
|
- Es ist nicht möglich, diese Art von Anwendungsgruppe einem persönlichen Pool zuzuweisen.
|
|
|
|
|
- Es ist erforderlich, den Pfad zur auszuführenden Binärdatei innerhalb der VM anzugeben.
|
|
|
|
|
|
|
|
|
|
Ein geteilter Pool kann **eine Desktop-Anwendungsgruppe** und **mehrere RemoteApp-Gruppen** haben, und Benutzer können mehreren Anwendungsgruppen in verschiedenen Host-Pools zugewiesen werden.
|
|
|
|
|
|
|
|
|
|
Wenn einem Benutzer **Zugriff gewährt** wird, erhält er die Rolle **`Desktop Virtualization User`** über die Anwendungsgruppe.
|
|
|
|
|
|
|
|
|
|
### Arbeitsbereiche & Verbindungen
|
|
|
|
|
|
|
|
|
|
Ein **Arbeitsbereich** ist eine Sammlung von Anwendungsgruppen.
|
|
|
|
|
|
|
|
|
|
Um sich mit dem zugewiesenen Desktop oder den Apps zu **verbinden**, ist es möglich, dies von [https://windows365.microsoft.com/ent#/devices](https://windows365.microsoft.com/ent#/devices) zu tun.
|
|
|
|
|
Und es gibt andere Methoden, die auf [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) beschrieben sind.
|
|
|
|
|
|
|
|
|
|
Wenn ein Benutzer auf sein Konto zugreift, wird ihm **getrennt nach Arbeitsbereichen alles angezeigt, auf das er Zugriff hat**. Daher ist es erforderlich, **jede Anwendungsgruppe zu einem Arbeitsbereich hinzuzufügen**, damit die definierten Zugriffe sichtbar sind.
|
|
|
|
|
|
|
|
|
|
Damit ein Benutzer auf einen Desktop oder eine App zugreifen kann, benötigt er auch die Rolle **`Virtual Machine User Login`** oder **`Virtual Machine Administrator Login`** über die VM.
|
|
|
|
|
|
|
|
|
|
### Verwaltete Identitäten
|
|
|
|
|
|
|
|
|
|
Es ist nicht möglich, verwaltete Identitäten Host-Pools zuzuweisen, sodass die innerhalb eines Pools erstellten VMs diese haben.
|
|
|
|
|
Es ist jedoch möglich, **System- und benutzerverwaltete Identitäten den VMs zuzuweisen** und dann auf die Tokens aus den Metadaten zuzugreifen. Tatsächlich haben die 2 generierten VMs nach dem Starten der Host-Pools über das Web die systemzugewiesene verwaltete Identität aktiviert (obwohl sie keine Berechtigungen hat).
|
|
|
|
|
|
|
|
|
|
### Aufzählung
|
|
|
|
|
```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,34 +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"
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
### Verbindung
|
|
|
|
|
|
|
|
|
|
Um sich über das Web mit dem virtuellen Desktop zu verbinden, können Sie über https://client.wvd.microsoft.com/arm/webclient/ (am häufigsten) oder https://client.wvd.microsoft.com/webclient/index.html (klassisch) zugreifen. Es gibt andere Methoden, die hier beschrieben sind [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}}
|
|
|
|
|
|
|
|
|
|
## Post Exploitation & Persistence
|
|
|
|
|
|
|
|
|
|
{{#ref}}
|
|
|
|
|
../az-post-exploitation/az-virtual-desktop-post-exploitation.md
|
|
|
|
|
{{#endref}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
|
|