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
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Podstawowe informacje
Dowiedz się podstaw o Azure i Entra ID na następującej stronie:
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.jsonzawiera informacje o zalogowanych użytkownikach z przeszłościclouds.configzawiera informacje o subskrypcjachservice_principal_entries.jsonzawiera dane uwierzytelniające aplikacji (ID najemcy, klienci i sekret). Tylko w Linux i macOSmsal_token_cache.jsonzawiera tokeny dostępu i tokeny odświeżania. Tylko w Linux i macOSservice_principal_entries.bini msal_token_cache.bin są używane w Windows i są szyfrowane za pomocą DPAPImsal_http_cache.binto pamięć podręczna żądań HTTP- Załaduj to:
with open("msal_http_cache.bin", 'rb') as f: pickle.load(f) AzureRmContext.jsonzawiera 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.binz 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
.tbreswewnątrzC:\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:
Ominięcie polityk dostępu
.png)
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:
- 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"
- 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-AzRoleAssignmentmoż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ć:
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:
W następnej znajdziesz informacje o tym, jak przeprowadzać ataki post-exploitation w najczęściej używanych usługach Azure:
W następnej znajdziesz informacje o tym, jak utrzymywać persistent w najczęściej używanych usługach Azure:
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
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

