Az - PHS - Password Hash Sync
Basic Information
From the docs: Password hash synchronization is one of the sign-in methods used to accomplish hybrid identity. Azure AD Connect synchronizes a hash, of the hash, of a user's password from an on-premises Active Directory instance to a cloud-based Azure AD instance.
Це найпоширеніший метод, який використовують компанії для синхронізації локального AD з Azure AD.
Всі користувачі та хеш паролів синхронізуються з локального AD до Azure AD. Однак, паролі у відкритому тексті або оригінальні хеші не надсилаються до Azure AD. Крім того, вбудовані групи безпеки (як адміністратори домену...) не синхронізуються з Azure AD.
Синхронізація хешів відбувається кожні 2 хвилини. Однак, за замовчуванням, термін дії пароля та термін дії облікового запису не синхронізуються в Azure AD. Тому користувач, у якого термін дії пароля в локальному AD закінчився (не змінений), може продовжувати доступ до ресурсів Azure за допомогою старого пароля.
Коли локальний користувач хоче отримати доступ до ресурсу Azure, автентифікація відбувається в Azure AD.
PHS необхідний для таких функцій, як Identity Protection та AAD Domain Services.
Pivoting
Коли PHS налаштований, деякі привілейовані облікові записи автоматично створюються:
Обліковий запис
MSOL_<installationID>
автоматично створюється в локальному AD. Цей обліковий запис отримує роль Directory Synchronization Accounts (див. документацію), що означає, що він має права реплікації (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.
Ви можете знайти повний огляд того, як ці облікові дані зберігаються та розшифровуються в цій доповіді.
Finding the Azure AD connect server
Якщо сервер, де встановлено Azure AD connect, приєднаний до домену (рекомендовано в документації), його можна знайти за допомогою:
Зловживання MSOL_*
You can also use adconnectdump to obtain these credentials.
Використання Sync_*
Компрометуючи обліковий запис Sync_*
, можливо скинути пароль будь-якого користувача (включаючи Global Administrators)
Також можливо змінювати паролі лише хмарних користувачів (навіть якщо це неочікувано)
Також можливо витягнути пароль цього користувача.
Інший варіант - призначити привілейовані дозволи для сервісного принципала, що користувач Sync має дозволи зробити, а потім отримати доступ до цього сервісного принципала як спосіб підвищення привілеїв.
Seamless SSO
Можливо використовувати Seamless SSO з PHS, що є вразливим до інших зловживань. Перевірте це в:
Az - Seamless SSOReferences
Last updated