Azure Pentesting

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मैं अभी भी एज़्यूर मेथडोलॉजी बना रहा हूँ

मूलभूत जानकारी

pageAz - Basic Information

एज़्यूर पेंटेस्टर/रेड टीम मेथडोलॉजी

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

रेड टीम के दृष्टिकोण से, एक एज़्यूर परिवेश को कंप्रमाइज करने का पहला कदम कुछ क्रेडेंशियल्स प्राप्त करना है। यहाँ आपको इसे कैसे करने के कुछ विचार मिलेंगे:

  • github में लीक - OSINT

  • सोशल इंजीनियरिंग

  • पासवर्ड पुन: उपयोग (पासवर्ड लीक)

  • एज़्यूर-होस्टेड एप्लिकेशन में वंशानुक्रमिकता

  • सर्वर साइड रिक्वेस्ट फॉर्जरी मेटाडेटा एंडपॉइंट तक पहुंच के साथ

  • स्थानीय फ़ाइल पढ़ें

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • accessTokens.json फ़ाइल az cli 2.30 से पहले - जनवरी 2022 - में स्पष्ट पाठ में एक्सेस टोकन्स स्टोर करती थी

  • azureProfile.json फ़ाइल में लॉग इन उपयोगकर्ता के बारे में जानकारी होती है।

  • az logout टोकन को हटा देता है।

  • पुराने संस्करणों में Az PowerShell टोकन को स्पष्ट पाठ में TokenCache.dat में स्टोर करता था। यह भी AzureRmContext.json में सेवा प्रिंसिपल सीक्रेट को स्पष्ट पाठ में स्टोर करता है। कमांडलेट Save-AzContext का उपयोग टोकन स्टोर करने के लिए किया जा सकता है। उन्हें हटाने के लिए Disconnect-AzAccount का उपयोग करें।

  • 3rd पार्टी भेट गई

  • आंतरिक कर्मचारी

  • सामान्य फिशिंग (क्रेडेंशियल या ओआथ ऐप)

यदि आपने एज़्यूर टेनेंट के अंदर किसी भी उपयोगकर्ता को कंप्रमाइज़ नहीं किया है, तो आप इससे कुछ जानकारी इकट्ठा कर सकते हैं:

pageAz - Unauthenticated Enum & Initial Entry

जब आपने क्रेडेंशियल्स प्राप्त कर लिए हैं, तो आपको जानने की आवश्यकता है कि वे किसके हैं, और उनके पास क्या है पहुंच, इसलिए आपको कुछ मूलभूत गणना करनी होगी:

मूलभूत गणना

ध्यान रखें कि गणना का शोर लॉगिन है, गणना नहीं।

SSRF

अगर आपने एज़्यूर के अंदर किसी मशीन में SSRF पाया है, तो ये ट्रिक्स के लिए इस पेज की जाँच करें:

लॉगिन शर्तों को उल्लंघन करें

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

  • IP सफेद सूची -- आपको एक मान्य IP कंप्रमाइज़ करना होगा

  • भूगोलिक प्रतिबंध -- पता लगाएं कि उपयोगकर्ता कहाँ रहता है या कंपनी के कार्यालय कहाँ हैं और उसी शहर से IP प्राप्त करें (कम से कम उसी शहर का या देश का)

  • ब्राउज़र -- शायद केवल कुछ ऑपरेटिंग सिस्टम (विंडोज, लिनक्स, मैक, एंड्रॉयड, आईओएस) का ब्राउज़र अनुमत है। पीडीएफ़ डाउनलोड करें जिसमें विक्टिम/कंपनी का उपयोग किया जाने वाला ऑपरेटिंग सिस्टम है।

  • आप यह भी कोशिश कर सकते हैं सेवा प्रिंसिपल क्रेडेंशियल्स कंप्रमाइज करने के लिए क्योंकि वे सामान्यत: कम सीमित होते हैं और उसका लॉगिन कम समीक्षित होता है

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

सबडोमेन ताकनओवर

Whoami

जानें कि कैसे स्थापित करें az cli, AzureAD और Az PowerShell को Az - AzureAD खंड में।

पहली चीज जो आपको पता होनी चाहिए है आप कौन हैं (किस परिवेश में हैं):

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

हैकर्स आमतौर पर Azure AD क्रेडेंशियल्स को प्राप्त करने के लिए सोशल इंजीनियरिंग तकनीक का उपयोग करते हैं, जैसे फिशिंग या फेक लॉगिन पेज्स। इसके अलावा, वे ब्रूट फोर्स अटैक या रेन्डम पासवर्ड जनरेशन का भी उपयोग कर सकते हैं।

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

हम अपने Azure सब्सक्रिप्शन के साथ काम करने के लिए Az PowerShell का उपयोग कर सकते हैं। इसके लिए, हमें Az PowerShell मॉड्यूल को इनस्टॉल करना होगा और फिर लॉगिन करना होगा। इसके बाद, हम Azure सेवाओं को प्रबंधित करने के लिए PowerShell कमांड्स का उपयोग कर सकते हैं।

# 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
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user

एज़्यूर को एनुमरेट करने के लिए सबसे महत्वपूर्ण कमांड में से एक है Get-AzResource जो Az PowerShell से है क्योंकि यह आपको जानने की अनुमति देता है कि आपके वर्तमान उपयोगकर्ता किस संसाधन को देख सकते हैं

आप वेब कॉन्सोल में भी एक ही जानकारी प्राप्त कर सकते हैं https://portal.azure.com/#view/HubsExtension/BrowseAll जाकर या "सभी संसाधन" की खोज करके।

AzureAD एनुमरेशन

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

pageAz - AzureAD (AAD)

अब जब आपके पास अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है (और यदि आप एक रेड टीम हैं तो आशा है कि आपको पहचान नहीं ली गई है). तो यह समय है कि पता लगाएं कि वातावरण में कौन सी सेवाएं उपयोग की जा रही हैं। निम्नलिखित खंड में आप कुछ सामान्य सेवाओं को एनुमरेट करने के कुछ तरीके देख सकते हैं

सेवा प्रिंसिपल और एक्सेस नीति

एक एज़्यूर सेवा में एक सिस्टम पहचान (सेवा खुद की) हो सकती है या एक उपयोगकर्ता निर्धारित प्रबंधित पहचान का उपयोग कर सकती है। इस पहचान को, उदाहरण के लिए, एक KeyVault में रहस्य पढ़ने के लिए एक्सेस नीति हो सकती है। ये एक्सेस नीतियाँ प्रतिबंधित होनी चाहिए (कम सुविधा सिद्धांत), लेकिन जरूरत से अधिक अनुमतियाँ हो सकती हैं। सामान्यत: एक ऐप सेवा KeyVault का उपयोग रहस्य और प्रमाणपत्र प्राप्त करने के लिए करेगी।

इसलिए इन पहचानों का अन्वेषण करना उपयोगी है।

ऐप सेवा SCM

ऐप सेवा 'कंटेनर' में लॉग इन करने के लिए कुडू कंसोल।

वेबशैल

वेबशैल का उपयोग करें portal.azure.com और शैल का चयन करें, या शैल.azure.com का उपयोग करें, एक बैश या पावरशैल के लिए। इस शैल की 'डिस्क' को एक छवि फ़ाइल के रूप में एक स्टोरेज-अकाउंट में संग्रहित किया जाता है।

एज़्यूर डेवऑप्स

एज़्यूर डेवऑप्स एज़्यूर से अलग है। इसमें रिपॉजिटरी, पाइपलाइन (yaml या रिलीज), बोर्ड, विकि, और अधिक है। वेरिएबल ग्रुप्स का उपयोग मान्यता मानों और रहस्यों को संग्रहित करने के लिए किया जाता है।

स्वचालित रीकॉन टूल्स

cd ROADTools
pipenv shell
roadrecon auth -u test@corp.onmicrosoft.com -p "Welcome2022!"
roadrecon gather
roadrecon gui

Import-Module monkey365
Get-Help Invoke-Monkey365
Get-Help Invoke-Monkey365 -Detailed
Invoke-Monkey365 -IncludeAzureActiveDirectory -ExportTo HTML -Verbose -Debug -InformationAction Continue
Invoke-Monkey365 - Instance Azure -Analysis All -ExportTo HTML

# Start Backend
cd stormspotter\backend\
pipenv shell
python ssbackend.pyz

# Start Front-end
cd stormspotter\frontend\dist\spa\
quasar.cmd serve -p 9091 --history

# Run Stormcollector
cd stormspotter\stormcollector\
pipenv shell
az login -u test@corp.onmicrosoft.com -p Welcome2022!
python stormspotter\stormcollector\sscollector.pyz cli
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)

# You need to use the Az PowerShell and Azure AD modules:
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("test@corp.onmicrosoft.com", $passwd)
Connect-AzAccount -Credential $creds

Import-Module AzureAD\AzureAD.psd1
Connect-AzureAD -Credential $creds

# Launch AzureHound
. AzureHound\AzureHound.ps1
Invoke-AzureHound -Verbose

# Simple queries
## All Azure Users
MATCH (n:AZUser) return n.name
## All Azure Applications
MATCH (n:AZApp) return n.objectid
## All Azure Devices
MATCH (n:AZDevice) return n.name
## All Azure Groups
MATCH (n:AZGroup) return n.name
## All Azure Key Vaults
MATCH (n:AZKeyVault) return n.name
## All Azure Resource Groups
MATCH (n:AZResourceGroup) return n.name
## All Azure Service Principals
MATCH (n:AZServicePrincipal) return n.objectid
## All Azure Virtual Machines
MATCH (n:AZVM) return n.name
## All Principals with the ‘Contributor’ role
MATCH p = (n)-[r:AZContributor]->(g) RETURN p

# Advanced queries
## Get Global Admins
MATCH p =(n)-[r:AZGlobalAdmin*1..]->(m) RETURN p
## Owners of Azure Groups
MATCH p = (n)-[r:AZOwns]->(g:AZGroup) RETURN p
## All Azure Users and their Groups
MATCH p=(m:AZUser)-[r:MemberOf]->(n) WHERE NOT m.objectid CONTAINS 'S-1-5' RETURN p
## Privileged Service Principals
MATCH p = (g:AZServicePrincipal)-[r]->(n) RETURN p
## Owners of Azure Applications
MATCH p = (n)-[r:AZOwns]->(g:AZApp) RETURN p
## Paths to VMs
MATCH p = (n)-[r]->(g: AZVM) RETURN p
## Paths to KeyVault
MATCH p = (n)-[r]->(g:AZKeyVault) RETURN p
## Paths to Azure Resource Group
MATCH p = (n)-[r]->(g:AZResourceGroup) RETURN p
## On-Prem users with edges to Azure
MATCH  p=(m:User)-[r:AZResetPassword|AZOwns|AZUserAccessAdministrator|AZContributor|AZAddMembers|AZGlobalAdmin|AZVMContributor|AZOwnsAZAvereContributor]->(n) WHERE m.objectid CONTAINS 'S-1-5-21' RETURN p
## All Azure AD Groups that are synchronized with On-Premise AD
MATCH (n:Group) WHERE n.objectid CONTAINS 'S-1-5' AND n.azsyncid IS NOT NULL RETURN n

# You should use an account with at least read-permission on the assets you want to access
git clone https://github.com/nccgroup/azucar.git
PS> Get-ChildItem -Recurse c:\Azucar_V10 | Unblock-File

PS> .\Azucar.ps1 -AuthMode UseCachedCredentials -Verbose -WriteLog -Debug -ExportTo PRINT
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000
PS> .\Azucar.ps1 -ExportTo CSV,JSON,XML,EXCEL -AuthMode Certificate_Credentials -Certificate C:\AzucarTest\server.pfx -CertFilePassword MySuperP@ssw0rd! -ApplicationId 00000000-0000-0000-0000-000000000000 -TenantID 00000000-0000-0000-0000-000000000000

# resolve the TenantID for an specific username
PS> .\Azucar.ps1 -ResolveTenantUserName user@company.com

Import-Module .\MicroBurst.psm1
Import-Module .\Get-AzureDomainInfo.ps1
Get-AzureDomainInfo -folder MicroBurst -Verbose

Connect-AzAccount
ipmo C:\Path\To\Powerzure.psd1
Get-AzureTarget

# Reader
$ Get-Runbook, Get-AllUsers, Get-Apps, Get-Resources, Get-WebApps, Get-WebAppDetails

# Contributor
$ Execute-Command -OS Windows -VM Win10Test -ResourceGroup Test-RG -Command "whoami"
$ Execute-MSBuild -VM Win10Test  -ResourceGroup Test-RG -File "build.xml"
$ Get-AllSecrets # AllAppSecrets, AllKeyVaultContents
$ Get-AvailableVMDisks, Get-VMDisk # Download a virtual machine's disk

# Owner
$ Set-Role -Role Contributor -User test@contoso.com -Resource Win10VMTest

# Administrator
$ Create-Backdoor, Execute-Backdoor
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated