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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Basic Information
Azure और Entra ID के मूल बातें निम्नलिखित पृष्ठ पर जानें:
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 वातावरण को धीरे-धीरे (पता लगाने से बचने के लिए) या स्वचालित रूप से (समय बचाने के लिए) एन्यूमरेट करने के लिए बहुत उपयोगी होंगे:
Bypass Access Policies
.png)
उन मामलों में जहाँ आपके पास कुछ मान्य 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 अनुभाग में।
आपको जानने की आवश्यकता है कि आप कौन हैं (आप किस वातावरण में हैं):
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 सेवाओं को सूचीबद्ध करना शुरू कर सकते हैं जिन तक आपकी पहुँच है।
आपको संसाधनों पर आपके पास जो अनुमतियाँ हैं उन्हें जानने की कोशिश करनी चाहिए। इसके लिए:
- उस संसाधन को खोजें जिसके लिए आपके पास कुछ पहुँच है:
tip
इसके लिए किसी विशेष अनुमति की आवश्यकता नहीं है।
Az PowerShell कमांड Get-AzResource
आपको जानकारी देता है कि आपके वर्तमान उपयोगकर्ता के पास किन संसाधनों पर दृश्यता है।
इसके अलावा, आप वेब कंसोल में वही जानकारी प्राप्त कर सकते हैं https://portal.azure.com/#view/HubsExtension/BrowseAll पर जाकर या "सभी संसाधन" के लिए खोजकर या निष्पादित करके:
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
- आपके पास जिन संसाधनों पर अधिकार हैं, उन्हें खोजें:
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
का उपयोग सदस्यता में सभी भूमिकाओं को सूचीबद्ध करने या एक विशिष्ट संसाधन पर अधिकार को इंगित करने के लिए किया जा सकता है जैसे:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/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=2022-04-01" | 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 में आपके साथ जुड़े रोल प्राप्त करना। इसके लिए भी अनुमति
Microsoft.Authorization/roleAssignments/read
की आवश्यकता है:
az role assignment list --assignee "<email>" --all --output table
या निम्नलिखित चलाने पर (यदि परिणाम खाली हैं, तो इसका कारण यह हो सकता है कि आपके पास उन्हें प्राप्त करने की अनुमति नहीं है):
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 को कॉल करें:
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 सेवाओं के बारे में जानकारी और उन्हें कैसे सूचीबद्ध करें पा सकते हैं:
विशेषाधिकार वृद्धि, पोस्ट-एक्सप्लॉइटेशन और स्थिरता
एक बार जब आप जान लेते हैं कि Azure वातावरण कैसे संरचित है और कौन सी सेवाएँ उपयोग की जा रही हैं, तो आप विशेषाधिकार बढ़ाने, पार्श्व में स्थानांतरित करने, अन्य पोस्ट-एक्सप्लॉइटेशन हमले करने और स्थिरता बनाए रखने के तरीकों की तलाश शुरू कर सकते हैं।
निम्नलिखित अनुभाग में आप सबसे सामान्य Azure सेवाओं में विशेषाधिकार बढ़ाने के बारे में जानकारी पा सकते हैं:
निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में पोस्ट-एक्सप्लॉइटेशन हमले करने के बारे में जानकारी पा सकते हैं:
निम्नलिखित में आप सबसे सामान्य Azure सेवाओं में स्थिरता बनाए रखने के बारे में जानकारी पा सकते हैं:
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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।