Az - Virtual Desktop

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Azure Virtual Desktop

Virtual Desktop एक डेस्कटॉप और ऐप वर्चुअलाइजेशन सेवा है। यह उपयोगकर्ताओं को व्यक्तिगत डेस्कटॉप या व्यक्तिगत अनुप्रयोगों के माध्यम से दूरस्थ रूप से पूर्ण Windows डेस्कटॉप, जिसमें Windows 11, Windows 10, या Windows Server शामिल हैं, प्रदान करने में सक्षम बनाता है। यह व्यक्तिगत उपयोग के लिए एकल-सेशन सेटअप और बहु-सेशन वातावरण का समर्थन करता है। उपयोगकर्ता मूल ऐप्स या वेब ब्राउज़र का उपयोग करके लगभग किसी भी डिवाइस से कनेक्ट कर सकते हैं।

Host Pools

Azure Virtual Desktop में होस्ट पूल Azure वर्चुअल मशीनों का संग्रह होते हैं जिन्हें सत्र होस्ट के रूप में कॉन्फ़िगर किया गया है, जो उपयोगकर्ताओं को वर्चुअल डेस्कटॉप और ऐप्स प्रदान करते हैं। दो मुख्य प्रकार हैं:

  • व्यक्तिगत होस्ट पूल, जहां प्रत्येक वर्चुअल मशीन एकल उपयोगकर्ता के लिए समर्पित होती है।

  • इसे इस तरह से कॉन्फ़िगर किया जा सकता है कि व्यवस्थापक विशिष्ट उपयोगकर्ताओं को VMs सौंप सके या इसे स्वचालित रूप से किया जा सके।

  • यह उन लोगों के लिए आदर्श है जिनके पास भारी कार्यभार है क्योंकि प्रत्येक व्यक्ति के पास अपनी खुद की VM होगी। इसके अलावा, वे फ़ाइलें संग्रहीत कर सकेंगे और OS डिस्क में सेटिंग्स कॉन्फ़िगर कर सकेंगे और ये प्रत्येक उपयोगकर्ता के पास अपनी खुद की VM (होस्ट) होने के कारण स्थायी रहेंगी।

  • पूल्ड होस्ट पूल, जहां कई उपयोगकर्ता संसाधनों को साझा करते हैं उपलब्ध सत्र होस्ट पर।

  • यह एक होस्ट पर उपयोगकर्ताओं की अधिकतम संख्या (सत्र) कॉन्फ़िगर करना संभव है।

  • यह पंजीकरण कुंजी का उपयोग करके मैन्युअल रूप से VMs जोड़ना संभव है, या Azure को स्वचालित रूप से स्केल करने की अनुमति देना संभव है बिना पंजीकरण कुंजी का उपयोग किए VMs जोड़ने के विकल्प के। व्यक्तिगत पूलों के लिए VMs को स्वचालित रूप से स्केल करना संभव नहीं है।

  • उपयोगकर्ताओं के सत्रों में फ़ाइलों को स्थायी रखने के लिए, FSlogix का उपयोग करना आवश्यक है।

Session Hosts

ये हैं VMs जिनसे उपयोगकर्ता कनेक्ट होंगे।

  • यदि स्वचालित स्केलिंग का चयन किया गया था, तो एक टेम्पलेट बनाया जाएगा जिसमें होस्ट के लक्षण होंगे जिन्हें पूल के लिए बनाया जाना है।
  • यदि नहीं, तो होस्ट पूल बनाते समय यह संभव है कि आप लक्षण और VMs की संख्या निर्दिष्ट करें जिन्हें आप बनाना चाहते हैं और Azure आपके लिए उन्हें बनाएगा और जोड़ेगा।

VMs को कॉन्फ़िगर करने की मुख्य विशेषताएँ हैं:

  • नए VMs का प्रिफिक्स नाम
  • VM प्रकार: यह "Azure वर्चुअल मशीन" (Azure VMs का उपयोग करने के लिए) या "Azure लोकल वर्चुअल मशीन" हो सकता है जो होस्ट को ऑन-प्रिमाइसेस या एज पर तैनात करने की अनुमति देता है।
  • स्थान, क्षेत्र, VM सुरक्षा विकल्प, छवि, CPU, मेमोरी, डिस्क आकार…
  • इंटरनेट पर उजागर करने के लिए VNet, सुरक्षा समूह और पोर्ट्स
  • स्वचालित रूप से AD डोमेन में शामिल होने के लिए क्रेडेंशियल सेट करना संभव है, या Entra ID निर्देशिका का उपयोग करें
  • यदि Entra ID है, तो नए VM को Intune में स्वचालित रूप से नामांकित करना संभव है
  • एक व्यवस्थापक उपयोगकर्ता नाम और पासवर्ड सेट करना आवश्यक है अन्यथा Azure होस्ट को स्केल करेगा, इस मामले में एक गुप्त को उपयोगकर्ता नाम के साथ और एक अन्य पासवर्ड के साथ कॉन्फ़िगर किया जाना चाहिए
  • कस्टम कॉन्फ़िगरेशन के लिए एक स्क्रिप्ट को निष्पादित करने के लिए कॉन्फ़िगर करना संभव है

Application Groups

Application groups उपयोगकर्ता को या तो एक पूर्ण डेस्कटॉप या होस्ट पूल के भीतर सत्र होस्ट पर उपलब्ध विशिष्ट सेट के अनुप्रयोगों तक पहुंच को नियंत्रित करते हैं।

दो प्रकार के एप्लिकेशन समूह हैं:

  • डेस्कटॉप एप्लिकेशन समूह, जो उपयोगकर्ताओं को पूर्ण Windows डेस्कटॉप और जुड़े ऐप्स तक पहुंच प्रदान करते हैं।
  • RemoteApp समूह, जो उपयोगकर्ताओं को व्यक्तिगत अनुप्रयोगों तक पहुंच की अनुमति देते हैं।
  • इस प्रकार के एप्लिकेशन समूह को व्यक्तिगत पूल में सौंपना संभव नहीं है।
  • VM के अंदर निष्पादित करने के लिए बाइनरी का पथ निर्दिष्ट करना आवश्यक है।

एक पूल्ड पूल में एक डेस्कटॉप एप्लिकेशन समूह और कई RemoteApp समूह हो सकते हैं और उपयोगकर्ताओं को विभिन्न होस्ट पूलों में कई एप्लिकेशन समूहों में सौंपा जा सकता है।

जब एक उपयोगकर्ता को पहुँच दी जाती है तो उसे एप्लिकेशन समूह पर 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 पर अन्य विधियाँ वर्णित हैं।

जब एक उपयोगकर्ता अपने खाते तक पहुँचता है, तो उसे कार्यस्थलों द्वारा अलग किए गए सभी चीज़ें दिखाई देंगी जिन तक उसकी पहुँच है। इसलिए, परिभाषित पहुँच को देखने के लिए प्रत्येक एप्लिकेशन समूह को एक कार्यक्षेत्र में जोड़ना आवश्यक है।

एक उपयोगकर्ता को डेस्कटॉप या ऐप तक पहुँचने के लिए, उसे VM पर Virtual Machine User Login या Virtual Machine Administrator Login की भूमिका भी चाहिए।

Managed Identities

होस्ट पूलों को प्रबंधित पहचान सौंपना संभव नहीं है, इसलिए एक पूल के अंदर बनाए गए VMs में उन्हें होगा।
हालांकि, VMs को सिस्टम और उपयोगकर्ता प्रबंधित पहचान सौंपना संभव है और फिर मेटाडेटा से टोकन तक पहुँच प्राप्त करना संभव है। वास्तव में, वेब से होस्ट पूल लॉन्च करने के बाद, 2 उत्पन्न VMs में सिस्टम द्वारा सौंपित प्रबंधित पहचान सक्षम होती है (हालांकि इसके पास कोई अनुमति नहीं होती)।

Enumeration

bash
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"

प्रिवेस्क

Az - Virtual Desktop Privesc

पोस्ट एक्सप्लोइटेशन और पर्सिस्टेंस

Az - Virtual Desktop Post Exploitation

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें