Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az

This commit is contained in:
Translator
2025-02-26 16:08:33 +00:00
parent 0609b0e143
commit b373b5ba77
5 changed files with 136 additions and 65 deletions
+2 -1
View File
@@ -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 - 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 - 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 - 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 - 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 - 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) - [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 - 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 - 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 - 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 - 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 - 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) - [Az - Azure IAM Privesc (Authorization)](pentesting-cloud/azure-security/az-privilege-escalation/az-authorization-privesc.md)
@@ -0,0 +1,21 @@
# Az - VMs & Network Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## वर्चुअल डेस्कटॉप
वर्चुअल डेस्कटॉप के बारे में अधिक जानकारी के लिए निम्नलिखित पृष्ठ देखें:
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### सामान्य तकनीकें
- **स्टोरेज अकाउंट से MSIX पैकेज को ओवरराइट करें** ताकि उस ऐप का उपयोग करते हुए किसी भी VM में RCE प्राप्त किया जा सके।
- एक रिमोटऐप में **बाइनरी को निष्पादित करने के लिए पथ बदलना** संभव है।
- **ऐप्स से शेल में भागना** ताकि RCE प्राप्त किया जा सके।
- **Azure VMs** से किसी भी पोस्ट एक्सप्लोइटेशन हमले और स्थिरता।
- **कस्टम कॉन्फ़िगरेशन लागू करने के लिए पूल में निष्पादित होने के लिए एक स्क्रिप्ट कॉन्फ़िगर करना** संभव है।
{{#include ../../../banners/hacktricks-training.md}}
@@ -4,14 +4,24 @@
## Azure Virtual Desktop Privesc ## Azure Virtual Desktop Privesc
Azure Virtual Desktop के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
../az-services/az-virtual-desktop.md
{{#endref}}
### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action` ### `Microsoft.DesktopVirtualization/hostPools/retrieveRegistrationToken/action`
आप होस्ट पूल के भीतर वर्चुअल मशीनों को पंजीकृत करने के लिए उपयोग किए जाने वाले पंजीकरण टोकन को प्राप्त कर सकते हैं। आप होस्ट पूल के भीतर वर्चुअल मशीनों को पंजीकृत करने के लिए उपयोग किए जाने वाले पंजीकरण टोकन को प्राप्त कर सकते हैं।
```bash ```bash
az desktopvirtualization hostpool retrieve-registration-token -n testhostpool -g Resource_Group_1 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 ```bash
az rest --method PUT \ az rest --method PUT \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments/<NEW_ROLE_ASSIGNMENT_GUID>?api-version=2022-04-01" \ --uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DesktopVirtualization/applicationGroups/<APP_GROUP_NAME>/providers/Microsoft.Authorization/roleAssignments/<NEW_ROLE_ASSIGNMENT_GUID>?api-version=2022-04-01" \
@@ -22,12 +32,6 @@ az rest --method PUT \
} }
}' }'
``` ```
इसके अलावा, आप वर्चुअल मशीन के उपयोगकर्ता और पासवर्ड को बदल सकते हैं ताकि आप इसमें पहुँच सकें। ध्यान दें कि किसी उपयोगकर्ता को डेस्कटॉप या ऐप तक पहुँचने के लिए, उसे VM पर `Virtual Machine User Login` या `Virtual Machine Administrator Login` भूमिका की भी आवश्यकता होती है।
```bash
az vm user update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
@@ -251,7 +251,7 @@ az vm application set \
### `Microsoft.Compute/virtualMachines/runCommand/action` ### `Microsoft.Compute/virtualMachines/runCommand/action`
यह Azure द्वारा VMs में **मनमाने कमांड निष्पादित करने के लिए प्रदान किया गया सबसे बुनियादी तंत्र है:** यह Azure द्वारा VMs में **मनचाहे कमांड निष्पादित करने** के लिए प्रदान किया गया सबसे बुनियादी तंत्र है:
{{#tabs }} {{#tabs }}
{{#tab name="Linux" }} {{#tab name="Linux" }}
@@ -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` ## `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 ```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/TestManagedIdentity1 \
/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2 /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.ManagedIdentity/userAssignedIdentities/TestManagedIdentity2
``` ```
फिर हमलावर को **VM को किसी तरह से समझौता करना होगा** ताकि वह असाइन किए गए प्रबंधित पहचान से टोकन चुरा सके। **अधिक जानकारी के लिए देखें**: फिर हमलावर को **VM को किसी न किसी तरह से समझौता करना होगा** ताकि वह असाइन किए गए प्रबंधित पहचान से टोकन चुरा सके। **अधिक जानकारी के लिए देखें**:
{{#ref}} {{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
{{#endref}} {{#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 <RESOURCE_GROUP_NAME> \
--name <VM_NAME> \
--username <USERNAME> \
--password <NEW_PASSWORD>
```
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action ### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
[**दस्तावेज़ों**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute) के अनुसार, यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक व्यवस्थापक के रूप में प्रबंधित करने देती है। तो ऐसा लगता है कि यह WAC को VMs को नियंत्रित करने के लिए पहुंच देता है... According to the [**docs**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), यह अनुमति आपको Windows Admin Center के माध्यम से अपने संसाधन के OS को एक प्रशासक के रूप में प्रबंधित करने देती है। इसलिए ऐसा लगता है कि यह VMs को नियंत्रित करने के लिए WAC तक पहुंच प्रदान करता है...
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
@@ -4,61 +4,104 @@
## Azure Virtual Desktop ## 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 वर्चुअल मशीनों का संग्रह होते हैं जिन्हें सेशन होस्ट के रूप में कॉन्फ़िगर किया गया है, जो उपयोगकर्ताओं को वर्चुअल डेस्कटॉप और ऐप्स प्रदान करते हैं। दो मुख्य प्रकार हैं: Azure Virtual Desktop में होस्ट पूल Azure वर्चुअल मशीनों का संग्रह होते हैं जिन्हें सत्र होस्ट के रूप में कॉन्फ़िगर किया गया है, जो उपयोगकर्ताओं को वर्चुअल डेस्कटॉप और ऐप्स प्रदान करते हैं। दो मुख्य प्रकार हैं:
- **व्यक्तिगत होस्ट पूल**, जहां प्रत्येक वर्चुअल मशीन एकल उपयोगकर्ता के लिए समर्पित होती है, इसके वातावरण के साथ
- **पूल्ड होस्ट पूल**, जहां कई उपयोगकर्ता किसी भी उपलब्ध सेशन होस्ट पर संसाधनों को साझा करते हैं। इसमें एक कॉन्फ़िगर करने योग्य सेशन सीमा होती है और एक सेशन होस्ट कॉन्फ़िगरेशन Azure Virtual Desktop को कॉन्फ़िगरेशन के आधार पर सेशन होस्ट बनाने के लिए स्वचालित करने की अनुमति देता है।
प्रत्येक होस्ट पूल में एक **पंजीकरण टोकन** होता है जिसका उपयोग होस्ट पूल के भीतर वर्चुअल मशीनों को पंजीकृत करने के लिए किया जाता है। - **व्यक्तिगत होस्ट पूल**, जहां प्रत्येक वर्चुअल मशीन एकल उपयोगकर्ता के लिए समर्पित होती है।
- इसे इस तरह से कॉन्फ़िगर किया जा सकता है कि **व्यवस्थापक विशिष्ट उपयोगकर्ताओं को** VMs सौंप सके या इसे **स्वचालित रूप से** किया जा सके।
- यह उन लोगों के लिए आदर्श है जिनके पास भारी कार्यभार है क्योंकि प्रत्येक व्यक्ति के पास अपनी खुद की VM होगी। इसके अलावा, वे फ़ाइलें संग्रहीत कर सकेंगे और OS डिस्क में सेटिंग्स कॉन्फ़िगर कर सकेंगे और ये **प्रत्येक उपयोगकर्ता के पास अपनी खुद की VM (होस्ट)** होने के कारण स्थायी रहेंगी।
### Application groups & Workspace - **पूल्ड होस्ट पूल**, जहां कई **उपयोगकर्ता संसाधनों को साझा करते हैं** उपलब्ध सत्र होस्ट पर।
एप्लिकेशन समूह **उपयोगकर्ता पहुंच को नियंत्रित करते हैं** या तो एक पूर्ण डेस्कटॉप या होस्ट पूल के भीतर सेशन होस्ट पर उपलब्ध विशिष्ट सेट के अनुप्रयोगों के लिए। दो प्रकार हैं: - यह एक होस्ट पर **उपयोगकर्ताओं की अधिकतम संख्या** (सत्र) कॉन्फ़िगर करना संभव है
- **डेस्कटॉप एप्लिकेशन समूह**, जो उपयोगकर्ताओं को एक पूर्ण Windows डेस्कटॉप (व्यक्तिगत और पूल्ड होस्ट पूल दोनोंाथ उपलब्ध) तक पहुंच प्रदान करते है - यह **पंजीकरण कुंजी** का उपयोग करके मैन्युअल रूप से VMs **जोड़ना** संभव है, या **Azure को स्वचालित रूप से स्केल करने** की अनुमति देना संभव है बिना पंजीकरण कुंजी का उपयोग किए VMs जोड़ने के विकल्प के। व्यक्तिगत पूलों के लिए VMs्वचालित रूप से स्केल करना संभव नहीं है
- **RemoteApp समूह**, जो उपयोगकर्ताओं को व्यक्तिगत प्रकाशित अनुप्रयोगों तक पहुंच की अनुमति देते हैं (केवल पूल्ड होस्ट पूल के साथ उपलब्ध) - उपयोगकर्ताओं के सत्रों में फ़ाइलों को स्थायी रखने के लिए, **FSlogix** का उपयोग करना आवश्यक है
एक होस्ट पूल में एक डेस्कटॉप एप्लिकेशन समूह हो सकता है लेकिन कई RemoteApp समूह हो सकते हैं। उपयोगकर्ताओं को विभिन्न होस्ट पूल में कई एप्लिकेशन समूहों में असाइन किया जा सकता है। यदि एक उपयोगकर्ता को एक ही होस्ट पूल के भीतर डेस्कटॉप और RemoteApp समूहों में असाइन किया गया है, तो वे केवल प्रशासकों द्वारा सेट किए गए पसंदीदा समूह प्रकार के संसाधनों को देखते हैं।
एक **वर्कस्पेस** एक **एप्लिकेशन समूहों का संग्रह** है, जो उपयोगकर्ताओं को उनके लिए असाइन किए गए डेस्कटॉप और एप्लिकेशन समूहों तक पहुंच प्रदान करता है। प्रत्येक एप्लिकेशन समूह को एक वर्कस्पेस से लिंक किया जाना चाहिए, और यह एक समय में केवल एक वर्कस्पेस का हिस्सा हो सकता है। ### Session Hosts
### Key Features ये हैं **VMs जिनसे उपयोगकर्ता कनेक्ट होंगे।**
- **लचीला VM निर्माण**: Azure वर्चुअल मशीनों को सीधे बनाएं या बाद में Azure लोकल वर्चुअल मशीनें जोड़ें।
- **सुरक्षा विशेषताएँ**: उन्नत VM सुरक्षा के लिए Trusted Launch (सुरक्षित बूट, vTPM, अखंडता निगरानी) सक्षम करें (एक वर्चुअल नेटवर्क की आवश्यकता है)। Azure फ़ायरवॉल को एकीकृत कर सकते हैं और नेटवर्क सुरक्षा समूहों के माध्यम से ट्रैफ़िक को नियंत्रित कर सकते है - यदि स्वचालित स्केलिंग का चयन किया गया था, तो एक टेम्पलेट बनाया जाएगा जिसमें **होस्ट के लक्षण** होंगे जिन्हें पूल के लिए बनाया जाना है।
- **डोमेन जॉइन**: अनुकूलन योग्य कॉन्फ़िगरेशन के साथ Active Directory डोमेन जॉइन का समर्थन - यदि नहीं, तो होस्ट पूल बनाते समय यह संभव है कि आप **लक्षण और 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://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) पर अन्य विधियाँ वर्णित हैं।
जब एक उपयोगकर्ता अपने खाते तक पहुँचता है, तो उसे **कार्यस्थलों द्वारा अलग किए गए सभी चीज़ें दिखाई देंगी** जिन तक उसकी पहुँच है। इसलिए, परिभाषित पहुँच को देखने के लिए **प्रत्येक एप्लिकेशन समूह को एक कार्यक्षेत्र में जोड़ना** आवश्यक है।
एक उपयोगकर्ता को डेस्कटॉप या ऐप तक पहुँचने के लिए, उसे VM पर **`Virtual Machine User Login`** या **`Virtual Machine Administrator Login`** की भूमिका भी चाहिए।
### Managed Identities
होस्ट पूलों को प्रबंधित पहचान सौंपना संभव नहीं है, इसलिए एक पूल के अंदर बनाए गए VMs में उन्हें होगा।
हालांकि, **VMs को सिस्टम और उपयोगकर्ता प्रबंधित पहचान सौंपना संभव है** और फिर मेटाडेटा से टोकन तक पहुँच प्राप्त करना संभव है। वास्तव में, वेब से होस्ट पूल लॉन्च करने के बाद, 2 उत्पन्न VMs में सिस्टम द्वारा सौंपित प्रबंधित पहचान सक्षम होती है (हालांकि इसके पास कोई अनुमति नहीं होती)।
### Enumeration ### Enumeration
```bash ```bash
az extension add --name desktopvirtualization az extension add --name desktopvirtualization
# List HostPool of a Resource group # List HostPools
az desktopvirtualization hostpool list --resource-group <Resource_Group> az desktopvirtualization hostpool list
# List Workspaces
az desktopvirtualization workspace list
# List Application Groups # List Application Groups
az desktopvirtualization applicationgroup list --resource-group <Resource_Group> az desktopvirtualization applicationgroup list
# 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"
# List Applications in a Application Group # 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" 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 # List Assigned Users to the Application Group
az rest \ az rest \
--method GET \ --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" \ --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>")' | 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 # List App Attach packages
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
az rest --method GET --url "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DesktopVirtualization/appAttachPackages?api-version=2024-04-03" 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 # 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" 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,35 +111,27 @@ az rest --method GET --url "https://management.azure.com/subscriptions/{subscrip
# List private endpoint connections associated with hostpool. # 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" 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. # 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" 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. # 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" 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. # 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 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)
## प्रिवेस्क ## प्रिवेस्क
{{#ref}} {{#ref}}
../az-privilege-escalation/az-virtual-desktop-privesc.md ../az-privilege-escalation/az-virtual-desktop-privesc.md
{{#endref}} {{#endref}}
## पोस्ट एक्सप्लोइटेशन और पर्सिस्टेंस
{{#ref}}
../az-post-exploitation/az-virtual-desktop-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}