Azure Pentesting

Reading time: 10 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

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

Az - Basic Information

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:

Az - Unauthenticated Enum & Initial Entry

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:

Az - Unauthenticated Enum & Initial Entry

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):

Az - Enumeration Tools

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:

Az - Conditional Access Policies & MFA Bypass

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):

bash
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

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č:

Az - Entra ID (AzureAD) & Azure IAM

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

Automated Post Exploitation Tools

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:

bash
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:
bash
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:

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

kao u:

bash
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:
bash
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):

bash
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

bash
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:

Az - Services

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:

Az - Privilege Escalation

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

Az - Post Exploitation

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

Az - Persistence

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks