Данная статья является первой из трех, которые будут рассказывать об инструментах, которые используются для тестирования внутренней инфраструктуры Windows Active Directory. Во всех тестовых сценариях подразумевается, что уже есть доступ во внутреннюю инфраструктуру и в ней есть активные пользователи, которые пользуются сервисами Windows AD, такими как файловые шары, центры сертификации, веб-приложения и т.д.

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

Описание атаки

Атаки на повторение, представляют собой пласт возможных действий, которые позволяют атакующему использовать несовершенство сетевых и криптографических протоколов для получения доступа к ресурсам инфраструктуры. В системе Windows Active Directory существует 2 вида атак на повторение:

  • атаки на механизм аутентификации NTLM;

  • атаки на механизм аутентификации Kerberos.

Почему эти атаки возможны? Ответ достаточно прост, механизмы, которые используются для аутентификации не предусматривают механизмов проверки того кто отправил сообщения для инициализации процесса аутентификации. Поэтому для проведения атаки достаточно просто повторить данные, которые предоставлялись легитимным пользователем.

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

Через атаку на повторение можно добиться разных результатов среди них:

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

  • дамп данных из локальных и удаленных хранилищ хэшей;

  • выполнение команды на сервере;

  • выпуск данных для аутентификации.

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

Взято отсюда.

Попробуем воспользоваться инструкциями из картинки.

Инструменты и стенд

Стенд будет состоять из сервера Windows 2019, машины Windows 10 и Kali Linux, на них будет разворачиваться мини инфраструктура, которая будет включать те неверные конфигурации, которые позволяют производить атаки на повторение. На всех серверах разворачивается домен LAB.LOCAL.

Стенд SMB->SMB:

  • Windows Server 2019 — контроллер домена;

  • Windows 10 участник домена;

  • Kali Linux.

Все машины включены в локальную сеть. Первый «классический» пример атаки требует выполнения следующих условий:

  1. Есть broadcast трафик, который будет доступен в сети. Чаще всего это LLMR и Netbios.

  2. Наличие сервисов, которые используют механизм аутентификации NTLM и в сообщениях механизма не включена валидация целостности.

  3. Пользователь должен быть локальным администратором на машине.

Настроим стенд:

  1. Windows Server.

    • настроить достаточно просто — выбираем Active Directory Services в меню Add Roles and Features;

    • создаем 2х пользователей — testUser1, testUser2;

    • используя команду net localgroup Administrators testUser2 /add добавляем пользователя;

    • создаем smb шару для взаимодействий.

  2. Windows 10 — как раз рабочая машина пользователя testUser2, поэтому ее нужно ввести в домен и выполнять доступ в шару.

Набор инструментов для тестирования(указан избыточно, можно использовать только наиболее удобные):

  • WireShark;

  • tcpdump;

  • Responder;

  • impacket;

  • crackmapexec;

  • nmap.

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

1. Проверить наличие трафика мультикаст и бродкаст запросов. Сделать это можно через Wireshark, tcpdump или через Responder:

Запускаем анализ:

Результат анализа — мы видим необхоимый для атаки трафик:

Нужно помнить, что Responder необходимо включать в режиме мониторинга, иначе присутствие в сети может нарушить работу сервисов и мы просто потратим зря время.

В Wireshark нужно использовать фильтр  llmnr || netbios:

Примечание: в нашем тестовом сценарии только 3 машины и поэтому трафик можно мониторить и через GUI версию WireShark, однако, если это будет огромная сеть, то стоит сделать тоже самое через tshark или tcpdump.

2. Выяснить, работает ли механизм проверки целостности. Для этого можно воспользоваться несколькими инструментами, ниже приведены примеры того как это можно сделать.

Через nmap можно воспользоваться скриптами smb2-security-mode и smb-security-mode:

Для smb1:

Для более новых версий:

Так же можно собрать данные через crackmapexec, выполняется это через флаг smb модуля --gen-relay-list:

Теперь есть список хостов, которые можно использовать для проведения атаки.

Для непосредественной атаки запускаем 2 инструмента: Responder с отключенными серверами http и smb, и ntlmrelayx.py

Запускаем ntlmrelayx:

Так же включаем Responder:

Ждем взаимодействий пользователя в сети и получаем дамп Sam хэшей:

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

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

Set-SmbServerConfiguration -RequireSecuritySignature $True -EnableSecuritySignature $True -EncryptData $True -Confirm:$false

В следующей статье попробуем провести атаки на повторение, если включены механизмы проверки целостности.


Статья написана Александром Колесниковым в рамках курса OTUS «Пентест. Практика тестирования на проникновение». Всех желающих приглашаем на открытый урок «Инструменты для взаимодействия с инфраструктурой Windows AD» 17 марта. На занятии рассмотрим, как работают инструменты Bloodhound и Rubeus, а также протестируем известные мисконфигурации. Для развертывания стенда будут предоставлены скрипты на первом занятии. Присоединяйтесь.

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