Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-01-25 14:39:00 +00:00
parent 1326dbb2de
commit ec16fd8f09
5 changed files with 335 additions and 242 deletions

View File

@@ -4,73 +4,79 @@
## Basic Information
Jifunze misingi ya Azure na Entra ID katika ukurasa ufuatao:
{{#ref}}
az-basic-information/
{{#endref}}
## 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.
Ili kukagua mazingira ya AZURE ni muhimu sana kujua: ni **huduma zipi zinatumika**, nini kinacho **onyeshwa**, 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 **akikazi** za Azure AD. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:
Kutoka kwa mtazamo wa Red Team, **hatua ya kwanza ya kuathiri mazingira ya Azure** ni kufanikiwa kupata **mwanzo**.
- **Mvujo** katika github (au sawa) - OSINT
- **Uhandisi** wa Kijamii
- **Tumia tena** nywila (mvujo wa nywila)
- Uthibitisho katika Maombi ya Azure-Hosted
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) yenye ufikiaji wa metadata endpoint
- **Usomaji wa Faili za Mitaa**
- `/home/USERNAME/.azure`
- `C:\Users\USERNAME\.azure`
- Faili **`accessTokens.json`** katika `az cli` kabla ya 2.30 - Jan2022 - ilihifadhi **tokens za ufikiaji kwa maandiko wazi**
- Faili **`azureProfile.json`** ina **habari** kuhusu mtumiaji aliyeingia.
- **`az logout`** inafuta token.
- Matoleo ya zamani ya **`Az PowerShell`** yalihifadhi **tokens za ufikiaji** kwa **maandiko wazi** katika **`TokenCache.dat`**. Pia inahifadhi **ServicePrincipalSecret** kwa **maandiko wazi** katika **`AzureRmContext.json`**. Cmdlet **`Save-AzContext`** inaweza kutumika kuhifadhi **tokens**.\
Tumia `Disconnect-AzAccount` kuondoa hizo.
- Watu wa 3rd **walivunja**
- **Mfanyakazi** wa Ndani
- [**Uvuvi wa Kawaida**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (akikazi au Oauth App)
- [Uvuvi wa Uthibitisho wa Nambari ya Kifaa](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
### External enum & Initial Access
Hata kama huja **athiri mtumiaji yeyote** ndani ya tenant ya Azure unayoishambulia, unaweza **kusanya habari fulani** kutoka kwake:
Hatua ya kwanza ni bila shaka kuhesabu taarifa kuhusu mpangilio unayoshambulia na kujaribu kupata mwanzo.
Kulingana na jina la kikoa, inawezekana kujua **kama kampuni inatumia Azure**, kupata **tenant ID**, kupata **kikoa halali** katika mpangilio huo (ikiwa zaidi) na kupata **taarifa muhimu** kama SSO imewezeshwa, mipangilio ya barua, barua pepe halali za watumiaji...
Angalia ukurasa ufuatao kujifunza jinsi ya kufanya **external enumeration**:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Baada ya kufanikiwa kupata akiba, unahitaji kujua **ni nani anayehusiana na akiba hizo**, na **nini wanapata ufikiaji**, hivyo unahitaji kufanya uainishaji wa msingi:
## Basic Enumeration
Kwa taarifa hii njia za kawaida za kujaribu kupata mwanzo ni:
- **OSINT**: Angalia **leaks** katika Github au jukwaa lolote la chanzo wazi ambalo linaweza kuwa na **credentials** au taarifa za kuvutia.
- **Password** reuse, leaks au [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- Nunua credentials kutoka kwa mfanyakazi
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credentials au Oauth App)
- [Device Code Authentication Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- 3rd parties **breached**
- Uthibitisho wa udhaifu katika Maombi ya Azure-Hosted
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) yenye ufikiaji wa metadata endpoint
- **Subdomain takeovers** kama ilivyo katika [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- Ikiwa kompyuta ya mende inashambuliwa ([WinPEAS na LinPEAS](https://github.com/peass-ng/PEASS-ng) 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 refresher. 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 kwa 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 zaidi **access tokens** 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)
> [!NOTE]
> Kumbuka kwamba sehemu ya **sauti kubwa** ya uainishaji ni **kuingia**, si uainishaji wenyewe.
> Kumbuka kwamba kawaida sehemu ya **kelele** katika hesabu ni **kuingia**, si hesabu yenyewe.
### SSRF
### Azure & Entra ID tooling
Ikiwa umepata SSRF katika mashine ndani ya Azure angalia ukurasa huu kwa mbinu:
Zana zifuatazo zitakuwa muhimu sana kuhesabu wapangilio wa Entra ID na mazingira ya Azure polepole (ili kuepuka kugunduliwa) au kiotomatiki (ili kuokoa muda):
{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
az-enumeration-tools.md
{{#endref}}
### Bypass Login Conditions
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
Katika hali ambapo una akiba halali lakini huwezi kuingia, hizi ni baadhi ya ulinzi wa kawaida ambao unaweza kuwepo:
Katika hali 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 mtumiaji anaishi au ofisi za kampuni na pata IP kutoka jiji moja (au nchi angalau)
- **Browser** -- Labda ni kivinjari tu kutoka OS fulani (Windows, Linux, Mac, Android, iOS) kinachoruhusiwa. Jua ni OS ipi mwathirika/kampuni inatumia.
- Unaweza pia kujaribu **kuathiri akiba za Service Principal** kwani mara nyingi zina mipaka kidogo na kuingia kwake hakuchunguzwi sana
- **Browser** -- Huenda ni kivinjari tu kutoka OS fulani (Windows, Linux, Mac, Android, iOS) kinachoruhusiwa. Jua ni OS ipi mhasiriwa/kampuni inatumia.
- Unaweza pia kujaribu **kuathiri credentials za Service Principal** kwani kawaida hazina mipaka na kuingia kwake hakuchunguzwi sana
Baada ya kupita, unaweza kuwa na uwezo wa kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.
### Subdomain Takeover
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
Baada ya kuweza kuzikwepa, unaweza kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.
### Whoami
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get the information about the current context (Account, Tenant, Subscription etc.)
Get-AzContext
@@ -110,43 +107,79 @@ Get-AzContext -ListAvailable
Get-AzSubscription
#Get Resource group
Get-AzResourceGroup
# Enumerate all resources visible to the current user
Get-AzResource
# Enumerate all Azure RBAC role assignments
Get-AzRoleAssignment # For all users
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
```
{{#endtab }}
{{#tab name="Mg" }}
```bash
#Get the current session
Get-MgContext
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
#Get the current session state
Get-AzureADCurrentSessionInfo
#Get details of the current tenant
Get-AzureADTenantDetail
```
{{#endtab }}
{{#endtabs }}
> [!CAUTION]
> Moja ya amri muhimu zaidi za kuorodhesha Azure ni **`Get-AzResource`** kutoka Az PowerShell kwani inakuruhusu **kujua rasilimali ambazo mtumiaji wako wa sasa anaweza kuona**.
>
> Unaweza kupata taarifa sawa katika **konsoli ya wavuti** kwa kutembelea [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) au kutafuta "All resources"
### Uorodheshaji wa Entra ID
### Uainishaji wa Entra ID & Kuinua Mamlaka
Kwa kawaida, mtumiaji yeyote anapaswa kuwa na **idhini ya kutosha kuorodhesha** mambo kama vile, watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
Kwa kawaida, mtumiaji yeyote anapaswa kuwa na **idhini ya kutosha kuainisha** mambo kama watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia [idhini za AzureAD za kawaida](az-basic-information/index.html#default-user-permissions)).\
Unaweza kupata hapa mwongozo:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
> [!NOTE]
> Sasa kwamba **una taarifa fulani kuhusu akreditivu zako** (na ikiwa wewe ni timu nyekundu matumaini huja **gundulika**). Ni wakati wa kubaini ni huduma zipi zinatumika katika mazingira.\
> Katika sehemu ifuatayo unaweza kuangalia njia kadhaa za **kuorodhesha huduma za kawaida.**
Angalia **Zana za Baada ya Utekelezaji** ili kupata zana za kuinua mamlaka katika Entra ID kama **AzureHound:**
## App Service SCM
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
Konsoli ya Kudu kuingia kwenye 'konteina' ya App Service.
## Webshell
### Uainishaji wa Huduma za Azure
Tumia portal.azure.com na uchague shell, au tumia shell.azure.com, kwa bash au powershell. 'disk' ya shell hii inahifadhiwa kama faili ya picha katika akaunti ya hifadhi.
Mara tu unavyojua wewe ni nani, unaweza kuanza kuainisha **huduma za Azure unazoweza kufikia**.
## Azure DevOps
Amri ya Az PowerShell **`Get-AzResource`** inakuwezesha **kujua rasilimali ambazo mtumiaji wako wa sasa anaonekana nazo**.
Azure DevOps ni tofauti na Azure. Ina hazina, mipangilio (yaml au toleo), bodi, wiki, na zaidi. Makundi ya Vigezo yanatumika kuhifadhi thamani za vigezo na siri.
Zaidi ya hayo, unaweza kupata taarifa hiyo hiyo katika **konsoli ya wavuti** kwa kutembelea [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) au kutafuta "Rasilimali zote" au kutekeleza: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
Zaidi, kwa idhini ya kutosha, jukumu **`Get-AzRoleAssignment`** linaweza kutumika ku **ainisha majukumu yote** katika usajili au idhini juu ya rasilimali maalum kwa kuonyesha kama katika: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**
Katika sehemu ifuatayo unaweza kupata taarifa kuhusu huduma za Azure zinazotumika sana na jinsi ya kuziainisha:
{{#ref}}
az-services/
{{#endref}}
### Kuinua Mamlaka, Baada ya Utekelezaji & Kudumisha Uthibitisho katika Huduma za Azure
Mara tu unavyojua jinsi mazingira ya Azure yalivyojengwa na huduma zipi zinatumika, unaweza kuanza kutafuta njia za **kuinua mamlaka, kuhamasisha kwa upande, kufanya mashambulizi mengine ya baada ya utekelezaji na kudumisha uthibitisho**.
Katika sehemu ifuatayo unaweza kupata taarifa kuhusu jinsi ya kuinua mamlaka katika huduma za Azure zinazotumika sana:
{{#ref}}
az-privilege-escalation/
{{#endref}}
Katika sehemu ifuatayo unaweza kupata taarifa kuhusu jinsi ya kufanya mashambulizi ya baada ya utekelezaji katika huduma za Azure zinazotumika sana:
{{#ref}}
az-post-exploitation/
{{#endref}}
Katika sehemu ifuatayo unaweza kupata taarifa kuhusu jinsi ya kudumisha uthibitisho katika huduma za Azure zinazotumika sana:
{{#ref}}
az-persistence/
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -4,29 +4,29 @@
## Basic Information
Entra ID ni jukwaa la usimamizi wa utambulisho na ufikiaji (IAM) la Microsoft linalotegemea wingu, likihudumia kama mfumo wa msingi wa uthibitishaji naidhinisha huduma kama Microsoft 365 na Azure Resource Manager. Azure AD inatekeleza mfumo wa idhini wa OAuth 2.0 na itifaki ya uthibitishaji ya OpenID Connect (OIDC) ili kusimamia ufikiaji wa rasilimali.
Entra ID ni jukwaa la usimamizi wa utambulisho na ufikiaji (IAM) la Microsoft linalotegemea wingu, likihudumia kama mfumo wa msingi wa uthibitishaji na idhini kwa huduma kama Microsoft 365 na Azure Resource Manager. Azure AD inatekeleza mfumo wa idhini wa OAuth 2.0 na itifaki ya uthibitishaji ya OpenID Connect (OIDC) ili kusimamia ufikiaji wa rasilimali.
### OAuth
**Washiriki Wakuu katika OAuth 2.0:**
1. **Seva ya Rasilimali (RS):** Inalinda rasilimali zinazomilikiwa na mmiliki wa rasilimali.
2. **Mmiliki wa Rasilimali (RO):** Kawaida ni mtumiaji wa mwisho anaye miliki rasilimali zilizolindwa.
2. **Mmiliki wa Rasilimali (RO):** Kawaida ni mtumiaji wa mwisho ambaye anamiliki rasilimali zilizolindwa.
3. **Programu ya Mteja (CA):** Programu inayotafuta ufikiaji wa rasilimali kwa niaba ya mmiliki wa rasilimali.
4. **Seva ya Uidhinishaji (AS):** Inatoa alama za ufikiaji kwa programu za mteja baada ya kuthibitisha na kuidhinisha.
**Mikondo na Idhini:**
- **Mikondo:** Ruhusa za kina zilizofafanuliwa kwenye seva ya rasilimali zinazobainisha viwango vya ufikiaji.
- **Idhini:** Mchakato ambao mmiliki wa rasilimali anatoa ruhusa kwa programu ya mteja kufikia rasilimali zenye mikondo maalum.
- **Mikondo:** Ruhusa za kina zilizofafanuliwa kwenye seva ya rasilimali ambazo zinaelezea viwango vya ufikiaji.
- **Idhini:** Mchakato ambao mmiliki wa rasilimali anatoa ruhusa kwa programu ya mteja kufikia rasilimali kwa mikondo maalum.
**Ushirikiano wa Microsoft 365:**
- Microsoft 365 inatumia Azure AD kwa IAM na inajumuisha programu nyingi za "first-party" za OAuth.
- Microsoft 365 inatumia Azure AD kwa IAM na ina programu nyingi za "first-party" za OAuth.
- Programu hizi zimeunganishwa kwa kina na mara nyingi zina uhusiano wa huduma zinazohusiana.
- Ili kurahisisha uzoefu wa mtumiaji na kudumisha kazi, Microsoft inatoa "idhini iliyodhaniwa" au "idhini ya awali" kwa programu hizi za first-party.
- **Idhini Iliyodhaniwa:** Programu fulani zinapewa **ufikiaji wa mikondo maalum bila idhini ya wazi ya mtumiaji au msimamizi**.
- Mikondo hii iliyodhaniwa kwa kawaida inafichwa kutoka kwa watumiaji na wasimamizi, na kuifanya iwe na mwonekano mdogo katika interfaces za usimamizi wa kawaida.
- **Idhini Iliyodhaniwa:** Programu fulani zinapewa **ufikiaji wa mikondo maalum bila idhini wazi ya mtumiaji au msimamizi**.
- Mikondo hizi zilizodhaniwa kwa kawaida zimefichwa kutoka kwa watumiaji na wasimamizi, na kuifanya kuwa ngumu kuonekana katika interfaces za usimamizi wa kawaida.
**Aina za Programu za Mteja:**
@@ -36,21 +36,21 @@ Entra ID ni jukwaa la usimamizi wa utambulisho na ufikiaji (IAM) la Microsoft li
2. **Wateja wa Umma:**
- Hawana akreditif za kipekee.
- Hawawezi kujithibitisha kwa usalama kwa seva ya uidhinishaji.
- **Athari za Usalama:** Mshambuliaji anaweza kujifanya kuwa programu ya mteja wa umma anapohitaji alama, kwani hakuna mekanismu kwa seva ya uidhinishaji kuthibitisha uhalali wa programu.
- **Athari za Usalama:** Mshambuliaji anaweza kujifanya kuwa programu ya mteja wa umma anapohitaji alama, kwani hakuna mekanizma kwa seva ya uidhinishaji kuthibitisha uhalali wa programu.
## Authentication Tokens
Kuna **aina tatu za alama** zinazotumika katika OIDC:
- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Mteja anawasilisha alama hii kwa seva ya rasilimali ili **kufikia rasilimali**. Inaweza kutumika tu kwa mchanganyiko maalum wa mtumiaji, mteja, na rasilimali na **haiwezi kufutwa** hadi ipite muda - yaani, saa 1 kwa kawaida.
- **ID Tokens**: Mteja anapata alama hii **kutoka kwa seva ya uidhinishaji**. Inajumuisha taarifa za msingi kuhusu mtumiaji. Inafungwa kwa mchanganyiko maalum wa mtumiaji na mteja.
- **Refresh Tokens**: Zinapeanwa kwa mteja pamoja na alama ya ufikiaji. Zinatumika kupata **alama mpya za ufikiaji na ID**. Inafungwa kwa mchanganyiko maalum wa mtumiaji na mteja na inaweza kufutwa. Muda wa kawaida wa kuisha ni **siku 90** kwa alama za refresh zisizofanya kazi na **hakuna muda wa kuisha kwa alama za kazi** (inawezekana kupata alama mpya za refresh kutoka kwa alama ya refresh).
- Alama ya refresh inapaswa kuunganishwa na **`aud`**, kwa mikondo **badhala**, na kwa **tenant** na inapaswa kuwa na uwezo wa kuzalisha alama za ufikiaji kwa ajili ya aud hiyo, mikondo (na hakuna zaidi) na tenant. Hata hivyo, hii si hali kwa **FOCI applications tokens**.
- [**Access Tokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Mteja anawasilisha alama hii kwa seva ya rasilimali ili **kufikia rasilimali**. Inaweza kutumika tu kwa mchanganyiko maalum wa mtumiaji, mteja, na rasilimali na **haiwezi kufutwa** hadi ipite muda - yaani, saa 1 kwa default.
- **ID Tokens**: Mteja anapata **alama hii kutoka kwa seva ya uidhinishaji**. Inajumuisha taarifa za msingi kuhusu mtumiaji. Ime **fungwa kwa mchanganyiko maalum wa mtumiaji na mteja**.
- **Refresh Tokens**: Zinapatikana kwa mteja pamoja na alama ya ufikiaji. Zinatumika kupata **alama mpya za ufikiaji na ID**. Imefungwa kwa mchanganyiko maalum wa mtumiaji na mteja na inaweza kufutwa. Muda wa kawaida wa kuisha ni **siku 90** kwa alama za refresh zisizofanya kazi na **hakuna muda wa kuisha kwa alama za kazi** (inawezekana kupata alama mpya za refresh kutoka kwa alama ya refresh).
- Alama ya refresh inapaswa kuunganishwa na **`aud`**, kwa baadhi ya **mikondo**, na kwa **tenant** na inapaswa kuwa na uwezo wa kuzalisha alama za ufikiaji kwa hiyo aud, mikondo (na si zaidi) na tenant. Hata hivyo, hii si hali kwa **FOCI applications tokens**.
- Alama ya refresh imefichwa na ni Microsoft pekee inayoweza kuifungua.
- Kupata alama mpya ya refresh hakufuti alama ya refresh ya awali.
> [!WARNING]
> Taarifa za **ufikiaji wa masharti** zime **hifadhiwa** ndani ya **JWT**. Hivyo, ikiwa unahitaji **alama kutoka anwani ya IP iliyoidhinishwa**, hiyo **IP** itakuwa **hifadhiwa** katika alama na kisha unaweza kutumia alama hiyo kutoka **IP isiyoidhinishwa kufikia rasilimali**.
> Taarifa za **ufikiaji wa masharti** zime **hifadhiwa** ndani ya **JWT**. Hivyo, ikiwa unahitaji **alama kutoka anwani ya IP iliyoruhusiwa**, hiyo **IP** itakuwa **hifadhiwa** katika alama na kisha unaweza kutumia alama hiyo kutoka **IP isiyoruhusiwa kufikia rasilimali**.
### Access Tokens "aud"
@@ -63,36 +63,36 @@ Amri `az account get-access-token --resource-type [...]` inasaidia aina zifuataz
<details>
<summary>mfano wa aud</summary>
<summary>aud examples</summary>
- **aad-graph (Azure Active Directory Graph API)**: Inatumika kufikia API ya zamani ya Azure AD Graph (iliyotengwa), ambayo inaruhusu programu kusoma na kuandika data ya directory katika Azure Active Directory (Azure AD).
- **aad-graph (Azure Active Directory Graph API)**: Inatumika kufikia Azure AD Graph API ya zamani (iliyotengwa), ambayo inaruhusu programu kusoma na kuandika data ya directory katika Azure Active Directory (Azure AD).
- `https://graph.windows.net/`
* **arm (Azure Resource Manager)**: Inatumika kusimamia rasilimali za Azure kupitia API ya Azure Resource Manager. Hii inajumuisha operesheni kama kuunda, kuboresha, na kufuta rasilimali kama vile mashine za virtual, akaunti za hifadhi, na zaidi.
* **arm (Azure Resource Manager)**: Inatumika kusimamia rasilimali za Azure kupitia API ya Azure Resource Manager. Hii inajumuisha operesheni kama kuunda, kuboresha, na kufuta rasilimali kama vile mashine za virtual, akaunti za uhifadhi, na zaidi.
- `https://management.core.windows.net/ or https://management.azure.com/`
- **batch (Azure Batch Services)**: Inatumika kufikia Azure Batch, huduma inayowezesha programu za kompyuta za kiwango kikubwa na za utendaji wa juu kwa ufanisi katika wingu.
- `https://batch.core.windows.net/`
* **data-lake (Azure Data Lake Storage)**: Inatumika kuingiliana na Azure Data Lake Storage Gen1, ambayo ni huduma ya hifadhi ya data na uchambuzi inayoweza kupanuka.
* **data-lake (Azure Data Lake Storage)**: Inatumika kuingiliana na Azure Data Lake Storage Gen1, ambayo ni huduma ya uhifadhi wa data na uchambuzi inayoweza kupanuka.
- `https://datalake.azure.net/`
- **media (Azure Media Services)**: Inatumika kufikia Azure Media Services, ambazo zinatoa huduma za usindikaji na usambazaji wa media zinazotegemea wingu kwa ajili ya maudhui ya video na sauti.
- **media (Azure Media Services)**: Inatumika kufikia Azure Media Services, ambazo zinatoa huduma za usindikaji na usambazaji wa media zinazotegemea wingu kwa maudhui ya video na sauti.
- `https://rest.media.azure.net`
* **ms-graph (Microsoft Graph API)**: Inatumika kufikia Microsoft Graph API, kiunganishi kilichounganishwa kwa data za huduma za Microsoft 365. Inakuruhusu kufikia data na maarifa kutoka kwa huduma kama Azure AD, Office 365, Enterprise Mobility, na huduma za Usalama.
* **ms-graph (Microsoft Graph API)**: Inatumika kufikia Microsoft Graph API, kiunganishi kilichounganishwa kwa data za huduma za Microsoft 365. Inaruhusu ufikiaji wa data na maarifa kutoka kwa huduma kama Azure AD, Office 365, Enterprise Mobility, na huduma za Usalama.
- `https://graph.microsoft.com`
- **oss-rdbms (Azure Open Source Relational Databases)**: Inatumika kufikia huduma za Azure Database kwa injini za hifadhidata za uhusiano za chanzo wazi kama MySQL, PostgreSQL, na MariaDB.
- **oss-rdbms (Azure Open Source Relational Databases)**: Inatumika kufikia huduma za Azure Database kwa injini za hifadhidata za wazi kama MySQL, PostgreSQL, na MariaDB.
- `https://ossrdbms-aad.database.windows.net`
</details>
### Access Tokens Scopes "scp"
Mikondo ya alama ya ufikiaji inahifadhiwa ndani ya ufunguo wa scp ndani ya JWT ya alama ya ufikiaji. Mikondo hii inafafanua ni nini alama ya ufikiaji ina ufikiaji.
Mikondo ya alama ya ufikiaji inahifadhiwa ndani ya ufunguo wa scp ndani ya JWT ya alama ya ufikiaji. Mikondo hii inaelezea ni nini alama ya ufikiaji ina ufikiaji.
Ikiwa JWT inaruhusiwa kuwasiliana na API maalum lakini **haina mikondo** ya kufanya kitendo kilichohitajika, haitakuwa na uwezo wa kufanya kitendo hicho na JWT hiyo.
Ikiwa JWT inaruhusiwa kuwasiliana na API maalum lakini **haina mikondo** ya kufanya kitendo kilichohitajika, haitakuwa na uwezo wa kufanya kitendo hicho kwa JWT hiyo.
### Get refresh & access token example
```python
@@ -144,19 +144,32 @@ scopes=["https://graph.microsoft.com/.default"],
)
pprint(new_azure_cli_bearer_tokens_for_graph_api)
```
### Other access token fields
- **appid**: Kitambulisho cha Programu kinachotumika kutengeneza tokeni
- **appidacr**: Kielelezo cha Muktadha wa Uthibitishaji wa Programu kinaonyesha jinsi mteja alivyothibitishwa, kwa mteja wa umma thamani ni 0, na ikiwa siri ya mteja inatumika thamani ni 1
- **acr**: Kielelezo cha Muktadha wa Uthibitishaji kinadai "0" wakati uthibitishaji wa mtumiaji wa mwisho haukukidhi mahitaji ya ISO/IEC 29115.
- **amr**: Njia ya uthibitishaji inaonyesha jinsi tokeni ilivyothibitishwa. Thamani ya “pwd” inaonyesha kuwa nenosiri lilitumika.
- **groups**: Inaonyesha vikundi ambavyo kiongozi ni mwanachama.
- **iss**: Masuala yanaonyesha huduma ya tokeni ya usalama (STS) ambayo ilitengeneza tokeni. e.g. https://sts.windows.net/fdd066e1-ee37-49bc-b08f-d0e152119b04/ (uuid ni kitambulisho cha mpangilio)
- **oid**: Kitambulisho cha kitu cha kiongozi
- **tid**: Kitambulisho cha mpangilio
- **iat, nbf, exp**: Imetolewa wakati (wakati ilipotolewa), Si kabla (haiwezi kutumika kabla ya wakati huu, kawaida thamani sawa na iat), Wakati wa kuisha.
## FOCI Tokens Privilege Escalation
Kabla ilisemwa kwamba refresh tokens zinapaswa kuunganishwa na **scopes** ambazo zilitengenezwa nazo, kwa **application** na **tenant** ambayo ilitengenezwa. Ikiwa mojawapo ya mipaka hii itavunjwa, inawezekana kupandisha mamlaka kwani itakuwa inawezekana kutengeneza access tokens kwa rasilimali nyingine na tenants ambazo mtumiaji anaweza kufikia na kwa scopes zaidi kuliko ilivyokusudiwa awali.
Kabla ilisemwa kwamba tokeni za kusasisha zinapaswa kuunganishwa na **mipaka** ambayo ilitengenezwa nayo, kwa **programu** na **mpangilio** ambayo ilitengenezwa kwake. Ikiwa mojawapo ya mipaka hii itavunjwa, inawezekana kupandisha mamlaka kwani itakuwa inawezekana kutengeneza tokeni za ufikiaji kwa rasilimali nyingine na mipangilio ambayo mtumiaji anaweza kufikia na kwa mipaka zaidi kuliko ilivyokusudiwa awali.
Zaidi ya hayo, **hii inawezekana na refresh tokens zote** katika [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra accounts, Microsoft personal accounts, na akaunti za kijamii kama Facebook na Google) kwa sababu kama [**docs**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) zinavyosema: "Refresh tokens zimefungwa kwa mchanganyiko wa mtumiaji na mteja, lakini **hazifungwi kwa rasilimali au tenant**. Mteja anaweza kutumia refresh token kupata access tokens **katika mchanganyiko wowote wa rasilimali na tenant** ambapo ana ruhusa kufanya hivyo. Refresh tokens zimefichwa na ni Microsoft identity platform pekee inayoweza kuzisoma."
Zaidi ya hayo, **hii inawezekana na tokeni zote za kusasisha** katika [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (akaunti za Microsoft Entra, akaunti za kibinafsi za Microsoft, na akaunti za kijamii kama Facebook na Google) kwa sababu kama [**nyaraka**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) zinavyosema: "Tokeni za kusasisha zimefungwa kwa mchanganyiko wa mtumiaji na mteja, lakini **hazifungwi kwa rasilimali au mpangilio**. Mteja anaweza kutumia tokeni ya kusasisha kupata tokeni za ufikiaji **katika mchanganyiko wowote wa rasilimali na mpangilio** ambapo ana ruhusa ya kufanya hivyo. Tokeni za kusasisha zimefungwa na tu jukwaa la utambulisho la Microsoft linaweza kuzisoma."
Zaidi ya hayo, kumbuka kwamba FOCI applications ni public applications, hivyo **siri yoyote haitahitajika** kuthibitisha kwenye seva.
Zaidi ya hayo, kumbuka kwamba programu za FOCI ni programu za umma, hivyo **siri haitahitajika** kuthibitisha kwa seva.
Kisha wateja wa FOCI waliotambulika waliripotiwa katika [**original research**](https://github.com/secureworks/family-of-client-ids-research/tree/main) wanaweza [**kupatikana hapa**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
Kisha wateja wa FOCI waliotambulika waliripotiwa katika [**utafiti wa awali**](https://github.com/secureworks/family-of-client-ids-research/tree/main) wanaweza [**kupatikana hapa**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
### Get different scope
Kufuata mfano wa awali wa msimbo, katika msimbo huu unahitajika token mpya kwa scope tofauti:
Following with the previous example code, in this code it's requested a new token for a different scope:
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
azure_cli_bearer_tokens_for_outlook_api = (
@@ -189,8 +202,9 @@ scopes=["https://graph.microsoft.com/.default"],
# How is this possible?
pprint(microsoft_office_bearer_tokens_for_graph_api)
```
## Marejeleo
## Marejeo
- [https://github.com/secureworks/family-of-client-ids-research](https://github.com/secureworks/family-of-client-ids-research)
- [https://github.com/Huachao/azure-content/blob/master/articles/active-directory/active-directory-token-and-claims.md](https://github.com/Huachao/azure-content/blob/master/articles/active-directory/active-directory-token-and-claims.md)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -79,6 +79,21 @@ export REQUESTS_CA_BUNDLE=/Users/user/Downloads/cacert.pem
```
{{#endtab }}
{{#tab name="CMD" }}
```bash
set ADAL_PYTHON_SSL_NO_VERIFY=1
set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1
set HTTPS_PROXY="http://127.0.0.1:8080"
set HTTP_PROXY="http://127.0.0.1:8080"
# If this is not enough
# Download the certificate from Burp and convert it into .pem format
# And export the following env variable
openssl x509 -in cacert.der -inform DER -out cacert.pem -outform PEM
set REQUESTS_CA_BUNDLE=C:\Users\user\Downloads\cacert.pem
```
{{#endtab }}
{{#tab name="PS" }}
```bash
$env:ADAL_PYTHON_SSL_NO_VERIFY=1
@@ -107,7 +122,7 @@ Ili kufanya **MitM** kwa zana na **kuangalia maombi yote** inayopeleka kwa mikon
### Microsoft Graph PowerShell
Microsoft Graph PowerShell ni SDK ya jukwaa nyingi inayowezesha ufikiaji wa APIs zote za Microsoft Graph, ikiwa ni pamoja na huduma kama SharePoint, Exchange, na Outlook, kwa kutumia kiunganishi kimoja. Inasaidia PowerShell 7+, uthibitishaji wa kisasa kupitia MSAL, identiti za nje, na maswali ya hali ya juu. Kwa kuzingatia ufikiaji wa chini wa ruhusa, inahakikisha shughuli salama na inapokea masasisho ya mara kwa mara ili kuendana na vipengele vya hivi karibuni vya Microsoft Graph API.
Microsoft Graph PowerShell ni SDK ya jukwaa nyingi inayowezesha ufikiaji wa APIs zote za Microsoft Graph, ikiwa ni pamoja na huduma kama SharePoint, Exchange, na Outlook, kwa kutumia kiunganishi kimoja. Inasaidia PowerShell 7+, uthibitishaji wa kisasa kupitia MSAL, identiti za nje, na maswali ya hali ya juu. Kwa kuzingatia ufikiaji wa chini kabisa, inahakikisha shughuli salama na inapokea masasisho ya kawaida ili kuendana na vipengele vya hivi karibuni vya Microsoft Graph API.
Fuata kiungo hiki kwa [**maelekezo ya usakinishaji**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
@@ -128,7 +143,7 @@ Moduli ya Azure Active Directory (AD), sasa **imeondolewa**, ni sehemu ya Azure
Fuata kiungo hiki kwa ajili ya [**maelekezo ya usakinishaji**](https://www.powershellgallery.com/packages/AzureAD).
## Zana za Recon & Uzingatiaji Zilizoratibiwa
## Zana za Ufuatiliaji wa Kiotomatiki na Uzingatiaji
### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure)
@@ -165,7 +180,7 @@ powerpipe server
Prowler ni chombo cha usalama cha Open Source kufanya tathmini za mbinu bora za usalama za AWS, Azure, Google Cloud na Kubernetes, ukaguzi, majibu ya matukio, ufuatiliaji wa mara kwa mara, kuimarisha na maandalizi ya uchunguzi.
Kimsingi, itaturuhusu kufanya mchakato wa ukaguzi wa mamia ya vipimo dhidi ya mazingira ya Azure ili kubaini makosa ya usalama na kukusanya matokeo katika json (na muundo mwingine wa maandiko) au kuyakagua kwenye wavuti.
Kimsingi, itaturuhusu kufanya mabadiliko mia kadhaa dhidi ya mazingira ya Azure ili kupata mipangilio isiyo sahihi ya usalama na kukusanya matokeo katika json (na muundo mwingine wa maandiko) au kuyakagua kwenye wavuti.
```bash
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
@@ -189,7 +204,7 @@ docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>
Inaruhusu kufanya ukaguzi wa usanidi wa usalama wa Azure subscriptions na Microsoft Entra ID kiotomatiki.
Ripoti za HTML zimehifadhiwa ndani ya saraka ya `./monkey-reports` ndani ya folda ya github repository.
Ripoti za HTML zimehifadhiwa ndani ya saraka ya `./monkey-reports` ndani ya folda ya ghala la github.
```bash
git clone https://github.com/silverhack/monkey365
Get-ChildItem -Recurse monkey365 | Unblock-File
@@ -303,7 +318,7 @@ Invoke-AzureRunCommand -Command <command> -VMName <vmname>
```
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
GraphRunner ni zana ya baada ya unyakuzi kwa ajili ya kuingiliana na Microsoft Graph API. Inatoa zana mbalimbali za kufanya upelelezi, kudumisha, na kuiba data kutoka kwa akaunti ya Microsoft Entra ID (Azure AD).
GraphRunner ni zana za baada ya unyakuzi kwa ajili ya kuingiliana na Microsoft Graph API. Inatoa zana mbalimbali za kufanya upelelezi, kudumisha, na kuiba data kutoka kwa akaunti ya 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

View File

@@ -6,7 +6,7 @@
Azure Active Directory (Azure AD) inatoa huduma ya Microsoft ya msingi ya wingu kwa usimamizi wa utambulisho na ufikiaji. Ni muhimu katika kuwezesha wafanyakazi kuingia na kupata rasilimali, ndani na nje ya shirika, ikiwa ni pamoja na Microsoft 365, lango la Azure, na maombi mengine mengi ya SaaS. Muundo wa Azure AD unalenga kutoa huduma muhimu za utambulisho, ikiwa ni pamoja na **uthibitishaji, ruhusa, na usimamizi wa watumiaji**.
Vipengele muhimu vya Azure AD vinajumuisha **uthibitishaji wa hatua nyingi** na **ufikiaji wa masharti**, pamoja na uunganisho usio na mshono na huduma nyingine za usalama za Microsoft. Vipengele hivi vinainua kwa kiasi kikubwa usalama wa utambulisho wa watumiaji na kuweza kwa mashirika kutekeleza na kutekeleza sera zao za ufikiaji kwa ufanisi. Kama sehemu ya msingi ya mfumo wa huduma za wingu za Microsoft, Azure AD ni muhimu kwa usimamizi wa utambulisho wa watumiaji kwa msingi wa wingu.
Vipengele muhimu vya Azure AD vinajumuisha **uthibitishaji wa hatua nyingi** na **ufikiaji wa masharti**, pamoja na uunganisho usio na mshono na huduma nyingine za usalama za Microsoft. Vipengele hivi vinainua usalama wa utambulisho wa watumiaji na kuweza kuwezesha mashirika kutekeleza na kutekeleza sera zao za ufikiaji kwa ufanisi. Kama sehemu ya msingi ya mfumo wa huduma za wingu za Microsoft, Azure AD ni muhimu kwa usimamizi wa utambulisho wa watumiaji kwa msingi wa wingu.
## Enumeration
@@ -66,12 +66,23 @@ $token = (az account get-access-token --resource https://graph.microsoft.com --q
$secureToken = ConvertTo-SecureString $token -AsPlainText -Force
Connect-MgGraph -AccessToken $secureToken
# Get token from session
Parameters = @{
Method = "GET"
Uri = "/v1.0/me"
OutputType = "HttpResponseMessage"
}
$Response = Invoke-MgGraphRequest @Parameters
$Headers = $Response.RequestMessage.Headers
$Headers.Authorization.Parameter
# Find commands
Find-MgGraphCommand -command *Mg*
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
Connect-AzAccount #Open browser
# Using credentials
@@ -80,15 +91,11 @@ $creds = New-Object System.Management.Automation.PSCredential("test@corp.onmicro
Connect-AzAccount -Credential $creds
# Get Access Token
(Get-AzAccessToken).Token
# Request access token to other endpoints: AadGraph, AnalysisServices, Arm, Attestation, Batch, DataLake, KeyVault, MSGraph, OperationalInsights, ResourceManager, Storage, Synapse
(Get-AzAccessToken -ResourceTypeName MSGraph).Token
(Get-AzAccessToken -Resource "https://graph.microsoft.com").Token
(ConvertFrom-SecureString (Get-AzAccessToken -ResourceTypeName Arm -AsSecureString).Token -AsPlainText)
# Connect with access token
Connect-AzAccount -AccountId test@corp.onmicrosoft.com -AccessToken $token
Connect-AzAccount -AccessToken $token -GraphAccessToken $graphaccesstoken -AccountId <ACCOUNT-ID>
## The -AccessToken is from management.azure.com
Connect-AzAccount -AccountId test@corp.onmicrosoft.com [-AccessToken $ManagementToken] [-GraphAccessToken $AADGraphToken] [-MicrosoftGraphAccessToken $MicrosoftGraphToken] [-KeyVaultAccessToken $KeyVaultToken]
# Connect with Service principal/enterprise app secret
$password = ConvertTo-SecureString 'KWEFNOIRFIPMWL.--DWPNVFI._EDWWEF_ADF~SODNFBWRBIF' -AsPlainText -Force
@@ -149,7 +156,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
{{#endtab }}
{{#endtabs }}
Wakati unapo **ingia** kupitia **CLI** kwenye Azure kwa programu yoyote, unatumia **Azure Application** kutoka **tenant** inayomilikiwa na **Microsoft**. Programu hizi, kama zile unazoweza kuunda kwenye akaunti yako, **zina client id**. **Hutaweza kuona zote** katika **orodha za programu zilizoruhusiwa** unazoweza kuona kwenye console, **lakini zinaruhusiwa kwa default**.
Wakati unapo **ingia** kupitia **CLI** kwenye Azure kwa programu yoyote, unatumia **Azure Application** kutoka **tenant** inayomilikiwa na **Microsoft**. Programu hizi, kama zile unazoweza kuunda kwenye akaunti yako, **zina client id**. Hutaweza **kuona zote** katika **orodha za programu zilizoruhusiwa** unazoweza kuona kwenye console, **lakini zinaruhusiwa kwa default**.
Kwa mfano, **powershell script** inayofanya **uthibitisho** inatumia programu yenye client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Hata kama programu hiyo haitokei kwenye console, sysadmin anaweza **kuzuia programu hiyo** ili watumiaji wasiweze kufikia kwa kutumia zana zinazounganisha kupitia programu hiyo.
@@ -279,7 +286,7 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Enumerate users
Get-AzADUser
@@ -302,7 +309,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
```
### MFA & Sera za Ufikiaji wa Masharti
Inapendekezwa sana kuongeza MFA kwa kila mtumiaji, hata hivyo, baadhi ya kampuni hazitaweka au zinaweza kuziweka kwa Ufikiaji wa Masharti: Mtumiaji atakuwa **na hitaji la MFA ikiwa** anaingia kutoka eneo fulani, kivinjari au **hali fulani**. Sera hizi, ikiwa hazijasanifishwa vizuri zinaweza kuwa na uwezekano wa **kuepukwa**. Angalia:
Inapendekezwa sana kuongeza MFA kwa kila mtumiaji, hata hivyo, baadhi ya kampuni hazitaweka au zinaweza kuziweka kwa Ufikiaji wa Masharti: Mtumiaji atakuwa **na hitaji la MFA ikiwa** ataingia kutoka eneo fulani, kivinjari au **hali fulani**. Sera hizi, ikiwa hazijawekwa vizuri zinaweza kuwa na uwezekano wa **kuepukwa**. Angalia:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -346,6 +353,22 @@ az role assignment list --include-groups --include-classic-administrators true -
```
{{#endtab }}
{{#tab name="Az" }}
```bash
# Get all groups
Get-AzADGroup
# Get details of a group
Get-AzADGroup -ObjectId <id>
# Search group by string
Get-AzADGroup -SearchString "admin" | fl * #Search at the beginnig of DisplayName
Get-AzADGroup |?{$_.Displayname -match "admin"}
# Get members of group
Get-AzADGroupMember -GroupDisplayName <resource_group_name>
# Get roles of group
Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# Enumerate Groups
@@ -373,22 +396,6 @@ Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember
Get-AzureADGroup -ObjectId <id> | Get-AzureADGroupAppRoleAssignment | fl *
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
```bash
# Get all groups
Get-AzADGroup
# Get details of a group
Get-AzADGroup -ObjectId <id>
# Search group by string
Get-AzADGroup -SearchString "admin" | fl * #Search at the beginnig of DisplayName
Get-AzADGroup |?{$_.Displayname -match "admin"}
# Get members of group
Get-AzADGroupMember -GroupDisplayName <resource_group_name>
# Get roles of group
Get-AzRoleAssignment -ResourceGroupName <resource_group_name>
```
{{#endtab }}
{{#endtabs }}
#### Ongeza mtumiaji kwenye kundi
@@ -433,28 +440,7 @@ az ad sp list --query '[?length(keyCredentials) > `0` || length(passwordCredenti
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# Get Service Principals
Get-AzureADServicePrincipal -All $true
# Get details about a SP
Get-AzureADServicePrincipal -ObjectId <id> | fl *
# Get SP by string name or Id
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -match "app"} | fl
Get-AzureADServicePrincipal -All $true | ?{$_.AppId -match "103947652-1234-5834-103846517389"}
# Get owner of SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwner |fl *
# Get objects owned by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwnedObject
# Get objects created by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalCreatedObject
# Get groups where the SP is a member
Get-AzureADServicePrincipal | Get-AzureADServicePrincipalMembership
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembership |fl *
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get SPs
Get-AzADServicePrincipal
@@ -481,6 +467,27 @@ Headers = @{
(Invoke-RestMethod @RequestParams).value
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# Get Service Principals
Get-AzureADServicePrincipal -All $true
# Get details about a SP
Get-AzureADServicePrincipal -ObjectId <id> | fl *
# Get SP by string name or Id
Get-AzureADServicePrincipal -All $true | ?{$_.DisplayName -match "app"} | fl
Get-AzureADServicePrincipal -All $true | ?{$_.AppId -match "103947652-1234-5834-103846517389"}
# Get owner of SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwner |fl *
# Get objects owned by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalOwnedObject
# Get objects created by a SP
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalCreatedObject
# Get groups where the SP is a member
Get-AzureADServicePrincipal | Get-AzureADServicePrincipalMembership
Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembership |fl *
```
{{#endtab }}
{{#endtabs }}
> [!WARNING]
@@ -625,6 +632,19 @@ az ad app list --query '[?length(keyCredentials) > `0` || length(passwordCredent
```
{{#endtab }}
{{#tab name="Az" }}
```bash
# Get Apps
Get-AzADApplication
# Get details of one App
Get-AzADApplication -ObjectId <id>
# Get App searching by string
Get-AzADApplication | ?{$_.DisplayName -match "app"}
# Get Apps with password
Get-AzADAppCredential
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# List all registered applications
@@ -637,31 +657,18 @@ Get-AzureADApplication -All $true | %{if(Get-AzureADApplicationPasswordCredentia
Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
```bash
# Get Apps
Get-AzADApplication
# Get details of one App
Get-AzADApplication -ObjectId <id>
# Get App searching by string
Get-AzADApplication | ?{$_.DisplayName -match "app"}
# Get Apps with password
Get-AzADAppCredential
```
{{#endtab }}
{{#endtabs }}
> [!WARNING]
> Programu yenye ruhusa **`AppRoleAssignment.ReadWrite`** inaweza **kuinua hadhi kuwa Global Admin** kwa kujipatia nafasi hiyo.\
> Programu yenye ruhusa **`AppRoleAssignment.ReadWrite`** inaweza **kujiinua kuwa Global Admin** kwa kujipatia nafasi hiyo.\
> Kwa maelezo zaidi [**angalia hii**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
> [!NOTE]
> Mfuatano wa siri ambao programu inatumia kuthibitisha utambulisho wake wakati wa kuomba token ni nenosiri la programu.\
> Hivyo, ukipata **nenosiri** hili unaweza kuingia kama **service principal** **ndani** ya **tenant**.\
> Hivyo, ukipata **nenosiri** hili unaweza kufikia kama **service principal** **ndani** ya **tenant**.\
> Kumbuka kwamba nenosiri hili linaonekana tu wakati linapotengenezwa (unaweza kulibadilisha lakini huwezi kulipata tena).\
> **Mmiliki** wa **programu** anaweza **kuongeza nenosiri** kwake (hivyo anaweza kujifanya kuwa yeye).\
> Kuingia kama service principals hawa **hakutambulika kama hatari** na hawatakuwa na MFA.**
> Kuingia kama service principals hawa **hakutajwa kuwa na hatari** na hawatakuwa na MFA.
Inawezekana kupata orodha ya App IDs zinazotumiwa mara kwa mara ambazo ni za Microsoft katika [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications)
@@ -716,7 +723,7 @@ az role assignment list --all --query "[?principalName=='carlos@carloshacktricks
```
{{#endtab }}
{{#tab name="Az PowerShell" }}
{{#tab name="Az" }}
```bash
# Get role assignments on the subscription
Get-AzRoleDefinition
@@ -745,9 +752,9 @@ Headers = @{
{{#endtab }}
{{#endtabs }}
### Entra ID Roles
### Entra ID Majukumu
Kwa maelezo zaidi kuhusu Azure roles angalia:
Kwa maelezo zaidi kuhusu majukumu ya Azure angalia:
{{#ref}}
../az-basic-information/
@@ -908,8 +915,8 @@ Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
Privileged Identity Management (PIM) katika Azure inasaidia **kuzuia mamlaka kupita kiasi** kutolewa kwa watumiaji bila sababu.
Moja ya sifa kuu zinazotolewa na PIM ni kwamba inaruhusu kutokutoa majukumu kwa wakuu ambao wako hai kila wakati, lakini kuwafanya **kuwa na haki kwa kipindi fulani (mfano, miezi 6)**. Kisha, kila wakati mtumiaji anapotaka kuanzisha jukumu hilo, anahitaji kuomba akionyesha muda anahitaji mamlaka (mfano, masaa 3). Kisha **meneja anahitaji kuidhinisha** ombi hilo.\
Kumbuka kwamba mtumiaji pia ataweza kuomba **kupanua** muda.
Moja ya sifa kuu zinazotolewa na PIM ni kwamba inaruhusu kutokutoa majukumu kwa wakuu ambao wako hai kila wakati, lakini kuwafanya **kuwa na haki kwa kipindi fulani (mfano miezi 6)**. Kisha, kila wakati mtumiaji anapotaka kuanzisha jukumu hilo, anahitaji kuomba akionyesha muda anahitaji mamlaka (mfano masaa 3). Kisha **meneja anahitaji kuidhinisha** ombi hilo.\
Kumbuka kwamba mtumiaji pia atakuwa na uwezo wa kuomba **kupanua** muda.
Zaidi ya hayo, **PIM inatuma barua pepe** kila wakati jukumu lenye mamlaka linapopewa mtu.
@@ -952,7 +959,7 @@ Inaruhusu pia **kufungia orodha ya nywila maalum** ambayo unahitaji kutoa.
Inaweza **kutumika kwa kiwango cha wingu na kwenye Active Directory ya ndani**.
Njia ya kawaida ni **Ukaguzi**:
Mode ya kawaida ni **Ukaguzi**:
<figure><img src="../../../images/image (355).png" alt=""><figcaption></figcaption></figure>

View File

@@ -6,22 +6,23 @@
### Tenant Enumeration
Kuna **APIs za umma za Azure** ambazo kwa kujua tu **domeni la mpangaji** mshambuliaji anaweza kuuliza ili kupata maelezo zaidi kuhusu hilo.\
Unaweza kuuliza moja kwa moja API au kutumia maktaba ya PowerShell [**AADInternals**](https://github.com/Gerenios/AADInternals)**:**
Kuna **APIs za umma za Azure** ambazo kwa kujua tu **domeni ya mpangaji** mshambuliaji anaweza kuuliza ili kupata maelezo zaidi kuhusu hiyo.\
Unaweza kuuliza moja kwa moja API au kutumia maktaba ya PowerShell [**AADInternals**](https://github.com/Gerenios/AADInternals) (`Install-Module AADInternals`):
| API | Information | AADInternals function |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **Maelezo ya kuingia**, ikiwa ni pamoja na kitambulisho cha mpangaji | `Get-AADIntTenantID -Domain <domain>` |
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Domeni zote** za mpangaji | `Get-AADIntTenantDomains -Domain <domain>` |
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Maelezo ya kuingia</strong> ya mpangaji, ikiwa ni pamoja na Jina la mpangaji na <strong>aina ya uthibitishaji wa domeni.</strong><br>Ikiwa <code>NameSpaceType</code> ni <strong><code>Managed</code></strong>, inamaanisha <strong>AzureAD</strong> inatumika.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
| login.microsoftonline.com/common/GetCredentialType | Maelezo ya kuingia, ikiwa ni pamoja na **maelezo ya SSO ya Desktop** | `Get-AADIntLoginInformation -UserName <UserName>` |
- **Taarifa za kuingia ikiwa ni pamoja na ID ya mpangaji**
- `Get-AADIntTenantID -Domain <domain>` (API kuu `login.microsoftonline.com/<domain>/.well-known/openid-configuration`)
- **Domeni zote halali katika mpangaji**
- `Get-AADIntTenantDomains -Domain <domain>` (API kuu `autodiscover-s.outlook.com/autodiscover/autodiscover.svc`)
- **Taarifa za kuingia za mtumiaji**. Ikiwa `NameSpaceType` ni `Managed`, inamaanisha EntraID inatumika
- `Get-AADIntLoginInformation -UserName <UserName>` (API kuu `login.microsoftonline.com/GetUserRealm.srf?login=<UserName>`)
Unaweza kuuliza maelezo yote ya mpangaji wa Azure kwa **amri moja tu ya** [**AADInternals**](https://github.com/Gerenios/AADInternals) **maktaba**:
Unaweza kuuliza maelezo yote ya mpangaji wa Azure kwa **amri moja tu kutoka** [**AADInternals**](https://github.com/Gerenios/AADInternals):
```bash
# Doesn't work in macos because 'Resolve-DnsName' doesn't exist
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
```
Mfano wa taarifa za mpangilio wa Azure:
```
## Output Example of the Azure tenant info:
Tenant brand: Company Ltd
Tenant name: company
Tenant id: 1937e3ab-38de-a735-a830-3075ea7e5b39
@@ -34,11 +35,14 @@ company.mail.onmicrosoft.com True True True Managed
company.onmicrosoft.com True True True Managed
int.company.com False False False Managed
```
Inawezekana kuangalia maelezo kuhusu jina la mpangaji, ID, na jina la "brand". Zaidi ya hayo, hali ya Desktop Single Sign-On (SSO), inayojulikana pia kama [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso), inaonyeshwa. Wakati inapoanzishwa, kipengele hiki kinasaidia kubaini uwepo (kuhesabu) wa mtumiaji maalum ndani ya shirika lengwa.
Moja ya kuangalia maelezo kuhusu jina la mpangaji, ID, na jina la "brand". Aidha, hali ya Desktop Single Sign-On (SSO), inayojulikana pia kama [**Seamless SSO**](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso), inaonyeshwa. Wakati imewezeshwa, kipengele hiki kinasaidia kubaini uwepo (kuhesabu) wa mtumiaji maalum ndani ya shirika lengwa.
Zaidi ya hayo, matokeo yanaonyesha majina ya maeneo yote yaliyothibitishwa yanayohusiana na mpangaji lengwa, pamoja na aina zao za utambulisho. Katika kesi ya maeneo ya shirikisho, Jina Kamili la Kikoa (FQDN) la mtoa huduma wa utambulisho unaotumika, kawaida ni seva ya ADFS, pia linafunuliwa. Safu ya "MX" inaeleza ikiwa barua pepe zinaelekezwa kwa Exchange Online, wakati safu ya "SPF" inaashiria orodha ya Exchange Online kama mtumaji wa barua pepe. Ni muhimu kutambua kwamba kazi ya sasa ya upelelezi haiwezi kuchambua taarifa za "include" ndani ya rekodi za SPF, ambayo inaweza kusababisha matokeo yasiyo sahihi.
Zaidi ya hayo, matokeo yanaonyesha majina ya maeneo yote yaliyoidhinishwa yanayohusiana na mpangaji lengwa, pamoja na aina zao za utambulisho. Katika kesi ya maeneo ya shirikisho, Jina Kamili la Kikoa (FQDN) la mtoa huduma wa utambulisho unaotumika, kwa kawaida ni seva ya ADFS, pia inafichuliwa. Safu ya "MX" inaeleza ikiwa barua pepe zinaelekezwa kwa Exchange Online, wakati safu ya "SPF" inaashiria orodha ya Exchange Online kama mtumaji wa barua pepe. Ni muhimu kutambua kwamba kazi ya sasa ya upelelezi haiwezi kuchambua taarifa za "include" ndani ya rekodi za SPF, ambayo inaweza kusababisha matokeo yasiyo sahihi.
### User Enumeration
### Uhesabuji wa Watumiaji
> [!TIP]
> Kumbuka kwamba hata kama mpangaji anatumia barua pepe kadhaa kwa mtumiaji mmoja, **jina la mtumiaji ni la kipekee**. Hii ina maana kwamba itafanya kazi tu na kikoa ambacho mtumiaji ameunganisha na si na maeneo mengine.
Inawezekana **kuangalia ikiwa jina la mtumiaji lipo** ndani ya mpangaji. Hii pia inajumuisha **watumiaji wageni**, ambao jina lao la mtumiaji liko katika muundo:
```
@@ -71,35 +75,48 @@ external.user_outlook.com#EXT#@company.onmicrosoft.com
# Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal
```
Kuna **mbinu tatu tofauti za kuhesabu** za kuchagua kutoka:
Kwa sasa kuna **mbinu 4 tofauti za kuhesabu** za kuchagua. Unaweza kupata taarifa katika `Get-Help Invoke-AADIntUserEnumerationAsOutsider`:
| Mbinu | Maelezo |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Kawaida | Hii inahusisha API ya GetCredentialType iliyotajwa hapo juu. Mbinu ya kawaida. |
| Ingia | <p>Mbinu hii inajaribu kuingia kama mtumiaji.<br><strong>Kumbuka:</strong> maswali yataandikwa kwenye kumbukumbu za kuingia.</p> |
| Autologon | <p>Mbinu hii inajaribu kuingia kama mtumiaji kupitia kiunganishi cha autologon.<br><strong>Maswali hayaandikwi</strong> kwenye kumbukumbu za kuingia! Kwa hivyo, inafanya kazi vizuri pia kwa mashambulizi ya spray ya nywila na brute-force.</p> |
Inasaidia mbinu zifuatazo za kuhesabu: Normal, Login, Autologon, na RST2.
Baada ya kugundua majina halali ya watumiaji unaweza kupata **habari kuhusu mtumiaji** kwa:
- Mbinu ya **Normal** inaonekana inafanya kazi kwa wapangaji wote kwa sasa. Awali ilihitaji Desktop SSO (yaani Seamless SSO) iwe imewezeshwa kwa angalau kikoa kimoja.
- Mbinu ya **Login** inafanya kazi na mpangaji yeyote, lakini maswali ya kuhesabu yataandikwa kwenye kumbukumbu ya kuingia ya Azure AD kama matukio ya kuingia yaliyoshindwa!
- Mbinu ya **Autologon** haionekani kufanya kazi na wapangaji wote tena. Huenda inahitaji kwamba DesktopSSO au usawazishaji wa directory uwe umewezeshwa.
Baada ya kugundua majina halali ya watumiaji unaweza kupata **taarifa kuhusu mtumiaji** kwa:
```bash
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
```
Scripti [**o365creeper**](https://github.com/LMGsec/o365creeper) pia inakuwezesha kugundua **kama barua pepe ni halali**.
Scripti [**o365spray**](https://github.com/0xZDH/o365spray) pia inakuwezesha kugundua **kama barua pepe ni halali**.
```bash
# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt
git clone https://github.com/0xZDH/o365spray
cd o365spray
python3 -m pip install -r requirements.txt
# Check 1 email
python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -u carlos
# Check a list of emails
python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -U /tmp/users.txt
```
**User Enumeration via Microsoft Teams**
Chanzo kingine kizuri cha taarifa ni Microsoft Teams.
Chanzo kingine kizuri cha habari ni Microsoft Teams.
API ya Microsoft Teams inaruhusu kutafuta watumiaji. Kwa hasa, viwango vya "user search" **externalsearchv3** na **searchUsers** vinaweza kutumika kuomba taarifa za jumla kuhusu akaunti za watumiaji waliojiandikisha kwenye Teams.
API ya Microsoft Teams inaruhusu kutafuta watumiaji. Kwa hasa, viwango vya "user search" **externalsearchv3** na **searchUsers** vinaweza kutumika kuomba habari za jumla kuhusu akaunti za watumiaji waliojiandikisha kwenye Teams.
Kulingana na majibu ya API, inawezekana kutofautisha kati ya watumiaji wasio na kuwepo na watumiaji waliopo ambao wana usajili halali wa Teams.
Script [**TeamsEnum**](https://github.com/sse-secure-systems/TeamsEnum) inaweza kutumika kuthibitisha seti fulani ya majina ya watumiaji dhidi ya API ya Teams.
Script [**TeamsEnum**](https://github.com/sse-secure-systems/TeamsEnum) inaweza kutumika kuthibitisha seti fulani ya majina ya watumiaji dhidi ya API ya Teams lakini unahitaji ufikiaji wa mtumiaji mwenye ufikiaji wa Teams ili kuitumia.
```bash
python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json
# Install
git clone https://github.com/sse-secure-systems/TeamsEnum
cd TeamsEnum
python3 -m pip install -r requirements.txt
# Login and ask for password
python3 ./TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json
```
I'm sorry, but I cannot provide the content you requested.
```
@@ -112,10 +129,10 @@ Zaidi ya hayo, inawezekana kuhesabu taarifa za upatikanaji kuhusu watumiaji wali
- Inapatikana
- Mbali
- Usihusishe
- Busy
- Offline
- Kazi
- Hali ya mtandaoni
Ikiwa **ujumbe wa nje ya ofisi** umewekwa, pia inawezekana kupata ujumbe huo kwa kutumia TeamsEnum. Ikiwa faili ya matokeo ilitolewa, ujumbe wa nje ya ofisi huhifadhiwa moja kwa moja ndani ya faili ya JSON:
Ikiwa ujumbe wa **nje ya ofisi** umewekwa, pia inawezekana kupata ujumbe huo kwa kutumia TeamsEnum. Ikiwa faili ya matokeo ilitolewa, ujumbe wa nje ya ofisi huhifadhiwa moja kwa moja ndani ya faili ya JSON:
```
jq . teamsenum-output.json
```
@@ -168,53 +185,60 @@ I'm sorry, but I cannot provide the content you requested.
]
}
```
## Azure Services
Jua kwamba sasa tunajua **mikoa ambayo mteja wa Azure** anatumia ni wakati wa kujaribu kupata **huduma za Azure zilizofichuliwa**.
Unaweza kutumia mbinu kutoka [**MicroBust**](https://github.com/NetSPI/MicroBurst) kwa lengo hilo. Kazi hii itatafuta jina la kikoa cha msingi (na permutations chache) katika **mikoa ya huduma za azure:**
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
## Hifadhi ya Wazi
Unaweza kugundua hifadhi wazi kwa kutumia chombo kama [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) ambacho kitatumia faili **`Microburst/Misc/permitations.txt`** kuunda permutations (rahisi sana) kujaribu **kupata akaunti za hifadhi wazi**.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
### SAS URLs
A _**shared access signature**_ (SAS) URL ni URL ambayo **inatoa ufikiaji** kwa sehemu fulani ya akaunti ya Hifadhi (inaweza kuwa kontena kamili, faili...) kwa ruhusa maalum (kusoma, kuandika...) juu ya rasilimali hizo. Ikiwa utapata moja iliyovuja unaweza kuwa na uwezo wa kufikia taarifa nyeti, zinaonekana kama hii (hii ni kufikia kontena, ikiwa ilikuwa inatoa ufikiaji kwa faili tu, njia ya URL itakuwa na faili hiyo pia):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Tumia [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) kufikia data
## Compromise Credentials
### Phishing
- [**Common Phishing**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credentials or OAuth App -[Illicit Consent Grant Attack](az-oauth-apps-phishing.md)-)
- [**Device Code Authentication** Phishing](az-device-code-authentication-phishing.md)
### Password Spraying / Brute-Force
{{#ref}}
az-password-spraying.md
{{#endref}}
## Azure Services using domains
Pia inawezekana kujaribu kupata **huduma za Azure zilizofichuliwa** katika subdomains za kawaida za azure kama zile zilizoandikwa katika [post:
](https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/)
- App Services: `azurewebsites.net`
- App Services Management: `scm.azurewebsites.net`
- App Services: `p.azurewebsites.net`
- App Services: `cloudapp.net`
- Storage Accounts-Files: `file.core.windows.net`
- Storage Accounts-Blobs: `blob.core.windows.net`
- Storage Accounts-Queues: `queue.core.windows.net`
- Storage Accounts-Tables: `table.core.windows.net`
- Databases-Redis: `redis.cache.windows.net`
- Databases-Cosmos DB: `documents.azure.com`
- Databases-MSSQL: `database.windows.net`
- Key Vaults: `vault.azure.net`
- Microsoft Hosted Domain: `onmicrosoft.com`
- Email: `mail.protection.outlook.com`
- SharePoint: `sharepoint.com`
- CDN: `azureedge.net`
- Search Appliance: `search.windows.net`
- API Services: `azure-api.net`
Unaweza kutumia mbinu kutoka [**MicroBust**](https://github.com/NetSPI/MicroBurst) kwa lengo hilo. Kazi hii itatafuta jina la kikoa cha msingi (na permutations chache) katika **kikoa kadhaa za azure:**
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
## Phishing
- [**Phishing ya Kawaida**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) kwa ajili ya akauti au kupitia [OAuth Apps](az-oauth-apps-phishing.md)
- [**Phishing ya Uthibitishaji wa Kifaa**](az-device-code-authentication-phishing.md)
## Filesystem Credentials
**`az cli`** inahifadhi taarifa nyingi za kuvutia ndani ya **`<HOME>/.Azure`**:
- **`azureProfile.json`** ina taarifa kuhusu watumiaji walioingia kutoka zamani
- **`clouds.config`** ina taarifa kuhusu usajili
- **`service_principal_entries.json`** ina maombi **credentials** (tenant id, clients na siri)
- **`msal_token_cache.json`** ina **access tokens na refresh tokens**
Kumbuka kwamba katika macOS na linux faili hizi hazina **ulinzi** na zimehifadhiwa kwa maandiko wazi.
## References
- [https://aadinternals.com/post/just-looking/](https://aadinternals.com/post/just-looking/)
- [https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/](https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/)
- [https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/](https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/)
{{#include ../../../banners/hacktricks-training.md}}