Azure Pentesting

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Podstawowe informacje

Dowiedz się podstaw o Azure i Entra ID na następującej stronie:

Az - Basic Information

Metodologia Pentestera/Red Team w Azure

Aby audytować środowisko AZURE, bardzo ważne jest, aby wiedzieć: które usługi są używane, co jest eksponowane, kto ma dostęp do czego i jak są połączone wewnętrzne usługi Azure oraz usługi zewnętrzne.

Z perspektywy Red Team, pierwszym krokiem do skompromitowania środowiska Azure jest zdobycie jakiegoś punktu zaczepienia.

Zewnętrzna enumeracja i początkowy dostęp

Pierwszym krokiem jest oczywiście enumeracja informacji o najemcy, którego atakujesz, i próba zdobycia punktu zaczepienia.

Na podstawie nazwy domeny można dowiedzieć się czy firma korzysta z Azure, uzyskać ID najemcy, uzyskać inne ważne domeny w tym samym najemcy (jeśli są) oraz uzyskać istotne informacje, takie jak czy SSO jest włączone, konfiguracje poczty, ważne adresy e-mail użytkowników…

Sprawdź następującą stronę, aby dowiedzieć się, jak przeprowadzić zewnętrzną enumerację:

Az - Unauthenticated Enum & Initial Entry

Z tą informacją najczęstsze sposoby na próbę zdobycia punktu zaczepienia to:

  • OSINT: Sprawdź wycieki na Githubie lub innej platformie open source, które mogą zawierać dane uwierzytelniające lub interesujące informacje.
  • Ponowne użycie hasła, wycieki lub password spraying
  • Kupno danych uwierzytelniających od pracownika
  • Typowe phishingi (dane uwierzytelniające lub aplikacja Oauth)
  • Phishing z użyciem kodu urządzenia
  • Naruszenia ze strony osób trzecich
  • Luki w aplikacjach hostowanych w Azure
  • Server Side Request Forgery z dostępem do punktu końcowego metadanych
  • Przejęcia subdomen jak w https://godiego.co/posts/STO-Azure/
  • Inne błędy konfiguracyjne usług Azure
  • Jeśli laptop dewelopera jest skompromitowany (WinPEAS i LinPEAS mogą znaleźć te informacje):
  • Wewnątrz <HOME>/.Azure
  • azureProfile.json zawiera informacje o zalogowanych użytkownikach z przeszłości
  • clouds.config zawiera informacje o subskrypcjach
  • service_principal_entries.json zawiera dane uwierzytelniające aplikacji (ID najemcy, klienci i sekret). Tylko w Linux i macOS
  • msal_token_cache.json zawiera tokeny dostępu i tokeny odświeżania. Tylko w Linux i macOS
  • service_principal_entries.bin i msal_token_cache.bin są używane w Windows i są szyfrowane za pomocą DPAPI
  • msal_http_cache.bin to pamięć podręczna żądań HTTP
  • Załaduj to: with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
  • AzureRmContext.json zawiera informacje o poprzednich logowaniach przy użyciu Az PowerShell (ale nie zawiera danych uwierzytelniających)
  • Wewnątrz C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\* znajdują się różne pliki .bin z tokenami dostępu, tokenami ID i informacjami o koncie szyfrowanymi za pomocą DPAPI użytkownika.
  • Możliwe jest znalezienie więcej tokenów dostępu w plikach .tbres wewnątrz C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\, które zawierają dane zakodowane w base64 szyfrowane za pomocą DPAPI z tokenami dostępu.
  • W Linux i macOS można uzyskać tokeny dostępu, tokeny odświeżania i tokeny ID z Az PowerShell (jeśli używane) uruchamiając pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
  • W Windows to generuje tylko tokeny ID.
  • Możliwe jest sprawdzenie, czy Az PowerShell był używany w Linux i macOS, sprawdzając, czy istnieje $HOME/.local/share/.IdentityService/ (chociaż zawarte pliki są puste i bezużyteczne)

Znajdź inne błędy konfiguracyjne usług Azure, które mogą prowadzić do punktu zaczepienia na następującej stronie:

Az - Unauthenticated Enum & Initial Entry

Note

Pamiętaj, że zazwyczaj najgłośniejszą częścią enumeracji jest logowanie, a nie sama enumeracja.

Narzędzia Azure i Entra ID

Następujące narzędzia będą bardzo przydatne do powolnej (aby uniknąć wykrycia) lub automatycznej (aby zaoszczędzić czas) enumeracji zarówno najemców Entra ID, jak i środowisk Azure:

Az - Enumeration Tools

Ominięcie polityk dostępu

W przypadkach, gdy masz ważne dane uwierzytelniające, ale nie możesz się zalogować, oto niektóre powszechne zabezpieczenia, które mogą być wprowadzone:

  • Biała lista IP – Musisz skompromitować ważny adres IP
  • Ograniczenia geograficzne – Dowiedz się, gdzie mieszka użytkownik lub gdzie znajdują się biura firmy i uzyskaj adres IP z tego samego miasta (lub przynajmniej kraju)
  • Przeglądarka – Może tylko przeglądarka z określonego systemu operacyjnego (Windows, Linux, Mac, Android, iOS) jest dozwolona. Dowiedz się, z jakiego systemu operacyjnego korzysta ofiara/firmy.
  • Możesz również spróbować skomprimitować dane uwierzytelniające Service Principal, ponieważ zazwyczaj są mniej ograniczone, a ich logowanie jest mniej kontrolowane

Po ominięciu tego, możesz być w stanie wrócić do swojej początkowej konfiguracji i nadal mieć dostęp.

Sprawdź:

Az - Conditional Access Policies & MFA Bypass

Whoami

Caution

Dowiedz się jak zainstalować az cli, AzureAD i Az PowerShell w sekcji Az - Entra ID.

Jedną z pierwszych rzeczy, które musisz wiedzieć, jest kim jesteś (w jakim środowisku jesteś):

az account list
az account tenant list # Current tenant info
az account subscription list # Current subscription info
az ad signed-in-user show # Current signed-in user
az ad signed-in-user list-owned-objects # Get owned objects by current user
az account management-group list #Not allowed by default

Entra ID Enumeration & Privesc

Domyślnie każdy użytkownik powinien mieć wystarczające uprawnienia do enumeracji rzeczy takich jak użytkownicy, grupy, role, zasady usług… (sprawdź domyślne uprawnienia AzureAD).
Możesz znaleźć tutaj przewodnik:

Az - Entra ID (AzureAD) & Azure IAM

Sprawdź Narzędzia do post-eksploatacji, aby znaleźć narzędzia do eskalacji uprawnień w Entra ID, takie jak AzureHound:

Automated Post Exploitation Tools

Azure Enumeration

Gdy już wiesz, kim jesteś, możesz zacząć enumerować usługi Azure, do których masz dostęp.

Powinieneś zacząć od ustalenia uprawnień, które posiadasz do zasobów. W tym celu:

  1. Znajdź zasób, do którego masz dostęp:

Tip

To nie wymaga żadnych specjalnych uprawnień.

Polecenie Az PowerShell Get-AzResource pozwala ci poznać zasoby, które są widoczne dla twojego aktualnego użytkownika.

Ponadto, możesz uzyskać te same informacje w konsoli internetowej, przechodząc do https://portal.azure.com/#view/HubsExtension/BrowseAll lub wyszukując “Wszystkie zasoby” lub wykonując:

az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Znajdź uprawnienia, które masz do zasobów, które możesz zobaczyć:

Tip

To nie wymaga żadnych specjalnych uprawnień.

Rozmawiając z API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01, możesz uzyskać uprawnienia, które masz do określonego zasobu w resource_id.

Dlatego, sprawdzając każdy z zasobów, do których masz dostęp, możesz uzyskać uprawnienia, które masz do nich.

Warning

Możesz zautomatyzować tę enumerację, używając narzędzia Find_My_Az_Management_Permissions.

Enumeruj uprawnienia z **`Microsoft.Authorization/roleAssignments/read`**

Tip

Zauważ, że potrzebujesz uprawnienia Microsoft.Authorization/roleAssignments/read, aby wykonać tę akcję.

  • Przy wystarczających uprawnieniach, rola Get-AzRoleAssignment może być użyta do enumeracji wszystkich ról w subskrypcji lub uprawnienia do konkretnego zasobu, wskazując go jak w:
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Możliwe jest również uzyskanie tych informacji, uruchamiając:

az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"

jak w:

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
  • Inną opcją jest uzyskanie ról przypisanych do Ciebie w azure. To również wymaga uprawnienia Microsoft.Authorization/roleAssignments/read:
az role assignment list --assignee "<email>" --all --output table

Lub uruchamiając następujące (jeśli wyniki są puste, może to być spowodowane brakiem uprawnień do ich uzyskania):

az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
  • Znajdź szczegółowe uprawnienia ról przypisanych do Ciebie:

Aby uzyskać szczegółowe uprawnienia, możesz uruchomić (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.

Lub bezpośrednio wywołać API z

az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"

W następnej sekcji znajdziesz informacje o najczęściej używanych usługach Azure i jak je enumerować:

Az - Services

Eskalacja uprawnień, post-exploitation i utrzymywanie persistent

Gdy już wiesz, jak jest zbudowane środowisko Azure i jakie usługi są używane, możesz zacząć szukać sposobów na eskalację uprawnień, lateralne poruszanie się, przeprowadzanie innych ataków post-exploitation i utrzymywanie persistent.

W następnej sekcji znajdziesz informacje o tym, jak eskalować uprawnienia w najczęściej używanych usługach Azure:

Az - Privilege Escalation

W następnej znajdziesz informacje o tym, jak przeprowadzać ataki post-exploitation w najczęściej używanych usługach Azure:

Az - Post Exploitation

W następnej znajdziesz informacje o tym, jak utrzymywać persistent w najczęściej używanych usługach Azure:

Az - Persistence

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks