Az - Virtual Desktop

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Azure Virtual Desktop

Το Virtual Desktop είναι μια υπηρεσία εικονικοποίησης επιτραπέζιων υπολογιστών και εφαρμογών. Επιτρέπει την παροχή πλήρων επιτραπέζιων υπολογιστών Windows, συμπεριλαμβανομένων των Windows 11, Windows 10 ή Windows Server σε χρήστες απομακρυσμένα, είτε ως μεμονωμένοι επιτραπέζιοι υπολογιστές είτε μέσω μεμονωμένων εφαρμογών. Υποστηρίζει ρυθμίσεις μεμονωμένης συνεδρίας για προσωπική χρήση και περιβάλλοντα πολλαπλών συνεδριών. Οι χρήστες μπορούν να συνδεθούν από σχεδόν οποιαδήποτε συσκευή χρησιμοποιώντας εγγενείς εφαρμογές ή ένα πρόγραμμα περιήγησης ιστού.

Host Pools

Οι host pools στο Azure Virtual Desktop είναι συλλογές εικονικών μηχανών Azure που έχουν ρυθμιστεί ως hosts συνεδρίας, παρέχοντας εικονικούς επιτραπέζιους υπολογιστές και εφαρμογές στους χρήστες. Υπάρχουν δύο κύριοι τύποι:

  • Προσωπικοί host pools, όπου κάθε εικονική μηχανή είναι αφιερωμένη σε έναν μόνο χρήστη.

  • Μπορεί να ρυθμιστεί ώστε ο διαχειριστής να αναθέτει συγκεκριμένους χρήστες σε VMs ή να γίνεται αυτό αυτόματα.

  • Αυτό είναι ιδανικό για άτομα με εντατικά φορτία εργασίας, καθώς κάθε άτομο θα έχει τη δική του VM. Επιπλέον, θα μπορούν να αποθηκεύουν αρχεία και να ρυθμίζουν ρυθμίσεις στο δίσκο OS και αυτές θα παραμένουν καθώς κάθε χρήστης έχει τη δική του VM (host).

  • Συγκεντρωμένοι host pools, όπου πολλοί χρήστες μοιράζονται πόρους σε διαθέσιμους hosts συνεδρίας.

  • Είναι δυνατή η ρύθμιση ενός μέγιστου αριθμού χρηστών (συνεδρίες) ανά host.

  • Είναι δυνατή η προσθήκη VMs χειροκίνητα χρησιμοποιώντας κλειδιά εγγραφής ή να επιτραπεί στο Azure να κλιμακώσει αυτόματα τον αριθμό των hosts χωρίς να υπάρχει η επιλογή προσθήκης VMs χρησιμοποιώντας το κλειδί εγγραφής. Δεν είναι δυνατή η αυτόματη κλιμάκωση VMs για προσωπικούς pools.

  • Για να παραμείνουν τα αρχεία στις συνεδρίες των χρηστών, είναι απαραίτητο να χρησιμοποιηθεί το FSlogix.

Session Hosts

Αυτές είναι οι VMs στις οποίες θα συνδεθούν οι χρήστες.

  • Εάν επιλέχθηκε η αυτόματη κλιμάκωση, θα δημιουργηθεί ένα πρότυπο με τα χαρακτηριστικά των hosts που πρέπει να δημιουργηθούν για την πισίνα.
  • Εάν όχι, κατά τη δημιουργία του Host pool είναι δυνατή η ένδειξη των χαρακτηριστικών και του αριθμού των VMs που θέλετε να δημιουργήσετε και το Azure θα τα δημιουργήσει και θα τα προσθέσει για εσάς.

Τα κύρια χαρακτηριστικά για τη ρύθμιση των VMs είναι:

  • Το πρόθεμα του ονόματος των νέων VMs
  • Ο τύπος VM: Αυτό μπορεί να είναι “Azure virtual machine” (για να χρησιμοποιήσετε Azure VMs) ή “Azure Local virtual machine” που επιτρέπει στους hosts να αναπτυχθούν τοπικά ή στην άκρη.
  • Η τοποθεσία, οι ζώνες, οι επιλογές ασφάλειας VM, η εικόνα, η CPU, η μνήμη, το μέγεθος δίσκου…
  • Το VNet, η ομάδα ασφαλείας και οι θύρες που θα εκτεθούν στο διαδίκτυο
  • Είναι δυνατή η ρύθμιση διαπιστευτηρίων για αυτόματη σύνδεση σε τομέα AD, ή χρήση του καταλόγου Entra ID
  • Εάν είναι Entra ID, είναι δυνατή η αυτόματη εγγραφή της νέας VM στο Intune
  • Είναι απαραίτητο να ρυθμιστεί ένα όνομα χρήστη και κωδικός διαχειριστή εκτός εάν το Azure κλιμακώσει τους hosts, σε αυτή την περίπτωση πρέπει να ρυθμιστεί ένα μυστικό με το όνομα χρήστη και ένα άλλο με τον κωδικό
  • Είναι δυνατή η ρύθμιση ενός script που θα εκτελείται για προσαρμοσμένη ρύθμιση

Application Groups

Οι ομάδες εφαρμογών ελέγχουν την πρόσβαση των χρηστών είτε σε έναν πλήρη επιτραπέζιο υπολογιστή είτε σε συγκεκριμένα σύνολα εφαρμογών που είναι διαθέσιμες σε hosts συνεδρίας εντός μιας πισίνας.

Υπάρχουν δύο τύποι ομάδων εφαρμογών:

  • Ομάδες εφαρμογών επιτραπέζιων υπολογιστών, οι οποίες δίνουν στους χρήστες πρόσβαση σε πλήρεις επιτραπέζιους υπολογιστές Windows και συνδεδεμένες εφαρμογές.
  • Ομάδες RemoteApp, οι οποίες επιτρέπουν στους χρήστες να έχουν πρόσβαση σε μεμονωμένες εφαρμογές.
  • Δεν είναι δυνατή η ανάθεση αυτού του τύπου ομάδας εφαρμογών σε Προσωπική Πισίνα.
  • Είναι απαραίτητο να υποδειχθεί η διαδρομή προς το δυαδικό αρχείο που θα εκτελείται μέσα στη VM.

Μια Συγκεντρωμένη Πισίνα μπορεί να έχει μία ομάδα εφαρμογών επιτραπέζιων υπολογιστών και πολλές ομάδες RemoteApp και οι χρήστες μπορούν να ανατεθούν σε πολλές ομάδες εφαρμογών σε διαφορετικές πισίνες hosts.

Όταν ένας χρήστης λαμβάνει πρόσβαση, του δίνεται ο ρόλος Desktop Virtualization User πάνω από την ομάδα εφαρμογών.

Workspaces & Connections

Ένα workspace είναι μια συλλογή ομάδων εφαρμογών.

Για να συνδεθεί στον επιτραπέζιο υπολογιστή ή τις εφαρμογές που έχουν ανατεθεί, είναι δυνατή η σύνδεση από https://windows365.microsoft.com/ent#/devices Και υπάρχουν άλλες μέθοδοι που περιγράφονται στο https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-remote-desktop-client

Όταν ένας χρήστης αποκτά πρόσβαση στον λογαριασμό του, θα παρουσιαστεί χωρισμένος κατά workspaces όλα όσα έχει πρόσβαση. Επομένως, είναι απαραίτητο να προστεθεί κάθε ομάδα εφαρμογών σε ένα workspace ώστε οι καθορισμένες προσβάσεις να είναι ορατές.

Για να μπορέσει ένας χρήστης να έχει πρόσβαση σε έναν επιτραπέζιο υπολογιστή ή μια εφαρμογή, χρειάζεται επίσης τον ρόλο Virtual Machine User Login ή Virtual Machine Administrator Login πάνω από τη VM.

Managed Identities

Δεν είναι δυνατή η ανάθεση διαχειριζόμενων ταυτοτήτων σε host pools, επομένως οι δημιουργημένες VMs μέσα σε μια πισίνα θα τις έχουν. Ωστόσο, είναι δυνατή η ανάθεση συστημικών και χρηστών διαχειριζόμενων ταυτοτήτων στις VMs και στη συνέχεια η πρόσβαση στους τόκους από τα μεταδεδομένα. Στην πραγματικότητα, μετά την εκκίνηση των host pools από το διαδίκτυο, οι 2 παραγόμενες VMs έχουν ενεργοποιημένη την συστημική διαχειριζόμενη ταυτότητα (αν και δεν έχουν καμία άδεια).

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

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks