Azure Pentesting

Support HackTricks

NINAJENGA METHODOLOJIA YA AZURE

Taarifa za Msingi

Az - Basic Information

Metholojia ya Azure Pentester/Red Team

Ili kukagua mazingira ya AZURE ni muhimu sana kujua: ni huduma zipi zinatumika, nini kinachoweza kuonyeshwa, nani ana ufikiaji wa nini, na jinsi huduma za ndani za Azure na huduma za nje zinavyounganishwa.

Kutoka kwa mtazamo wa Red Team, hatua ya kwanza ya kuathiri mazingira ya Azure ni kupata akili za Azure AD. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:

  • Mvujo katika github (au sawa) - OSINT

  • Uhandisi wa Kijamii

  • Tumia nywila (mvujo wa nywila)

  • Uhalifu katika Programu za Azure-Hosted

  • Server Side Request Forgery yenye ufikiaji wa metadata endpoint

  • Usomaji wa Faili za Mitaa

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • Faili accessTokens.json katika az cli kabla ya 2.30 - Jan2022 - ilihifadhi tokens za ufikiaji kwa maandiko wazi

  • Faili azureProfile.json ina habari kuhusu mtumiaji aliyeingia.

  • az logout inafuta token.

  • Matoleo ya zamani ya Az PowerShell yalihifadhi tokens za ufikiaji kwa maandiko wazi katika TokenCache.dat. Pia inahifadhi ServicePrincipalSecret kwa maandiko wazi katika AzureRmContext.json. Cmdlet Save-AzContext inaweza kutumika kuhifadhi tokens. Tumia Disconnect-AzAccount kuondoa hizo.

  • Watu wa 3rd walivunja

  • Mfanyakazi wa Ndani

  • Phishing ya Kawaida (akili au Oauth App)

Hata kama huja athiri mtumiaji yeyote ndani ya tenant ya Azure unayoishambulia, unaweza kusanya habari fulani kutoka kwake:

Az - Unauthenticated Enum & Initial Entry

Baada ya kufanikiwa kupata akili, unahitaji kujua ni nani akili hizo zinamilikiwa, na nini wana ufikiaji, hivyo unahitaji kufanya uainishaji wa msingi:

Uainishaji wa Msingi

Kumbuka kwamba sehemu ya kelele zaidi ya uainishaji ni kuingia, si uainishaji wenyewe.

SSRF

Ikiwa umepata SSRF katika mashine ndani ya Azure angalia ukurasa huu kwa hila:

Kupita Masharti ya Kuingia

Katika hali ambapo una akili halali lakini huwezi kuingia, hizi ni baadhi ya ulinzi wa kawaida ambao unaweza kuwepo:

  • IP whitelisting -- Unahitaji kuathiri IP halali

  • Vikwazo vya Geo -- Pata mahali mtumiaji anaishi au ofisi za kampuni na pata IP kutoka jiji moja (au nchi angalau)

  • Kivinjari -- Labda kivinjari tu kutoka OS fulani (Windows, Linux, Mac, Android, iOS) kinaruhusiwa. Jua ni OS ipi mwathirika/kampuni inatumia.

  • Unaweza pia kujaribu kuathiri akili za Service Principal kwani kawaida huwa na mipaka kidogo na kuingia kwake hakuchunguzwi sana

Baada ya kupita, unaweza kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.

Kuchukua Subdomain

Whoami

Jifunze jinsi ya kufunga az cli, AzureAD na Az PowerShell katika sehemu ya Az - AzureAD.

Moja ya mambo ya kwanza unahitaji kujua ni wewe ni nani (katika mazingira gani uko):

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

Moja ya amri muhimu zaidi za kuhesabu Azure ni Get-AzResource kutoka Az PowerShell kwani inakuwezesha kujua rasilimali ambazo mtumiaji wako wa sasa anaweza kuona.

Unaweza kupata taarifa sawa katika konsoli ya wavuti kwa kutembelea https://portal.azure.com/#view/HubsExtension/BrowseAll au kutafuta "All resources"

AzureAD Enumeration

Kwa kawaida, mtumiaji yeyote anapaswa kuwa na idhini ya kutosha kuhesabu mambo kama vile, watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia idhini za kawaida za AzureAD). Unaweza kupata hapa mwongozo:

Az - AzureAD (AAD)

Sasa kwamba una taarifa fulani kuhusu akidi zako (na ikiwa wewe ni timu nyekundu matumaini huja gundulika). Ni wakati wa kubaini ni huduma zipi zinatumika katika mazingira. Katika sehemu ifuatayo unaweza kuangalia njia kadhaa za kuhesabu huduma za kawaida.

Service Principal and Access Policy

Huduma ya Azure inaweza kuwa na Utambulisho wa Mfumo (wa huduma yenyewe) au kutumia Utambulisho wa Usimamizi uliopewa Mtumiaji. Utambulisho huu unaweza kuwa na Sera ya Ufikiaji, kwa mfano, kwa KeyVault kusoma siri. Sera hizi za Ufikiaji zinapaswa kuwa na mipaka (kanuni ya haki ndogo), lakini zinaweza kuwa na ruhusa zaidi ya inavyohitajika. Kwa kawaida, Huduma ya Programu ingetumia KeyVault kupata siri na vyeti.

Hivyo ni muhimu kuchunguza utambulisho hizi.

App Service SCM

Konsoli ya Kudu kuingia kwenye 'konteina' ya Huduma ya Programu.

Webshell

Tumia portal.azure.com na uchague shell, au tumia shell.azure.com, kwa bash au powershell. 'disk' ya shell hii inahifadhiwa kama faili ya picha katika akaunti ya hifadhi.

Azure DevOps

Azure DevOps ni tofauti na Azure. Ina hazina, mipango (yaml au toleo), bodi, wiki, na zaidi. Makundi ya Kigezo yanatumika kuhifadhi thamani za kigezo na siri.

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

# 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
Support HackTricks

Last updated