Azure Pentesting
Reading time: 10 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Informazioni di base
Impara le basi di Azure e Entra ID nella seguente pagina:
Metodologia di Pentesting/Red Team di Azure
Per auditare un ambiente AZURE è molto importante sapere: quali servizi vengono utilizzati, cosa è esposto, chi ha accesso a cosa e come sono connessi i servizi interni di Azure e i servizi esterni.
Dal punto di vista di un Red Team, il primo passo per compromettere un ambiente Azure è riuscire a ottenere un foothold.
Enumerazione esterna e accesso iniziale
Il primo passo è ovviamente enumerare informazioni sul tenant che stai attaccando e cercare di ottenere un foothold.
In base al nome di dominio è possibile sapere se l'azienda sta utilizzando Azure, ottenere il tenant ID, ottenere altri domini validi nello stesso tenant (se ce ne sono) e ottenere informazioni rilevanti come se SSO è abilitato, configurazioni email, email di utenti validi...
Controlla la seguente pagina per imparare come eseguire l'enumerazione esterna:
Az - Unauthenticated Enum & Initial Entry
Con queste informazioni, i modi più comuni per cercare di ottenere un foothold sono:
- OSINT: Controlla eventuali leaks su Github o su qualsiasi altra piattaforma open source che potrebbe contenere credenziali o informazioni interessanti.
- Riutilizzo delle password, leaks o password spraying
- Acquistare credenziali da un dipendente
- Phishing comune (credenziali o Oauth App)
- Phishing con autenticazione a codice dispositivo
- Violazioni di terze parti
- Vulnerabilità nelle applicazioni ospitate su Azure
- Server Side Request Forgery con accesso all'endpoint dei metadati
- Subdomain takeovers come in https://godiego.co/posts/STO-Azure/
- Altre misconfigurazioni dei servizi Azure
- Se un laptop di uno sviluppatore è compromesso (WinPEAS e LinPEAS possono trovare queste informazioni):
- All'interno di
<HOME>/.Azure
azureProfile.json
contiene informazioni sugli utenti connessi in passatoclouds.config
contiene informazioni sulle sottoscrizioniservice_principal_entries.json
contiene credenziali delle applicazioni (tenant id, client e segreto). Solo in Linux e macOSmsal_token_cache.json
contiene token di accesso e token di aggiornamento. Solo in Linux e macOSservice_principal_entries.bin
e msal_token_cache.bin sono utilizzati in Windows e sono crittografati con DPAPImsal_http_cache.bin
è una cache delle richieste HTTP- Caricalo:
with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
AzureRmContext.json
contiene informazioni sui login precedenti utilizzando Az PowerShell (ma nessuna credenziale)- All'interno di
C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*
ci sono diversi file.bin
con token di accesso, token ID e informazioni sull'account crittografate con DPAPI degli utenti. - È possibile trovare ulteriori token di accesso nei file
.tbres
all'interno diC:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\
che contengono un base64 crittografato con DPAPI con token di accesso. - In Linux e macOS puoi ottenere token di accesso, token di aggiornamento e token ID da Az PowerShell (se utilizzato) eseguendo
pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
- In Windows questo genera solo token ID.
- Possibile vedere se Az PowerShell è stato utilizzato in Linux e macOS controllando se
$HOME/.local/share/.IdentityService/
esiste (anche se i file contenuti sono vuoti e inutili)
Trova altre misconfigurazioni dei servizi Azure che possono portare a un foothold nella seguente pagina:
Az - Unauthenticated Enum & Initial Entry
note
Ricorda che di solito la parte più rumorosa dell'enumerazione è il login, non l'enumerazione stessa.
Strumenti Azure & Entra ID
I seguenti strumenti saranno molto utili per enumerare sia i tenant di Entra ID che gli ambienti Azure lentamente (per evitare il rilevamento) o automaticamente (per risparmiare tempo):
Bypass delle politiche di accesso
.png)
Nei casi in cui hai alcune credenziali valide ma non puoi accedere, queste sono alcune protezioni comuni che potrebbero essere in atto:
- Whitelist IP -- Devi compromettere un IP valido
- Restrizioni geografiche -- Scopri dove vive l'utente o dove si trovano gli uffici dell'azienda e ottieni un IP dalla stessa città (o paese almeno)
- Browser -- Forse è consentito solo un browser di un certo OS (Windows, Linux, Mac, Android, iOS). Scopri quale OS utilizza la vittima/azienda.
- Puoi anche provare a compromettere le credenziali del Service Principal poiché di solito sono meno limitate e il loro login è meno controllato
Dopo averlo bypassato, potresti essere in grado di tornare alla tua configurazione iniziale e avrai ancora accesso.
Controlla:
Az - Conditional Access Policies & MFA Bypass
Whoami
caution
Impara come installare az cli, AzureAD e Az PowerShell nella sezione Az - Entra ID.
Una delle prime cose che devi sapere è chi sei (in quale ambiente ti trovi):
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
Enumerazione di Entra ID e Privesc
Per impostazione predefinita, qualsiasi utente dovrebbe avere sufficienti permessi per enumerare cose come utenti, gruppi, ruoli, service principals... (controlla permessi predefiniti di AzureAD).
Puoi trovare qui una guida:
Az - Entra ID (AzureAD) & Azure IAM
Controlla gli strumenti di Post-Exploitation per trovare strumenti per elevare i privilegi in Entra ID come AzureHound:
Automated Post Exploitation Tools
Enumerazione di Azure
Una volta che sai chi sei, puoi iniziare a enumerare i servizi Azure a cui hai accesso.
Dovresti iniziare a scoprire i permessi che hai sulle risorse. Per questo:
- Trova la risorsa a cui hai accesso:
tip
Questo non richiede alcun permesso speciale.
Il comando Az PowerShell Get-AzResource
ti consente di conoscere le risorse su cui il tuo utente attuale ha visibilità.
Inoltre, puoi ottenere le stesse informazioni nella console web andando su https://portal.azure.com/#view/HubsExtension/BrowseAll o cercando "Tutte le risorse" o eseguendo:
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
- Trova i permessi che hai sulle risorse che puoi vedere:
tip
Questo non richiede alcun permesso speciale.
Parlando con l'API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01
, puoi ottenere i permessi che hai sulla risorsa specificata in resource_id
.
Pertanto, controllando ciascuna delle risorse a cui hai accesso, puoi ottenere i permessi che hai su di esse.
warning
Puoi automatizzare questa enumerazione utilizzando lo strumento Find_My_Az_Management_Permissions.
Enumerare i permessi con **`Microsoft.Authorization/roleAssignments/read`**
tip
Nota che hai bisogno del permesso Microsoft.Authorization/roleAssignments/read
per eseguire questa azione.
- Con permessi sufficienti, il ruolo
Get-AzRoleAssignment
può essere utilizzato per enumerare tutti i ruoli nell'abbonamento o il permesso su una risorsa specifica indicandola come in:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
È anche possibile ottenere queste informazioni eseguendo:
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
come 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"
- Un'altra opzione è ottenere i ruoli a te assegnati in azure. Questo richiede anche il permesso
Microsoft.Authorization/roleAssignments/read
:
az role assignment list --assignee "<email>" --all --output table
O eseguendo quanto segue (se i risultati sono vuoti, potrebbe essere perché non hai il permesso di ottenerli):
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>'
- Trova i permessi granulari dei ruoli a te associati:
Poi, per ottenere il permesso granulare puoi eseguire (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions
.
Oppure chiama direttamente l'API con
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
Nella seguente sezione puoi trovare informazioni sui servizi Azure più comuni e su come enumerarli:
Escalation dei privilegi, Post-Exploitation & Persistenza
Una volta che conosci come è strutturato l'ambiente Azure e quali servizi vengono utilizzati, puoi iniziare a cercare modi per escalare i privilegi, muoverti lateralmente, eseguire altri attacchi post-exploitation e mantenere la persistenza.
Nella seguente sezione puoi trovare informazioni su come escalare i privilegi nei servizi Azure più comuni:
Nella seguente puoi trovare informazioni su come eseguire attacchi post-exploitation nei servizi Azure più comuni:
Nella seguente puoi trovare informazioni su come mantenere la persistenza nei servizi Azure più comuni:
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.