Files
hacktricks-cloud/src/pentesting-cloud/azure-security

Azure Pentesting

{{#include ../../banners/hacktricks-training.md}}

Basic Information

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

{{#ref}} az-basic-information/ {{#endref}}

Azure Pentester/Red Team Methodology

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

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

External enum & Initial Access

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

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

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

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

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

  • OSINT: GitHub या किसी अन्य ओपन-सोर्स प्लेटफॉर्म पर leaks की जांच करें जो क्रेडेंशियल्स या दिलचस्प जानकारी रख सकता है।
  • Password पुन: उपयोग, लीक या password spraying
  • एक कर्मचारी के लिए क्रेडेंशियल्स खरीदें
  • Common Phishing (क्रेडेंशियल्स या Oauth ऐप)
  • Device Code Authentication Phishing
  • 3rd पार्टी 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 एप्लिकेशन क्रेडेंशियल्स (टेनेन्ट आईडी, क्लाइंट और सीक्रेट) रखता है। केवल 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 फ़ाइलें हैं जिनमें एक्सेस टोकन, आईडी टोकन और उपयोगकर्ता DPAPI के साथ एन्क्रिप्टेड खाता जानकारी होती है।
  • C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\ के अंदर .tbres फ़ाइलों में अधिक एक्सेस टोकन मिल सकते हैं, जो DPAPI के साथ बेस64 एन्क्रिप्टेड होते हैं।
  • Linux और macOS में आप Az PowerShell (यदि उपयोग किया गया हो) से एक्सेस टोकन, रिफ्रेश टोकन और आईडी टोकन प्राप्त कर सकते हैं pwsh -Command "Save-AzContext -Path /tmp/az-context.json" चलाकर
  • Windows में यह केवल आईडी टोकन उत्पन्न करता है।
  • यह देखना संभव है कि क्या Az PowerShell का उपयोग Linux और macOS में किया गया था यह जांचकर कि $HOME/.local/share/.IdentityService/ मौजूद है (हालांकि इसमें मौजूद फ़ाइलें खाली और बेकार हैं)

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

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

Note

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

Azure & Entra ID tooling

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

{{#ref}} az-enumeration-tools.md {{#endref}}

Bypass Login Conditions

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

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

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

Whoami

Caution

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

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

{{#tabs }} {{#tab name="az cli" }}

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

{{#endtab }}

{{#tab name="Az" }}

# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
# List all available contexts
Get-AzContext -ListAvailable
# Enumerate subscriptions accessible by the current user
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup

{{#endtab }}

{{#tab name="Mg" }}

#Get the current session
Get-MgContext

{{#endtab }}

{{#tab name="AzureAD" }}

#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail

{{#endtab }} {{#endtabs }}

Entra ID Enumeration & Privilege Escalation

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

{{#ref}} az-services/az-azuread.md {{#endref}}

Post-Exploitation tools की जाँच करें ताकि Entra ID में अनुमतियों को बढ़ाने के लिए उपकरण मिल सकें जैसे AzureHound:

{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}

Enumerate Azure Services

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

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

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

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

इसके अलावा, आप वेब कंसोल में जाकर या "All resources" के लिए खोजकर या निष्पादित करके वही जानकारी प्राप्त कर सकते हैं: az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"

  1. उन संसाधनों पर आपके पास जो अनुमतियाँ हैं उन्हें खोजें और आपके लिए असाइन की गई भूमिकाएँ खोजें:

ध्यान दें कि आपको इस क्रिया को निष्पादित करने के लिए अनुमति Microsoft.Authorization/roleAssignments/read की आवश्यकता है।

इसके अलावा, पर्याप्त अनुमतियों के साथ, भूमिका Get-AzRoleAssignment का उपयोग सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने या एक विशिष्ट संसाधन पर अनुमति प्राप्त करने के लिए किया जा सकता है जैसे: Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

यह जानकारी प्राप्त करना भी संभव है 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//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
  1. आपके लिए संलग्न भूमिकाओं की सूक्ष्म अनुमतियाँ खोजें:

फिर, सूक्ष्म अनुमति प्राप्त करने के लिए आप (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions चला सकते हैं।

या सीधे API को कॉल करें 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" के साथ।

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

{{#ref}} az-services/ {{#endref}}

Privilege Escalation, Post-Exploitation & Persistence in Azure Services

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

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

{{#ref}} az-privilege-escalation/ {{#endref}}

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

{{#ref}} az-post-exploitation/ {{#endref}}

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

{{#ref}} az-persistence/ {{#endref}}

{{#include ../../banners/hacktricks-training.md}}