Translated ['', 'src/pentesting-cloud/azure-security/az-enumeration-tool

This commit is contained in:
Translator
2026-02-05 12:29:34 +00:00
parent 70975ac68d
commit cba3aad37d
@@ -2,10 +2,10 @@
{{#include ../../banners/hacktricks-training.md}}
## Zainstaluj PowerShell w systemie Linux
## Instalacja PowerShell w systemie linux
> [!TIP]
> W linuxie będziesz musiał zainstalować PowerShell Core:
> W systemie linux będziesz musiał zainstalować PowerShell Core:
```bash
sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common
@@ -24,15 +24,15 @@ pwsh
# Az cli
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
```
## Zainstaluj PowerShell na MacOS
## Zainstaluj PowerShell w MacOS
Instrukcje z [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
1. Zainstaluj `brew`, jeśli nie jest jeszcze zainstalowany:
1. Zainstaluj `brew`, jeśli jeszcze nie jest zainstalowany:
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
2. Zainstaluj najnowszą stabilną wersję PowerShell:
2. Zainstaluj najnowsze stabilne wydanie PowerShell:
```sh
brew install powershell/tap/powershell
```
@@ -45,23 +45,23 @@ pwsh
brew update
brew upgrade powershell
```
## Główne narzędzia Enumeration
## Główne narzędzia do enumeracji
### az cli
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) to narzędzie multiplatformowe napisane w Python do zarządzania i administrowania (większością) zasobów Azure i Entra ID. Łączy się z Azure i wykonuje polecenia administracyjne przez wiersz poleceń lub skrypty.
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) jest narzędziem wieloplatformowym napisanym w Pythonie do zarządzania i administrowania (większością) zasobów Azure i Entra ID. Łączy się z Azure i wykonuje polecenia administracyjne przez wiersz poleceń lub skrypty.
Korzystaj z tego linku, aby zobaczyć [**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).
Polecenia w Azure CLI są zorganizowane według wzorca: `az <service> <action> <parameters>`
#### Debug | MitM az cli
#### Debugowanie | MitM az cli
Używając parametru **`--debug`** można zobaczyć wszystkie żądania, które narzędzie **`az`** wysyła:
Używając parametru **`--debug`**, można zobaczyć wszystkie żądania, które narzędzie **`az`** wysyła:
```bash
az account management-group list --output table --debug
```
Aby przeprowadzić **MitM** na narzędziu i ręcznie **sprawdzić wszystkie żądania**, które wysyła, możesz zrobić:
Aby przeprowadzić **MitM** wobec narzędzia i ręcznie **sprawdzić wszystkie wysyłane przez nie żądania**, możesz zrobić:
{{#tabs }}
{{#tab name="Bash" }}
@@ -104,13 +104,177 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
{{#endtab }}
{{#endtabs }}
<details>
<summary><strong>Naprawa “CA cert does not include key usage extension”</strong></summary>
### Dlaczego pojawia się błąd
Gdy Azure CLI się uwierzytelnia, wykonuje żądania HTTPS (przez MSAL → Requests → OpenSSL). Jeśli przechwytujesz TLS za pomocą Burp, Burp generuje „w locie” certyfikaty dla serwisów takich jak `login.microsoftonline.com` i podpisuje je za pomocą CA Burp.
Na nowszych stosach (Python 3.13 + OpenSSL 3) walidacja CA jest surowsza:
- Certyfikat CA musi zawierać **Basic Constraints: `CA:TRUE`** oraz rozszerzenie **Key Usage** pozwalające na podpisywanie certyfikatów (**`keyCertSign`**, i zwykle **`cRLSign`**).
Domyślne CA Burp (PortSwigger CA) jest przestarzałe i zazwyczaj nie ma rozszerzenia Key Usage, więc OpenSSL odrzuca je nawet jeśli je „ufasz”.
To powoduje błędy takie jak:
- `CA cert does not include key usage extension`
- `CERTIFICATE_VERIFY_FAILED`
- `self-signed certificate in certificate chain`
Więc musisz:
1. Utworzyć nowoczesne CA (z poprawnym Key Usage).
2. Sprawić, by Burp używał go do podpisywania przechwytywanych certyfikatów.
3. Zaufać temu CA w macOS.
4. Wskazać Azure CLI / Requests na ten bundel CA.
### Krok po kroku: działająca konfiguracja
#### 0) Wymagania wstępne
- Burp uruchomiony lokalnie (proxy na `127.0.0.1:8080`)
- Azure CLI zainstalowany (Homebrew)
- Masz dostęp do `sudo` (by zaufać CA w systemowym pęku kluczy)
#### 1) Utwórz zgodne ze standardami CA dla Burp (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
```
Wygeneruj certyfikat CA + klucz prywatny:
```bash
openssl req -x509 -new -nodes \
-days 3650 \
-keyout burp-ca.key \
-out burp-ca.pem \
-config burp-ca.cnf
```
Sprawdzenie poprawności (MUSISZ zobaczyć Key Usage):
```bash
openssl x509 -in burp-ca.pem -noout -text | egrep -A3 "Basic Constraints|Key Usage"
```
Powinno zawierać coś w stylu:
- `CA:TRUE`
- `Key Usage: ... Certificate Sign, CRL Sign`
#### 2) Konwersja do PKCS#12 (format importu dla Burp)
Burp potrzebuje certificate + private key, najprościej jako PKCS#12:
```bash
openssl pkcs12 -export \
-out burp-ca.p12 \
-inkey burp-ca.key \
-in burp-ca.pem \
-name "Burp Custom Root CA"
```
Zostaniesz poproszony o hasło eksportu (ustaw je; Burp o nie poprosi).
#### 3) Zaimportuj CA do Burp i uruchom Burp ponownie
W Burp:
- Proxy → Opcje
- Znajdź Import / export certyfikatu CA
- Kliknij Importuj certyfikat CA
- Wybierz PKCS#12
- Wskaż `burp-ca.p12`
- Wprowadź hasło
- Uruchom Burp całkowicie ponownie (ważne)
Dlaczego restart? Burp może nadal używać starego CA aż do ponownego uruchomienia.
#### 4) Zaufaj nowemu CA w macOS systemowym pęku kluczy
To pozwoli aplikacjom systemowym i wielu stosom TLS zaufać CA.
```bash
sudo security add-trusted-cert \
-d -r trustRoot \
-k /Library/Keychains/System.keychain \
~/burp-ca/burp-ca.pem
```
(Jeśli wolisz GUI: Keychain Access → System → Certificates → import → set “Always Trust”.)
#### 5) Skonfiguruj zmienne środowiskowe proxy
```bash
export HTTPS_PROXY="http://127.0.0.1:8080"
export HTTP_PROXY="http://127.0.0.1:8080"
```
#### 6) Skonfiguruj Requests/Azure CLI, aby ufały twojemu Burp CA
Azure CLI używa wewnętrznie Python Requests; ustaw oba z nich:
```bash
export REQUESTS_CA_BUNDLE="$HOME/burp-ca/burp-ca.pem"
export SSL_CERT_FILE="$HOME/burp-ca/burp-ca.pem"
```
Notatki:
- `REQUESTS_CA_BUNDLE` jest używany przez Requests.
- `SSL_CERT_FILE` pomaga innym klientom TLS i w przypadkach brzegowych.
- Zazwyczaj nie potrzebujesz już starych `ADAL_PYTHON_SSL_NO_VERIFY` / `AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`, gdy CA jest poprawny.
#### 7) Zweryfikuj, że Burp rzeczywiście podpisuje certyfikaty twoim nowym CA (krytyczna kontrola)
To potwierdza, że twój łańcuch przechwytywania jest poprawny:
```bash
openssl s_client -connect login.microsoftonline.com:443 \
-proxy 127.0.0.1:8080 </dev/null 2>/dev/null \
| openssl x509 -noout -issuer
```
Oczekiwany wystawca (issuer) zawiera nazwę twojego CA, np.:
`O=Burp Custom CA, CN=Burp Custom Root CA`
Jeśli nadal widzisz PortSwigger CA, Burp nie używa zaimportowanego CA → sprawdź import i uruchom ponownie.
#### 8) Zweryfikuj, czy Python Requests działa przez Burp
```bash
python3 - <<'EOF'
import requests
requests.get("https://login.microsoftonline.com")
print("OK")
EOF
```
Oczekiwane: `OK`
#### 9) Test Azure CLI
```bash
az account get-access-token --resource=https://management.azure.com/
```
Jeśli jesteś już zalogowany, powinno zwrócić JSON z `accessToken`.
</details>
### Az PowerShell
Azure PowerShell to moduł zawierający cmdlets umożliwiające zarządzanie zasobami Azure bezpośrednio z wiersza poleceń PowerShell.
Azure PowerShell to moduł z cmdletami do zarządzania zasobami Azure bezpośrednio z wiersza poleceń PowerShell.
Skorzystaj z tego linku, aby uzyskać [**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).
Commands in Azure PowerShell AZ Module are structured like: `<Action>-Az<Service> <parameters>`
Polecenia w Azure PowerShell AZ Module mają strukturę: `<Action>-Az<Service> <parameters>`
#### Debug | MitM Az PowerShell
@@ -118,11 +282,11 @@ Używając parametru **`-Debug`** można zobaczyć wszystkie żądania wysyłane
```bash
Get-AzResourceGroup -Debug
```
Aby wykonać **MitM** na narzędziu i **ręcznie sprawdzić wszystkie żądania**, które ono wysyła, możesz ustawić zmienne środowiskowe `HTTPS_PROXY` i `HTTP_PROXY` zgodnie z [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
In order to do a **MitM** to the tool and **check all the requests** it's sending manually you can set the env variables `HTTPS_PROXY` and `HTTP_PROXY` according to the [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
### Microsoft Graph PowerShell
Microsoft Graph PowerShell to wieloplatformowe SDK, które umożliwia dostęp do wszystkich Microsoft Graph API, w tym usług takich jak SharePoint, Exchange i Outlook, za pomocą jednego endpointu. Obsługuje PowerShell 7+, nowoczesne uwierzytelnianie przez MSAL, tożsamości zewnętrzne oraz zaawansowane zapytania. Z naciskiem na zasadę najmniejszych uprawnień zapewnia bezpieczne operacje i otrzymuje regularne aktualizacje, aby być zgodnym z najnowszymi funkcjami Microsoft Graph API.
Microsoft Graph PowerShell to wieloplatformowe SDK, które umożliwia dostęp do wszystkich Microsoft Graph APIs, w tym usług takich jak SharePoint, Exchange i Outlook, wykorzystując pojedynczy endpoint. Wspiera PowerShell 7+, nowoczesną autentykację za pomocą MSAL, tożsamości zewnętrzne oraz zaawansowane zapytania. Skupiając się na zasadzie najmniejszych uprawnień, zapewnia bezpieczne operacje i otrzymuje regularne aktualizacje, aby być zgodnym z najnowszymi funkcjami Microsoft Graph API.
Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
@@ -136,19 +300,19 @@ Get-MgUser -Debug
```
### ~~**AzureAD Powershell**~~
The Azure Active Directory (AD) module, now **wycofany**, jest częścią Azure PowerShell do zarządzania zasobami Azure AD. Zapewnia cmdletów do zadań takich jak zarządzanie użytkownikami, grupami i rejestracjami aplikacji w Entra ID.
Moduł Azure Active Directory (AD), obecnie **deprecated**, jest częścią Azure PowerShell służącą do zarządzania zasobami Azure AD. Udostępnia cmdlety do zadań takich jak zarządzanie użytkownikami, grupami i rejestracjami aplikacji w Entra ID.
> [!TIP]
> Zastąpiony przez Microsoft Graph PowerShell
> Zostało to zastąpione przez Microsoft Graph PowerShell
Przejdź do tego linku, aby zobaczyć [**instrukcje instalacji**](https://www.powershellgallery.com/packages/AzureAD).
Kliknij ten link, aby przejść do [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD).
## Zautomatyzowane narzędzia Recon i zgodności
## Zautomatyzowany rekonesans i narzędzia do zgodności
### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure)
Turbot wraz ze steampipe i powerpipe umożliwia zbieranie informacji z Azure i Entra ID oraz wykonywanie kontroli zgodności i wykrywanie błędnych konfiguracji. Obecnie najbardziej polecane moduły Azure do uruchomienia to:
Turbot wraz ze steampipe i powerpipe umożliwia zbieranie informacji z Azure i Entra ID oraz przeprowadzanie kontroli zgodności i wykrywanie błędnych konfiguracji. Obecnie najbardziej zalecane moduły Azure do uruchomienia to:
- [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 jest narzędziem bezpieczeństwa Open Source do przeprowadzania ocen najlepszych praktyk bezpieczeństwa, audytów, incident response, continuous monitoring, hardening i forensics readiness dla AWS, Azure, Google Cloud oraz Kubernetes.
Prowler to narzędzie bezpieczeństwa open source służące do przeprowadzania ocen zgodności z najlepszymi praktykami bezpieczeństwa, audytów, reagowania na incydenty, ciągłego monitoringu, hardeningu oraz przygotowania do forensics w środowiskach AWS, Azure, Google Cloud i Kubernetes.
Umożliwia uruchomienie setek testów przeciwko środowisku Azure w celu wykrycia nieprawidłowych konfiguracji związanych z bezpieczeństwem oraz zebrania wyników w formacie json (i innych formatach tekstowych) lub przeglądania ich w sieci.
Umożliwia uruchomienie setek testów przeciwko środowisku Azure w celu wykrycia nieprawidłowych konfiguracji bezpieczeństwa oraz zebrania wyników w formacie json (i innych formatach tekstowych) albo przeglądania ich przez interfejs webowy.
```bash
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
@@ -203,7 +367,7 @@ docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>
```
### [Monkey365](https://github.com/silverhack/monkey365)
Pozwala automatycznie przeprowadzać przeglądy konfiguracji zabezpieczeń subskrypcji Azure i Microsoft Entra ID.
Pozwala na automatyczne przeprowadzanie przeglądów konfiguracji bezpieczeństwa subskrypcji Azure i Microsoft Entra ID.
Raporty HTML są przechowywane w katalogu `./monkey-reports` w folderze repozytorium github.
```bash
@@ -226,7 +390,7 @@ Invoke-Monkey365 -TenantId <tenant-id> -ClientId <client-id> -ClientSecret $Secu
```
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
Scout Suite zbiera dane konfiguracyjne do ręcznej inspekcji i wyróżnia obszary ryzyka. To narzędzie do audytu bezpieczeństwa wielochmurowego, które umożliwia ocenę stanu bezpieczeństwa środowisk chmurowych.
Scout Suite zbiera dane konfiguracyjne do ręcznej inspekcji i wyróżnia obszary ryzyka. To narzędzie do audytu bezpieczeństwa dla środowisk multi-cloud, umożliwiające ocenę stanu bezpieczeństwa tych środowisk.
```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)
Jest to skrypt PowerShell, który pomaga **wizualizować wszystkie zasoby i uprawnienia wewnątrz Management Group i Entra ID** dzierżawy oraz znaleźć nieprawidłowe konfiguracje bezpieczeństwa.
To skrypt powershell, który pomaga Ci **zwizualizować wszystkie zasoby i uprawnienia w ramach Management Group i tenantu Entra ID** oraz wykryć nieprawidłowe konfiguracje bezpieczeństwa.
Działa przy użyciu modułu Az PowerShell, więc każde uwierzytelnianie obsługiwane przez ten moduł jest obsługiwane przez narzędzie.
Działa przy użyciu Az PowerShell module, więc każde uwierzytelnianie obsługiwane przez to narzędzie jest obsługiwane.
```bash
import-module Az
.\AzGovVizParallel.ps1 -ManagementGroupId <management-group-id> [-SubscriptionIdWhitelist <subscription-id>]
@@ -253,7 +417,7 @@ import-module Az
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
Enumeracja ROADRecon dostarcza informacji o konfiguracji Entra ID, takich jak użytkownicy, grupy, role, zasady dostępu warunkowego...
Enumeration narzędzia ROADRecon oferuje informacje o konfiguracji Entra ID, takie jak użytkownicy, grupy, role, polityki warunkowego dostępu...
```bash
cd ROADTools
pipenv shell
@@ -266,19 +430,19 @@ roadrecon gui
```
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
AzureHound jest kolektorem BloodHound dla Microsoft Entra ID i Azure. To pojedynczy statyczny binarny plik Go dla Windows/Linux/macOS, który komunikuje się bezpośrednio z:
- Microsoft Graph (Entra ID directory, M365) oraz
- Azure Resource Manager (ARM) control plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.)
AzureHound jest kolektorem BloodHound dla Microsoft Entra ID i Azure. Jest to pojedynczy statyczny plik binarny w Go dla Windows/Linux/macOS, który łączy się bezpośrednio z:
- Microsoft Graph (katalog Entra ID, M365) oraz
- Azure Resource Manager (ARM) control plane (subskrypcje, grupy zasobów, compute, storage, Key Vault, App Services, AKS, itd.)
Key traits
- Działa z dowolnego miejsca w publicznym internecie przeciwko tenant APIs (nie wymaga dostępu do sieci wewnętrznej)
- Generuje JSON do załadunku przez BloodHound CE w celu wizualizacji ścieżek ataku pomiędzy tożsamościami i zasobami w chmurze
Główne cechy
- Działa z dowolnego miejsca w publicznym internecie wobec tenant API (nie wymaga dostępu do sieci wewnętrznej)
- Generuje JSON do importu przez BloodHound CE, umożliwiając wizualizację ścieżek ataku między tożsamościami a zasobami w chmurze
- Domyślny User-Agent zaobserwowany: azurehound/v2.x.x
Authentication options
Opcje uwierzytelniania
- Nazwa użytkownika + hasło: -u <upn> -p <password>
- Token odświeżający: --refresh-token <rt>
- JSON Web Token (token dostępu): --jwt <jwt>
- Refresh token: --refresh-token <rt>
- JSON Web Token (access token): --jwt <jwt>
- Service principal secret: -a <appId> -s <secret>
- Service principal certificate: -a <appId> --cert <cert.pem> --key <key.pem> [--keypass <pass>]
@@ -317,37 +481,37 @@ azurehound list storage-containers -t "<tenant-id>" -o containers.json
azurehound list web-apps -t "<tenant-id>" -o webapps.json
azurehound list function-apps -t "<tenant-id>" -o funcapps.json
```
Co jest odpytywane
- Punkty końcowe Graph (przykłady):
Co jest zapytywane
- Graph endpoints (przykłady):
- /v1.0/organization, /v1.0/users, /v1.0/groups, /v1.0/roleManagement/directory/roleDefinitions, directoryRoles, owners/members
- Punkty końcowe ARM (przykłady):
- ARM endpoints (przykłady):
- management.azure.com/subscriptions/.../providers/Microsoft.Storage/storageAccounts
- .../Microsoft.KeyVault/vaults, .../Microsoft.Compute/virtualMachines, .../Microsoft.Web/sites, .../Microsoft.ContainerService/managedClusters
Zachowanie preflight i punkty końcowe
- Każde wywołanie azurehound list <object> zwykle wykonuje te testowe wywołania przed enumeracją:
1) Identity platform: login.microsoftonline.com
Preflight behavior and endpoints
- Każda komenda azurehound list <object> zazwyczaj wykonuje te wywołania testowe przed enumeracją:
1) Platforma tożsamości: login.microsoftonline.com
2) Graph: GET https://graph.microsoft.com/v1.0/organization
3) ARM: GET https://management.azure.com/subscriptions?api-version=...
- Bazowe URL-e środowisk Cloud różnią się dla Government/China/Germany. Zobacz constants/environments.go w repo.
- Podstawowe URL-e środowiska cloud różnią się dla Government/China/Germany. Zobacz constants/environments.go w repo.
Obiekty intensywnie używające ARM (mniej widoczne w Activity/Resource logs)
- Poniższa lista targetów w przeważającej mierze używa odczytów z ARM control plane: 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.
- Te operacje GET/list zwykle nie są zapisywane w Activity Logs; odczyty data-plane (np. *.blob.core.windows.net, *.vault.azure.net) są objęte przez Diagnostic Settings na poziomie zasobu.
ARM-heavy objects (less visible in Activity/Resource logs)
- The following list targets predominantly use 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.
- These GET/list operations are typically not written to Activity Logs; data-plane reads (e.g., *.blob.core.windows.net, *.vault.azure.net) are covered by Diagnostic Settings at the resource level.
Uwagi OPSEC i dotyczące logowania
- Microsoft Graph Activity Logs nie są domyślnie włączone; włącz je i eksportuj do SIEM, aby uzyskać widoczność wywołań Graph. Spodziewaj się preflightowego GET /v1.0/organization z UA azurehound/v2.x.x.
- Logi non-interactive sign-in Entra ID rejestrują identity platform auth (login.microsoftonline.com) używane przez AzureHound.
- Operacje odczytu/listingu ARM control-plane nie są zapisywane w Activity Logs; wiele operacji azurehound list przeciw zasobom nie pojawi się tam. Tylko data-plane logging (poprzez Diagnostic Settings) uchwyci odczyty do punktów końcowych usług.
- Defender XDR GraphApiAuditEvents (preview) może ujawniać wywołania Graph i identyfikatory tokenów, ale może brakować UserAgent i mieć ograniczony okres przechowywania.
OPSEC and logging notes
- Microsoft Graph Activity Logs are not enabled by default; enable and export to SIEM to gain visibility of Graph calls. Expect the Graph preflight GET /v1.0/organization with UA azurehound/v2.x.x.
- Entra ID non-interactive sign-in logs record the identity platform auth (login.microsoftonline.com) used by AzureHound.
- ARM control-plane read/list operations are not recorded in Activity Logs; many azurehound list operations against resources wont appear there. Only data-plane logging (via Diagnostic Settings) will capture reads to service endpoints.
- Defender XDR GraphApiAuditEvents (preview) can expose Graph calls and token identifiers but may lack UserAgent and have limited retention.
Wskazówka: Podczas enumeracji ścieżek przywilejów zrzucaj użytkowników, grupy, role i przypisania ról, następnie zaimportuj do BloodHound i użyj prebuilt cypher queries, aby wyeksponować Global Administrator/Privileged Role Administrator oraz przechodzącą eskalację przez nested groups i przypisania RBAC.
Tip: When enumerating for privilege paths, dump users, groups, roles, and role assignments, then ingest in BloodHound and use prebuilt cypher queries to surface Global Administrator/Privileged Role Administrator and transitive escalation via nested groups and RBAC assignments.
Uruchom BloodHound web za pomocą `curl -L https://ghst.ly/getbhce | docker compose -f - up` i zaimportuj plik `output.json`. Następnie, na karcie EXPLORE, w sekcji CYPHER zobaczysz ikonę folderu zawierającą pre-built queries.
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.
### [**MicroBurst**](https://github.com/NetSPI/MicroBurst)
MicroBurst zawiera funkcje i skrypty wspierające Azure Services discovery, audyt słabych konfiguracji oraz działania post exploitation, takie jak credential dumping. Jest przeznaczony do użycia podczas penetration tests, w których wykorzystywany jest Azure.
MicroBurst zawiera funkcje i skrypty wspierające Azure Services discovery, audyt słabej konfiguracji oraz post exploitation działania, takie jak credential dumping. Jest przeznaczony do użycia podczas penetration tests, w których ywany jest 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 został stworzony z potrzeby posiadania frameworku, który potrafi zarówno przeprowadzać rozpoznanie, jak i eksploatację Azure, EntraID oraz powiązanych zasobów.
PowerZure powstał z potrzeby frameworka, który potrafi zarówno wykonywać reconnaissance, jak i exploitation Azure, EntraID oraz powiązanych z nimi zasobów.
Korzysta z modułu **Az PowerShell**, więc każde uwierzytelnienie obsługiwane przez ten moduł jest również obsługiwane przez PowerZure.
Używa modułu **Az PowerShell**, więc każde uwierzytelnienie obsługiwane przez ten moduł jest obsługiwane przez narzędzie.
```bash
# Login
Import-Module Az
@@ -388,7 +552,7 @@ Invoke-AzureRunCommand -Command <command> -VMName <vmname>
```
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
GraphRunner to zestaw narzędzi post-exploitation do interakcji z Microsoft Graph API. Udostępnia różne narzędzia do przeprowadzania reconnaissance, persistence i pillaging danych z konta Microsoft Entra ID (Azure AD).
GraphRunner jest zestawem narzędzi post-exploitation umożliwiającym interakcję z Microsoft Graph API. Zapewnia różne narzędzia do przeprowadzania reconnaissance, persistence oraz pozyskiwania danych z konta 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,11 +596,9 @@ Invoke-GraphRunner -Tokens $tokens
```
### [Stormspotter](https://github.com/Azure/Stormspotter)
Stormspotter tworzy „attack graph” zasobów w subskrypcji Azure.
Stormspotter tworzy „attack graph” zasobów w subskrypcji Azure. Umożliwia red teams i pentesters wizualizację attack surface oraz pivot opportunities w obrębie tenant i znacznie przyspiesza pracę obrońców, pozwalając im szybko się zorientować i priorytetyzować zadania związane z incident response.
Umożliwia red teams i pentesters wizualizację attack surface oraz możliwości pivot w obrębie tenant, a także znacząco wzmacnia twoich defenders, pozwalając im szybko się zorientować i priorytetyzować pracę związaną z incident response.
**Niestety wygląda na porzucony.**
**Niestety wygląda na nieutrzymywane**.
```bash
# Start Backend
cd stormspotter\backend\
@@ -454,11 +616,11 @@ 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)
```
## Źródła
- [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)
- [AzureHound Community Edition Flags](https://bloodhound.specterops.io/collect-data/ce-collection/azurehound-flags)
## Referencje
- [Odkrywanie chmury za pomocą AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/)
- [Repozytorium AzureHound](https://github.com/SpecterOps/AzureHound)
- [Repozytorium BloodHound](https://github.com/SpecterOps/BloodHound)
- [Flagi AzureHound Community Edition](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)