Azure Pentesting
{{#include ../../banners/hacktricks-training.md}}
Basic Information
Μάθετε τα βασικά του Azure και του Entra ID στην παρακάτω σελίδα:
{{#ref}} az-basic-information/ {{#endref}}
Azure Pentester/Red Team Methodology
Για να ελέγξετε ένα περιβάλλον AZURE, είναι πολύ σημαντικό να γνωρίζετε: ποιες υπηρεσίες χρησιμοποιούνται, τι εκτίθεται, ποιος έχει πρόσβαση σε τι και πώς συνδέονται οι εσωτερικές υπηρεσίες Azure με τις εξωτερικές υπηρεσίες.
Από την οπτική γωνία της Red Team, το πρώτο βήμα για να συμβιβαστεί ένα περιβάλλον Azure είναι να καταφέρετε να αποκτήσετε κάποιο foothold.
External enum & Initial Access
Το πρώτο βήμα είναι φυσικά να καταγράψετε πληροφορίες σχετικά με τον ενοικιαστή που επιτίθεστε και να προσπαθήσετε να αποκτήσετε ένα foothold.
Με βάση το όνομα τομέα, είναι δυνατόν να γνωρίζετε αν η εταιρεία χρησιμοποιεί Azure, να αποκτήσετε το tenant ID, να βρείτε άλλους έγκυρους τομείς στον ίδιο ενοικιαστή (αν υπάρχουν περισσότεροι) και να αποκτήσετε σχετικές πληροφορίες όπως αν είναι ενεργοποιημένο το SSO, ρυθμίσεις email, έγκυρες διευθύνσεις email χρηστών...
Ελέγξτε την παρακάτω σελίδα για να μάθετε πώς να εκτελέσετε την εξωτερική καταγραφή:
{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}
Με αυτές τις πληροφορίες, οι πιο κοινές μέθοδοι για να προσπαθήσετε να αποκτήσετε ένα foothold είναι:
- OSINT: Ελέγξτε για leaks στο Github ή σε οποιαδήποτε άλλη ανοιχτή πηγή που θα μπορούσε να περιέχει credentials ή ενδιαφέρουσες πληροφορίες.
- Επαναχρησιμοποίηση κωδικών πρόσβασης, leaks ή password spraying
- Αγορά credentials από έναν υπάλληλο
- Κοινό Phishing (credentials ή Oauth App)
- Phishing με Κωδικό Συσκευής
- 3rd parties breached
- Ευπάθειες σε εφαρμογές που φιλοξενούνται στο Azure
- Server Side Request Forgery με πρόσβαση στο endpoint μεταδεδομένων
- Αναλήψεις υποτομέων όπως στο https://godiego.co/posts/STO-Azure/
- Άλλες κακορυθμίσεις υπηρεσιών Azure
- Αν κάποιο laptop προγραμματιστή έχει συμβιβαστεί (WinPEAS και LinPEAS μπορούν να βρουν αυτές τις πληροφορίες):
- Μέσα στο
<HOME>/.Azure azureProfile.jsonπεριέχει πληροφορίες σχετικά με τους συνδεδεμένους χρήστες από το παρελθόνclouds.configπεριέχει πληροφορίες σχετικά με τις συνδρομέςservice_principal_entries.jsonπεριέχει τα credentials των εφαρμογών (tenant id, clients και secret). Μόνο σε Linux & macOSmsal_token_cache.jsonπεριέχει access tokens και refresh tokens. Μόνο σε Linux & macOSservice_principal_entries.binκαι msal_token_cache.bin χρησιμοποιούνται σε Windows και είναι κρυπτογραφημένα με DPAPImsal_http_cache.binείναι μια cache HTTP αιτημάτων- Φορτώστε το:
with open("msal_http_cache.bin", 'rb') as f: pickle.load(f) AzureRmContext.jsonπεριέχει πληροφορίες σχετικά με προηγούμενες συνδέσεις χρησιμοποιώντας Az PowerShell (αλλά όχι credentials)- Μέσα στο
C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*υπάρχουν διάφορα αρχεία.binμε access tokens, ID tokens και πληροφορίες λογαριασμού κρυπτογραφημένα με το DPAPI των χρηστών. - Είναι δυνατόν να βρείτε περισσότερα access tokens στα αρχεία
.tbresμέσα στοC:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\που περιέχουν ένα base64 κρυπτογραφημένο με DPAPI με access tokens. - Σε Linux και macOS μπορείτε να αποκτήσετε access tokens, refresh tokens και id tokens από το Az PowerShell (αν χρησιμοποιείται) εκτελώντας
pwsh -Command "Save-AzContext -Path /tmp/az-context.json" - Σε Windows αυτό απλά δημιουργεί id tokens.
- Είναι δυνατόν να δείτε αν χρησιμοποιήθηκε το Az PowerShell σε Linux και macOS ελέγχοντας αν υπάρχει το
$HOME/.local/share/.IdentityService/(αν και τα περιεχόμενα αρχεία είναι κενά και άχρηστα)
Βρείτε άλλες κακορυθμίσεις υπηρεσιών Azure που μπορούν να οδηγήσουν σε ένα foothold στην παρακάτω σελίδα:
{{#ref}} az-unauthenticated-enum-and-initial-entry/ {{#endref}}
Note
Θυμηθείτε ότι συνήθως το θορυβώδες μέρος της καταγραφής είναι η σύνδεση, όχι η ίδια η καταγραφή.
Azure & Entra ID tooling
Τα παρακάτω εργαλεία θα είναι πολύ χρήσιμα για να καταγράψετε αργά (για να αποφύγετε την ανίχνευση) ή αυτόματα (για να εξοικονομήσετε χρόνο) τόσο τους ενοικιαστές Entra ID όσο και τα περιβάλλοντα Azure:
{{#ref}} az-enumeration-tools.md {{#endref}}
Bypass Access Policies

Σε περιπτώσεις όπου έχετε κάποια έγκυρα credentials αλλά δεν μπορείτε να συνδεθείτε, αυτές είναι μερικές κοινές προστασίες που θα μπορούσαν να είναι σε εφαρμογή:
- IP whitelisting -- Πρέπει να συμβιβάσετε μια έγκυρη IP
- Geo restrictions -- Βρείτε πού ζει ο χρήστης ή πού βρίσκονται τα γραφεία της εταιρείας και αποκτήστε μια IP από την ίδια πόλη (ή τουλάχιστον από τη χώρα)
- Browser -- Ίσως μόνο ένας browser από ορισμένα OS (Windows, Linux, Mac, Android, iOS) είναι επιτρεπτός. Ανακαλύψτε ποιο OS χρησιμοποιεί το θύμα/εταιρεία.
- Μπορείτε επίσης να προσπαθήσετε να συμβιβάσετε τα credentials του Service Principal καθώς συνήθως είναι λιγότερο περιορισμένα και η σύνδεσή τους ελέγχεται λιγότερο
Αφού παρακάμψετε αυτό, μπορεί να είστε σε θέση να επιστρέψετε στην αρχική σας ρύθμιση και θα έχετε ακόμα πρόσβαση.
Ελέγξτε:
{{#ref}} az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}}
Whoami
Caution
Μάθετε πώς να εγκαταστήσετε az cli, AzureAD και Az PowerShell στην ενότητα Az - Entra ID.
Ένα από τα πρώτα πράγματα που πρέπει να γνωρίζετε είναι ποιος είστε (σε ποιο περιβάλλον βρίσκεστε):
{{#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 Enumeration & Privesc
Από προεπιλογή, οποιοσδήποτε χρήστης θα πρέπει να έχει αρκετά δικαιώματα για να καταγράψει πράγματα όπως χρήστες, ομάδες, ρόλους, υπηρεσιακούς κύριους... (ελέγξτε default AzureAD permissions).
Μπορείτε να βρείτε εδώ έναν οδηγό:
{{#ref}} az-services/az-azuread.md {{#endref}}
Ελέγξτε τα Post-Exploitation tools για να βρείτε εργαλεία για την κλιμάκωση δικαιωμάτων στο Entra ID όπως το AzureHound:
{{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}}
Azure Enumeration
Μόλις γνωρίζετε ποιος είστε, μπορείτε να αρχίσετε να καταγράφετε τις υπηρεσίες Azure στις οποίες έχετε πρόσβαση.
Πρέπει να αρχίσετε να ανακαλύπτετε τα δικαιώματα που έχετε πάνω στους πόρους. Για αυτό:
- Βρείτε τον πόρο στον οποίο έχετε κάποια πρόσβαση:
Η εντολή Az PowerShell Get-AzResource σας επιτρέπει να γνωρίζετε τους πόρους που έχει ο τρέχων χρήστης σας ορατούς.
Επιπλέον, μπορείτε να αποκτήσετε τις ίδιες πληροφορίες στην ιστοσελίδα πηγαίνοντας στο https://portal.azure.com/#view/HubsExtension/BrowseAll ή αναζητώντας "Όλοι οι πόροι" ή εκτελώντας:
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
- Βρείτε τις άδειες που έχετε πάνω στους πόρους στους οποίους έχετε πρόσβαση και βρείτε τους ρόλους που σας έχουν ανατεθεί:
Σημειώστε ότι χρειάζεστε την άδεια Microsoft.Authorization/roleAssignments/read για να εκτελέσετε αυτή την ενέργεια.
Επιπλέον, με αρκετές άδειες, ο ρόλος Get-AzRoleAssignment μπορεί να χρησιμοποιηθεί για να καταγράψει όλους τους ρόλους στην υπογραφή ή την άδεια πάνω σε έναν συγκεκριμένο πόρο υποδεικνύοντάς τον όπως παρακάτω:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
Είναι επίσης δυνατό να αποκτήσετε αυτές τις πληροφορίες εκτελώντας:
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
όπως στο:
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=2020-08-01-preview" | jq ".value"
Μια άλλη επιλογή είναι να αποκτήσετε τους ρόλους που είναι συνδεδεμένοι σε εσάς στο azure με:
az role assignment list --assignee "<email>" --all --output table
Ή εκτελώντας το παρακάτω (Εάν τα αποτελέσματα είναι κενά, μπορεί να είναι επειδή δεν έχετε την άδεια να τα αποκτήσετε):
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>'
- Βρείτε τις λεπτομερείς άδειες των ρόλων που είναι συνδεδεμένοι σε εσάς:
Στη συνέχεια, για να αποκτήσετε την λεπτομερή άδεια μπορείτε να εκτελέσετε (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.
Ή να καλέσετε την API απευθείας με
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"
Στην παρακάτω ενότητα μπορείτε να βρείτε πληροφορίες σχετικά με τις πιο κοινές υπηρεσίες Azure και πώς να τις καταγράψετε:
{{#ref}} az-services/ {{#endref}}
Κλιμάκωση Δικαιωμάτων, Μετά-Εκμετάλλευση & Διαρκής Παρουσία
Μόλις γνωρίζετε πώς είναι δομημένο το περιβάλλον Azure και ποιες υπηρεσίες χρησιμοποιούνται, μπορείτε να αρχίσετε να αναζητάτε τρόπους για να κλιμακώσετε τα δικαιώματα, να μετακινηθείτε οριζόντια, να εκτελέσετε άλλες επιθέσεις μετά-εκμετάλλευσης και να διατηρήσετε τη διαρκή παρουσία.
Στην παρακάτω ενότητα μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να κλιμακώσετε τα δικαιώματα στις πιο κοινές υπηρεσίες Azure:
{{#ref}} az-privilege-escalation/ {{#endref}}
Στην επόμενη μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να εκτελέσετε επιθέσεις μετά-εκμετάλλευσης στις πιο κοινές υπηρεσίες Azure:
{{#ref}} az-post-exploitation/ {{#endref}}
Στην επόμενη μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να διατηρήσετε τη διαρκή παρουσία στις πιο κοινές υπηρεσίες Azure:
{{#ref}} az-persistence/ {{#endref}}
{{#include ../../banners/hacktricks-training.md}}