Az - Cloud Kerberos Trust

Reading time: 7 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Ovaj post je sažetak 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.

Pregled Kerberos Trust odnosa

Cloud Kerberos Trust (Entra ID -> AD) -- Ova funkcija (deo Windows Hello for Business) uspostavlja jednostrano poverenje gde on-prem AD veruje Entra ID da izdaje Kerberos karte za AD. Aktiviranje stvara AzureADKerberos$ računar u AD (koji se pojavljuje kao Read-Only Domain Controller) i povezani krbtgt_AzureAD nalog (sekundarni KRBTGT). Entra ID drži ključeve za ove naloge i može izdavati "delimične" Kerberos TGT-ove za AD korisnike. AD domen kontroleri će poštovati ove karte, ali sa RODC-sličnim ograničenjima: prema zadatku, grupe sa visokim privilegijama (Domain Admins, Enterprise Admins, itd.) su odbijene, dok su obični korisnici dozvoljeni. Ovo sprečava Entra ID da autentifikuje domen administratore putem poverenja pod normalnim uslovima. Međutim, kao što ćemo videti, napadač sa dovoljnim Entra ID privilegijama može zloupotrebiti ovaj dizajn poverenja.

Prebacivanje sa Entra ID na On-Prem AD

Scenario: Ciljna organizacija ima Cloud Kerberos Trust omogućen za autentifikaciju bez lozinke. Napadač je stekao Global Administrator privilegije u Entra ID (Azure AD) ali još uvek ne kontroliše on-prem AD. Napadač takođe ima pristup mreži do Domain Controller-a (putem VPN-a ili Azure VM-a u hibridnoj mreži). Koristeći cloud poverenje, napadač može iskoristiti kontrolu Azure AD da dobije Domain Admin nivo pristupa u AD.

Preduslovi:

  • Cloud Kerberos Trust je konfigurisan u hibridnom okruženju (indikator: AzureADKerberos$ RODC nalog postoji u AD).

  • 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 (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 njegov SID da se koristi za impersonaciju bez sukoba.

Koraci napada:

  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.)

  1. 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 da pozovu ovu funkcionalnost sinhronizacije.

  1. 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 (TGTAD) 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, Azure AD i dalje uključuje TGT_AD u PRT odgovoru.

  1. 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

Ovaj skript (ili ekvivalenti Impacket-a) će kontaktirati Kontroler domena i preuzeti važeći TGT za ciljni AD nalog, uključujući NTLM hash naloga ako se koristi posebna Kerberos ekstenzija. Ekstenzija KERB-KEY-LIST-REQ se automatski uključuje da zatraži od DC-a da vrati NTLM hash ciljnog naloga u enkriptovanom odgovoru. Rezultat je keš kredencijala (full_tgt.ccache) za ciljni nalog ili povučeni NTLM hash lozinke.

  1. Imitirati cilj i unaprediti se na administratora domena: Sada napadač efikasno kontroliše ciljni AD nalog. Na primer, ako je cilj bio AD Connect MSOL nalog, ima prava replikacije na direktorijumu. Napadač može izvršiti DCSync napad koristeći kredencijale tog naloga ili Kerberos TGT da izvuče hash lozinki iz AD (uključujući domen KRBTGT nalog). Na primer:
bash
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> LOCAL

Ovo izbacuje sve AD korisničke heš vrednosti lozinki, dajući napadaču KRBTGT heš (omogućavajući im da falsifikuju Kerberos karte domena po želji) i efektivno Domain Admin privilegije nad AD. Ako bi ciljni nalog bio neki drugi privilegovani korisnik, napadač bi mogao koristiti puni TGT za pristup bilo kojem resursu domena kao taj korisnik.

  1. Č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 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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks