Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-25 14:38:25 +00:00
parent d8a7f1cff0
commit 0aaa7ee0bb
5 changed files with 311 additions and 219 deletions

View File

@@ -4,55 +4,65 @@
## Grundinformationen
Lernen Sie die Grundlagen von Azure und Entra ID auf der folgenden Seite:
{{#ref}}
az-basic-information/
{{#endref}}
## Azure Pentester/Red Team Methodik
## Azure Pentester/Red Team Methodologie
Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert** ist, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
Um eine AZURE-Umgebung zu auditieren, ist es sehr wichtig zu wissen: welche **Dienste verwendet werden**, was **exponiert wird**, wer **Zugriff** auf was hat und wie interne Azure-Dienste und **externe Dienste** verbunden sind.
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, die Beschaffung von **Anmeldeinformationen** für Azure AD. Hier sind einige Ideen, wie man das erreichen kann:
Aus der Sicht eines Red Teams ist der **erste Schritt, um eine Azure-Umgebung zu kompromittieren**, einen **Fuß in die Tür** zu bekommen.
- **Leaks** in github (oder ähnlichem) - OSINT
- **Soziale** Ingenieurkunst
- **Passwort**-Wiederverwendung (Passwort-Leaks)
- 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
- **Lokales Datei Lesen**
- `/home/USERNAME/.azure`
- `C:\Users\USERNAME\.azure`
- Die Datei **`accessTokens.json`** in `az cli` vor 2.30 - Jan2022 - speicherte **Zugriffstoken im Klartext**
- Die Datei **`azureProfile.json`** enthält **Informationen** über den angemeldeten Benutzer.
- **`az logout`** entfernt das Token.
- Ältere Versionen von **`Az PowerShell`** speicherten **Zugriffstoken** im **Klartext** in **`TokenCache.dat`**. Es speichert auch **ServicePrincipalSecret** im **Klartext** in **`AzureRmContext.json`**. Das Cmdlet **`Save-AzContext`** kann verwendet werden, um **Token** zu **speichern**.\
Verwenden Sie `Disconnect-AzAccount`, um sie zu entfernen.
- 3rd Party **gehackt**
- **Interner** Mitarbeiter
- [**Häufiges Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (Anmeldeinformationen oder Oauth-App)
- [Gerätekode-Authentifizierungsphishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
### Externe Enumeration & Erster Zugriff
Selbst wenn Sie **keinen Benutzer** innerhalb des Azure-Mandanten, den Sie angreifen, kompromittiert haben, können Sie **einige Informationen** daraus sammeln:
Der erste Schritt ist natürlich, Informationen über den Mandanten, den Sie angreifen, zu enumerieren und zu versuchen, einen Fuß in die Tür zu bekommen.
Basierend auf dem Domainnamen ist es möglich zu wissen, **ob das Unternehmen Azure verwendet**, die **Mandanten-ID** zu erhalten, andere **gültige Domains** im selben Mandanten (falls vorhanden) zu erhalten und **relevante Informationen** wie ob SSO aktiviert ist, Mail-Konfigurationen, gültige Benutzer-E-Mails...
Überprüfen Sie die folgende Seite, um zu lernen, wie man die **externe Enumeration** durchführt:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Nachdem Sie Anmeldeinformationen erhalten haben, müssen Sie wissen, **wem diese Anmeldeinformationen gehören** und **auf was sie Zugriff haben**, daher müssen Sie eine grundlegende Enumeration durchführen:
## Grundlegende Enumeration
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 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 **gehackt**
- 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/)
- Wenn ein Entwickler-Laptop kompromittiert ist ([WinPEAS und LinPEAS](https://github.com/peass-ng/PEASS-ng) können diese Informationen finden):
- Innerhalb von **`<HOME>/.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 frühere Anmeldungen mit Az PowerShell (aber keine Anmeldeinformationen)
- Innerhalb von **`C:\Users\<username>\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\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** zu finden, die ein mit DPAPI verschlüsseltes Base64 mit 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).
> [!NOTE]
> Denken Sie daran, dass der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
> Denken Sie daran, dass normalerweise der **lauteste** Teil der Enumeration das **Login** ist, nicht die Enumeration selbst.
### SSRF
### Azure & Entra ID Tools
Wenn Sie ein SSRF auf einem Rechner innerhalb von Azure gefunden haben, überprüfen Sie diese Seite auf Tricks:
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}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
az-enumeration-tools.md
{{#endref}}
### Umgehung von Anmeldebedingungen
@@ -61,16 +71,12 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-met
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-Whitelist** -- Sie müssen eine gültige IP kompromittieren
- **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** -- Möglicherweise ist nur ein Browser von bestimmten Betriebssystemen (Windows, Linux, Mac, Android, iOS) erlaubt. Finden Sie heraus, welches OS 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.
- **Browser** -- Möglicherweise 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, **Anmeldeinformationen für den Dienstprinzipal** 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 Ihrem ursprünglichen Setup zurückzukehren und weiterhin Zugriff zu haben.
### Subdomain-Übernahme
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
Nachdem Sie dies umgangen haben, sollten Sie in der Lage sein, zu Ihrer ursprünglichen Konfiguration zurückzukehren und weiterhin Zugriff zu haben.
### Whoami
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
@@ -110,21 +107,28 @@ Get-AzContext -ListAvailable
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
```
{{#endtab }}
{{#tab name="Mg" }}
```bash
#Get the current session
Get-MgContext
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#endtabs }}
> [!CAUTION]
> Eines der wichtigsten Befehle zur Auflistung von Azure ist **`Get-AzResource`** aus Az PowerShell, da er Ihnen **zeigt, über welche Ressourcen Ihr aktueller Benutzer Sichtbarkeit hat**.
>
> Sie können 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.
### Entra ID Auflistung
### Entra ID Aufzählung & Privilegieneskalation
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:
@@ -133,20 +137,49 @@ Hier finden Sie einen Leitfaden:
az-services/az-azuread.md
{{#endref}}
> [!NOTE]
> Jetzt, da Sie **einige Informationen über Ihre Anmeldeinformationen haben** (und wenn Sie ein Rote-Team sind, hoffen wir, dass Sie **nicht entdeckt wurden**). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden.\
> Im folgenden Abschnitt können Sie einige Möglichkeiten überprüfen, um **einige gängige Dienste aufzulisten.**
Überprüfen Sie die **Post-Exploitation-Tools**, um Tools zur Eskalation von Berechtigungen in Entra ID wie **AzureHound** zu finden:
## App Service SCM
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
Kudu-Konsole, um sich im App Service 'Container' anzumelden.
## Webshell
### Azure-Dienste auflisten
Verwenden Sie portal.azure.com und wählen Sie die Shell aus, oder verwenden Sie shell.azure.com für eine Bash- oder PowerShell. Der 'Disk' dieser Shell wird als Bilddatei in einem Speicherkonto gespeichert.
Sobald Sie wissen, wer Sie sind, können Sie beginnen, die **Azure-Dienste, auf die Sie Zugriff haben**, aufzulisten.
## Azure DevOps
Der Az PowerShell-Befehl **`Get-AzResource`** ermöglicht es Ihnen, **die Ressourcen zu erfahren, über die Ihr aktueller Benutzer Sichtbarkeit hat**.
Azure DevOps ist von Azure getrennt. Es hat Repositories, Pipelines (yaml oder Release), Boards, Wiki und mehr. Variablengruppen werden verwendet, um Variablenwerte und Geheimnisse zu speichern.
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/<subscription-id>/resources?api-version=2021-04-01"`
Außerdem kann mit ausreichenden Berechtigungen die Rolle **`Get-AzRoleAssignment`** verwendet werden, um **alle Rollen** in der Abonnierung 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`**
Im folgenden Abschnitt finden Sie Informationen über die häufigsten Azure-Dienste und wie Sie diese auflisten können:
{{#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}}