From 873e21d9c36ef4178423a6e481f0623f0f8595df Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 5 Feb 2026 12:31:29 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/azure-security/az-enumeration-tool --- .../azure-security/az-enumeration-tools.md | 280 ++++++++++++++---- 1 file changed, 222 insertions(+), 58 deletions(-) diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index a48e1972b..fb970ce7a 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -28,15 +28,15 @@ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash Οδηγίες από την [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4): -1. Εγκαταστήστε το `brew` αν δεν είναι ήδη εγκατεστημένο: +1. Εγκαταστήστε `brew` αν δεν είναι ήδη εγκατεστημένο: ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` -2. Εγκαταστήστε την πιο πρόσφατη σταθερή έκδοση του PowerShell: +2. Εγκαταστήστε την τελευταία σταθερή έκδοση του PowerShell: ```sh brew install powershell/tap/powershell ``` -3. Εκτελέστε PowerShell: +3. Εκτέλεσε το PowerShell: ```sh pwsh ``` @@ -45,23 +45,23 @@ pwsh brew update brew upgrade powershell ``` -## Κύρια Enumeration Tools +## Κύρια εργαλεία αναγνώρισης ### az cli -[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) είναι ένα πολυπλατφορμικό εργαλείο γραμμένο σε Python για τη διαχείριση και τη διοίκηση (των περισσότερων) πόρων Azure και Entra ID. Συνδέεται με το Azure και εκτελεί διοικητικές εντολές μέσω της γραμμής εντολών ή μέσω scripts. +[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) είναι ένα πολυπλατφορμικό εργαλείο γραμμένο σε Python για τη διαχείριση και τη διοίκηση (των περισσότερων) πόρων του Azure και του Entra ID. Συνδέεται στο Azure και εκτελεί διοικητικές εντολές μέσω της γραμμής εντολών ή σεναρίων. -Ακολουθήστε αυτόν τον σύνδεσμο για τις [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). +Follow this link for the [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). Commands in Azure CLI are structured using a pattern of: `az ` #### Debug | MitM az cli -Χρησιμοποιώντας την παράμετρο **`--debug`** είναι δυνατόν να δείτε όλα τα αιτήματα που το εργαλείο **`az`** στέλνει: +Χρησιμοποιώντας την παράμετρο **`--debug`** είναι δυνατό να δείτε όλες τις αιτήσεις που το εργαλείο **`az`** στέλνει: ```bash az account management-group list --output table --debug ``` -Για να πραγματοποιήσετε ένα **MitM** στο εργαλείο και να **check all the requests** που στέλνει χειροκίνητα, μπορείτε να κάνετε: +Για να κάνετε ένα **MitM** στο εργαλείο και να **ελέγξετε χειροκίνητα όλα τα αιτήματα** που στέλνει, μπορείτε να κάνετε: {{#tabs }} {{#tab name="Bash" }} @@ -104,51 +104,215 @@ $env:HTTP_PROXY="http://127.0.0.1:8080" {{#endtab }} {{#endtabs }} +
+Fixing “CA cert does not include key usage extension” + +### Γιατί συμβαίνει το σφάλμα + +Όταν το Azure CLI κάνει έλεγχο ταυτότητας, πραγματοποιεί αιτήσεις HTTPS (μέσω MSAL → Requests → OpenSSL). Αν υποκλέπτετε TLS με Burp, το Burp δημιουργεί «επί τόπου» πιστοποιητικά για ιστότοπους όπως `login.microsoftonline.com` και τα υπογράφει με το CA του Burp. + +Σε νεότερες στοίβες (Python 3.13 + OpenSSL 3), η επικύρωση των CA είναι πιο αυστηρή: + +- Ένα πιστοποιητικό CA πρέπει να περιλαμβάνει **Basic Constraints: `CA:TRUE`** και μια επέκταση **Key Usage** που επιτρέπει την υπογραφή πιστοποιητικών (**`keyCertSign`**, και συνήθως **`cRLSign`**). + +Το προεπιλεγμένο CA του Burp (PortSwigger CA) είναι παλιό και συνήθως δεν περιέχει την επέκταση Key Usage, οπότε το OpenSSL το απορρίπτει ακόμα κι αν το «εμπιστεύεστε». + +Αυτό προκαλεί σφάλματα όπως: + +- `CA cert does not include key usage extension` +- `CERTIFICATE_VERIFY_FAILED` +- `self-signed certificate in certificate chain` + +Άρα πρέπει να: + +1. Δημιουργήσετε ένα σύγχρονο CA (με σωστή Key Usage). +2. Κάνετε το Burp να το χρησιμοποιεί για την υπογραφή των υποκλεμμένων πιστοποιητικών. +3. Εμπιστευτείτε αυτό το CA στο macOS. +4. Κατευθύνετε το Azure CLI / Requests στο εν λόγω CA bundle. + +### Βήμα-βήμα: λειτουργική διαμόρφωση + +#### 0) Προαπαιτούμενα + +- Burp τρέχον τοπικά (proxy στο `127.0.0.1:8080`) +- Azure CLI εγκατεστημένο (Homebrew) +- Έχετε πρόσβαση σε `sudo` (για να εμπιστευτείτε το CA στο keychain του συστήματος) + +#### 1) Create a standards-compliant Burp CA (PEM + KEY) + +Create an OpenSSL config file that explicitly sets CA extensions: +```bash +mkdir -p ~/burp-ca && cd ~/burp-ca + +cat > burp-ca.cnf <<'EOF' +[ req ] +default_bits = 2048 +prompt = no +default_md = sha256 +distinguished_name = dn +x509_extensions = v3_ca + +[ dn ] +C = US +O = Burp Custom CA +CN = Burp Custom Root CA + +[ v3_ca ] +basicConstraints = critical,CA:TRUE +keyUsage = critical,keyCertSign,cRLSign +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer +EOF +``` +Δημιουργήστε το πιστοποιητικό CA + το ιδιωτικό κλειδί: +```bash +openssl req -x509 -new -nodes \ +-days 3650 \ +-keyout burp-ca.key \ +-out burp-ca.pem \ +-config burp-ca.cnf +``` +Έλεγχος ορθότητας (ΠΡΕΠΕΙ ΟΠΩΣΔΗΠΟΤΕ να δείτε Key Usage): +```bash +openssl x509 -in burp-ca.pem -noout -text | egrep -A3 "Basic Constraints|Key Usage" +``` +Αναμένεται να περιλαμβάνει κάτι σαν: + +- `CA:TRUE` +- `Key Usage: ... Certificate Sign, CRL Sign` + +#### 2) Μετατροπή σε PKCS#12 (μορφή εισαγωγής Burp) + +Το Burp χρειάζεται certificate + private key, πιο εύκολα ως PKCS#12: +```bash +openssl pkcs12 -export \ +-out burp-ca.p12 \ +-inkey burp-ca.key \ +-in burp-ca.pem \ +-name "Burp Custom Root CA" +``` +Θα σας ζητηθεί κωδικός εξαγωγής (ορίστε έναν· ο Burp θα τον ζητήσει). + +#### 3) Εισαγωγή της CA στο Burp και επανεκκίνηση του Burp + +Στον Burp: + +- Proxy → Options +- Find Import / export CA certificate +- Click Import CA certificate +- Choose PKCS#12 +- Select `burp-ca.p12` +- Εισάγετε τον κωδικό +- Επανεκκινήστε πλήρως τον Burp (σημαντικό) + +Γιατί επανεκκίνηση; Ο Burp μπορεί να συνεχίσει να χρησιμοποιεί την παλιά CA μέχρι να επανεκκινηθεί. + +#### 4) Εμπιστευτείτε τη νέα CA στο macOS system keychain + +Αυτό επιτρέπει στις εφαρμογές συστήματος και σε πολλές στοίβες TLS να εμπιστεύονται την CA. +```bash +sudo security add-trusted-cert \ +-d -r trustRoot \ +-k /Library/Keychains/System.keychain \ +~/burp-ca/burp-ca.pem +``` +(Εάν προτιμάτε GUI: Keychain Access → System → Certificates → import → set “Always Trust”.) + +#### 5) Διαμόρφωση μεταβλητών περιβάλλοντος proxy +```bash +export HTTPS_PROXY="http://127.0.0.1:8080" +export HTTP_PROXY="http://127.0.0.1:8080" +``` +#### 6) Ρυθμίστε τα Requests/Azure CLI ώστε να εμπιστεύονται το Burp CA + +Azure CLI uses Python Requests internally; ορίστε και τα δύο παρακάτω: +```bash +export REQUESTS_CA_BUNDLE="$HOME/burp-ca/burp-ca.pem" +export SSL_CERT_FILE="$HOME/burp-ca/burp-ca.pem" +``` +Σημειώσεις: + +- `REQUESTS_CA_BUNDLE` χρησιμοποιείται από Requests. +- `SSL_CERT_FILE` βοηθάει άλλους καταναλωτές TLS και σε ειδικές περιπτώσεις. +- Συνήθως δεν χρειάζεστε πλέον το παλιό `ADAL_PYTHON_SSL_NO_VERIFY` / `AZURE_CLI_DISABLE_CONNECTION_VERIFICATION` όταν το CA είναι σωστό. + +#### 7) Επαληθεύστε ότι το Burp υπογράφει πραγματικά με το νέο σας CA (κρίσιμος έλεγχος) + +Αυτό επιβεβαιώνει ότι η αλυσίδα υποκλοπής σας είναι σωστή: +```bash +openssl s_client -connect login.microsoftonline.com:443 \ +-proxy 127.0.0.1:8080 /dev/null \ +| openssl x509 -noout -issuer +``` +Ο αναμενόμενος εκδότης περιέχει το όνομα της CA σας, π.χ.: + +`O=Burp Custom CA, CN=Burp Custom Root CA` + +Αν εξακολουθείτε να βλέπετε PortSwigger CA, το Burp δεν χρησιμοποιεί την εισαγόμενη CA σας → ελέγξτε ξανά την εισαγωγή και επανεκκινήστε. + +#### 8) Επαληθεύστε ότι Python Requests λειτουργεί μέσω Burp +```bash +python3 - <<'EOF' +import requests +requests.get("https://login.microsoftonline.com") +print("OK") +EOF +``` +Αναμενόμενο: `OK` + +#### 9) Δοκιμή Azure CLI +```bash +az account get-access-token --resource=https://management.azure.com/ +``` +Αν είστε ήδη συνδεδεμένοι, θα πρέπει να επιστρέφει JSON με ένα `accessToken`. + +
+ ### Az PowerShell -Το Azure PowerShell είναι μια μονάδα με cmdlets για τη διαχείριση πόρων Azure απευθείας από τη γραμμή εντολών του PowerShell. +Azure PowerShell είναι ένα module με cmdlets για τη διαχείριση των Azure resources απευθείας από τη γραμμή εντολών του PowerShell. -Ακολουθήστε αυτόν τον σύνδεσμο για τις [**οδηγίες εγκατάστασης**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell). +Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell). -Οι εντολές στο Azure PowerShell AZ Module δομούνται ως: `-Az ` +Οι εντολές στο Azure PowerShell AZ Module δομούνται ως εξής: `-Az ` #### Debug | MitM Az PowerShell -Χρησιμοποιώντας την παράμετρο **`-Debug`** είναι δυνατόν να δείτε όλα τα αιτήματα που στέλνει το εργαλείο: +Χρησιμοποιώντας την παράμετρο **`-Debug`** είναι δυνατό να δείτε όλα τα αιτήματα που στέλνει το εργαλείο: ```bash Get-AzResourceGroup -Debug ``` -Για να κάνετε **MitM** στο εργαλείο και να **ελέγξετε όλες τις αιτήσεις** που στέλνει χειροκίνητα, μπορείτε να ορίσετε τις μεταβλητές περιβάλλοντος `HTTPS_PROXY` και `HTTP_PROXY` σύμφωνα με τα [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy). +Για να πραγματοποιήσετε ένα **MitM** στο εργαλείο και να **ελέγξετε χειροκίνητα όλα τα αιτήματα** που αποστέλλει, μπορείτε να ορίσετε τις μεταβλητές περιβάλλοντος `HTTPS_PROXY` και `HTTP_PROXY` σύμφωνα με τα [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy). ### Microsoft Graph PowerShell -Microsoft Graph PowerShell είναι ένα cross-platform SDK που επιτρέπει πρόσβαση σε όλα τα Microsoft Graph APIs, συμπεριλαμβανομένων υπηρεσιών όπως SharePoint, Exchange, και Outlook, χρησιμοποιώντας ένα ενιαίο endpoint. Υποστηρίζει PowerShell 7+, σύγχρονη authentication μέσω MSAL, external identities, και advanced queries. Με έμφαση στην πρόσβαση least privilege, εξασφαλίζει ασφαλείς λειτουργίες και λαμβάνει τακτικά updates για να ευθυγραμμίζεται με τα τελευταία χαρακτηριστικά του Microsoft Graph API. +Το Microsoft Graph PowerShell είναι ένα cross-platform SDK που επιτρέπει την πρόσβαση σε όλα τα Microsoft Graph APIs, συμπεριλαμβανομένων υπηρεσιών όπως SharePoint, Exchange και Outlook, χρησιμοποιώντας ένα ενιαίο endpoint. Υποστηρίζει PowerShell 7+, σύγχρονη αυθεντικοποίηση μέσω MSAL, εξωτερικές ταυτότητες και προηγμένα ερωτήματα. Με έμφαση στην αρχή των ελάχιστων προνομίων, διασφαλίζει ασφαλείς λειτουργίες και λαμβάνει τακτικές ενημερώσεις ώστε να ευθυγραμμίζεται με τις τελευταίες δυνατότητες του Microsoft Graph API. Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). Commands in Microsoft Graph PowerShell are structured like: `-Mg ` -#### Debug Microsoft Graph PowerShell +#### Αποσφαλμάτωση Microsoft Graph PowerShell -Χρησιμοποιώντας την παράμετρο **`-Debug`** είναι δυνατή η εμφάνιση όλων των αιτήσεων που στέλνει το εργαλείο: +Χρησιμοποιώντας την παράμετρο **`-Debug`** είναι δυνατό να δείτε όλα τα αιτήματα που στέλνει το εργαλείο: ```bash Get-MgUser -Debug ``` ### ~~**AzureAD Powershell**~~ -Το Azure Active Directory (AD) module, πλέον **deprecated**, είναι μέρος του Azure PowerShell για τη διαχείριση πόρων Azure AD. Παρέχει cmdlets για εργασίες όπως η διαχείριση χρηστών, ομάδων και εγγραφών εφαρμογών στο Entra ID. +Το Azure Active Directory (AD) module, πλέον **αποσυρμένο**, αποτελεί μέρος του Azure PowerShell για τη διαχείριση των Azure AD resources. Παρέχει cmdlets για εργασίες όπως η διαχείριση χρηστών, ομάδων και εγγραφών εφαρμογών στο Entra ID. > [!TIP] > Αυτό έχει αντικατασταθεί από το Microsoft Graph PowerShell -Ακολουθήστε αυτόν τον σύνδεσμο για τις [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD). +Ακολουθήστε αυτόν τον σύνδεσμο για τις [**οδηγίες εγκατάστασης**](https://www.powershellgallery.com/packages/AzureAD). -## Αυτοματοποιημένα Recon & Compliance Tools +## Αυτοματοποιημένα εργαλεία Recon & Compliance ### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure) -Το Turbot μαζί με το steampipe και το powerpipe επιτρέπουν τη συλλογή πληροφοριών από το Azure και το Entra ID, καθώς και την εκτέλεση ελέγχων συμμόρφωσης και την ανίχνευση λανθασμένων ρυθμίσεων. Τα προς το παρόν πιο συνιστώμενα Azure modules για εκτέλεση είναι: +Turbot με steampipe και powerpipe επιτρέπει τη συλλογή πληροφοριών από Azure και Entra ID και την εκτέλεση ελέγχων συμμόρφωσης καθώς και την εύρεση κακοδιαμορφώσεων. Τα προς το παρόν πιο συνιστώμενα Azure modules για εκτέλεση είναι: - [https://github.com/turbot/steampipe-mod-azure-compliance](https://github.com/turbot/steampipe-mod-azure-compliance) - [https://github.com/turbot/steampipe-mod-azure-insights](https://github.com/turbot/steampipe-mod-azure-insights) @@ -179,9 +343,9 @@ powerpipe server ``` ### [Prowler](https://github.com/prowler-cloud/prowler) -Το Prowler είναι ένα εργαλείο ασφάλειας ανοιχτού κώδικα για την εκτέλεση αξιολογήσεων βέλτιστων πρακτικών ασφάλειας, ελέγχων, αντιμετώπισης περιστατικών, συνεχούς παρακολούθησης, σκληροποίησης και ετοιμότητας ψηφιακής εγκληματολογίας σε περιβάλλοντα AWS, Azure, Google Cloud και Kubernetes. +Το Prowler είναι ένα Open Source εργαλείο ασφάλειας για την εκτέλεση αξιολογήσεων best practices ασφάλειας, audits, incident response, continuous monitoring, hardening και forensics readiness για AWS, Azure, Google Cloud και Kubernetes. -Βασικά μάς επιτρέπει να τρέξουμε εκατοντάδες ελέγχους σε ένα περιβάλλον Azure για να εντοπίσουμε λανθασμένες ρυθμίσεις ασφάλειας και να συγκεντρώσουμε τα αποτελέσματα σε json (και άλλες μορφές κειμένου) ή να τα ελέγξουμε στο web. +Βασικά μας επιτρέπει να τρέξουμε εκατοντάδες checks σε ένα περιβάλλον Azure για να εντοπίσουμε security misconfigurations και να συλλέξουμε τα αποτελέσματα σε json (και άλλες μορφές κειμένου) ή να τα ελέγξουμε μέσω web. ```bash # Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app @@ -203,9 +367,9 @@ docker run --rm -e "AZURE_CLIENT_ID=" -e "AZURE_TENANT_ID= ``` ### [Monkey365](https://github.com/silverhack/monkey365) -Σας επιτρέπει να διεξάγετε αυτόματα ανασκοπήσεις διαμόρφωσης ασφάλειας για Azure subscriptions και Microsoft Entra ID. +Επιτρέπει την αυτόματη εκτέλεση ελέγχων/ανασκοπήσεων ασφαλείας και ρυθμίσεων για συνδρομές Azure και Microsoft Entra ID. -Οι HTML αναφορές αποθηκεύονται στον κατάλογο `./monkey-reports` μέσα στον φάκελο του github repository. +Οι αναφορές HTML αποθηκεύονται στον κατάλογο `./monkey-reports` μέσα στο github repository folder. ```bash git clone https://github.com/silverhack/monkey365 Get-ChildItem -Recurse monkey365 | Unblock-File @@ -226,7 +390,7 @@ Invoke-Monkey365 -TenantId -ClientId -ClientSecret $Secu ``` ### [ScoutSuite](https://github.com/nccgroup/ScoutSuite) -Το Scout Suite συλλέγει δεδομένα διαμόρφωσης για χειροκίνητη επιθεώρηση και επισημαίνει περιοχές κινδύνου. Είναι ένα εργαλείο ελέγχου ασφάλειας για multi-cloud, που επιτρέπει την αξιολόγηση της στάσης ασφαλείας περιβαλλόντων cloud. +Scout Suite συγκεντρώνει δεδομένα διαμόρφωσης για χειρωνακτική επιθεώρηση και επισημαίνει περιοχές κινδύνου. Είναι ένα multi-cloud security-auditing εργαλείο, που επιτρέπει την αξιολόγηση της security posture των cloud περιβαλλόντων. ```bash virtualenv -p python3 venv source venv/bin/activate @@ -242,18 +406,18 @@ python scout.py azure --cli ``` ### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting) -Είναι ένα powershell script που σε βοηθάει να **απεικονίσεις όλους τους πόρους και τα δικαιώματα μέσα σε ένα Management Group και το Entra ID tenant** και να εντοπίσεις λανθασμένες ρυθμίσεις ασφαλείας. +Είναι ένα powershell script που σε βοηθά να **απεικονίσεις όλους τους πόρους και τα δικαιώματα μέσα σε ένα Management Group και στον tenant του Entra ID** και να εντοπίσεις λανθασμένες ρυθμίσεις ασφαλείας. -Λειτουργεί με το Az PowerShell module, οπότε οποιαδήποτε μέθοδος ελέγχου ταυτότητας που υποστηρίζεται από αυτό υποστηρίζεται και από το εργαλείο. +Λειτουργεί με το Az PowerShell module, οπότε οποιαδήποτε μέθοδος πιστοποίησης που υποστηρίζεται από αυτό το module υποστηρίζεται και από το εργαλείο. ```bash import-module Az .\AzGovVizParallel.ps1 -ManagementGroupId [-SubscriptionIdWhitelist ] ``` -## Automated Post-Exploitation tools +## Αυτοματοποιημένα Post-Exploitation εργαλεία ### [**ROADRecon**](https://github.com/dirkjanm/ROADtools) -Η enumeration του ROADRecon παρέχει πληροφορίες σχετικά με τη διαμόρφωση του Entra ID, όπως χρήστες, ομάδες, ρόλοι και πολιτικές Conditional Access... +Η enumeration του ROADRecon παρέχει πληροφορίες για τη διαμόρφωση του Entra ID, όπως χρήστες, ομάδες, ρόλοι και πολιτικές Conditional Access... ```bash cd ROADTools pipenv shell @@ -266,17 +430,17 @@ roadrecon gui ``` ### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound) -Το AzureHound είναι ο collector του BloodHound για Microsoft Entra ID και Azure. Είναι ένα ενιαίο στατικό Go binary για Windows/Linux/macOS που επικοινωνεί απευθείας με: +Το AzureHound είναι ο συλλέκτης του BloodHound για το Microsoft Entra ID και το Azure. Είναι ένα ενιαίο στατικό Go binary για Windows/Linux/macOS που επικοινωνεί απευθείας με: - Microsoft Graph (Entra ID directory, M365) και - Azure Resource Manager (ARM) control plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.) Κύρια χαρακτηριστικά -- Τρέχει από οπουδήποτε στο δημόσιο διαδίκτυο απέναντι σε tenant APIs (δεν απαιτείται πρόσβαση σε εσωτερικό δίκτυο) -- Εξάγει JSON για εισαγωγή στο BloodHound CE ώστε να οπτικοποιηθούν attack paths ανάμεσα σε identities και cloud resources -- Προεπιλεγμένο User-Agent που παρατηρήθηκε: azurehound/v2.x.x +- Τρέχει από οπουδήποτε στο δημόσιο Διαδίκτυο απέναντι σε tenant APIs (δεν απαιτείται πρόσβαση στο εσωτερικό δίκτυο) +- Εξάγει JSON για εισαγωγή στο BloodHound CE προκειμένου να οπτικοποιηθούν attack paths μεταξύ identities και cloud resources +- Παρατηρούμενο προεπιλεγμένο User-Agent: azurehound/v2.x.x -Επιλογές αυθεντικοποίησης -- Username + password: -u -p +Επιλογές πιστοποίησης +- Όνομα χρήστη + κωδικός: -u -p - Refresh token: --refresh-token - JSON Web Token (access token): --jwt - Service principal secret: -a -s @@ -317,37 +481,37 @@ azurehound list storage-containers -t "" -o containers.json azurehound list web-apps -t "" -o webapps.json azurehound list function-apps -t "" -o funcapps.json ``` -Τι ερωτάται -- Graph endpoints (examples): +Τι αναζητείται +- Graph endpoints (παραδείγματα): - /v1.0/organization, /v1.0/users, /v1.0/groups, /v1.0/roleManagement/directory/roleDefinitions, directoryRoles, owners/members -- ARM endpoints (examples): +- ARM endpoints (παραδείγματα): - management.azure.com/subscriptions/.../providers/Microsoft.Storage/storageAccounts - .../Microsoft.KeyVault/vaults, .../Microsoft.Compute/virtualMachines, .../Microsoft.Web/sites, .../Microsoft.ContainerService/managedClusters -Preflight behavior and endpoints -- Κάθε azurehound list συνήθως εκτελεί αυτές τις δοκιμαστικές κλήσεις πριν την enumeration: +Συμπεριφορά preflight και endpoints +- Κάθε azurehound list συνήθως εκτελεί αυτές τις κλήσεις δοκιμής πριν την enumeration: 1) Identity platform: login.microsoftonline.com 2) Graph: GET https://graph.microsoft.com/v1.0/organization 3) ARM: GET https://management.azure.com/subscriptions?api-version=... -- Οι βασικές διευθύνσεις URL περιβάλλοντος cloud διαφέρουν για Government/China/Germany. Δείτε constants/environments.go στο repo. +- Οι βασικές URLs των cloud environments διαφέρουν για Government/China/Germany. Δείτε constants/environments.go στο repo. ARM-heavy objects (λιγότερο ορατά στα Activity/Resource logs) -- Η παρακάτω λίστα αντικειμένων χρησιμοποιεί κυρίως ARM control plane reads: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps. -- Αυτές οι GET/list λειτουργίες συνήθως δεν καταγράφονται στα Activity Logs· οι αναγνώσεις data-plane (π.χ. *.blob.core.windows.net, *.vault.azure.net) καλύπτονται από Diagnostic Settings σε επίπεδο πόρου. +- Η παρακάτω λίστα στόχων χρησιμοποιεί κυρίως ARM control plane reads: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps. +- Αυτές οι GET/list λειτουργίες συνήθως δεν καταγράφονται στα Activity Logs· οι data-plane αναγνώσεις (π.χ., *.blob.core.windows.net, *.vault.azure.net) καλύπτονται από Diagnostic Settings στο επίπεδο πόρου. -OPSEC and logging notes -- Microsoft Graph Activity Logs δεν είναι ενεργοποιημένα από προεπιλογή· ενεργοποιήστε και εξάγετε σε SIEM για να αποκτήσετε ορατότητα των κλήσεων Graph. Περιμένετε το Graph preflight GET /v1.0/organization με UA azurehound/v2.x.x. -- Entra ID non-interactive sign-in logs καταγράφουν την identity platform auth (login.microsoftonline.com) που χρησιμοποιείται από AzureHound. -- Οι ARM control-plane read/list λειτουργίες δεν καταγράφονται στα Activity Logs· πολλές azurehound list ενέργειες κατά πόρων δεν θα εμφανιστούν εκεί. Μόνο το data-plane logging (μέσω Diagnostic Settings) θα καταγράψει αναγνώσεις προς service endpoints. -- Defender XDR GraphApiAuditEvents (preview) μπορεί να αποκαλύψει Graph κλήσεις και αναγνωριστικά token αλλά μπορεί να μην περιλαμβάνει UserAgent και να έχει περιορισμένη διατήρηση. +Σημειώσεις OPSEC και καταγραφής +- Microsoft Graph Activity Logs δεν είναι ενεργοποιημένα από προεπιλογή· ενεργοποιήστε και εξάγετε σε SIEM για να αποκτήσετε ορατότητα στις κλήσεις Graph. Αναμένετε το Graph preflight GET /v1.0/organization με UA azurehound/v2.x.x. +- Τα Entra ID non-interactive sign-in logs καταγράφουν το identity platform auth (login.microsoftonline.com) που χρησιμοποιείται από AzureHound. +- Οι ARM control-plane read/list λειτουργίες δεν καταγράφονται στα Activity Logs· πολλές azurehound list ενέργειες εναντίον πόρων δεν θα εμφανιστούν εκεί. Μόνο η data-plane logging (μέσω Diagnostic Settings) θα καταγράψει αναγνώσεις σε service endpoints. +- Defender XDR GraphApiAuditEvents (preview) μπορεί να αποκαλύψει κλήσεις Graph και αναγνωριστικά token αλλά ίσως δεν περιέχει UserAgent και έχει περιορισμένη διάρκεια διατήρησης. -Tip: Κατά την enumeration για μονοπάτια προνομίων, εξάγετε users, groups, roles, και role assignments, μετά εισάγετέ τα στο BloodHound και χρησιμοποιήστε prebuilt cypher queries για να εντοπίσετε Global Administrator/Privileged Role Administrator και transitively escalation μέσω nested groups και RBAC assignments. +Συμβουλή: Όταν κάνετε enumeration για privilege paths, εξάγετε users, groups, roles και role assignments, εισάγετε στο BloodHound και χρησιμοποιήστε τις prebuilt cypher queries για να εντοπίσετε Global Administrator/Privileged Role Administrator και transitive escalation μέσω nested groups και RBAC assignments. -Launch the BloodHound web with `curl -L https://ghst.ly/getbhce | docker compose -f - up` and import the `output.json` file. Then, in the EXPLORE tab, in the CYPHER section you can see a folder icon that contains pre-built queries. +Εκκινήστε το BloodHound web με `curl -L https://ghst.ly/getbhce | docker compose -f - up` και εισάγετε το αρχείο `output.json`. Στη συνέχεια, στην καρτέλα EXPLORE, στην ενότητα CYPHER θα δείτε ένα εικονίδιο φακέλου που περιέχει pre-built queries. ### [**MicroBurst**](https://github.com/NetSPI/MicroBurst) -MicroBurst includes functions and scripts that support Azure Services discovery, weak configuration auditing, and post exploitation actions such as credential dumping. It is intended to be used during penetration tests where Azure is in use. +Το MicroBurst περιλαμβάνει functions και scripts που υποστηρίζουν Azure Services discovery, weak configuration auditing, και post exploitation ενέργειες όπως credential dumping. Προορίζεται για χρήση κατά τη διάρκεια penetration tests όπου χρησιμοποιείται Azure. ```bash Import-Module .\MicroBurst.psm1 Import-Module .\Get-AzureDomainInfo.ps1 @@ -355,9 +519,9 @@ Get-AzureDomainInfo -folder MicroBurst -Verbose ``` ### [**PowerZure**](https://github.com/hausec/PowerZure) -PowerZure δημιουργήθηκε από την ανάγκη για ένα framework που μπορεί τόσο να εκτελεί reconnaissance όσο και exploitation στο Azure, στο EntraID και στους σχετιζόμενους πόρους. +PowerZure δημιουργήθηκε από την ανάγκη για ένα framework που μπορεί να πραγματοποιήσει τόσο reconnaissance όσο και exploitation του Azure, EntraID και των σχετικών πόρων. -Χρησιμοποιεί το module **Az PowerShell**, οπότε οποιαδήποτε πιστοποίηση που υποστηρίζεται από αυτό υποστηρίζεται κι από το εργαλείο. +Χρησιμοποιεί το **Az PowerShell** module, επομένως οποιαδήποτε authentication υποστηρίζεται από αυτό υποστηρίζεται και από το εργαλείο. ```bash # Login Import-Module Az @@ -388,7 +552,7 @@ Invoke-AzureRunCommand -Command -VMName ``` ### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner) -GraphRunner είναι ένα post-exploitation σετ εργαλείων για αλληλεπίδραση με το Microsoft Graph API. Παρέχει διάφορα εργαλεία για τη διενέργεια reconnaissance, persistence και pillaging of data από έναν λογαριασμό Microsoft Entra ID (Azure AD). +Το GraphRunner είναι ένα post-exploitation σύνολο εργαλείων για την αλληλεπίδραση με το Microsoft Graph API. Παρέχει διάφορα εργαλεία για τη διεξαγωγή reconnaissance, persistence και απόσπασης δεδομένων από έναν λογαριασμό Microsoft Entra ID (Azure AD). ```bash #A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens) Import-Module .\GraphRunner.ps1 @@ -432,9 +596,9 @@ Invoke-GraphRunner -Tokens $tokens ``` ### [Stormspotter](https://github.com/Azure/Stormspotter) -Το Stormspotter δημιουργεί ένα “attack graph” των πόρων σε ένα Azure subscription. Επιτρέπει σε red teams και pentesters να οπτικοποιήσουν την attack surface και τις pivot opportunities εντός ενός tenant, και ενισχύει τους defenders ώστε να προσανατολιστούν γρήγορα και να ιεραρχήσουν το incident response work. +Το Stormspotter δημιουργεί ένα “attack graph” των πόρων σε μια Azure subscription. Επιτρέπει σε red teams και pentesters να οπτικοποιήσουν το attack surface και τις pivot opportunities εντός ενός tenant, και ενισχύει τους defenders σας ώστε να προσανατολιστούν γρήγορα και να δώσουν προτεραιότητα στην incident response εργασία. -**Δυστυχώς, φαίνεται ότι δεν συντηρείται.** +**Δυστυχώς, φαίνεται να μην συντηρείται.** ```bash # Start Backend cd stormspotter\backend\ @@ -453,10 +617,10 @@ python stormspotter\stormcollector\sscollector.pyz cli # This will generate a .zip file to upload in the frontend (127.0.0.1:9091) ``` ## Αναφορές -- [Ανακάλυψη στο Cloud με AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/) +- [Cloud Discovery With AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/) - [AzureHound repository](https://github.com/SpecterOps/AzureHound) - [BloodHound repository](https://github.com/SpecterOps/BloodHound) -- [Flags της Community Edition του AzureHound](https://bloodhound.specterops.io/collect-data/ce-collection/azurehound-flags) +- [AzureHound Community Edition Flags](https://bloodhound.specterops.io/collect-data/ce-collection/azurehound-flags) - [AzureHound constants/environments.go](https://github.com/SpecterOps/AzureHound/blob/main/constants/environments.go) - [AzureHound client/storage_accounts.go](https://github.com/SpecterOps/AzureHound/blob/main/client/storage_accounts.go) - [AzureHound client/roles.go](https://github.com/SpecterOps/AzureHound/blob/main/client/roles.go)