Azure Pentesting

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

NINAENDELEA KUJENGA METHODOLOGY YA AZURE

Taarifa Msingi

pageAz - Basic Information

Azure Pentester/Red Team Methodology

Ili kukagua mazingira ya AZURE ni muhimu kujua: ni huduma zipi zinazotumiwa, nini kinachoonekana, nani ana upatikanaji wa nini, na jinsi huduma za Azure za ndani na huduma za nje zinavyounganishwa.

Kutoka mtazamo wa Timu Nyekundu, hatua ya kwanza ya kudukua mazingira ya Azure ni kufanikiwa kupata vitambulisho vya Azure AD. Hapa kuna mawazo kadhaa jinsi ya kufanya hivyo:

  • Kuvuja kwenye github (au sawa) - OSINT

  • Uhandisi wa Kijamii

  • Kutumia tena nywila (kuvuja kwa nywila)

  • Udhaifu katika Maombi Yaliyohifadhiwa kwenye Azure

  • Server Side Request Forgery na upatikanaji wa mwisho wa metadata

  • Soma Faili za Ndani

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • Faili ya accessTokens.json katika az cli kabla ya 2.30 - Jan2022 - ilihifadhi vitambulisho vya upatikanaji kwa maandishi wazi

  • Faili ya azureProfile.json ina habari kuhusu mtumiaji aliyeingia.

  • az logout inaondoa kibali.

  • Toleo za zamani za Az PowerShell zilizohifadhi vitambulisho vya upatikanaji kwa maandishi wazi katika TokenCache.dat. Pia inahifadhi ServicePrincipalSecret kwa maandishi wazi katika AzureRmContext.json. Amri Save-AzContext inaweza kutumika kuhifadhi vitambulisho. Tumia Disconnect-AzAccount kuziondoa.

  • 3rd parties zilizovunjika

  • Mfanyakazi wa Ndani

  • Udukuzi wa Kawaida (vitambulisho au Programu ya Oauth)

Hata kama hujadukua mtumiaji yeyote ndani ya mpangaji wa Azure unao shambulia, unaweza kukusanya habari fulani kutoka kwake:

pageAz - Unauthenticated Enum & Initial Entry

Baada ya kufanikiwa kupata vitambulisho, unahitaji kujua vitambulisho hivyo ni vya nani, na wanayo upatikanaji wa nini, hivyo unahitaji kufanya uchambuzi wa msingi:

Uchambuzi wa Msingi

Kumbuka kuwa sehemu yenye kelele zaidi ya uchambuzi ni kuingia, sio uchambuzi yenyewe.

SSRF

Ikiwa umepata SSRF kwenye mashine ndani ya Azure angalia ukurasa huu kwa mbinu:

Kupuuza Masharti ya Kuingia

Katika kesi ambapo una vitambulisho halali lakini huwezi kuingia, hizi ni baadhi ya ulinzi wa kawaida ambao unaweza kuwa mahali:

  • Kuweka orodha nyeupe ya IP -- Unahitaji kudukua IP halali

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

  • Kivinjari -- Labda kivinjari kutoka kwa OS fulani (Windows, Linux, Mac, Android, iOS) kinaruhusiwa. Gundua ni OS ipi mtumiaji/kampuni inatumia.

  • Unaweza pia kujaribu kudukua vitambulisho vya Mwanzilishi wa Huduma kwani kawaida vina vikwazo vichache na kuingia kwake kunachunguzwa kidogo

Baada ya kuvuka hilo, unaweza kurudi kwenye usanidi wako wa awali na bado utakuwa na upatikanaji.

Kuchukua Subdomain

Whoami

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

Moja ya mambo ya kwanza unayohitaji 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

AzureAD

Enumeration

  1. User Enumeration: Enumerate users through the Graph API or the Azure Portal.

  2. Group Enumeration: Enumerate groups through the Graph API or the Azure Portal.

  3. Application Enumeration: Enumerate applications through the Graph API or the Azure Portal.

Brute Force

  1. Password Spraying: Perform password spraying attacks against Azure AD accounts.

  2. Credential Stuffing: Use known username and password combinations to gain unauthorized access.

Exploitation

  1. Phishing: Conduct phishing attacks to steal user credentials.

  2. Token Impersonation: Obtain and abuse tokens to impersonate users.

  3. Password Policies: Exploit weak password policies to gain unauthorized access.

Persistence

  1. Backdoors: Create backdoors in Azure AD for persistent access.

  2. Service Principals: Abuse service principals for persistent access.

Lateral Movement

  1. OAuth Token Abuse: Abuse OAuth tokens to move laterally within Azure AD.

  2. Application Permissions: Abuse application permissions to move laterally within Azurejson AD.

Data Exfiltration

  1. Export Data: Export sensitive data from Azure AD using various methods.

  2. Application Consent: Abuse application consent to exfiltrate data.

Covering Tracks

  1. Audit Logs: Clear or modify audit logs to hide malicious activities.

  2. Token Cleanup: Clean up tokens to remove traces of unauthorized access.

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

Az PowerShell

Azure PowerShell is a module that provides cmdlets to manage Azure resources directly from the PowerShell command line. It allows for automation and scripting of various Azure tasks, making it a powerful tool for managing Azure environments.

Installation

To install the Azure PowerShell module, you can use the following command:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

Connecting to Azure

You can connect to your Azure account using the Connect-AzAccount cmdlet. This will prompt you to log in with your Azure credentials and establish a connection to your Azure subscription.

Connect-AzAccount

Managing Azure Resources

Once connected, you can use various cmdlets to manage Azure resources. For example, you can create a new resource group using the New-AzResourceGroup cmdlet:

New-AzResourceGroup -Name MyResourceGroup -Location eastus

Scripting and Automation

Azure PowerShell allows you to script and automate various tasks, such as deploying resources, configuring settings, and managing Azure services. By combining cmdlets in scripts, you can streamline your Azure management processes.

Summary

Azure PowerShell is a powerful tool for managing Azure resources through the command line. By leveraging its cmdlets, you can automate tasks, streamline processes, and efficiently manage your Azure environment.

# 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

Moja ya amri muhimu sana ya kuchunguza Azure ni Get-AzResource kutoka Az PowerShell kwani inakuruhusu kujua rasilimali ambazo mtumiaji wako wa sasa ana uwezo wa kuziona.

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

Uchunguzi wa AzureAD

Kwa chaguo-msingi, mtumiaji yeyote anapaswa kuwa na idhini za kutosha za kuchunguza mambo kama vile, watumiaji, vikundi, majukumu, wakala wa huduma... (angalia idhini za chaguo-msingi za AzureAD). Unaweza kupata mwongozo hapa:

pageAz - AzureAD (AAD)

Sasa kwamba una habari kuhusu vibali vyako (na kama wewe ni timu nyekundu kwa matumaini haujagunduliwa). Ni wakati wa kubaini ni huduma zipi zinazotumiwa katika mazingira. Katika sehemu ifuatayo unaweza kuangalia njia kadhaa za kuchunguza huduma za kawaida.

Mwakilishi wa Huduma na Sera ya Kufikia

Huduma ya Azure inaweza kuwa na Kitambulisho cha Mfumo (cha huduma yenyewe) au kutumia Kitambulisho cha Usimamizi kilichopewa Mtumiaji. Kitambulisho hiki kinaweza kuwa na Sera ya Kufikia, kwa mfano, kwa KeyVault ili kusoma siri. Sera hizi za Kufikia zinapaswa kuwa zimezuiliwa (kanuni ya idhini ndogo), lakini zinaweza kuwa na idhini zaidi kuliko inavyohitajika. Kwa kawaida Huduma ya Programu ingetumia KeyVault kupata siri na vyeti.

Hivyo ni muhimu kuchunguza vitambulisho hivi.

Konsoli ya App Service SCM

Konsoli ya Kudu kuingia kwenye 'kontena' la Huduma ya Programu.

Webshell

Tumia portal.azure.com na chagua shell, au tumia shell.azure.com, kwa bash au powershell. 'Diski' ya kishell hiki imehifadhiwa kama faili ya picha katika akaunti ya uhifadhi.

Azure DevOps

Azure DevOps ni tofauti na Azure. Ina hazina, mabomba (yaml au kutolewa), bodi, wiki, na zaidi. Vikundi vya Vigezo hutumiwa kuhifadhi thamani za vigezo na siri.

Zana za Uchunguzi wa Kiotomatiki

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
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated