Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-01-10 13:19:32 +00:00
parent f8a9d0b82a
commit f548fb8778
2 changed files with 77 additions and 31 deletions

View File

@@ -4,21 +4,21 @@
## Basic Information
Azure Automation Accounts Microsoft Azure में क्लाउड-आधारित सेवाएँ हैं जो **कार्य स्वचालित** करने में मदद करती हैं जैसे संसाधन प्रबंधन, कॉन्फ़िगरेशन, और Azure और ऑन-प्रिमाइसेस वातावरण में अपडेट। ये **Runbooks** (स्वचालन के लिए स्क्रिप्ट जो निष्पादित होती हैं), **अनुसूचियाँ**, और **हाइब्रिड कार्यकर्ता समूह** प्रदान करती हैं ताकि स्वचालन **नौकरियों** को चलाया जा सके, जो कोड के रूप में बुनियादी ढाँचा (IaC) और प्रक्रिया स्वचालन को सक्षम बनाता है जिससे क्लाउड संसाधनों के प्रबंधन में दक्षता और स्थिरता में सुधार होता है।
Azure Automation Accounts Microsoft Azure में क्लाउड-आधारित सेवाएँ हैं जो **कार्य स्वचालित** करने में मदद करती हैं जैसे संसाधन प्रबंधन, कॉन्फ़िगरेशन, और Azure और ऑन-प्रिमाइसेस वातावरण में अपडेट। ये **Runbooks** (स्वचालन के लिए स्क्रिप्ट जो निष्पादित होती हैं), **अनुसूचियाँ**, और **हाइब्रिड कार्यकर्ता समूह** प्रदान करती हैं ताकि स्वचालन **कार्य** चला जा सके, जो कोड के रूप में बुनियादी ढाँचा (IaC) और प्रक्रिया स्वचालन को सक्षम बनाता है जिससे क्लाउड संसाधनों के प्रबंधन में दक्षता और स्थिरता में सुधार होता है।
### Settings
- **Credentials**: पासवर्ड केवल स्वचालन खाते के भीतर एक रनबुक में सुलभ है, इन्हें **उपयोगकर्ता नाम और पासवर्ड को सुरक्षित रूप से स्टोर करने** के लिए उपयोग किया जाता है।
- **Variables**: **कॉन्फ़िगरेशन डेटा** को स्टोर करने के लिए उपयोग किया जाता है जिसे रनबुक में उपयोग किया जा सकता है। इसमें संवेदनशील जानकारी जैसे API कुंजी भी हो सकती है। यदि वेरिएबल **एन्क्रिप्टेड** है, तो यह केवल स्वचालन खाते के भीतर एक रनबुक में उपलब्ध है।
- **Credentials**: पासवर्ड केवल स्वचालन खाते के भीतर एक रनबुक के भीतर सुलभ है, इन्हें **उपयोगकर्ता नाम और पासवर्ड को सुरक्षित रूप से स्टोर करने** के लिए उपयोग किया जाता है।
- **Variables**: **कॉन्फ़िगरेशन डेटा** को स्टोर करने के लिए उपयोग किया जाता है जिसे रनबुक में उपयोग किया जा सकता है। इसमें संवेदनशील जानकारी जैसे API कुंजी भी हो सकती है। यदि वेरिएबल **एन्क्रिप्टेड** है, तो यह केवल स्वचालन खाते के भीतर एक रनबुक के भीतर उपलब्ध है।
- **Certificates**: **सर्टिफिकेट** को स्टोर करने के लिए उपयोग किया जाता है जिसे रनबुक में उपयोग किया जा सकता है।
- **Connections**: बाहरी सेवाओं के लिए **कनेक्शन जानकारी** को स्टोर करने के लिए उपयोग किया जाता है। इसमें **संवेदनशील जानकारी** हो सकती है।
- **Network Access**: इसे **सार्वजनिक** या **निजी** पर सेट किया जा सकता है।
## Runbooks & Jobs
Azure Automation में एक Runbook एक **स्क्रिप्ट है जो स्वचालित रूप से कार्य करती है** आपके क्लाउड वातावरण के भीतर। Runbooks को PowerShell, Python, या ग्राफिकल संपादकों में लिखा जा सकता है। ये प्रशासनिक कार्यों जैसे VM प्रबंधन, पैचिंग, या अनुपालन जांच को स्वचालित करने में मदद करते हैं।
Azure Automation में एक Runbook एक **स्क्रिप्ट है जो स्वचालित रूप से कार्य करती है** आपके क्लाउड वातावरण के भीतर। Runbooks को PowerShell, Python, या ग्राफिकल संपादकों में लिखा जा सकता है। ये VM प्रबंधन, पैचिंग, या अनुपालन जांच जैसे प्रशासनिक कार्यों को स्वचालित करने में मदद करते हैं।
**Runbooks** के भीतर **कोड** में **संवेदनशील जानकारी** (जैसे क्रेडेंशियल्स) हो सकती है।
**Runbooks** के भीतर स्थित **कोड** में **संवेदनशील जानकारी** (जैसे क्रेडेंशियल्स) हो सकती है।
जाएँ `Automation Accounts` --> `<Select Automation Account>` --> `Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections`
@@ -35,22 +35,22 @@ Azure Automation में एक Runbook एक **स्क्रिप्ट
Runbook निष्पादित करने के 3 मुख्य तरीके हैं:
- **Schedules**: इन्हें **विशिष्ट समय** या **अवधि** पर Runbooks को **प्रेरित** करने के लिए उपयोग किया जाता है।
- **Webhooks**: ये **HTTP endpoints** हैं जिन्हें **बाहरी सेवाओं** से Runbooks को **प्रेरित** करने के लिए उपयोग किया जा सकता है। ध्यान दें कि वेबहुक URL **निर्माण के बाद दिखाई नहीं देता**
- **Webhooks**: ये **HTTP endpoints** हैं जिन्हें **बाहरी सेवाओं** से Runbooks को **प्रेरित** करने के लिए उपयोग किया जा सकता है। ध्यान दें कि वेबहुक URL **निर्माण के बाद** **दृश्यमान नहीं** होता है
- **Manual Trigger**: आप Azure Portal और CLI से एक Runbook को **हाथ से प्रेरित** कर सकते हैं।
### Source Control
यह **Github, Azure Devops (Git) और Azure Devops (TFVC)** से Runbooks को आयात करने की अनुमति देता है। यह संभव है कि यह स्वचालन खाते के लिए रिपॉजिटरी के Runbooks को प्रकाशित करने के लिए संकेत दे और यह भी संभव है कि **रिपॉजिटरी से परिवर्तनों को Azure Automation खाते में समन्वयित करने** के लिए संकेत दे
यह **Github, Azure Devops (Git) और Azure Devops (TFVC)** से Runbooks को आयात करने की अनुमति देता है। यह संभव है कि यह स्वचालन खाते के लिए रिपॉजिटरी के Runbooks को प्रकाशित करने के लिए इंगित किया जाए और यह भी संभव है कि **रिपॉजिटरी से परिवर्तनों को Azure Automation खाते में समन्वयित करने** के लिए इंगित किया जाए
जब समन्वय सक्षम होता है, तो **Github रिपॉजिटरी में एक वेबहुक बनाया जाता है** ताकि हर बार एक पुश इवेंट होने पर समन्वय को प्रेरित किया जा सके। वेबहुक URL का उदाहरण: `https://f931b47b-18c8-45a2-9d6d-0211545d8c02.webhook.eus.azure-automation.net/webhooks?token=DRjQyFiOrUtz%2fw7o23XbDpOlTe1%2bUqPQm4pQH2WBfJg%3d`
ध्यान दें कि ये वेबहुक **Github रिपॉजिटरी से संबंधित रनबुक में सूचीबद्ध करते समय दिखाई नहीं देंगे**। यह भी ध्यान दें कि एक बार बनाए जाने के बाद **स्रोत नियंत्रण का रिपॉजिटरी URL बदलना संभव नहीं है**
ध्यान दें कि ये वेबहुक **दृश्यमान नहीं होंगे** जब Github रिपॉजिटरी से संबंधित रनबुक में वेबहुक की सूची बनाई जाती है। यह भी ध्यान दें कि एक बार बनाए जाने के बाद **स्रोत नियंत्रण का रिपॉजिटरी URL बदलना संभव नहीं है**
कॉन्फ़िगर किए गए स्रोत नियंत्रण के काम करने के लिए, **Azure Automation Account** को एक प्रबंधित पहचान (सिस्टम या उपयोगकर्ता) के साथ **`Contributor`** भूमिका होनी चाहिए। इसके अलावा, Automation Account को उपयोगकर्ता प्रबंधित पहचान असाइन करने के लिए, इसे केवल वेरिएबल **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** को **उपयोगकर्ता प्रबंधित पहचान क्लाइंट ID** पर सेट करके किया जा सकता है
कॉन्फ़िगर किए गए स्रोत नियंत्रण के काम करने के लिए, **Azure Automation Account** को एक प्रबंधित पहचान (सिस्टम या उपयोगकर्ता) के साथ **`Contributor`** भूमिका होनी चाहिए। इसके अलावा, स्वचालन खाते के लिए उपयोगकर्ता प्रबंधित पहचान को असाइन करने के लिए, यह आवश्यक है कि उपयोगकर्ता MI के क्लाइंट ID को वेरिएबल **`AUTOMATION_SC_USER_ASSIGNED_IDENTITY_ID`** में इंगित किया जाए
### Runtime Environments
जब एक Runbook बनाया जाता है, तो रनटाइम वातावरण का चयन करना संभव है। डिफ़ॉल्ट रूप से, निम्नलिखित रनटाइम वातावरण उपलब्ध हैं:
जब एक Runbook बनाया जाता है तो रनटाइम वातावरण का चयन करना संभव होता है। डिफ़ॉल्ट रूप से, निम्नलिखित रनटाइम वातावरण उपलब्ध हैं:
- **Powershell 5.1**
- **Powershell 7.1**
@@ -59,16 +59,23 @@ Runbook निष्पादित करने के 3 मुख्य तर
- **Python 3.8**
- **Python 2.7**
हालांकि, यह भी संभव है कि आप इनमें से किसी एक का उपयोग करके **अपना खुद का वातावरण** बनाएँ। Python के मामले में, यह संभव है कि आप उस वातावरण में उपयोग किए जाने वाले `.whl` पैकेज अपलोड करें। PowerShell के मामले में, यह संभव है कि आप रनटाइम में रखने के लिए मॉड्यूल के साथ `.zip` पैकेज अपलोड करें।
हालांकि, यह भी संभव है कि आप **अपने स्वयं के वातावरण** बनाएँ, इनमें से किसी एक को आधार के रूप में उपयोग करके। Python के मामले में, यह संभव है कि आप उस वातावरण में उपयोग के लिए `.whl` पैकेज अपलोड करें। PowerShell के मामले में, यह संभव है कि आप रनटाइम में रखने के लिए मॉड्यूल के साथ `.zip` पैकेज अपलोड करें।
### Hybrid Worker
### Hybrid Worker Groups
एक Runbook को **Azure के भीतर एक कंटेनर** में या **हाइब्रिड र्कर** (गैर-Azure मशीन) में चलाया जा सकता है।\
**Log Analytics Agent** को VM पर तैनात किया जाता है ताकि इसे एक हाइब्रिड कार्यकर्ता के रूप में पंजीकृत किया जा सके।\
हाइब्रिड कार्यकर्ता नौकरियाँ **SYSTEM** के रूप में Windows पर और **nxautomation** खाते के रूप में Linux पर चलती हैं।\
प्रत्येक हाइब्रिड कार्यकर्ता एक **हाइब्रिड कार्यकर्ता समूह** में पंजीकृत होता है।
Azure Automation में, रनबुक के लिए डिफ़ॉल्ट निष्पादन वातावरण **Azure Sandbox** है, जो Azure द्वारा प्रबंधित एक क्लाउड-आधारित प्लेटफ़ॉर्म है, जो Azure संसाधनों से संबंधित कार्यों के लिए उपयुक्त है। हालाँकि, इस सैंडबॉक्स में सीमाएँ हैं, जैसे ऑन-प्रिमाइसेस संसाधनों तक सीमित पहुँच और निष्पादन समय और संसाधन उपयोग पर प्रतिबंध। इन सीमाओं को पार करने के लिए, हाइब्रिड कार्यकर्ता समूहों का उपयोग किया जाता है। एक हाइब्रिड कार्यकर्ता समूह में **आपकी अपनी मशीनों पर स्थापित एक या अधिक हाइब्रिड रनबुक कार्कर्ता** होते हैं, चाहे वे ऑन-प्रिमाइसेस हों, अन्य क्लाउड वातावरण में हों या Azure VMs में। यह सेटअप रनबुक को सीधे इन मशीनों पर निष्पादित करने की अनुमति देता है, स्थानीय संसाधनों तक सीधी पहुँच प्रदान करता है, लंबे और अधिक संसाधन-गहन कार्यों को चलाने की क्षमता, और Azure की तात्कालिक पहुँच से परे वातावरण के साथ बातचीत करने की लचीलापन।
इसलिए, यदि आप **Windows Hybrid Worker** में एक **Runbook** चलाने का विकल्प चुनते है, तो आप **System** के रूप में एक बाहरी मशीन के भीतर **मनमाने आदेश** निष्पादित करेंगे (अच्छी पिवट तकनीक)।
जब एक हाइब्रिड कार्यकर्ता समूह बनाया जाता है, तो उपयोग करने के लिए **क्रेडेंशियल्स** को इंगित करना आवश्यक होता है। 2 विकल्प हैं:
- **Default credentials**: आपको क्रेडेंशियल्स प्रदान करने की आवश्यकता नहीं है और रनबुक VMs के भीतर **System** के रूप में निष्पादित होंगे।
- **Specific credentials**: आपको स्वचालन खाते के भीतर क्रेडेंशियल्स ऑब्जेक्ट का नाम प्रदान करने की आवश्यकता है, जिसका उपयोग **VMs के भीतर रनबुक्स को निष्पादित करने** के लिए किया जाएगा। इसलिए, इस मामले में, यह संभव हो सकता है कि **VMs के लिए मान्य क्रेडेंशियल्स चुराए जाएँ**
इसलिए, यदि आप **Windows Hybrid Worker** में एक **Runbook** चलाने का विकल्प चुनते हैं, तो आप **System** के रूप में एक बाहरी मशीन के भीतर **मनमाने आदेश** निष्पादित करेंगे (अच्छा पिवट तकनीक)।
इसके अलावा, यदि हाइब्रिड कार्यकर्ता Azure में अन्य प्रबंधित पहचानों के साथ चल रहा है, तो रनबुक **रनबुक की प्रबंधित पहचान और VM की सभी प्रबंधित पहचानों तक पहुँच प्राप्त कर सकेगा** जो मेटाडेटा सेवा से हैं।
> [!TIP]
> याद रखें कि **मेटाडेटा सेवा** का एक अलग URL है (**`http://169.254.169.254`**) उस सेवा से जहाँ स्वचालन खाते की प्रबंधित पहचान टोकन प्राप्त किया जाता है (**`IDENTITY_ENDPOINT`**).
### State Configuration (SC)
@@ -77,7 +84,7 @@ Runbook निष्पादित करने के 3 मुख्य तर
Automation Accounts भी **State Configuration (SC)** का समर्थन करते हैं, जो एक विशेषता है जो आपकी VMs की **स्थिति** को **कॉन्फ़िगर** और **रखरखाव** करने में मदद करती है। यह **Windows** और **Linux** मशीनों पर DSC कॉन्फ़िगरेशन को **बनाने** और **लागू करने** की अनुमति देता है।
एक हमलावर के दृष्टिकोण से यह दिलचस्प था क्योंकि यह **सभी कॉन्फ़िगर की गई VMs में मनमाने PS कोड को निष्पादित करने** की अनुमति देता था जिससे इन VMs की प्रबंधित पहचानों के लिए विशेषाधिकार बढ़ाने की अनुमति मिलती थी, संभावित रूप से नए नेटवर्क में पिवटिंग... इसके अलावा, कॉन्फ़िगरेशन में **संवेदनशील जानकारी** हो सकती है।
हमलावरों के दृष्टिकोण से यह दिलचस्प था क्योंकि यह **सभी कॉन्फ़िगर की गई VMs में मनमाने PS कोड को निष्पादित करने** की अनुमति देता था जिससे इन VMs की प्रबंधित पहचानों के लिए विशेषाधिकार बढ़ाने की अनुमति मिलती थी, संभावित रूप से नए नेटवर्क में पिवटिंग... इसके अलावा, कॉन्फ़िगरेशन में **संवेदनशील जानकारी** हो सकती है।
## Enumeration
```bash
@@ -180,6 +187,15 @@ az automation dsc configuration show --automation-account-name <AUTOMATION-ACCOU
# Get State Configuration content
az automation dsc configuration show-content --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <DSC-CONFIG-NAME>
# Get hybrid worker groups for an automation account
az automation hrwg list --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME>
# Get hybrid worker group details
az automation hrwg show --automation-account-name <AUTOMATION-ACCOUNT> --resource-group <RG-NAME> --name <HYBRID-WORKER-GROUP>
# Get more details about a hybrid worker group (like VMs inside it)
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>>/providers/Microsoft.Automation/automationAccounts/<automation-account-name>/hybridRunbookWorkerGroups/<hybrid-worker-group-name>/hybridRunbookWorkers?&api-version=2021-06-22"
```
```powershell