Azure Pentesting

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

JOŠ UVEK GRADIM AZURE METODOLOGIJU

Osnovne informacije

pageAz - Basic Information

Azure Testiranje penetracije/Crveni tim metodologija

Da biste izvršili reviziju AZURE okruženja, veoma je važno znati: koje usluge se koriste, šta je izloženo, ko ima pristup čemu, i kako su interni Azure servisi i spoljni servisi povezani.

Sa stanovišta Crvenog tima, prvi korak ka kompromitovanju Azure okruženja je uspeh u dobijanju nekih poverljivih podataka za Azure AD. Evo nekih ideja kako to postići:

  • Curenja u github-u (ili slično) - OSINT

  • Društveno inženjerstvo

  • Ponovna upotreba lozinke (curenje lozinki)

  • Ranjivosti u Azure-hostovanim aplikacijama

  • Server Side Request Forgery sa pristupom tački metapodataka

  • Čitanje lokalnih fajlova

  • /home/USERNAME/.azure

  • C:\Users\USERNAME\.azure

  • Fajl accessTokens.json u az cli pre 2.30 - Jan2022 - čuva poverljive podatke u čistom tekstu

  • Fajl azureProfile.json sadrži informacije o prijavljenom korisniku.

  • az logout uklanja token.

  • Starije verzije Az PowerShell čuvaju poverljive podatke u čistom tekstu u TokenCache.dat. Takođe čuva ServicePrincipalSecret u čistom tekstu u AzureRmContext.json. Komanda Save-AzContext može se koristiti za čuvanje tokena. Koristite Disconnect-AzAccount za njihovo uklanjanje.

    1. lica su hakovana

  • Interni zaposleni

  • Uobičajeno ribarenje (poverljivi podaci ili Oauth aplikacija)

Čak i ako niste kompromitovali nijednog korisnika unutar Azure zakupca kojeg napadate, možete prikupiti neke informacije od njega:

pageAz - Unauthenticated Enum & Initial Entry

Nakon što ste uspeli da dobijete poverljive podatke, potrebno je znati kome ti podaci pripadaju, i na šta imaju pristup, stoga morate izvršiti osnovnu enumeraciju:

Osnovna enumeracija

Zapamtite da je najglasniji deo enumeracije prijava, a ne sama enumeracija.

SSRF

Ako pronađete SSRF na mašini unutar Azure, proverite ovu stranicu za trikove:

Bypass Uslova Prijave

U slučajevima kada imate validne poverljive podatke ali ne možete se prijaviti, ovo su neke uobičajene zaštite koje mogu biti na snazi:

  • IP bela lista -- Morate kompromitovati validnu IP adresu

  • Geografska ograničenja -- Pronađite gde korisnik živi ili gde su kancelarije kompanije i dobijte IP adresu iz istog grada (ili barem države)

  • Pregledač -- Možda je dozvoljen samo pregledač sa određenim OS (Windows, Linux, Mac, Android, iOS). Otkrijte koji OS koristi žrtva/kompanija.

  • Takođe možete pokušati da kompromitujete poverljive podatke servisnog principala jer su obično manje ograničeni i njihova prijava se manje pregleda

Nakon što ih zaobiđete, možda ćete moći da se vratite na početno podešavanje i i dalje imate pristup.

Preuzimanje poddomena

Ko sam ja

Naučite kako da instalirate az cli, AzureAD i Az PowerShell u odeljku Az - AzureAD.

Jedna od prvih stvari koje treba da znate je ko ste (u kojem okruženju se nalazite):

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

Uvod

U ovom odeljku ćemo istražiti nekoliko tehnika koje se mogu koristiti za testiranje bezbednosti Azure Active Directory (AzureAD).

Pass-the-Hash napad

Pass-the-Hash napad je tehnika koja omogućava napadaču da koristi hash lozinke umesto stvarne lozinke za autentikaciju na sistemu. Ovo može biti efikasna tehnika za zaobilaženje zaštite lozinki i dobijanje pristupa sistemu.

Brute Force napad

Brute Force napad je tehnika u kojoj napadač pokušava sve moguće kombinacije lozinki kako bi pronašao ispravnu lozinku i dobio pristup nalogu. Ovo može biti efikasan način za probijanje slabih lozinki.

Phishing napad

Phishing napad je tehnika socijalnog inženjeringa koja podrazumeva slanje lažnih e-pošti ili poruka kako bi se korisnici doveli u zabludu da otkriju svoje lozinke ili druge osetljive informacije. Ovo može biti efikasan način za krađu pristupnih podataka.

Zaključak

AzureAD može biti meta različitih vrsta napada, uključujući Pass-the-Hash, Brute Force i Phishing napade. Važno je redovno testirati bezbednost AzureAD kako bi se identifikovale potencijalne ranjivosti i preduzele odgovarajuće mere zaštite.

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

Az PowerShell

Az PowerShell modul je zvanični PowerShell modul za interakciju sa Azure-om. Omogućava izvršavanje različitih operacija u okviru Azure-a korišćenjem PowerShell skripti.

Instalacija

Az PowerShell modul se može instalirati korišćenjem PowerShellGet modula. Evo kako možete instalirati Az PowerShell modul:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

Autentikacija

Da biste se autentikovali koristeći Az PowerShell modul, možete koristiti sledeću komandu:

Connect-AzAccount

Ova komanda će vas uputiti da se prijavite koristeći prozor za prijavu koji će se otvoriti u vašem web pregledaču.

Primeri korišćenja

Evo nekoliko primera kako možete koristiti Az PowerShell modul:

  • Prikaz svih resursnih grupa:

Get-AzResourceGroup
  • Kreiranje nove resursne grupe:

New-AzResourceGroup -Name myResourceGroup -Location eastus
  • Brisanje resursne grupe:

Remove-AzResourceGroup -Name myResourceGroup

Ovo su samo neki od primera kako možete koristiti Az PowerShell modul za upravljanje Azure resursima.

# 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

Jedna od najvažnijih komandi za enumeraciju Azure-a je Get-AzResource iz Az PowerShell-a jer vam omogućava da saznate resurse koje vaš trenutni korisnik može da vidi.

Iste informacije možete dobiti i u web konzoli odlaskom na https://portal.azure.com/#view/HubsExtension/BrowseAll ili pretragom "All resources".

AzureAD Enumeracija

Podrazumevano, svaki korisnik bi trebalo da ima dovoljno dozvola za enumeraciju stvari poput korisnika, grupa, uloga, servisnih principala... (proverite podrazumevane AzureAD dozvole). Ovde možete pronaći vodič:

pageAz - AzureAD (AAD)

Sada kada imate neke informacije o svojim akreditivima (i ako ste deo crvenog tima, nadamo se da niste otkriveni), vreme je da saznate koje usluge se koriste u okruženju. U sledećem odeljku možete proveriti neke načine za enumeraciju nekih uobičajenih usluga.

Servisni princip i Politika pristupa

Azure servis može imati Identitet sistema (samog servisa) ili koristiti dodeljeni identitet upravljanih korisnika. Ovaj Identitet može imati Politiku pristupa, na primer, KeyVault-u za čitanje tajni. Ove Politike pristupa trebalo bi da budu ograničene (princip najmanjih privilegija), ali mogu imati više dozvola nego što je potrebno. Tipično, App Service bi koristio KeyVault za dobijanje tajni i sertifikata.

Stoga je korisno istražiti ove identitete.

App Service SCM

Kudu konzola za prijavljivanje na App Service 'kontejner'.

Webshell

Koristite portal.azure.com i izaberite shell, ili koristite shell.azure.com, za bash ili powershell. 'Disk' ovog šella se čuva kao slikovna datoteka u storage nalogu.

Azure DevOps

Azure DevOps je odvojen od Azure-a. Ima repozitorijume, tokove (yaml ili izdanje), table, wiki i još mnogo toga. Grupi promenljivih se koriste za čuvanje vrednosti promenljivih i tajni.

Automatizovani alati za istraživanje

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
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks:

Last updated