12 KiB
Azure Pentesting
{{#include ../../banners/hacktricks-training.md}}
Basiese Inligting
Leer die basiese beginsels van Azure en Entra ID op die volgende bladsy:
{{#ref}} az-basic-information/ {{#endref}}
Azure Pentester/Red Team Metodologie
Om 'n AZURE omgewing te oudit, is dit baie belangrik om te weet: watter dienste gebruik word, wat blootgestel word, wie toegang het tot wat, en hoe interne Azure dienste en eksterne dienste gekoppel is.
Vanuit 'n Red Team perspektief is die eerste stap om 'n Azure omgewing te kompromitteer om 'n voothold te verkry.
Eksterne enum & Begin Toegang
Die eerste stap is natuurlik om inligting oor die tenant wat jy aanval, te evalueer en te probeer om 'n voet in die deur te kry.
Op grond van die domeinnaam is dit moontlik om te weet of die maatskappy Azure gebruik, die tenant ID te kry, ander geldige domeine in dieselfde tenant (indien meer) te kry en relevante inligting soos of SSO geaktiveer is, e-pos konfigurasies, geldige gebruikers e-posse...
Kyk na die volgende bladsy om te leer hoe om die eksterne enumerasie uit te voer:
{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}
Met hierdie inligting is die mees algemene maniere om 'n voet in die deur te kry:
- OSINT: Kyk vir leaks in Github of enige ander oopbron platform wat akkrediteer of interessante inligting kan bevat.
- Wagwoord hergebruik, leaks of wagwoord spuit
- Koop akkrediteer van 'n werknemer
- Algemene Phishing (akkrediteer of Oauth App)
- Toestelkode Verifikasie Phishing
- 3de partye gekompromitteer
- Kwetsbaarhede in Azure-gehoste toepassings
- Server Side Request Forgery met toegang tot metadata eindpunt
- Subdomein oorneem soos in https://godiego.co/posts/STO-Azure/
- Ander azure dienste misconfigurasies
- As 'n ontwikkelaar se skootrekenaar gecompromitteer is (WinPEAS en LinPEAS kan hierdie inligting vind):
- Binne
<HOME>/.Azure azureProfile.jsonbevat inligting oor ingelogde gebruikers van die verledeclouds.config bevatinligting oor intekeningeservice_principal_entries.jsonbevat toepassings akkrediteer (tenant id, kliënte en geheim). Slegs in Linux & macOSmsal_token_cache.jsonbevat toegangstokens en verfrissingstokens. Slegs in Linux & macOSservice_principal_entries.binen msal_token_cache.bin word in Windows gebruik en is met DPAPI versleuteldmsal_http_cache.binis 'n cache van HTTP versoek- Laai dit:
with open("msal_http_cache.bin", 'rb') as f: pickle.load(f) AzureRmContext.jsonbevat inligting oor vorige aanmeldings met Az PowerShell (maar geen akkrediteer nie)- Binne
C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*is verskeie.binlêers met toegangstokens, ID tokens en rekeninginligting versleuteld met die gebruikers DPAPI. - Dit is moontlik om meer toegangstokens in die
.tbreslêers binneC:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\te vind wat 'n base64 versleuteling met DPAPI met toegangstokens bevat. - In Linux en macOS kan jy toegangstokens, verfrissingstokens en id tokens van Az PowerShell (indien gebruik) verkry deur
pwsh -Command "Save-AzContext -Path /tmp/az-context.json"te loop. - In Windows genereer dit net id tokens.
- Dit is moontlik om te sien of Az PowerShell in Linux en macOS gebruik is deur te kyk of
$HOME/.local/share/.IdentityService/bestaan (alhoewel die bevat lêers leeg en nutteloos is)
Vind ander Azure Dienste misconfigurasies wat tot 'n voet in die deur kan lei op die volgende bladsy:
{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}
Note
Onthou dat gewoonlik die luidste deel van die enumerasie die aanmelding is, nie die enumerasie self nie.
Azure & Entra ID gereedskap
Die volgende gereedskap sal baie nuttig wees om beide Entra ID tenants en Azure omgewings stadig (om opsporing te vermy) of outomaties (om tyd te bespaar) te evalueer:
{{#ref}} az-enumeration-tools.md {{#endref}}
Bypass Toegang Beleide

In gevalle waar jy 'n paar geldige akkrediteer het maar nie kan aanmeld nie, is dit 'n paar algemene beskermings wat in plek kan wees:
- IP witlys -- Jy moet 'n geldige IP kompromitteer
- Geo beperkings -- Vind waar die gebruiker woon of waar die kantore van die maatskappy is en kry 'n IP van dieselfde stad (of land ten minste)
- Blaaier -- Miskien is slegs 'n blaaier van sekere OS (Windows, Linux, Mac, Android, iOS) toegelaat. Vind uit watter OS die slagoffer/maatskappy gebruik.
- Jy kan ook probeer om Service Principal akkrediteer te kompromitteer aangesien hulle gewoonlik minder beperk is en hul aanmelding minder nagegaan word
Nadat jy dit omseil het, mag jy in staat wees om terug te keer na jou aanvanklike opstelling en jy sal steeds toegang hê.
Kyk:
{{#ref}} az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}}
Whoami
Caution
Leer hoe om az cli, AzureAD en Az PowerShell te installeer in die Az - Entra ID afdeling.
Een van die eerste dinge wat jy moet weet is wie jy is (in watter omgewing jy is):
{{#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 Enumerasie & Privesc
Standaard behoort enige gebruiker voldoende regte te hê om dinge soos gebruikers, groepe, rolle, diensprincipals... te enumereer (kyk standaard AzureAD regte).
Hier kan jy 'n gids vind:
{{#ref}} az-services/az-azuread.md {{#endref}}
Kyk na die Post-Exploitation gereedskap om gereedskap te vind om regte in Entra ID te eskaleer soos AzureHound:
{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}
Azure Enumerasie
Sodra jy weet wie jy is, kan jy begin om die Azure dienste waartoe jy toegang het te enumereer.
Jy moet begin om die regte wat jy het oor die hulpbronne uit te vind. Hiervoor:
- Vind die hulpbron waartoe jy toegang het:
Tip
Dit vereis nie enige spesiale regte nie.
Die Az PowerShell opdrag Get-AzResource laat jou weet watter hulpbronne jou huidige gebruiker sigbaarheid oor het.
Boonop kan jy dieselfde inligting in die webkonsol kry deur na https://portal.azure.com/#view/HubsExtension/BrowseAll te gaan of te soek na "Alle hulpbronne" of deur die volgende uit te voer:
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
- Vind die toestemmings wat jy oor die hulpbronne het wat jy kan sien:
Tip
Dit vereis nie enige spesiale toestemming nie.
Deur met die API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01 te praat, kan jy die toestemmings wat jy oor die gespesifiseerde hulpbron in die resource_id het, verkry.
Daarom, deur elkeen van die hulpbronne wat jy toegang tot het na te gaan, kan jy die toestemmings wat jy oor hulle het, verkry.
Warning
Jy kan hierdie opsporing outomatiseer met die hulpmiddel Find_My_Az_Management_Permissions.
Enumerate permissions with **`Microsoft.Authorization/roleAssignments/read`**
Tip
Let daarop dat jy die toestemming
Microsoft.Authorization/roleAssignments/readnodig het om hierdie aksie uit te voer.
- Met genoeg toestemmings kan die rol
Get-AzRoleAssignmentgebruik word om alle rolle in die intekening of die toestemming oor 'n spesifieke hulpbron te opspoor deur dit soos volg aan te dui:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
Dit is ook moontlik om hierdie inligting te verkry deur te loop:
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
soos in:
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"
- 'n Ander opsie is om die rolle wat aan jou in azure geheg is, te kry. Dit vereis ook die toestemming
Microsoft.Authorization/roleAssignments/read:
az role assignment list --assignee "<email>" --all --output table
Of die volgende uit te voer (As die resultate leeg is, kan dit wees omdat jy nie die toestemming het om dit te verkry nie):
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>'
- Vind die fynkorrelasie toestemmings van die rolle wat aan jou geheg is:
Dan, om die fynkorrelasie toestemming te kry, kan jy (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions uitvoer.
Of bel die API direk met
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
In die volgende afdeling kan jy inligting oor die mees algemene Azure dienste en hoe om hulle te enumerate vind:
{{#ref}} az-services/ {{#endref}}
Privilege Escalation, Post-Exploitation & Persistence
Sodra jy weet hoe die Azure omgewing gestruktureer is en watter dienste gebruik word, kan jy begin soek na maniere om privileges te verhoog, lateraal te beweeg, ander post-exploitation aanvalle uit te voer en volharding te handhaaf.
In die volgende afdeling kan jy inligting vind oor hoe om privileges te verhoog in die mees algemene Azure dienste:
{{#ref}} az-privilege-escalation/ {{#endref}}
In die volgende kan jy inligting vind oor hoe om post-exploitation aanvalle uit te voer in die mees algemene Azure dienste:
{{#ref}} az-post-exploitation/ {{#endref}}
In die volgende kan jy inligting vind oor hoe om volharding te handhaaf in die mees algemene Azure dienste:
{{#ref}} az-persistence/ {{#endref}}
{{#include ../../banners/hacktricks-training.md}}