Files
hacktricks-cloud/src/pentesting-cloud/azure-security

Azure Pentesting

{{#include ../../banners/hacktricks-training.md}}

Osnovne informacije

Naučite osnove Azure i Entra ID na sledećoj stranici:

{{#ref}} az-basic-information/ {{#endref}}

Azure Pentester/Red Team metodologija

Da biste auditovali AZURE okruženje, veoma je važno znati: koje usluge se koriste, šta je izloženo, ko ima pristup čemu, i kako su interne Azure usluge i eksterne usluge povezane.

Iz perspektive Red Teama, prvi korak za kompromitovanje Azure okruženja je da se uspe da se dobije neki foothold.

Eksterna enumeracija i inicijalni pristup

Prvi korak je, naravno, da se enumerišu informacije o tenant-u koji napadate i pokušate da dobijete foothold.

Na osnovu imena domena moguće je znati da li kompanija koristi Azure, dobiti tenant ID, dobiti druge validne domene u istom tenant-u (ako ih ima više) i dobiti relevantne informacije kao što su da li je SSO omogućeno, konfiguracije mail-a, validne korisničke email adrese...

Proverite sledeću stranicu da biste naučili kako da izvršite eksternu enumeraciju:

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

Sa ovim informacijama, najčešći načini da pokušate da dobijete foothold su:

  • OSINT: Proverite za leak-ove na Github-u ili bilo kojoj drugoj otvorenoj platformi koja bi mogla sadržati akreditive ili zanimljive informacije.
  • Ponovna upotreba lozinki, leak-ovi ili password spraying
  • Kupovina akreditiva od zaposlenog
  • Uobičajeni Phishing (akreditivi ili Oauth aplikacija)
  • Phishing putem Device Code Authentication
  • 3rd party provale
  • Ranljivosti u aplikacijama hostovanim na Azure-u
  • Server Side Request Forgery sa pristupom metadata endpoint-u
  • Preuzimanje poddomena kao u https://godiego.co/posts/STO-Azure/
  • Druge pogrešne konfiguracije Azure usluga
  • Ako je neki laptop programera kompromitovan (WinPEAS i LinPEAS mogu pronaći ove informacije):
  • Unutar <HOME>/.Azure
  • azureProfile.json sadrži informacije o prijavljenim korisnicima iz prošlosti
  • clouds.config sadrži informacije o pretplatama
  • service_principal_entries.json sadrži akreditive aplikacija (tenant id, klijente i tajnu). Samo na Linux-u i macOS-u
  • msal_token_cache.json sadrži pristupne tokene i tokene za osvežavanje. Samo na Linux-u i macOS-u
  • service_principal_entries.bin i msal_token_cache.bin se koriste na Windows-u i su enkriptovani sa DPAPI
  • msal_http_cache.bin je keš HTTP zahteva
  • Učitajte: with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
  • AzureRmContext.json sadrži informacije o prethodnim prijavama koristeći Az PowerShell (ali ne i akreditive)
  • Unutar C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\* se nalaze nekoliko .bin fajlova sa pristupnim tokenima, ID tokenima i informacijama o nalogu enkriptovanim sa korisnikovim DPAPI.
  • Moguće je pronaći više pristupnih tokena u .tbres fajlovima unutar C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\ koji sadrže base64 enkriptovane sa DPAPI pristupne tokene.
  • Na Linux-u i macOS-u možete dobiti pristupne tokene, tokene za osvežavanje i id tokene iz Az PowerShell-a (ako se koristi) pokretanjem pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
  • Na Windows-u ovo samo generiše id tokene.
  • Moguće je videti da li je Az PowerShell korišćen na Linux-u i macOS-u proverom da li $HOME/.local/share/.IdentityService/ postoji (iako su sadržani fajlovi prazni i beskorisni)

Pronađite druge pogrešne konfiguracije Azure usluga koje mogu dovesti do foothold-a na sledećoj stranici:

{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}

Note

Zapamtite da je obično najbučniji deo enumeracije prijava, a ne sama enumeracija.

Azure & Entra ID alati

Sledeći alati će biti veoma korisni za enumeraciju i Entra ID tenant-a i Azure okruženja polako (da izbegnete detekciju) ili automatski (da uštedite vreme):

{{#ref}} az-enumeration-tools.md {{#endref}}

Obilaženje pristupnih politika

U slučajevima kada imate neke validne akreditive, ali ne možete da se prijavite, ovo su neke uobičajene zaštite koje bi mogle biti na snazi:

  • IP whitelisting -- Morate kompromitovati validan IP
  • Geo restrikcije -- Pronađite gde korisnik živi ili gde su kancelarije kompanije i dobijete IP iz istog grada (ili barem iz iste zemlje)
  • Pregledač -- Možda je dozvoljen samo pregledač iz određenog OS-a (Windows, Linux, Mac, Android, iOS). Saznajte koji OS koristi žrtva/kompanija.
  • Takođe možete pokušati da kompromitujete akreditive Service Principal-a jer su obično manje ograničeni i njihova prijava se manje proverava

Nakon obilaženja, možda ćete moći da se vratite na svoju inicijalnu postavku i i dalje ćete imati pristup.

Proverite:

{{#ref}} az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}}

Ko sam ja

Caution

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

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

{{#tabs }} {{#tab name="az cli" }}

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

{{#endtab }}

{{#tab name="Az" }}

# 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

{{#endtab }}

{{#tab name="Mg" }}

#Get the current session
Get-MgContext

{{#endtab }}

{{#tab name="AzureAD" }}

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

{{#endtab }} {{#endtabs }}

Entra ID Enumeracija & Privesc

Po defaultu, svaki korisnik bi trebao imati dovoljno dozvola da enumeriše stvari kao što su korisnici, grupe, uloge, servisni principi... (proverite default AzureAD permissions).
Ovde možete pronaći vodič:

{{#ref}} az-services/az-azuread.md {{#endref}}

Proverite Post-Exploitation alate da pronađete alate za eskalaciju privilegija u Entra ID kao što je AzureHound:

{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}

Azure Enumeracija

Kada znate ko ste, možete početi da enumerišete Azure usluge kojima imate pristup.

Trebalo bi da počnete da otkrivate dozvole koje imate nad resursima. Za to:

  1. Pronađite resurs kojem imate pristup:

Tip

Ovo ne zahteva nikakve posebne dozvole.

Az PowerShell komanda Get-AzResource vam omogućava da saznate resurse koje vaš trenutni korisnik može da vidi.

Pored toga, možete dobiti iste informacije u web konzoli odlaskom na https://portal.azure.com/#view/HubsExtension/BrowseAll ili pretražujući "Svi resursi" ili izvršavajući:

az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Pronađite dozvole koje imate nad resursima koje možete videti:

Tip

Ovo ne zahteva nikakve posebne dozvole.

Razgovarajući sa API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01, možete dobiti dozvole koje imate nad specificiranim resursom u resource_id.

Dakle, proveravajući svaki od resursa kojima imate pristup, možete dobiti dozvole koje imate nad njima.

Warning

Možete automatizovati ovu enumeraciju koristeći alat Find_My_Az_Management_Permissions.

Enumerišite dozvole sa **`Microsoft.Authorization/roleAssignments/read`**

Tip

Imajte na umu da vam je potrebna dozvola Microsoft.Authorization/roleAssignments/read da biste izvršili ovu akciju.

  • Sa dovoljno dozvola, uloga Get-AzRoleAssignment može se koristiti za enumeraciju svih uloga u pretplati ili dozvolu nad specifičnim resursom, označavajući ga kao:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Takođe je moguće dobiti ove informacije pokretanjem:

az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"

kao u:

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
  • Druga opcija je da dobijete uloge koje su vam dodeljene u azure. Ovo takođe zahteva dozvolu Microsoft.Authorization/roleAssignments/read:
az role assignment list --assignee "<email>" --all --output table

Ili pokretanje sledećeg (Ako su rezultati prazni, to može biti zato što nemate dozvolu da ih dobijete):

az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
  • Pronađite granularne dozvole uloga koje su vam dodeljene:

Zatim, da biste dobili granularne dozvole, možete pokrenuti (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.

Ili pozovite API direktno sa

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"

U sledećem odeljku možete pronaći informacije o najčešćim Azure uslugama i kako ih enumerisati:

{{#ref}} az-services/ {{#endref}}

Eskalacija privilegija, post-eksploatacija i postojanost

Kada znate kako je Azure okruženje strukturirano i koje se usluge koriste, možete početi da tražite načine za eskalaciju privilegija, lateralno kretanje, izvođenje drugih napada posle eksploatacije i održavanje postojanosti.

U sledećem odeljku možete pronaći informacije o tome kako eskalirati privilegije u najčešćim Azure uslugama:

{{#ref}} az-privilege-escalation/ {{#endref}}

U sledećem možete pronaći informacije o tome kako izvesti napade posle eksploatacije u najčešćim Azure uslugama:

{{#ref}} az-post-exploitation/ {{#endref}}

U sledećem možete pronaći informacije o tome kako održati postojanost u najčešćim Azure uslugama:

{{#ref}} az-persistence/ {{#endref}}

{{#include ../../banners/hacktricks-training.md}}