Az - Virtual Desktop
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Azure Virtual Desktop
Virtual Desktop ist ein Desktop- und Anwendungsvirtualisierungsdienst. Er ermöglicht die Bereitstellung vollständiger Windows-Desktops, einschließlich Windows 11, Windows 10 oder Windows Server, an Benutzer aus der Ferne, entweder als einzelne Desktops oder über einzelne Anwendungen. Es unterstützt Einzelsitzungs-Setups für den persönlichen Gebrauch und Mehrsitzungsumgebungen. Benutzer können von praktisch jedem Gerät aus mit nativen Apps oder einem Webbrowser eine Verbindung herstellen.
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 Apps bereitstellen. Es gibt zwei Haupttypen:
-
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.
-
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.
Sitzungs-Hosts
Dies sind die VMs, mit denen Benutzer eine Verbindung herstellen.
- 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 zu tun. Und es gibt andere Methoden, die auf 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
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
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.