diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index 5a33a89b8..6b8484f7c 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -2,10 +2,10 @@ {{#include ../../banners/hacktricks-training.md}} -## PowerShell unter Linux installieren +## PowerShell in linux installieren > [!TIP] -> Unter Linux müssen Sie PowerShell Core installieren: +> Unter linux müssen Sie PowerShell Core installieren: ```bash sudo apt-get update sudo apt-get install -y wget apt-transport-https software-properties-common @@ -24,9 +24,9 @@ pwsh # Az cli curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash ``` -## PowerShell in MacOS installieren +## PowerShell auf MacOS installieren -Anleitung aus der [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4): +Anweisungen aus der [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4): 1. Installiere `brew`, falls noch nicht installiert: ```bash @@ -45,7 +45,7 @@ pwsh brew update brew upgrade powershell ``` -## Haupt-Enumeration-Tools +## Main Enumeration Tools ### az cli @@ -53,7 +53,7 @@ brew upgrade powershell Folgen Sie diesem Link für die [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). -Befehle in Azure CLI sind nach folgendem Muster aufgebaut: `az ` +Commands in Azure CLI are structured using a pattern of: `az ` #### Debug | MitM az cli @@ -61,7 +61,7 @@ Mit dem Parameter **`--debug`** ist es möglich, alle Anfragen zu sehen, die das ```bash az account management-group list --output table --debug ``` -Um ein **MitM** gegen das Tool durchzuführen und **alle Requests** zu prüfen, die es manuell sendet, kannst du: +Um ein **MitM** am Tool durchzuführen und **alle Anfragen**, die es sendet, manuell zu überprüfen, kannst du: {{#tabs }} {{#tab name="Bash" }} @@ -104,13 +104,177 @@ $env:HTTP_PROXY="http://127.0.0.1:8080" {{#endtab }} {{#endtabs }} +
+Behebung der Fehlermeldung “CA cert does not include key usage extension” + +### Warum der Fehler auftritt + +Wenn Azure CLI sich authentifiziert, macht es HTTPS-Anfragen (via MSAL → Requests → OpenSSL). Wenn Du TLS mit Burp abfängst, erzeugt Burp „on the fly“-Zertifikate für Seiten wie `login.microsoftonline.com` und signiert sie mit Burp’s CA. + +Auf neueren Stacks (Python 3.13 + OpenSSL 3) ist die CA-Validierung strenger: + +- Ein CA-Zertifikat muss **Basic Constraints: `CA:TRUE`** und eine **Key Usage**-Erweiterung enthalten, die das Signieren von Zertifikaten erlaubt (**`keyCertSign`**, und typischerweise **`cRLSign`**). + +Die Standard-CA von Burp (PortSwigger CA) ist veraltet und enthält typischerweise nicht die Key Usage-Erweiterung, daher lehnt OpenSSL sie ab, selbst wenn Du ihr »vertraust«. + +Das führt zu Fehlern wie: + +- `CA cert does not include key usage extension` +- `CERTIFICATE_VERIFY_FAILED` +- `self-signed certificate in certificate chain` + +Deshalb musst Du: + +1. Eine moderne CA erstellen (mit korrekter Key Usage). +2. Burp so konfigurieren, dass es damit abgefangene Zertifikate signiert. +3. Diese CA in macOS vertrauen. +4. Azure CLI / Requests auf dieses CA-Bundle verweisen. + +### Schritt-für-Schritt: funktionierende Konfiguration + +#### 0) Voraussetzungen + +- Burp lokal laufend (Proxy auf `127.0.0.1:8080`) +- Azure CLI installiert (Homebrew) +- Du kannst `sudo` verwenden (um die CA im System-Schlüsselbund zu vertrauen) + +#### 1) Erstelle eine standardkonforme Burp-CA (PEM + KEY) + +Erstelle eine OpenSSL-Konfigurationsdatei, die explizit CA-Erweiterungen setzt: +```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 +``` +Erzeuge das CA-Zertifikat + den privaten Schlüssel: +```bash +openssl req -x509 -new -nodes \ +-days 3650 \ +-keyout burp-ca.key \ +-out burp-ca.pem \ +-config burp-ca.cnf +``` +Sanity-Check (Sie MÜSSEN "Key Usage" sehen): +```bash +openssl x509 -in burp-ca.pem -noout -text | egrep -A3 "Basic Constraints|Key Usage" +``` +Sollte etwa Folgendes enthalten: + +- `CA:TRUE` +- `Key Usage: ... Certificate Sign, CRL Sign` + +#### 2) In PKCS#12 konvertieren (Burp-Importformat) + +Burp benötigt Zertifikat + privaten Schlüssel, am einfachsten als PKCS#12: +```bash +openssl pkcs12 -export \ +-out burp-ca.p12 \ +-inkey burp-ca.key \ +-in burp-ca.pem \ +-name "Burp Custom Root CA" +``` +Du wirst nach einem Exportpasswort gefragt (vergib eines; Burp wird dich danach fragen). + +#### 3) CA in Burp importieren und Burp neu starten + +In Burp: + +- Proxy → Options +- Find Import / export CA certificate +- Click Import CA certificate +- Choose PKCS#12 +- Select `burp-ca.p12` +- Enter the password +- Starte Burp vollständig neu (wichtig) + +Warum neu starten? Burp könnte bis zum Neustart weiterhin die alte CA verwenden. + +#### 4) Die neue CA im macOS System-Schlüsselbund vertrauen + +Damit vertrauen System-Apps und viele TLS-Stacks der CA. +```bash +sudo security add-trusted-cert \ +-d -r trustRoot \ +-k /Library/Keychains/System.keychain \ +~/burp-ca/burp-ca.pem +``` +(Wenn Sie die GUI bevorzugen: Keychain Access → System → Certificates → import → set “Always Trust”.) + +#### 5) Proxy-Umgebungsvariablen konfigurieren +```bash +export HTTPS_PROXY="http://127.0.0.1:8080" +export HTTP_PROXY="http://127.0.0.1:8080" +``` +#### 6) Requests/Azure CLI so konfigurieren, dass sie deiner Burp CA vertrauen + +Azure CLI verwendet intern Python Requests; konfiguriere beide: +```bash +export REQUESTS_CA_BUNDLE="$HOME/burp-ca/burp-ca.pem" +export SSL_CERT_FILE="$HOME/burp-ca/burp-ca.pem" +``` +Hinweise: + +- `REQUESTS_CA_BUNDLE` wird von Requests verwendet. +- `SSL_CERT_FILE` hilft für andere TLS-Clients und Randfälle. +- Du brauchst normalerweise nicht mehr die alten `ADAL_PYTHON_SSL_NO_VERIFY` / `AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`, sobald die CA korrekt ist. + +#### 7) Überprüfe, dass Burp tatsächlich mit deiner neuen CA signiert (kritische Überprüfung) + +Dies bestätigt, dass deine Abfangkette korrekt ist: +```bash +openssl s_client -connect login.microsoftonline.com:443 \ +-proxy 127.0.0.1:8080 /dev/null \ +| openssl x509 -noout -issuer +``` +Der erwartete Issuer enthält den Namen deiner CA, z. B.: + +`O=Burp Custom CA, CN=Burp Custom Root CA` + +Wenn du weiterhin PortSwigger CA siehst, verwendet Burp nicht deine importierte CA → überprüfe den Import und starte Burp neu. + +#### 8) Überprüfe, dass Python Requests durch Burp funktioniert +```bash +python3 - <<'EOF' +import requests +requests.get("https://login.microsoftonline.com") +print("OK") +EOF +``` +Erwartet: `OK` + +#### 9) Azure CLI Test +```bash +az account get-access-token --resource=https://management.azure.com/ +``` +Wenn Sie bereits angemeldet sind, sollte es JSON mit einem `accessToken` zurückgeben. + +
+ ### Az PowerShell Azure PowerShell ist ein Modul mit Cmdlets zur Verwaltung von Azure-Ressourcen direkt über die PowerShell-Befehlszeile. -Folgen Sie diesem Link für die [**installation instructions**](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). -Befehle im Azure PowerShell AZ Module sind aufgebaut wie: `-Az ` +Befehle im Azure PowerShell AZ Module sind wie folgt aufgebaut: `-Az ` #### Debug | MitM Az PowerShell @@ -118,15 +282,15 @@ Mit dem Parameter **`-Debug`** ist es möglich, alle Anfragen zu sehen, die das ```bash Get-AzResourceGroup -Debug ``` -Um ein **MitM** gegen das Tool durchzuführen und **alle Anfragen** manuell zu prüfen, können Sie die Umgebungsvariablen `HTTPS_PROXY` und `HTTP_PROXY` entsprechend den [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) setzen. +Um ein **MitM** am Tool durchzuführen und **manuell alle Anfragen** zu überprüfen, die es sendet, kannst du die Umgebungsvariablen `HTTPS_PROXY` und `HTTP_PROXY` gemäß den [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) setzen. ### Microsoft Graph PowerShell -Microsoft Graph PowerShell ist ein plattformübergreifendes SDK, das den Zugriff auf alle Microsoft Graph APIs ermöglicht, einschließlich Diensten wie SharePoint, Exchange und Outlook, über einen einzigen Endpunkt. Es unterstützt PowerShell 7+, moderne Authentifizierung via MSAL, externe Identitäten und erweiterte Abfragen. Mit Fokus auf Least-Privilege-Zugriff stellt es sichere Operationen sicher und erhält regelmäßige Updates, um mit den neuesten Microsoft Graph API-Funktionen Schritt zu halten. +Microsoft Graph PowerShell ist ein plattformübergreifendes SDK, das den Zugriff auf alle Microsoft Graph APIs ermöglicht, einschließlich Diensten wie SharePoint, Exchange und Outlook, über einen einzigen Endpunkt. Es unterstützt PowerShell 7+, moderne Authentifizierung über MSAL, externe Identitäten und erweiterte Abfragen. Mit dem Schwerpunkt auf dem Prinzip der geringsten Rechte gewährleistet es sichere Vorgänge und erhält regelmäßige Updates, um mit den neuesten Funktionen der Microsoft Graph API Schritt zu halten. -Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). +Folge diesem Link für die [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). -Commands in Microsoft Graph PowerShell are structured like: `-Mg ` +Befehle in Microsoft Graph PowerShell sind folgendermaßen aufgebaut: `-Mg ` #### Debug Microsoft Graph PowerShell @@ -136,19 +300,19 @@ Get-MgUser -Debug ``` ### ~~**AzureAD Powershell**~~ -Das Azure Active Directory (AD)-Modul, jetzt **veraltet**, ist Teil von Azure PowerShell zum Verwalten von Azure AD-Ressourcen. Es stellt Cmdlets für Aufgaben wie das Verwalten von Benutzern, Gruppen und Anwendungsregistrierungen in Entra ID bereit. +Das Azure Active Directory (AD) Modul, jetzt **veraltet**, ist Teil von Azure PowerShell zur Verwaltung von Azure AD-Ressourcen. Es stellt Cmdlets für Aufgaben wie die Verwaltung von Benutzern, Gruppen und Anwendungsregistrierungen in Entra ID bereit. > [!TIP] -> Dies wurde durch Microsoft Graph PowerShell ersetzt +> Das wird durch Microsoft Graph PowerShell ersetzt -Folge diesem Link zu den [**Installationsanweisungen**](https://www.powershellgallery.com/packages/AzureAD). +Folgen Sie diesem Link für die [**Installationsanleitung**](https://www.powershellgallery.com/packages/AzureAD). -## Automatisierte Recon & Compliance-Tools +## Automatisierte Recon & Compliance Tools ### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure) -Turbot zusammen mit steampipe und powerpipe ermöglicht das Sammeln von Informationen aus Azure und Entra ID sowie das Durchführen von Compliance-Prüfungen und das Aufspüren von Fehlkonfigurationen. Die derzeit am meisten empfohlenen Azure-Module zum Ausführen sind: +Turbot zusammen mit steampipe und powerpipe ermöglicht das Sammeln von Informationen aus Azure und Entra ID sowie das Durchführen von Compliance-Prüfungen und das Auffinden von Fehlkonfigurationen. Die derzeit am meisten empfohlenen Azure-Module sind: - [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 ist ein Open-Source-Sicherheitstool, um Sicherheits-Best-Practice-Bewertungen, Audits, incident response, kontinuierliche Überwachung, Härtung und Forensik-Bereitschaft für AWS, Azure, Google Cloud und Kubernetes durchzuführen. +Prowler ist ein Open-Source-Sicherheitstool, um AWS, Azure, Google Cloud und Kubernetes hinsichtlich Sicherheits-Best-Practices zu bewerten, Audits durchzuführen, Incident Response, kontinuierliches Monitoring, Hardening und Forensik-Bereitschaft zu unterstützen. -Es ermöglicht uns im Wesentlichen, Hunderte von Checks gegen eine Azure-Umgebung auszuführen, um Sicherheitsfehlkonfigurationen zu finden und die Ergebnisse in json (und anderen Textformaten) zu sammeln oder sie im Web zu prüfen. +Es ermöglicht uns im Grunde, Hunderte von Checks gegen eine Azure-Umgebung auszuführen, um Sicherheitsfehlkonfigurationen zu finden und die Ergebnisse in json (und anderen Textformaten) zu sammeln oder sie im Web zu prüfen. ```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) -Es ermöglicht, Sicherheitskonfigurationsprüfungen von Azure-Abonnements und Microsoft Entra ID automatisch durchzuführen. +Es ermöglicht, Sicherheitskonfigurationsüberprüfungen von Azure subscriptions und Microsoft Entra ID automatisch durchzuführen. -Die HTML-Berichte werden im Verzeichnis `./monkey-reports` im github repository folder gespeichert. +Die HTML-Berichte werden im Verzeichnis `./monkey-reports` im github-Repository-Ordner gespeichert. ```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 sammelt Konfigurationsdaten zur manuellen Überprüfung und hebt Risikobereiche hervor. Es ist ein Multi-Cloud-Sicherheitsaudit-Tool, das die Bewertung der Sicherheitslage von Cloud-Umgebungen ermöglicht. +ScoutSuite sammelt Konfigurationsdaten zur manuellen Überprüfung und hebt Risikobereiche hervor. Es ist ein Multi-Cloud-Tool zur Sicherheitsprüfung, das die Bewertung der Sicherheitslage von Cloud-Umgebungen ermöglicht. ```bash virtualenv -p python3 venv source venv/bin/activate @@ -242,9 +406,9 @@ python scout.py azure --cli ``` ### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting) -Es ist ein powershell script, das Ihnen hilft, **alle Ressourcen und Berechtigungen innerhalb einer Management Group und der Entra ID** Tenant zu visualisieren und Sicherheitsfehlkonfigurationen zu finden. +Es ist ein PowerShell-Skript, das Ihnen hilft, **alle Ressourcen und Berechtigungen innerhalb einer Management Group und des Entra ID** tenant zu visualisieren und Sicherheitsfehlkonfigurationen zu finden. -Es verwendet das Az PowerShell module, sodass jede Authentifizierung, die von diesem Tool unterstützt wird, funktioniert. +Es verwendet das Az PowerShell module, sodass jede Authentifizierungsmethode, die dieses Modul unterstützt, vom Tool genutzt werden kann. ```bash import-module Az .\AzGovVizParallel.ps1 -ManagementGroupId [-SubscriptionIdWhitelist ] @@ -253,7 +417,7 @@ import-module Az ### [**ROADRecon**](https://github.com/dirkjanm/ROADtools) -Die enumeration von ROADRecon liefert Informationen über die Konfiguration von Entra ID, wie Benutzer, Gruppen, Rollen, conditional access policies... +Die Enumeration von ROADRecon liefert Informationen über die Konfiguration von Entra ID, wie Benutzer, Gruppen, Rollen, Conditional Access-Richtlinien... ```bash cd ROADTools pipenv shell @@ -266,19 +430,19 @@ roadrecon gui ``` ### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound) -AzureHound ist der BloodHound-Collector für Microsoft Entra ID und Azure. Es ist ein einzelnes statisches Go-Binary für Windows/Linux/macOS, das direkt mit folgenden Diensten kommuniziert: -- Microsoft Graph (Entra ID directory, M365) und -- Azure Resource Manager (ARM) Control Plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.) +AzureHound ist der BloodHound collector für Microsoft Entra ID und Azure. Es ist ein einzelnes statisches Go binary für Windows/Linux/macOS, das direkt mit folgenden Diensten spricht: +- Microsoft Graph (Entra ID directory, M365) and +- Azure Resource Manager (ARM) control plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.) Wesentliche Merkmale -- Läuft von überall im öffentlichen Internet gegen Tenant-APIs (kein Zugriff auf internes Netzwerk erforderlich) -- Gibt JSON für die Ingestion in BloodHound CE aus, um Angriffswege über Identitäten und Cloud-Ressourcen zu visualisieren -- Beobachteter Standard-User-Agent: azurehound/v2.x.x +- Läuft von überall im öffentlichen Internet gegen tenant APIs (kein Zugriff auf das interne Netzwerk erforderlich) +- Gibt JSON für die Ingestion in BloodHound CE aus, um Angriffspfade über Identitäten und Cloud-Ressourcen zu visualisieren +- Standardmäßig beobachteter User-Agent: azurehound/v2.x.x Authentifizierungsoptionen - Benutzername + Passwort: -u -p - Refresh-Token: --refresh-token -- JSON Web Token (Access-Token): --jwt +- JSON Web Token (access token): --jwt - Service principal secret: -a -s - Service principal certificate: -a --cert --key [--keypass ] @@ -318,36 +482,36 @@ azurehound list web-apps -t "" -o webapps.json azurehound list function-apps -t "" -o funcapps.json ``` Was abgefragt wird -- Graph Endpunkte (Beispiele): +- Graph endpoints (Beispiele): - /v1.0/organization, /v1.0/users, /v1.0/groups, /v1.0/roleManagement/directory/roleDefinitions, directoryRoles, owners/members -- ARM Endpunkte (Beispiele): +- ARM endpoints (Beispiele): - management.azure.com/subscriptions/.../providers/Microsoft.Storage/storageAccounts - .../Microsoft.KeyVault/vaults, .../Microsoft.Compute/virtualMachines, .../Microsoft.Web/sites, .../Microsoft.ContainerService/managedClusters -Preflight behavior and endpoints -- Jeder azurehound list führt typischerweise diese Testaufrufe vor der enumeration aus: +Preflight-Verhalten und Endpunkte +- Jeder azurehound list führt typischerweise diese Testaufrufe vor der Enumeration aus: 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=... -- Die Basis-URLs der Cloud-Umgebungen unterscheiden sich für Government/China/Germany. Siehe constants/environments.go im Repo. +- Die Basis-URLs der Cloud-Umgebung unterscheiden sich für Government/China/Germany. Siehe constants/environments.go im Repo. -ARM-lastige Objekte (weniger sichtbar in Activity/Resource Logs) -- Die folgenden Zieltypen verwenden überwiegend ARM control-plane Leseoperationen: 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. -- Diese GET-/List-Operationen werden typischerweise nicht in Activity Logs geschrieben; data-plane reads (z. B. *.blob.core.windows.net, *.vault.azure.net) werden durch Diagnostic Settings auf Ressourcenniveau abgedeckt. +ARM-lastige Objekte (weniger sichtbar in Activity/Resource logs) +- Die folgenden Zieltypen verwenden überwiegend ARM-Control-Plane-Lesezugriffe: 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. +- Diese GET/list-Operationen werden typischerweise nicht in Activity Logs geschrieben; Data-Plane-Lesezugriffe (z. B. *.blob.core.windows.net, *.vault.azure.net) werden über Diagnostic Settings auf Ressourcenebene erfasst. -OPSEC und Logging-Hinweise -- Microsoft Graph Activity Logs sind nicht standardmäßig aktiviert; aktiviere und exportiere sie an ein SIEM, um Graph-Aufrufe sichtbar zu machen. Erwarte den Graph preflight GET /v1.0/organization mit UA azurehound/v2.x.x. -- Entra ID non-interactive sign-in logs zeichnen die Identity platform Authentifizierung (login.microsoftonline.com) auf, die von AzureHound verwendet wird. -- ARM control-plane read/list-Operationen werden nicht in Activity Logs protokolliert; viele azurehound list-Operationen gegen Ressourcen erscheinen dort nicht. Nur data-plane Logging (über Diagnostic Settings) erfasst Lesezugriffe auf Service-Endpunkte. -- Defender XDR GraphApiAuditEvents (preview) kann Graph-Aufrufe und Token-Identifikatoren offenlegen, fehlt aber möglicherweise der UserAgent und hat eine begrenzte Aufbewahrungsdauer. +OPSEC- und Logging-Hinweise +- Microsoft Graph Activity Logs sind standardmäßig nicht aktiviert; aktivieren und an ein SIEM exportieren, um Graph-Aufrufe sichtbar zu machen. Erwartet wird der Graph-Preflight GET /v1.0/organization mit UA azurehound/v2.x.x. +- Entra ID non-interactive sign-in logs protokollieren die Identity-Platform-Authentifizierung (login.microsoftonline.com), die von AzureHound verwendet wird. +- ARM-Control-Plane-Read/List-Operationen werden nicht in Activity Logs aufgezeichnet; viele azurehound list-Operationen gegen Ressourcen erscheinen dort nicht. Nur Data-Plane-Logging (über Diagnostic Settings) erfasst Lesezugriffe auf Service-Endpunkte. +- Defender XDR GraphApiAuditEvents (preview) kann Graph-Aufrufe und Token-IDs offenlegen, fehlt aber möglicherweise der UserAgent und hat eine begrenzte Aufbewahrungszeit. -Tipp: Beim Aufspüren von Privilegienpfaden zuerst Users, Groups, Roles und Role Assignments ausgeben, dann in BloodHound importieren und vorgefertigte cypher-Queries nutzen, um Global Administrator/Privileged Role Administrator und transitive Eskalationen über verschachtelte Gruppen und RBAC-Zuweisungen sichtbar zu machen. +Tipp: Beim Aufspüren von Privilegienpfaden Benutzer, Gruppen, Rollen und Rollenzuweisungen exportieren, dann in BloodHound importieren und vorgefertigte Cypher-Abfragen nutzen, um Global Administrator/Privileged Role Administrator und transitive Eskalation über verschachtelte Gruppen und RBAC-Zuweisungen sichtbar zu machen. -Starte die BloodHound-Weboberfläche mit `curl -L https://ghst.ly/getbhce | docker compose -f - up` und importiere die Datei `output.json`. In der EXPLORE-Registerkarte findest du im CYPHER-Bereich ein Ordnersymbol mit vorgefertigten Queries. +Starte das BloodHound-Webinterface mit `curl -L https://ghst.ly/getbhce | docker compose -f - up` und importiere die `output.json`-Datei. Dann siehst du im EXPLORE-Tab im CYPHER-Bereich ein Ordnersymbol, das vorgefertigte Abfragen enthält. ### [**MicroBurst**](https://github.com/NetSPI/MicroBurst) -MicroBurst enthält Funktionen und Skripte, die Azure Services discovery, weak configuration auditing und post exploitation Aktionen wie credential dumping unterstützen. Es ist dafür gedacht, während penetration tests eingesetzt zu werden, bei denen Azure verwendet wird. +MicroBurst enthält Funktionen und Skripte zur Unterstützung von Azure Services discovery, Weak-Configuration-Audits und Post-Exploitation-Aktionen wie credential dumping. Es ist dafür gedacht, während penetration tests in Azure-Umgebungen verwendet zu werden. ```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 wurde aus dem Bedarf an einem Framework geschaffen, das sowohl reconnaissance als auch exploitation von Azure, EntraID und den zugehörigen Ressourcen durchführen kann. +PowerZure wurde aus dem Bedarf heraus entwickelt, ein Framework bereitzustellen, das sowohl reconnaissance als auch exploitation von Azure, EntraID und den zugehörigen Ressourcen durchführen kann. -Es verwendet das **Az PowerShell**-Modul, sodass jede Authentifizierung, die dieses Modul unterstützt, auch vom Tool unterstützt wird. +Es verwendet das **Az PowerShell**-Modul, sodass jede Authentifizierung, die vom Modul unterstützt wird, ebenfalls vom Tool genutzt werden kann. ```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 ist ein post-exploitation-Toolset zur Interaktion mit der Microsoft Graph API. Es stellt verschiedene Werkzeuge bereit, um reconnaissance, persistence und pillaging von Daten aus einem Microsoft Entra ID (Azure AD) account durchzuführen. +GraphRunner ist ein post-exploitation-Toolset zur Interaktion mit der Microsoft Graph API. Es bietet verschiedene Werkzeuge, um reconnaissance, persistence und pillaging von Daten aus einem Microsoft Entra ID (Azure AD)-Konto durchzuführen. ```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 erstellt einen “attack graph” der Ressourcen in einer Azure subscription. Es ermöglicht red teams und pentesters, die attack surface und pivot opportunities innerhalb eines tenant zu visualisieren und unterstützt Ihre defenders dabei, sich schnell zu orientieren und incident response work zu priorisieren. +Stormspotter erstellt einen “attack graph” der Ressourcen in einer Azure subscription. Es ermöglicht red teams und pentesters, die attack surface und pivot opportunities innerhalb eines tenant zu visualisieren und stärkt Ihre defenders, sodass sie sich schnell orientieren und incident response-Arbeiten priorisieren können. -**Leider scheint es nicht mehr gepflegt zu werden.** +**Leider scheint es nicht mehr gepflegt zu sein.** ```bash # Start Backend cd stormspotter\backend\ @@ -452,10 +616,10 @@ az login -u test@corp.onmicrosoft.com -p Welcome2022! python stormspotter\stormcollector\sscollector.pyz cli # This will generate a .zip file to upload in the frontend (127.0.0.1:9091) ``` -## Referenzen +## Quellen - [Cloud Discovery mit 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) +- [AzureHound repository](https://github.com/SpecterOps/AzureHound) +- [BloodHound repository](https://github.com/SpecterOps/BloodHound) - [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)