Translated ['src/pentesting-cloud/azure-security/README.md'] to hi

This commit is contained in:
Translator
2025-03-04 22:09:25 +00:00
parent c7855ab3ae
commit 42bb5d3538
2 changed files with 67 additions and 42 deletions

View File

@@ -12,15 +12,15 @@ az-basic-information/
## Azure Pentester/Red Team Methodology
AZURE वातावरण का ऑडिट करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन से **सेवाएँ उपयोग की जा रही हैं**, क्या **प्रदर्शित किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं।
AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन से **सेवाएँ उपयोग की जा रही हैं**, क्या **प्रदर्शित किया जा रहा है**, किसके पास **पहुँच** है, और आंतरिक Azure सेवाएँ और **बाहरी सेवाएँ** कैसे जुड़ी हुई हैं।
Red Team के दृष्टिकोण से, **Azure वातावरण को समझौता करने का पहला कदम** कुछ **foothold** प्राप्त करना है।
### External enum & Initial Access
पहला कदम निश्चित रूप से उस टेनेन्ट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और foothold प्राप्त करने की कोशिश करना है।
पहला कदम निश्चित रूप से उस टेनेट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और एक foothold प्राप्त करने की कोशिश करना है।
डोमेन नाम के आधार पर यह जानना संभव है **क्या कंपनी Azure का उपयोग कर रही है**, **टेनेन्ट ID** प्राप्त करें, उसी टेनेन्ट में अन्य **मान्य डोमेन** प्राप्त करें (यदि अधिक हैं) और **संबंधित जानकारी** प्राप्त करें जैसे कि SSO सक्षम है या नहीं, मेल कॉन्फ़िगरेशन, मान्य उपयोगकर्ता ईमेल...
डोमेन नाम के आधार पर यह जानना संभव है कि **क्या कंपनी Azure का उपयोग कर रही है**, **टेनेट ID** प्राप्त करें, उसी टेनेट में अन्य **मान्य डोमेन** प्राप्त करें (यदि अधिक हैं) और **संबंधित जानकारी** प्राप्त करें जैसे कि SSO सक्षम है या नहीं, मेल कॉन्फ़िगरेशन, मान्य उपयोगकर्ता ईमेल...
**बाहरी एन्यूमरेशन** करने के लिए निम्नलिखित पृष्ठ देखें:
@@ -28,45 +28,45 @@ Red Team के दृष्टिकोण से, **Azure वातावर
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
इस जानकारी के साथ foothold प्राप्त करने के लिए सबसे सामान्य तरीके हैं:
- **OSINT**: GitHub या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर **leaks** की जांच करें जो **credentials** या दिलचस्प जानकारी रख सकत है।
इस जानकारी के साथ, foothold प्राप्त करने के लिए सबसे सामान्य तरीके हैं:
- **OSINT**: Github या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर **leaks** की जांच करें जो **credentials** या दिलचस्प जानकारी रख सकत है
- **Password** पुन: उपयोग, leaks या [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- एक कर्मचारी से क्रेडेंशियल्स खरीदें
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (क्रेडेंशियल्स या Oauth ऐप)
- एक कर्मचारी के लिए credentials खरीदें
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credentials या Oauth App)
- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- 3rd पार्टी **breached**
- 3rd parties **breached**
- Azure-Hosted Applications में कमजोरियाँ
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) जिसमें मेटाडेटा एंडपॉइंट तक पहुँच है
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) के साथ मेटाडेटा एंडपॉइंट तक पहुँच
- **Subdomain takeovers** जैसे [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन**
- यदि किसी डेवलपर का लैपटॉप समझौता किया गया है ([WinPEAS और LinPEAS](https://github.com/peass-ng/PEASS-ng) इस जानकारी को खोज सकते हैं):
- यदि कुछ डेवलपर लैपटॉप समझौता किया गया है ([WinPEAS और LinPEAS](https://github.com/peass-ng/PEASS-ng) इस जानकारी को खोज सकते हैं):
- **`<HOME>/.Azure`** के अंदर
- **`azureProfile.json`** पिछले लॉगिन उपयोगकर्ताओं के बारे में जानकारी रखता है
- **`azureProfile.json`** पिछले लॉगन उपयोगकर्ताओं के बारे में जानकारी रखता है
- **`clouds.config contains`** सब्सक्रिप्शन के बारे में जानकारी रखता है
- **`service_principal_entries.json`** एप्लिकेशन क्रेडेंशियल्स (टेनेन्ट आईडी, क्लाइंट और सीक्रेट) रखता है। केवल Linux और macOS में
- **`service_principal_entries.json`** में एप्लिकेशन के credentials (टेनेट आईडी, क्लाइंट और सीक्रेट) होते है। केवल Linux और macOS में
- **`msal_token_cache.json`** में एक्सेस टोकन और रिफ्रेश टोकन होते हैं। केवल Linux और macOS में
- **`service_principal_entries.bin`** और msal_token_cache.bin Windows में उपयोग होते हैं और DPAPI के साथ एन्क्रिप्टेड होते हैं
- **`msal_http_cache.bin`** HTTP अनुरोध का कैश है
- इसे लोड करें: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** पिछले लॉगिन के बारे में जानकारी रखता है जो Az PowerShell का उपयोग करके किया गया था (लेकिन कोई क्रेडेंशियल नहीं)
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** के अंदर कई `.bin` फ़ाइलें हैं जिनमें **access tokens**, ID tokens और उपयोगकर्ता के DPAPI के साथ एन्क्रिप्टेड खाता जानकारी होती है।
- **`AzureRmContext.json`** में Az PowerShell का उपयोग करके पिछले लॉगिन के बारे में जानकारी होती है (लेकिन कोई credentials नहीं)
- **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** के अंदर कई `.bin` फ़ाइलें हैं जिनमें **access tokens**, ID tokens और उपयोगकर्ता के DPAPI के साथ एन्क्रिप्ट की गई खाता जानकारी होती है।
- **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** के अंदर `.tbres` फ़ाइलों में अधिक **access tokens** मिल सकते हैं, जो DPAPI के साथ एन्क्रिप्टेड बेस64 होते हैं।
- Linux और macOS में आप Az PowerShell (यदि उपयोग किया गया हो) से **access tokens, refresh tokens और id tokens** प्राप्त कर सकते हैं `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` चलाकर
- Windows में यह केवल ID टोकन उत्पन्न करता है।
- यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था यह जांचकर कि `$HOME/.local/share/.IdentityService/` मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)
- Windows में यह केवल id tokens उत्पन्न करता है।
- यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था, यह जांचकर कि `$HOME/.local/share/.IdentityService/` मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)
फुटहोल प्राप्त करने के लिए **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन** खोजें निम्नलिखित पृष्ठ पर:
निम्नलिखित पृष्ठ पर **अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन** खोजें जो एक foothold की ओर ले जा सकती हैं:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> याद रखें कि आमतौर पर एन्यूमरेशन का **सबसे शोर वाला** भाग **लॉगिन** होता है, न कि स्वयं एन्यूमरेशन।
> याद रखें कि आमतौर पर **एन्यूमरेशन का सबसे शोर वाला** भाग **लॉगिन** होता है, न कि एन्यूमरेशन स्वयं
### Azure & Entra ID tooling
निम्नलिखित उपकरण Entra ID टेनेन्ट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:
निम्नलिखित उपकरण Entra ID टेनेट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:
{{#ref}}
az-enumeration-tools.md
@@ -76,12 +76,12 @@ az-enumeration-tools.md
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
उन मामलों में जहाँ आपके पास कुछ मान्य क्रेडेंशियल्स हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:
उन मामलों में जहाँ आपके पास कुछ मान्य credentials हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:
- **IP whitelisting** -- आपको एक मान्य IP से समझौता करना होगा
- **Geo restrictions** -- पता करें कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर (या कम से कम देश) से एक IP प्राप्त करें
- **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग करी है।
- आप **Service Principal credentials** को भी समझौता करने की कोशिश कर सकते हैं क्योंकि े आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है
- **Browser** -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग कर रही है।
- आप **Service Principal credentials** को भी समझौता करने की कोशिश कर सकते हैं क्योंकि े आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है
इसे बायपास करने के बाद, आप अपनी प्रारंभिक सेटअप पर वापस जाने में सक्षम हो सकते हैं और आपके पास अभी भी पहुँच होगी।
@@ -140,52 +140,72 @@ Get-AzureADTenantDetail
{{#endtab }}
{{#endtabs }}
### Entra ID Enumeration & Privesc
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों** जैसी चीजों को सूचीबद्ध करने के लिए **पर्याप्त अनुमतियाँ होनी चाहिए**... (चेक करें [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को **उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों** जैसी चीजों को सूचीबद्ध करने के लिए **पर्याप्त अनुमतियाँ होनी चाहिए**... (चेक [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
यहाँ एक गाइड है:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
**Post-Exploitation tools** की जाँच करें ताकि Entra ID में अनुमतियाँ बढ़ाने के लिए उपकरण मिल सकें जैसे **AzureHound:**
**Entra ID** में विशेषाधिकार बढ़ाने के लिए उपकरण खोजने के लिए **Post-Exploitation tools** की जाँच करें जैसे **AzureHound:**
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
### Azure Enumeration
एक बार जब आप जान लेते हैं कि आप कौन हैं, तो आप **Azure सेवाओं क सूची बनाना शुरू कर सकते हैं जिन तक आपकी पहुँच है**
एक बार जब आप जान लेते हैं कि आप कौन हैं, तो आप **Azure सेवाओं क सूचीबद्ध करना शुरू कर सकते हैं** जिन तक आपकी पहुँच है।
आपको यह पता लगाना चाहिए कि आपके पास संसाधनों पर **क्या अनुमतियाँ हैं**। इसके लिए:
आपको संसाधनों पर **आपके पास जो अनुमतियाँ हैं** उन्हें जानने की कोशिश करनी चाहिए। इसके लिए:
1. **उस संसाधन को खोजें जिसके लिए आपके पास कुछ पहुँच है**:
Az PoswerShell कमांड **`Get-AzResource`** आपको **जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों पर दृश्यता है**
> [!TIP]
> इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।
इसके अलावा, आप **वेब कंसोल** में वही जानकारी प्राप्त कर सकते हैं [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "All resources" खोजकर या निष्पादित करके:
Az PowerShell कमांड **`Get-AzResource`** आपको **जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों पर दृश्यता है**
इसके अलावा, आप **वेब कंसोल** में वही जानकारी प्राप्त कर सकते हैं [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) पर जाकर या "सभी संसाधन" के लिए खोजकर या निष्पादित करके:
```bash
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
```
2. **न संसाधनों पर आपके पास जो अनुमतियाँ हैं, उन्हें खोजें जिन तक आपकी पहुँच है और आपके लिए निर्धारित भूमिकाएँ खोजें**:
2. **आपके पास जिन संसाधनों पर अधिकार हैं, उन्हें खोजें**:
ध्यान दें कि इस क्रिया को निष्पादित करने के लिए आपको अनुमति **`Microsoft.Authorization/roleAssignments/read`** की आवश्यकता है।
> [!TIP]
> इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।
इसके अलावा, पर्याप्त अनुमतियों के साथ, भूमिका **`Get-AzRoleAssignment`** का उपयोग **सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने** या एक विशिष्ट संसाधन पर अनुमति को इंगित करने के लिए किया जा सकत है जैसे:
API **`https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01`** से बात करके, आप निर्दिष्ट संसाधन पर आपके पास जो अधिकार हैं, उन्हें प्राप्त कर सकत है**`resource_id`** में।
इसलिए, **उन सभी संसाधनों की जांच करते हुए जिन तक आपकी पहुंच है**, आप उनके ऊपर आपके पास जो अधिकार हैं, उन्हें प्राप्त कर सकते हैं।
> [!WARNING]
> आप इस गणना को स्वचालित कर सकते हैं, उपकरण **[Find_My_Az_Management_Permissions](https://github.com/carlospolop/Find_My_Az_Management_Permissions)** का उपयोग करके।
<details>
<summary>अधिकारों को **`Microsoft.Authorization/roleAssignments/read`** के साथ सूचीबद्ध करें</summary>
> [!TIP]
> ध्यान दें कि इस क्रिया को निष्पादित करने के लिए आपको अनुमति **`Microsoft.Authorization/roleAssignments/read`** की आवश्यकता है।
- पर्याप्त अनुमतियों के साथ, भूमिका **`Get-AzRoleAssignment`** का उपयोग **सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने** या एक विशिष्ट संसाधन पर अधिकार को इंगित करने के लिए किया जा सकता है जैसे:
```bash
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
```
यह जानकारी प्राप्त करना भी संभव है:
```bash
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
जैसे कि:
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
एक और विकल्प है कि आप azure में आपके साथ जुड़े रोल प्राप्त करें:
- एक और विकल्प है **azure में आपके साथ जुड़े रोल प्राप्त करना**। इसके लिए भी अनुमति **`Microsoft.Authorization/roleAssignments/read`** की आवश्यकता है:
```bash
az role assignment list --assignee "<email>" --all --output table
```
@@ -193,15 +213,17 @@ az role assignment list --assignee "<email>" --all --output table
```bash
az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
```
3. **आपसे जुड़े भूमिकाओं की सूक्ष्म अनुमतियों को खोजें**:
- **आपके साथ जुड़े भूमिकाओं की सूक्ष्म अनुमतियों को खोजें**:
फिर, सूक्ष्म अनुमति प्राप्त करने के लिए आप **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`** चला सकते हैं।
या सीधे API को कॉल करें:
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
```
इस अनुभाग में आप **सबसे सामान्य Azure सेवाओं के बारे में जानकारी और उन्हें कैसे सूचीबद्ध करें** पा सकते हैं:
</details>
निम्नलिखित अनुभाग में आप **सबसे सामान्य Azure सेवाओं के बारे में जानकारी और उन्हें कैसे सूचीबद्ध करें** पा सकते हैं:
{{#ref}}
az-services/
@@ -209,21 +231,21 @@ az-services/
### विशेषाधिकार वृद्धि, पोस्ट-एक्सप्लॉइटेशन और स्थिरता
एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप **विशेषाधिकार बढ़ाने, पार्श्व रूप से स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमले करने और स्थिरता बनाए रखने** के तरीकों की तलाश शुरू कर सकते हैं।
एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप **विशेषाधिकार बढ़ाने, पार्श्व में स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमले करने और स्थिरता बनाए रखने** के तरीकों की तलाश शुरू कर सकते हैं।
इस अनुभाग में आप सबसे सामान्य Azure सेवाओं में विशेषाधिकार बढ़ाने के बारे में जानकारी पा सकते हैं:
निम्नलिखित अनुभाग में आप सबसे सामान्य Azure सेवाओं में विशेषाधिकार बढ़ाने के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-privilege-escalation/
{{#endref}}
अगले में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमले करने के बारे में जानकारी पा सकते हैं:
निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमले करने के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-post-exploitation/
{{#endref}}
अगले में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:
निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:
{{#ref}}
az-persistence/