diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 54f1ce76a..5939f1183 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -417,15 +417,18 @@ - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md) - [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md) - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md) - - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) + - [Az - Defender](pentesting-cloud/azure-security/az-services/az-defender.md) - [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md) - [Az - Function Apps](pentesting-cloud/azure-security/az-services/az-function-apps.md) + - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) - [Az - Key Vault](pentesting-cloud/azure-security/az-services/az-keyvault.md) - [Az - Logic Apps](pentesting-cloud/azure-security/az-services/az-logic-apps.md) - [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md) + - [Az - Monitoring](pentesting-cloud/azure-security/az-services/az-monitoring.md) - [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md) - [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md) - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue.md) + - [Az - Sentinel](pentesting-cloud/azure-security/az-services/az-sentinel.md) - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus.md) - [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md) - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md) diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 2f6be9b1a..af84425f7 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -20,7 +20,7 @@ az-basic-information/ Το πρώτο βήμα είναι φυσικά να καταγράψετε πληροφορίες σχετικά με τον ενοικιαστή που επιτίθεστε και να προσπαθήσετε να αποκτήσετε ένα foothold. -Με βάση το όνομα τομέα, είναι δυνατόν να γνωρίζετε **αν η εταιρεία χρησιμοποιεί Azure**, να αποκτήσετε το **tenant ID**, να βρείτε άλλους **έγκυρους τομείς** στον ίδιο ενοικιαστή (αν υπάρχουν περισσότεροι) και να αποκτήσετε **σχετικές πληροφορίες** όπως αν είναι ενεργοποιημένο το SSO, ρυθμίσεις email, έγκυρες διευθύνσεις email χρηστών... +Με βάση το όνομα τομέα, είναι δυνατόν να γνωρίζετε **αν η εταιρεία χρησιμοποιεί Azure**, να αποκτήσετε το **tenant ID**, να βρείτε άλλους **έγκυρους τομείς** στον ίδιο ενοικιαστή (αν υπάρχουν) και να αποκτήσετε **σχετικές πληροφορίες** όπως αν είναι ενεργοποιημένο το SSO, ρυθμίσεις email, έγκυρες διευθύνσεις email χρηστών... Ελέγξτε την παρακάτω σελίδα για να μάθετε πώς να εκτελέσετε την **εξωτερική καταγραφή**: @@ -34,22 +34,22 @@ az-unauthenticated-enum-and-initial-entry/ - Αγορά credentials από έναν υπάλληλο - [**Κοινό Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credentials ή Oauth App) - [Phishing με Κωδικό Συσκευής](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) -- 3rd parties **breached** +- **παραβιασμένα** τρίτα μέρη - Ευπάθειες σε εφαρμογές που φιλοξενούνται στο Azure - [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) με πρόσβαση στο endpoint μεταδεδομένων -- **Αναλήψεις υποτομέων** όπως στο [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) +- **Καταλήψεις υποτομέων** όπως στο [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) - **Άλλες κακορυθμίσεις υπηρεσιών Azure** -- Αν κάποιο laptop προγραμματιστή έχει συμβιβαστεί ([WinPEAS και LinPEAS](https://github.com/peass-ng/PEASS-ng) μπορούν να βρουν αυτές τις πληροφορίες): +- Αν κάποιο laptop προγραμματιστή έχει παραβιαστεί ([WinPEAS και LinPEAS](https://github.com/peass-ng/PEASS-ng) μπορούν να βρουν αυτές τις πληροφορίες): - Μέσα στο **`/.Azure`** - **`azureProfile.json`** περιέχει πληροφορίες σχετικά με τους συνδεδεμένους χρήστες από το παρελθόν - **`clouds.config` περιέχει** πληροφορίες σχετικά με τις συνδρομές -- **`service_principal_entries.json`** περιέχει τα credentials των εφαρμογών (tenant id, clients και secret). Μόνο σε Linux & macOS +- **`service_principal_entries.json`** περιέχει credentials εφαρμογών (tenant id, clients και secret). Μόνο σε Linux & macOS - **`msal_token_cache.json`** περιέχει access tokens και refresh tokens. Μόνο σε Linux & macOS - **`service_principal_entries.bin`** και msal_token_cache.bin χρησιμοποιούνται σε Windows και είναι κρυπτογραφημένα με DPAPI - **`msal_http_cache.bin`** είναι μια cache HTTP αιτημάτων - Φορτώστε το: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` - **`AzureRmContext.json`** περιέχει πληροφορίες σχετικά με προηγούμενες συνδέσεις χρησιμοποιώντας Az PowerShell (αλλά όχι credentials) -- Μέσα στο **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** υπάρχουν διάφορα αρχεία `.bin` με **access tokens**, ID tokens και πληροφορίες λογαριασμού κρυπτογραφημένα με το DPAPI των χρηστών. +- Μέσα στο **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** υπάρχουν αρκετά αρχεία `.bin` με **access tokens**, ID tokens και πληροφορίες λογαριασμού κρυπτογραφημένα με το DPAPI των χρηστών. - Είναι δυνατόν να βρείτε περισσότερα **access tokens** στα αρχεία `.tbres` μέσα στο **`C:\Users\\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. @@ -78,12 +78,12 @@ az-enumeration-tools.md Σε περιπτώσεις όπου έχετε κάποια έγκυρα credentials αλλά δεν μπορείτε να συνδεθείτε, αυτές είναι μερικές κοινές προστασίες που θα μπορούσαν να είναι σε εφαρμογή: -- **IP whitelisting** -- Πρέπει να συμβιβάσετε μια έγκυρη IP +- **IP whitelisting** -- Πρέπει να παραβιάσετε μια έγκυρη IP - **Geo restrictions** -- Βρείτε πού ζει ο χρήστης ή πού βρίσκονται τα γραφεία της εταιρείας και αποκτήστε μια IP από την ίδια πόλη (ή τουλάχιστον από τη χώρα) - **Browser** -- Ίσως μόνο ένας browser από ορισμένα OS (Windows, Linux, Mac, Android, iOS) είναι επιτρεπτός. Ανακαλύψτε ποιο OS χρησιμοποιεί το θύμα/εταιρεία. -- Μπορείτε επίσης να προσπαθήσετε να **συμβιβάσετε τα credentials του Service Principal** καθώς συνήθως είναι λιγότερο περιορισμένα και η σύνδεσή τους ελέγχεται λιγότερο +- Μπορείτε επίσης να προσπαθήσετε να **παραβιάσετε τα credentials του Service Principal** καθώς συνήθως είναι λιγότερο περιορισμένα και η σύνδεσή τους ελέγχεται λιγότερο. -Αφού παρακάμψετε αυτό, μπορεί να είστε σε θέση να επιστρέψετε στην αρχική σας ρύθμιση και θα έχετε ακόμα πρόσβαση. +Αφού το παρακάμψετε, μπορεί να είστε σε θέση να επιστρέψετε στην αρχική σας ρύθμιση και θα έχετε ακόμα πρόσβαση. Ελέγξτε: @@ -94,7 +94,7 @@ az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-by ### Whoami > [!CAUTION] -> Μάθετε **πώς να εγκαταστήσετε** az cli, AzureAD και Az PowerShell στην ενότητα [**Az - Entra ID**](az-services/az-azuread.md). +> Μάθετε **πώς να εγκαταστήσετε** το az cli, το AzureAD και το Az PowerShell στην ενότητα [**Az - Entra ID**](az-services/az-azuread.md). Ένα από τα πρώτα πράγματα που πρέπει να γνωρίζετε είναι **ποιος είστε** (σε ποιο περιβάλλον βρίσκεστε): @@ -150,7 +150,7 @@ Get-AzureADTenantDetail az-services/az-azuread.md {{#endref}} -Ελέγξτε τα **Post-Exploitation tools** για να βρείτε εργαλεία για την κλιμάκωση δικαιωμάτων στο Entra ID όπως το **AzureHound:** +Ελέγξτε τα **Post-Exploitation tools** για να βρείτε εργαλεία που να επιτρέπουν την κλιμάκωση δικαιωμάτων στο Entra ID όπως το **AzureHound:** {{#ref}} az-enumeration-tools.md#automated-post-exploitation-tools @@ -165,29 +165,47 @@ az-enumeration-tools.md#automated-post-exploitation-tools 1. **Βρείτε τον πόρο στον οποίο έχετε κάποια πρόσβαση**: +> [!TIP] +> Αυτό δεν απαιτεί κανένα ειδικό δικαίωμα. + Η εντολή Az PowerShell **`Get-AzResource`** σας επιτρέπει να **γνωρίζετε τους πόρους που έχει ο τρέχων χρήστης σας ορατούς**. Επιπλέον, μπορείτε να αποκτήσετε τις ίδιες πληροφορίες στην **ιστοσελίδα** πηγαίνοντας στο [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) ή αναζητώντας "Όλοι οι πόροι" ή εκτελώντας: ```bash az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01" ``` -2. **Βρείτε τις άδειες που έχετε πάνω στους πόρους στους οποίους έχετε πρόσβαση και βρείτε τους ρόλους που σας έχουν ανατεθεί**: +2. **Βρείτε τις άδειες που έχετε πάνω στους πόρους που μπορείτε να δείτε**: -Σημειώστε ότι χρειάζεστε την άδεια **`Microsoft.Authorization/roleAssignments/read`** για να εκτελέσετε αυτή την ενέργεια. +> [!TIP] +> Αυτό δεν απαιτεί καμία ειδική άδεια. -Επιπλέον, με αρκετές άδειες, ο ρόλος **`Get-AzRoleAssignment`** μπορεί να χρησιμοποιηθεί για να **καταγράψει όλους τους ρόλους** στην υπογραφή ή την άδεια πάνω σε έναν συγκεκριμένο πόρο υποδεικνύοντάς τον όπως παρακάτω: +Μιλώντας στην API **`https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01`** μπορείτε να λάβετε τις άδειες που έχετε πάνω στον καθορισμένο πόρο στο **`resource_id`**. + +Επομένως, **ελέγχοντας κάθε έναν από τους πόρους που έχετε πρόσβαση**, μπορείτε να λάβετε τις άδειες που έχετε πάνω τους. + +> [!WARNING] +> Μπορείτε να αυτοματοποιήσετε αυτή την καταμέτρηση χρησιμοποιώντας το εργαλείο **[Find_My_Az_Management_Permissions](https://github.com/carlospolop/Find_My_Az_Management_Permissions)**. + + +
+Καταμέτρηση αδειών με **`Microsoft.Authorization/roleAssignments/read`** + +> [!TIP] +> Σημειώστε ότι χρειάζεστε την άδεια **`Microsoft.Authorization/roleAssignments/read`** για να εκτελέσετε αυτή την ενέργεια. + +- Με αρκετές άδειες, ο ρόλος **`Get-AzRoleAssignment`** μπορεί να χρησιμοποιηθεί για **να καταμετρήσει όλους τους ρόλους** στην συνδρομή ή την άδεια πάνω σε έναν συγκεκριμένο πόρο υποδεικνύοντάς τον όπως: ```bash Get-AzRoleAssignment -Scope /subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4 ``` Είναι επίσης δυνατό να αποκτήσετε αυτές τις πληροφορίες εκτελώντας: ```bash -az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value" +az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value" ``` -όπως στο: +όπως σε: ```bash -az rest --method GET --uri "https://management.azure.com//subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value" +az rest --method GET --uri "https://management.azure.com//subscriptions//resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value" ``` -Μια άλλη επιλογή είναι να αποκτήσετε τους ρόλους που είναι συνδεδεμένοι σε εσάς στο azure με: +- Μια άλλη επιλογή είναι να **λάβετε τους ρόλους που είναι συνδεδεμένοι σε εσάς στο azure**. Αυτό απαιτεί επίσης την άδεια **`Microsoft.Authorization/roleAssignments/read`**: ```bash az role assignment list --assignee "" --all --output table ``` @@ -195,14 +213,16 @@ az role assignment list --assignee "" --all --output table ```bash az rest --method GET --uri 'https://management.azure.com/subscriptions//providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '' ``` -3. **Βρείτε τις λεπτομερείς άδειες των ρόλων που είναι συνδεδεμένοι σε εσάς**: +- **Βρείτε τις λεπτομερείς άδειες των ρόλων που είναι συνδεδεμένοι σε εσάς**: Στη συνέχεια, για να αποκτήσετε την λεπτομερή άδεια μπορείτε να εκτελέσετε **`(Get-AzRoleDefinition -Id "").Actions`**. -Ή να καλέσετε την API απευθείας με +Ή καλέστε την API απευθείας με ```bash -az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties" +az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2022-04-01" | jq ".properties" ``` +
+ Στην παρακάτω ενότητα μπορείτε να βρείτε **πληροφορίες σχετικά με τις πιο κοινές υπηρεσίες Azure και πώς να τις καταγράψετε**: {{#ref}} @@ -211,9 +231,9 @@ az-services/ ### Κλιμάκωση Δικαιωμάτων, Μετά-Εκμετάλλευση & Διαρκής Παρουσία -Μόλις γνωρίζετε πώς είναι δομημένο το περιβάλλον Azure και ποιες υπηρεσίες χρησιμοποιούνται, μπορείτε να αρχίσετε να αναζητάτε τρόπους για να **κλιμακώσετε τα δικαιώματα, να μετακινηθείτε οριζόντια, να εκτελέσετε άλλες επιθέσεις μετά-εκμετάλλευσης και να διατηρήσετε τη διαρκή παρουσία**. +Μόλις κατανοήσετε πώς είναι δομημένο το περιβάλλον Azure και ποιες υπηρεσίες χρησιμοποιούνται, μπορείτε να αρχίσετε να αναζητάτε τρόπους για να **κλιμακώσετε δικαιώματα, να μετακινηθείτε οριζόντια, να εκτελέσετε άλλες επιθέσεις μετά-εκμετάλλευσης και να διατηρήσετε διαρκή παρουσία**. -Στην παρακάτω ενότητα μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να κλιμακώσετε τα δικαιώματα στις πιο κοινές υπηρεσίες Azure: +Στην παρακάτω ενότητα μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να κλιμακώσετε δικαιώματα στις πιο κοινές υπηρεσίες Azure: {{#ref}} az-privilege-escalation/ @@ -225,7 +245,7 @@ az-privilege-escalation/ az-post-exploitation/ {{#endref}} -Στην επόμενη μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να διατηρήσετε τη διαρκή παρουσία στις πιο κοινές υπηρεσίες Azure: +Στην επόμενη μπορείτε να βρείτε πληροφορίες σχετικά με το πώς να διατηρήσετε διαρκή παρουσία στις πιο κοινές υπηρεσίες Azure: {{#ref}} az-persistence/