Azure Pentesting

Reading time: 11 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 का समर्थन करें

Basic Information

Azure और Entra ID के मूल बातें निम्नलिखित पृष्ठ पर जानें:

Az - Basic Information

Azure Pentester/Red Team Methodology

AZURE वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन से सेवाएँ उपयोग की जा रही हैं, क्या प्रदर्शित किया जा रहा है, किसके पास पहुँच है, और आंतरिक Azure सेवाएँ और बाहरी सेवाएँ कैसे जुड़ी हुई हैं।

Red Team के दृष्टिकोण से, Azure वातावरण को समझौता करने का पहला कदम कुछ foothold प्राप्त करना है।

External enum & Initial Access

पहला कदम निश्चित रूप से उस टेनेट के बारे में जानकारी इकट्ठा करना है जिसे आप हमला कर रहे हैं और एक foothold प्राप्त करने की कोशिश करना है।

डोमेन नाम के आधार पर यह जानना संभव है कि क्या कंपनी Azure का उपयोग कर रही है, टेनेट ID प्राप्त करें, उसी टेनेट में अन्य मान्य डोमेन प्राप्त करें (यदि अधिक हैं) और संबंधित जानकारी प्राप्त करें जैसे कि SSO सक्षम है या नहीं, मेल कॉन्फ़िगरेशन, मान्य उपयोगकर्ता ईमेल...

बाहरी एन्यूमरेशन करने के लिए निम्नलिखित पृष्ठ देखें:

Az - Unauthenticated Enum & Initial Entry

इस जानकारी के साथ, foothold प्राप्त करने के लिए सबसे सामान्य तरीके हैं:

  • OSINT: Github या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर leaks की जांच करें जो credentials या दिलचस्प जानकारी रख सकते हैं।
  • Password पुन: उपयोग, leaks या password spraying
  • एक कर्मचारी के लिए credentials खरीदें
  • Common Phishing (credentials या Oauth App)
  • Device Code Authentication Phishing
  • 3rd parties breached
  • Azure-Hosted Applications में कमजोरियाँ
  • Server Side Request Forgery के साथ मेटाडेटा एंडपॉइंट तक पहुँच
  • Subdomain takeovers जैसे https://godiego.co/posts/STO-Azure/
  • अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन
  • यदि कुछ डेवलपर लैपटॉप समझौता किया गया है (WinPEAS और LinPEAS इस जानकारी को खोज सकते हैं):
  • <HOME>/.Azure के अंदर
  • azureProfile.json पिछले लॉग इन उपयोगकर्ताओं के बारे में जानकारी रखता है
  • clouds.config contains सब्सक्रिप्शन के बारे में जानकारी रखता है
  • 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 का उपयोग करके पिछले लॉगिन के बारे में जानकारी होती है (लेकिन कोई 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 tokens उत्पन्न करता है।
  • यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था, यह जांचकर कि $HOME/.local/share/.IdentityService/ मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)

निम्नलिखित पृष्ठ पर अन्य Azure सेवाओं की गलत कॉन्फ़िगरेशन खोजें जो एक foothold की ओर ले जा सकती हैं:

Az - Unauthenticated Enum & Initial Entry

note

याद रखें कि आमतौर पर एन्यूमरेशन का सबसे शोर वाला भाग लॉगिन होता है, न कि एन्यूमरेशन स्वयं।

Azure & Entra ID tooling

निम्नलिखित उपकरण Entra ID टेनेट और Azure वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:

Az - Enumeration Tools

Bypass Access Policies

उन मामलों में जहाँ आपके पास कुछ मान्य credentials हैं लेकिन आप लॉगिन नहीं कर सकते, ये कुछ सामान्य सुरक्षा उपाय हैं जो लागू हो सकते हैं:

  • IP whitelisting -- आपको एक मान्य IP से समझौता करना होगा
  • Geo restrictions -- पता करें कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर (या कम से कम देश) से एक IP प्राप्त करें
  • Browser -- शायद केवल कुछ OS (Windows, Linux, Mac, Android, iOS) से एक ब्राउज़र की अनुमति है। पता करें कि पीड़ित/कंपनी कौन सा OS उपयोग कर रही है।
  • आप Service Principal credentials को भी समझौता करने की कोशिश कर सकते हैं क्योंकि वे आमतौर पर कम सीमित होते हैं और इसका लॉगिन कम समीक्षा किया जाता है

इसे बायपास करने के बाद, आप अपनी प्रारंभिक सेटअप पर वापस जाने में सक्षम हो सकते हैं और आपके पास अभी भी पहुँच होगी।

जांचें:

Az - Conditional Access Policies & MFA Bypass

Whoami

caution

जानें कैसे स्थापित करें az cli, AzureAD और Az PowerShell Az - Entra ID अनुभाग में।

आपको जानने की आवश्यकता है कि आप कौन हैं (आप किस वातावरण में हैं):

bash
az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default

Entra ID Enumeration & Privesc

डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता को उपयोगकर्ताओं, समूहों, भूमिकाओं, सेवा प्रमुखों जैसी चीजों को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ होनी चाहिए... (चेक default AzureAD permissions).
यहाँ एक गाइड है:

Az - Entra ID (AzureAD) & Azure IAM

Entra ID में विशेषाधिकार बढ़ाने के लिए उपकरण खोजने के लिए Post-Exploitation tools की जाँच करें जैसे AzureHound:

Automated Post Exploitation Tools

Azure Enumeration

एक बार जब आप जान लेते हैं कि आप कौन हैं, तो आप Azure सेवाओं को सूचीबद्ध करना शुरू कर सकते हैं जिन तक आपकी पहुँच है।

आपको संसाधनों पर आपके पास जो अनुमतियाँ हैं उन्हें जानने की कोशिश करनी चाहिए। इसके लिए:

  1. उस संसाधन को खोजें जिसके लिए आपके पास कुछ पहुँच है:

tip

इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।

Az PowerShell कमांड Get-AzResource आपको जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों पर दृश्यता है

इसके अलावा, आप वेब कंसोल में वही जानकारी प्राप्त कर सकते हैं 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"
  1. आपके पास जिन संसाधनों पर अधिकार हैं, उन्हें खोजें:

tip

इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।

API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01 से बात करके, आप निर्दिष्ट संसाधन पर आपके पास जो अधिकार हैं, उन्हें प्राप्त कर सकते हैं resource_id में।

इसलिए, उन सभी संसाधनों की जांच करते हुए जिन तक आपकी पहुंच है, आप उनके ऊपर आपके पास जो अधिकार हैं, उन्हें प्राप्त कर सकते हैं।

warning

आप इस गणना को स्वचालित कर सकते हैं, उपकरण Find_My_Az_Management_Permissions का उपयोग करके।

अधिकारों को **`Microsoft.Authorization/roleAssignments/read`** के साथ सूचीबद्ध करें

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=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=2022-04-01" | jq ".value"
  • एक और विकल्प है azure में आपके साथ जुड़े रोल प्राप्त करना। इसके लिए भी अनुमति Microsoft.Authorization/roleAssignments/read की आवश्यकता है:
bash
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>'
  • आपके साथ जुड़े भूमिकाओं की सूक्ष्म अनुमतियों को खोजें:

फिर, सूक्ष्म अनुमति प्राप्त करने के लिए आप (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=2022-04-01" | jq ".properties"

निम्नलिखित अनुभाग में आप सबसे सामान्य Azure सेवाओं के बारे में जानकारी और उन्हें कैसे सूचीबद्ध करें पा सकते हैं:

Az - Services

विशेषाधिकार वृद्धि, पोस्ट-एक्सप्लॉइटेशन और स्थिरता

एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप विशेषाधिकार बढ़ाने, पार्श्व में स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमले करने और स्थिरता बनाए रखने के तरीकों की तलाश शुरू कर सकते हैं।

निम्नलिखित अनुभाग में आप सबसे सामान्य Azure सेवाओं में विशेषाधिकार बढ़ाने के बारे में जानकारी पा सकते हैं:

Az - Privilege Escalation

निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमले करने के बारे में जानकारी पा सकते हैं:

Az - Post Exploitation

निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:

Az - Persistence

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 का समर्थन करें