Azure Pentesting

Reading time: 10 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Basic Information

Jifunze misingi ya Azure na Entra ID katika ukurasa ufuatao:

Az - Basic Information

Azure Pentester/Red Team Methodology

Ili kukagua mazingira ya AZURE ni muhimu sana kujua: ni huduma zipi zinatumika, nini kinachoweza kuonyeshwa, nani ana ufikiaji wa nini, na jinsi huduma za ndani za Azure na huduma za nje zinavyounganishwa.

Kutoka kwa mtazamo wa Red Team, hatua ya kwanza ya kuathiri mazingira ya Azure ni kufanikiwa kupata mwanzo.

External enum & Initial Access

Hatua ya kwanza ni bila shaka kuorodhesha taarifa kuhusu mpangilio unao shambulia na kujaribu kupata mwanzo.

Kulingana na jina la kikoa, inawezekana kujua kama kampuni inatumia Azure, kupata tenant ID, kupata viwango vingine halali katika mpangilio huo (ikiwa vipo) na kupata taarifa muhimu kama SSO imewezeshwa, mipangilio ya barua, barua pepe za watumiaji halali...

Angalia ukurasa ufuatao kujifunza jinsi ya kufanya external enumeration:

Az - Unauthenticated Enum & Initial Entry

Kwa taarifa hii, njia za kawaida za kujaribu kupata mwanzo ni:

  • OSINT: Angalia kwa leaks katika Github au jukwaa lolote la chanzo wazi ambalo linaweza kuwa na credentials au taarifa za kuvutia.
  • Password reuse, leaks au password spraying
  • Nunua credentials za mfanyakazi
  • Common Phishing (credentials au Oauth App)
  • Device Code Authentication Phishing
  • 3rd parties breached
  • Uthibitisho wa udhaifu katika Maombi ya Azure-Hosted
  • Server Side Request Forgery yenye ufikiaji wa metadata endpoint
  • Subdomain takeovers kama ilivyo katika https://godiego.co/posts/STO-Azure/
  • Mikosefu mingine ya huduma za azure
  • Ikiwa kompyuta ya mende ya developer imeathiriwa (WinPEAS na LinPEAS zinaweza kupata taarifa hii):
  • Ndani ya <HOME>/.Azure
  • azureProfile.json ina taarifa kuhusu watumiaji walioingia kutoka zamani
  • clouds.config contains taarifa kuhusu usajili
  • service_principal_entries.json ina credentials za maombi (tenant id, clients na siri). Tu katika Linux & macOS
  • msal_token_cache.json ina tokens za ufikiaji na tokens za kurefresh. Tu katika Linux & macOS
  • service_principal_entries.bin na msal_token_cache.bin zinatumika katika Windows na zimefungwa kwa DPAPI
  • msal_http_cache.bin ni cache ya ombi la HTTP
  • Load it: with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)
  • AzureRmContext.json ina taarifa kuhusu kuingia kwa awali kutumia Az PowerShell (lakini hakuna credentials)
  • Ndani ya C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\* kuna faili kadhaa za .bin zenye access tokens, ID tokens na taarifa za akaunti zilizofungwa kwa DPAPI ya watumiaji.
  • Inawezekana kupata access tokens zaidi katika faili za .tbres ndani ya C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\ ambazo zina base64 iliyofungwa kwa DPAPI yenye access tokens.
  • Katika Linux na macOS unaweza kupata access tokens, refresh tokens na id tokens kutoka Az PowerShell (ikiwa imetumika) ukikimbia pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
  • Katika Windows hii inazalisha tu id tokens.
  • Inawezekana kuona kama Az PowerShell ilitumika katika Linux na macOS kwa kuangalia kama $HOME/.local/share/.IdentityService/ ipo (ingawa faili zilizomo ni tupu na hazina matumizi)

Pata mikosefu mingine ya Huduma za Azure ambayo inaweza kupelekea mwanzo katika ukurasa ufuatao:

Az - Unauthenticated Enum & Initial Entry

note

Kumbuka kwamba kawaida sehemu ya kelele katika orodha ni kuingia, si orodha yenyewe.

Azure & Entra ID tooling

Zana zifuatazo zitakuwa muhimu sana kuorodhesha wapangilio wa Entra ID na mazingira ya Azure polepole (ili kuepuka kugundulika) au kiotomatiki (ili kuokoa muda):

Az - Enumeration Tools

Bypass Access Policies

Katika kesi ambapo una credentials halali lakini huwezi kuingia, hizi ni baadhi ya ulinzi wa kawaida ambao unaweza kuwepo:

  • IP whitelisting -- Unahitaji kuathiri IP halali
  • Geo restrictions -- Pata mahali ambapo mtumiaji anaishi au ofisi za kampuni na pata IP kutoka jiji hilo hilo (au nchi angalau)
  • Browser -- Huenda ni kivinjari tu kutoka OS fulani (Windows, Linux, Mac, Android, iOS) kinachoruhusiwa. Jua ni OS ipi ambayo mwathirika/kampuni inatumia.
  • Unaweza pia kujaribu kuathiri credentials za Service Principal kwani kawaida huwa na mipaka kidogo na kuingia kwake hakuchunguzwi sana

Baada ya kupita, unaweza kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.

Angalia:

Az - Conditional Access Policies & MFA Bypass

Whoami

caution

Jifunze jinsi ya kufunga az cli, AzureAD na Az PowerShell katika sehemu ya Az - Entra ID.

Moja ya mambo ya kwanza unahitaji kujua ni wewe ni nani (katika mazingira gani uko):

bash
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

Kwa kawaida, mtumiaji yeyote anapaswa kuwa na idhini za kutosha kuorodhesha mambo kama watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia default AzureAD permissions).
Unaweza kupata hapa mwongozo:

Az - Entra ID (AzureAD) & Azure IAM

Angalia Zana za Post-Exploitation ili kupata zana za kupandisha hadhi katika Entra ID kama AzureHound:

Automated Post Exploitation Tools

Azure Enumeration

Mara tu unavyojua wewe ni nani, unaweza kuanza kuorodhesha huduma za Azure unazofikia.

Unapaswa kuanza kugundua idhini ulizonazo juu ya rasilimali. Kwa hili:

  1. Pata rasilimali unayo ufikia:

tip

Hii haitahitaji idhini maalum yoyote.

Amri ya Az PowerShell Get-AzResource inakuwezesha kujua rasilimali ambazo mtumiaji wako wa sasa anaonekana nazo.

Zaidi ya hayo, unaweza kupata taarifa hiyo hiyo katika konsoli ya wavuti kwa kutembelea https://portal.azure.com/#view/HubsExtension/BrowseAll au kutafuta "Rasilimali zote" au kutekeleza:

bash
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
  1. Pata ruhusa ulizonazo juu ya rasilimali unazoweza kuona:

tip

Hii haitahitaji ruhusa maalum yoyote.

Kwa kuzungumza na API https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01 unaweza kupata ruhusa ulizonazo juu ya rasilimali iliyoainishwa katika resource_id.

Hivyo, ukikagua kila moja ya rasilimali ulizonazo, unaweza kupata ruhusa ulizonazo juu yao.

warning

Unaweza kujiandaa kwa hii kwa kutumia chombo Find_My_Az_Management_Permissions.

Orodhesha ruhusa kwa **`Microsoft.Authorization/roleAssignments/read`**

tip

Kumbuka kwamba unahitaji ruhusa Microsoft.Authorization/roleAssignments/read ili kutekeleza hatua hii.

  • Kwa ruhusa za kutosha, jukumu Get-AzRoleAssignment linaweza kutumika ili kuorodhesha majukumu yote katika usajili au ruhusa juu ya rasilimali maalum kwa kuonyesha kama ifuatavyo:
bash
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4

Inawezekana pia kupata taarifa hii ukiendesha:

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

kama katika:

bash
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"
  • Chaguo jingine ni kupata majukumu yaliyoambatanishwa nawe katika azure. Hii pia inahitaji ruhusa Microsoft.Authorization/roleAssignments/read:
bash
az role assignment list --assignee "<email>" --all --output table

Au kukimbia yafuatayo (Ikiwa matokeo ni tupu inaweza kuwa kwa sababu huna ruhusa ya kuyapata):

bash
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>'
  • Pata ruhusa za kina za majukumu yaliyoambatanishwa na wewe:

Kisha, ili kupata ruhusa za kina unaweza kukimbia (Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions.

Au piga simu kwa API moja kwa moja na

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

Katika sehemu ifuatayo unaweza kupata habari kuhusu huduma za kawaida za Azure na jinsi ya kuzipata:

Az - Services

Kuinua Mamlaka, Baada ya Utekelezaji & Kudumu

Mara tu unavyojua jinsi mazingira ya Azure yalivyojengwa na ni huduma zipi zinatumika, unaweza kuanza kutafuta njia za kuinua mamlaka, kuhamasisha kwa upande, kufanya mashambulizi mengine baada ya utekelezaji na kudumisha uwepo.

Katika sehemu ifuatayo unaweza kupata habari kuhusu jinsi ya kuinua mamlaka katika huduma za kawaida za Azure:

Az - Privilege Escalation

Katika sehemu ifuatayo unaweza kupata habari kuhusu jinsi ya kufanya mashambulizi baada ya utekelezaji katika huduma za kawaida za Azure:

Az - Post Exploitation

Katika sehemu ifuatayo unaweza kupata habari kuhusu jinsi ya kudumisha uwepo katika huduma za kawaida za Azure:

Az - Persistence

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks