From 6186b208d9eaccb98e8214ed63ba954974fbfab2 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 15:11:17 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes --- src/pentesting-cloud/azure-security/README.md | 125 ++++++++++-------- .../azure-security/az-persistence/README.md | 8 +- .../azure-security/az-services/az-azuread.md | 18 +-- 3 files changed, 86 insertions(+), 65 deletions(-) diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 3c9bd5260..a98d31c88 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -31,7 +31,75 @@ az-unauthenticated-enum-and-initial-entry/ Mit diesen Informationen sind die häufigsten Möglichkeiten, um einen Fuß in die Tür zu bekommen: - **OSINT**: Überprüfen Sie auf **Leaks** in Github oder einer anderen Open-Source-Plattform, die **Anmeldeinformationen** oder interessante Informationen enthalten könnte. - **Passwort**-Wiederverwendung, Leaks oder [Password Spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) -- Anmeldeinformationen von +- Anmeldeinformationen von einem Mitarbeiter kaufen +- [**Häufiges Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (Anmeldeinformationen oder Oauth-App) +- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) +- 3rd Party **verletzte** +- Schwachstellen in Azure-gehosteten Anwendungen +- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) mit Zugriff auf den Metadaten-Endpunkt +- **Subdomain-Übernahmen** wie in [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) +- **Andere Fehlkonfigurationen von Azure-Diensten** +- Wenn ein Entwickler-Laptop kompromittiert ist ([WinPEAS und LinPEAS](https://github.com/peass-ng/PEASS-ng) können diese Informationen finden): +- Innerhalb von **`/.Azure`** +- **`azureProfile.json`** enthält Informationen über angemeldete Benutzer aus der Vergangenheit +- **`clouds.config` enthält** Informationen über Abonnements +- **`service_principal_entries.json`** enthält Anwendungsanmeldeinformationen (Mandanten-ID, Clients und Geheimnis). Nur in Linux & macOS +- **`msal_token_cache.json`** enthält Zugriffstoken und Aktualisierungstoken. Nur in Linux & macOS +- **`service_principal_entries.bin`** und msal_token_cache.bin werden in Windows verwendet und sind mit DPAPI verschlüsselt +- **`msal_http_cache.bin`** ist ein Cache von HTTP-Anfragen +- Laden Sie es: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` +- **`AzureRmContext.json`** enthält Informationen über vorherige Anmeldungen mit Az PowerShell (aber keine Anmeldeinformationen) +- Innerhalb von **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** befinden sich mehrere `.bin`-Dateien mit **Zugriffstoken**, ID-Token und Kontoinformationen, die mit dem DPAPI des Benutzers verschlüsselt sind. +- Es ist möglich, weitere **Zugriffstoken** in den `.tbres`-Dateien innerhalb von **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** zu finden, die ein base64 mit DPAPI verschlüsseltes Zugriffstoken enthalten. +- In Linux und macOS können Sie **Zugriffstoken, Aktualisierungstoken und ID-Token** von Az PowerShell (falls verwendet) erhalten, indem Sie `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` ausführen. +- In Windows generiert dies nur ID-Token. +- Es ist möglich zu sehen, ob Az PowerShell in Linux und macOS verwendet wurde, indem überprüft wird, ob `$HOME/.local/share/.IdentityService/` existiert (obwohl die enthaltenen Dateien leer und nutzlos sind). + +Finden Sie **andere Fehlkonfigurationen von Azure-Diensten**, die zu einem Fuß in die Tür führen können, auf der folgenden Seite: + +{{#ref}} +az-unauthenticated-enum-and-initial-entry/ +{{#endref}} + +> [!NOTE] +> Denken Sie daran, dass normalerweise der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst. + +### Azure & Entra ID-Tools + +Die folgenden Tools sind sehr nützlich, um sowohl Entra ID-Mandanten als auch Azure-Umgebungen langsam (um Erkennung zu vermeiden) oder automatisch (um Zeit zu sparen) zu enumerieren: + +{{#ref}} +az-enumeration-tools.md +{{#endref}} + +### Umgehung von Zugriffsrichtlinien + +
+ +In Fällen, in denen Sie einige gültige Anmeldeinformationen haben, aber sich nicht anmelden können, sind dies einige gängige Schutzmaßnahmen, die vorhanden sein könnten: + +- **IP-Whitelisting** -- Sie müssen eine gültige IP kompromittieren +- **Geo-Beschränkungen** -- Finden Sie heraus, wo der Benutzer lebt oder wo sich die Büros des Unternehmens befinden, und erhalten Sie eine IP aus derselben Stadt (oder zumindest demselben Land) +- **Browser** -- Vielleicht ist nur ein Browser von bestimmten Betriebssystemen (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches Betriebssystem das Opfer/das Unternehmen verwendet. +- Sie können auch versuchen, **Service Principal-Anmeldeinformationen** zu kompromittieren, da diese normalerweise weniger eingeschränkt sind und deren Anmeldung weniger überprüft wird. + +Nachdem Sie dies umgangen haben, sollten Sie in der Lage sein, zu Ihrer ursprünglichen Konfiguration zurückzukehren und weiterhin Zugriff zu haben. + +Überprüfen Sie: + +{{#ref}} +az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md +{{#endref}} + +### Wer bin ich + +> [!CAUTION] +> Lernen Sie, **wie man** az cli, AzureAD und Az PowerShell im Abschnitt [**Az - Entra ID**](az-services/az-azuread.md) installiert. + +Eine der ersten Dinge, die Sie wissen müssen, ist **wer Sie sind** (in welcher Umgebung Sie sich befinden): + +{{#tabs }} +{{#tab name="az cli" }} ```bash az account list az account tenant list # Current tenant info @@ -73,9 +141,9 @@ Get-AzureADTenantDetail {{#endtabs }} -### Entra ID Aufzählung & Privilegieneskalation +### Entra ID Enumeration & Privesc -Standardmäßig sollte jeder Benutzer **genug Berechtigungen haben, um** Dinge wie Benutzer, Gruppen, Rollen, Dienstprinzipale... aufzulisten (siehe [Standard AzureAD Berechtigungen](az-basic-information/index.html#default-user-permissions)).\ +Standardmäßig sollte jeder Benutzer **ausreichende Berechtigungen haben, um** Dinge wie Benutzer, Gruppen, Rollen, Dienstprinzipale... aufzulisten (siehe [Standard AzureAD-Berechtigungen](az-basic-information/index.html#default-user-permissions)).\ Hier finden Sie einen Leitfaden: {{#ref}} @@ -89,7 +157,7 @@ az-enumeration-tools.md#automated-post-exploitation-tools {{#endref}} -### Azure-Dienste auflisten +### Azure Enumeration Sobald Sie wissen, wer Sie sind, können Sie beginnen, die **Azure-Dienste, auf die Sie Zugriff haben**, aufzulisten. @@ -99,51 +167,4 @@ Sie sollten herausfinden, welche **Berechtigungen Sie** über die Ressourcen hab Der Az PowerShell-Befehl **`Get-AzResource`** ermöglicht es Ihnen, **die Ressourcen zu erfahren, über die Ihr aktueller Benutzer Sichtbarkeit hat**. -Darüber hinaus können Sie die gleichen Informationen in der **Webkonsole** erhalten, indem Sie zu [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) gehen oder nach "Alle Ressourcen" suchen oder ausführen: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` - -2. **Finden Sie die Berechtigungen, die Sie über die Ressourcen haben, auf die Sie Zugriff haben, und finden Sie die Ihnen zugewiesenen Rollen**: - -Beachten Sie, dass Sie die Berechtigung **`Microsoft.Authorization/roleAssignments/read`** benötigen, um diese Aktion auszuführen. - -Darüber hinaus kann mit ausreichenden Berechtigungen die Rolle **`Get-AzRoleAssignment`** verwendet werden, um **alle Rollen** im Abonnement oder die Berechtigung über eine bestimmte Ressource aufzulisten, indem Sie sie wie folgt angeben: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**. - -Es ist auch möglich, diese Informationen zu erhalten, indem Sie **`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** ausführen, wie in: - -- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** - -3. **Finden Sie die granularen Berechtigungen der Ihnen zugewiesenen Rollen**: - -Um die granularen Berechtigungen zu erhalten, könnten Sie **`(Get-AzRoleDefinition -Id "").Actions`** ausführen. - -Oder rufen Sie die API direkt mit **`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties"`** auf. - - -Im folgenden Abschnitt finden Sie **Informationen über die häufigsten Azure-Dienste und wie man sie auflistet**: - -{{#ref}} -az-services/ -{{#endref}} - -### Privilegieneskalation, Post-Exploitation & Persistenz in Azure-Diensten - -Sobald Sie wissen, wie die Azure-Umgebung strukturiert ist und welche Dienste verwendet werden, können Sie nach Möglichkeiten suchen, um **Berechtigungen zu eskalieren, lateral zu bewegen, andere Post-Exploitation-Angriffe durchzuführen und Persistenz aufrechtzuerhalten**. - -Im folgenden Abschnitt finden Sie Informationen darüber, wie Sie Berechtigungen in den häufigsten Azure-Diensten eskalieren können: - -{{#ref}} -az-privilege-escalation/ -{{#endref}} - -Im nächsten finden Sie Informationen darüber, wie Sie Post-Exploitation-Angriffe in den häufigsten Azure-Diensten durchführen können: - -{{#ref}} -az-post-exploitation/ -{{#endref}} - -Im folgenden finden Sie Informationen darüber, wie Sie Persistenz in den häufigsten Azure-Diensten aufrechterhalten können: - -{{#ref}} -az-persistence/ -{{#endref}} - -{{#include ../../banners/hacktricks-training.md}} +Darüber hinaus können Sie die gleichen Informationen in der **Webkonsole** erhalten, diff --git a/src/pentesting-cloud/azure-security/az-persistence/README.md b/src/pentesting-cloud/azure-security/az-persistence/README.md index 9a2949ec1..c98883a40 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/README.md +++ b/src/pentesting-cloud/azure-security/az-persistence/README.md @@ -2,9 +2,9 @@ {{#include ../../../banners/hacktricks-training.md}} -### Illegale Zustimmungserteilung +### OAuth-Anwendung -Standardmäßig kann sich jeder Benutzer in Azure AD eine Anwendung registrieren. Sie können also eine Anwendung (nur für den Zielmandanten) registrieren, die hohe Berechtigungen mit administrativer Zustimmung benötigt (und diese genehmigen, wenn Sie der Administrator sind) - wie das Versenden von E-Mails im Namen eines Benutzers, Rollenmanagement usw. Dies ermöglicht es uns, **Phishing-Angriffe** durchzuführen, die im Erfolgsfall sehr **ertragreich** wären. +Standardmäßig kann sich jeder Benutzer in Entra ID eine Anwendung registrieren. Sie können also eine Anwendung (nur für den Zielmandanten) registrieren, die hohe Berechtigungen mit administrativer Zustimmung benötigt (und sie genehmigen, wenn Sie der Administrator sind) - wie das Senden von E-Mails im Namen eines Benutzers, Rollenmanagement usw. Dies ermöglicht es uns, **Phishing-Angriffe** durchzuführen, die im Erfolgsfall sehr **ertragreich** wären. Darüber hinaus könnten Sie auch diese Anwendung mit Ihrem Benutzer akzeptieren, um den Zugriff darauf aufrechtzuerhalten. @@ -30,7 +30,7 @@ Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint | Get-AzureADApplicationOwner |fl * > Wenn Sie also dieses **Kennwort** finden, können Sie als **Service Principal** **innerhalb** des **Mandanten** zugreifen.\ > Beachten Sie, dass dieses Kennwort nur sichtbar ist, wenn es generiert wird (Sie können es ändern, aber nicht erneut abrufen).\ > Der **Besitzer** der **Anwendung** kann ihr **ein Kennwort hinzufügen** (damit er sich als diese ausgeben kann).\ -> Anmeldungen als diese Service Principals sind **nicht als riskant gekennzeichnet** und sie **werden kein MFA haben.** +> Anmeldungen als diese Service Principals sind **nicht als riskant gekennzeichnet** und sie **haben kein MFA.** Es ist möglich, eine Liste von häufig verwendeten App-IDs, die zu Microsoft gehören, in [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) zu finden. @@ -926,24 +926,24 @@ Wenn PIM aktiviert ist, ist es möglich, jede Rolle mit bestimmten Anforderungen - Maximale Dauer (Stunden) der Aktivierung - MFA bei Aktivierung erforderlich -- Erfordert den Kontext der bedingten Zugriffsautorisierung +- Erfordert den Kontext der bedingten Zugriffsauthentifizierung - Erfordert eine Begründung bei Aktivierung - Erfordert Ticketinformationen bei Aktivierung - Genehmigung zur Aktivierung erforderlich - Maximale Zeit bis zum Ablauf der berechtigten Zuweisungen - Viel mehr Konfigurationen, wann und an wen Benachrichtigungen gesendet werden, wenn bestimmte Aktionen mit dieser Rolle stattfinden -### Bedingte Zugriffsrichtlinien +### Bedingte Zugriffsrichtlinien -Überprüfen: +Überprüfen Sie: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Entra Identity Protection +### Entra Identity Protection -Entra Identity Protection ist ein Sicherheitsdienst, der es ermöglicht, **zu erkennen, wann ein Benutzer oder ein Anmeldeversuch zu riskant** ist, um akzeptiert zu werden, und es ermöglicht, den Benutzer oder den Anmeldeversuch zu **blockieren**. +Entra Identity Protection ist ein Sicherheitsdienst, der es ermöglicht, **zu erkennen, wenn ein Benutzer oder eine Anmeldung zu riskant** ist, um akzeptiert zu werden, und es ermöglicht, den Benutzer oder den Anmeldeversuch zu **blockieren**. Es ermöglicht dem Admin, es so zu konfigurieren, dass es Versuche blockiert, wenn das Risiko "Niedrig und darüber", "Mittel und darüber" oder "Hoch" ist. Obwohl es standardmäßig vollständig **deaktiviert** ist: @@ -954,7 +954,7 @@ Es ermöglicht dem Admin, es so zu konfigurieren, dass es Versuche blockiert, we ### Entra Passwortschutz -Entra Passwortschutz ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) ist eine Sicherheitsfunktion, die **hilft, den Missbrauch schwacher Passwörter zu verhindern, indem Konten gesperrt werden, wenn mehrere erfolglose Anmeldeversuche stattfinden**.\ +Entra Passwortschutz ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) ist eine Sicherheitsfunktion, die **hilft, den Missbrauch schwacher Passwörter zu verhindern, indem Konten gesperrt werden, wenn mehrere erfolglose Anmeldeversuche auftreten**.\ Es ermöglicht auch, eine **benutzerdefinierte Passwortliste zu sperren**, die Sie bereitstellen müssen. Es kann **sowohl** auf Cloud-Ebene als auch im lokalen Active Directory angewendet werden.