Azure Pentesting

HackTricks को समर्थन दें

मैं अभी भी AZURE METHODOLOGY बना रहा हूँ

Basic Information

Az - Basic Information

Azure Pentester/Red Team Methodology

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

Red Team के दृष्टिकोण से, Azure environment को compromise करने का पहला कदम कुछ credentials प्राप्त करना है Azure AD के लिए। यहाँ कुछ विचार दिए गए हैं कि यह कैसे किया जा सकता है:

  • github (या समान) में Leaks - OSINT

  • Social Engineering

  • Password पुन: उपयोग (password leaks)

  • Azure-Hosted Applications में Vulnerabilities

  • Server Side Request Forgery metadata endpoint तक पहुंच के साथ

  • Local File Read

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • az cli में accessTokens.json फ़ाइल 2.30 से पहले - Jan2022 - ने access tokens को स्पष्ट पाठ में संग्रहीत किया

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

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

  • Az PowerShell के पुराने संस्करणों ने access tokens को clear पाठ में TokenCache.dat में संग्रहीत किया। इसने ServicePrincipalSecret को clear-पाठ में AzureRmContext.json में भी संग्रहीत किया। Save-AzContext cmdlet का उपयोग tokens को store करने के लिए किया जा सकता है। उन्हें हटाने के लिए Disconnect-AzAccount का उपयोग करें।

  • 3rd parties breached

  • Internal कर्मचारी

  • Common Phishing (credentials या Oauth App)

भले ही आपने उस Azure tenant के अंदर किसी भी उपयोगकर्ता को compromise नहीं किया है जिसे आप अटैक कर रहे हैं, आप उससे कुछ जानकारी एकत्र कर सकते हैं:

Az - Unauthenticated Enum & Initial Entry

एक बार जब आप credentials प्राप्त कर लेते हैं, तो आपको यह जानना होगा कि वे credentials किसके हैं, और उनके पास किस चीज़ का access है, इसलिए आपको कुछ बुनियादी enumeration करना होगा:

Basic Enumeration

याद रखें कि enumeration का सबसे शोरगुल वाला हिस्सा login है, न कि enumeration स्वयं।

SSRF

यदि आपने Azure के अंदर किसी मशीन में SSRF पाया है तो इस पेज पर ट्रिक्स देखें:

Login Conditions को Bypass करें

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

  • IP whitelisting -- आपको एक वैध IP को compromise करना होगा

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

  • Browser -- हो सकता है कि केवल एक निश्चित OS (Windows, Linux, Mac, Android, iOS) से ब्राउज़र की अनुमति हो। पता लगाएं कि पीड़ित/कंपनी कौन सा OS उपयोग करती है।

  • आप Service Principal credentials को भी compromise करने का प्रयास कर सकते हैं क्योंकि वे आमतौर पर कम सीमित होते हैं और उनका लॉगिन कम समीक्षा किया जाता है

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

Subdomain Takeover

Whoami

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

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

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 को enumerate करने के लिए सबसे महत्वपूर्ण commands में से एक है Get-AzResource Az PowerShell से, क्योंकि यह आपको उन resources के बारे में जानने देता है जिन पर आपके वर्तमान उपयोगकर्ता की visibility है

आप web console में जाकर भी वही जानकारी प्राप्त कर सकते हैं https://portal.azure.com/#view/HubsExtension/BrowseAll या "All resources" खोजकर।

AzureAD Enumeration

डिफ़ॉल्ट रूप से, किसी भी उपयोगकर्ता के पास पर्याप्त permissions होनी चाहिए जैसे कि, users, groups, roles, service principals... (देखें default AzureAD permissions)। आप यहां एक गाइड पा सकते हैं:

Az - AzureAD (AAD)

अब जब आपके पास अपने credentials के बारे में कुछ जानकारी है (और यदि आप red team हैं तो उम्मीद है कि आप पता नहीं चले हैं)। अब यह पता लगाने का समय है कि environment में कौन-कौन सी services उपयोग की जा रही हैं। अगले section में आप कुछ सामान्य services को enumerate करने के कुछ तरीके देख सकते हैं।

Service Principal और Access Policy

एक Azure service के पास System Identity (service स्वयं की) हो सकती है या User Assigned Managed Identity का उपयोग कर सकती है। इस Identity के पास Access Policy हो सकती है, उदाहरण के लिए, एक KeyVault से secrets पढ़ने के लिए। ये Access Policies सीमित होनी चाहिए (least privilege principle), लेकिन इनमें आवश्यक से अधिक permissions हो सकती हैं। आमतौर पर एक App Service KeyVault का उपयोग secrets और certificates प्राप्त करने के लिए करेगी।

इसलिए इन identities को explore करना उपयोगी है।

App Service SCM

App Service 'container' में लॉग इन करने के लिए Kudu console।

Webshell

portal.azure.com का उपयोग करें और shell चुनें, या shell.azure.com का उपयोग करें, bash या powershell के लिए। इस shell का 'disk' एक image file के रूप में storage-account में संग्रहीत होता है।

Azure DevOps

Azure DevOps Azure से अलग है। इसमें repositories, pipelines (yaml या release), boards, wiki, और अधिक होते हैं। Variable Groups का उपयोग variable values और secrets को संग्रहीत करने के लिए किया जाता है।

Automated Recon Tools

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

Azucar एक Azure सुरक्षा ऑडिटिंग टूल है जो Azure सब्सक्रिप्शन के विभिन्न पहलुओं का मूल्यांकन करता है। यह टूल Azure संसाधनों की सुरक्षा स्थिति की जांच करने के लिए विभिन्न मॉड्यूल प्रदान करता है।

# 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

PowerZure एक PowerShell स्क्रिप्ट है जो Azure के खिलाफ विभिन्न कार्यों को निष्पादित करने के लिए उपयोग की जाती है। यह स्क्रिप्ट Azure के संसाधनों को सूचीबद्ध करने, जानकारी निकालने, और संभावित कमजोरियों का परीक्षण करने में मदद करती है।

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

Last updated