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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Naučite osnove Azure i Entra ID na sledećoj stranici:
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šlosticlouds.config
sadrži informacije o pretplatamaservice_principal_entries.json
sadrži akreditive aplikacija (tenant id, klijente i tajnu). Samo na Linux-u i macOS-umsal_token_cache.json
sadrži pristupne tokene i tokene za osvežavanje. Samo na Linux-u i macOS-uservice_principal_entries.bin
i msal_token_cache.bin se koriste na Windows-u i su enkriptovani sa DPAPImsal_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 unutarC:\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):
Obilaženje pristupnih politika
.png)
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):
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:
- 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"
- 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:
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:
U sledećem možete pronaći informacije o tome kako izvesti napade posle eksploatacije u najčešćim Azure uslugama:
U sledećem možete pronaći informacije o tome kako održati postojanost u najčešćim Azure uslugama:
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.