diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index 4c80d9831..0b85fd091 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}} -## 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 ` -#### 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 }} +
+Naprawa “CA cert does not include key usage extension” + +### 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 \ +| 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`. + +
+ ### 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: `-Az ` +Polecenia w Azure PowerShell AZ Module mają strukturę: `-Az ` #### 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=" -e "AZURE_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 -ClientId -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 [-SubscriptionIdWhitelist ] @@ -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 -p -- Token odświeżający: --refresh-token -- JSON Web Token (token dostępu): --jwt +- Refresh token: --refresh-token +- JSON Web Token (access token): --jwt - Service principal secret: -a -s - Service principal certificate: -a --cert --key [--keypass ] @@ -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 ``` -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 zwykle wykonuje te testowe wywołania przed enumeracją: -1) Identity platform: login.microsoftonline.com +Preflight behavior and endpoints +- Każda komenda azurehound list 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 won’t 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 uż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 -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)