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

Relay атаки без пользовательского взаимодействия

В классической атаке Relay всегда требуется, чтобы первичное взаимодействие было начато клиентом или сервером, а атакующий уже использует эти данные для проведения атаки. Однако, взаимодействие между интересными системами не всегда возможно. Поэтому для проведения атаки могут быть использованы некоторые уловки. Ниже приведем несколько примеров.

Принудительная аутентификация

В инфраструктуре Windows AD возможны несколько схем проведения аутентификации:

  1. Аутентификация, которая начинается по запросу клиента к серверу. В этом случае клиент пытается получить доступ к данным на сервере и NTLM SSP начинает процедуру автоматически.

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

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

Основной сложностью метода является поиск функций операционной системы, которые могут предоставить возможность работать именно со вторым алгоритмом. На момент написания статьи известны как минимум 15 методов, которые проверены и работают по второму алгоритму, а порядка 240 методов еще необходимо протестировать на разных версиях ОС.

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

Стандартный набор параметров для запуска инструмента Coercer:

Coercer.py -coerce -l listen.ip.add.res.ss -t server.ip.address -u 'username' -p 'password' -d 'domain'

При работе инструмента адрес, который указан после флага l будет получать запросы, которые генерирует клиент.

mitm6

Достаточно древний метод, отличается от Coerced метода абсолютно всем с точки зрения реализации, и требует, чтобы на системах Windows был включен интерфейс IPv6, но не использовался для сетевого взаимодействия. Так же метод можно отнести к очень медленным, так как в инфраструктуре должны произойти процессы запроса dns сервера домена. Это может происходить в промежутке от 15 минут до получаса. Поэтому проведение такой атаки может потребовать достаточно много времени. Но результат позволяет произвести relay и собрать данные о домене.

Выполняется этот метод с помощью инструмента mitm6. инструмент из коробки позволяет взаимодействовать со скриптами пакета impcaket, поэтому ntlmrelayx можно запускать параллельно и атака будет выполняться совместно с mitm6.

Стандартный набор параметров для команды выглядит так:

mitm6.py -i active_interface -d domain.name --ignore-nofqdn

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

Практика

Реализуем атаку mitm6, для этого на сервере атакующего запустим команды в двух терминалах:

И вторую команду для начала mitm6 атаки:

Ждем, пока произойдет обращение к DNS и нас ждет вот такой вывод в терминале ntlmrelayx:

Теперь попробуем провести атаку через принудительную аутентификацию. Для этого нужно запустить ntlmrelayx:

Запускаем аутентификацию:

Получаем снова доступ к домену и успешную Relay атаку:

Таким образом можно проводить Relay атаки без взаимодействия с пользователем, всё, что нужно знать это адрес контроллера домена и, для лучшего результата, хотя бы логин и пароль от обычного пользователя.

Potatos

Пожалуй, самыми популярными и успешными случаями использования Relay атак это набор эксплойтов, который получил название Potatos. Именно принцип атак Relay используется в них в качестве основной техники получения повышенных привилегий. Правда в каждом отдельном эксплойте используется дополнительная модификация, которая должна запутать систему или использовать её недостаток.

Последними эксплойтами в набор Potatos являются:

Разберем их по порядку.

Local Potato

Этот эксплойт позволяет повышать привилегии в системе до любого пользователя, но обычно в качестве целевого используют пользователя System. Уязвимость на момент написания статьи получила идентификатор CVE-2023-21746, и, конечно же в последних версиях Windows должна быть уже исправлена.

Исходный код эксплойта можно найти у автора в репозитории - Local Potato. Данная "картошка" основана на уязвимости протокола NTLM, уязвимость является логической и состоит в том, что при локальной аутентификации по NTLM протоколу, механизм аутентификации использует специальные сообщения. Исследователи нашли способ при котором они могут запутать механизм аутентификации, создав клиент-серверное взаимодействие на локальной системе. Основным полем для триггера уязвимости является параметр Reserved в пакете протокола NTLM. Это поле получает специальное значение при локальной аутентификации.

Так как взаимодействие, где обнаружилась уязвимость было организовано по протоколу SMB, то результатом успешной эксплуатации является возможность чтения/записи в любую директорию системы, которая принадлежит пользователю, чей токен будет украден по результатам работы эксплойта.

Чтобы атака была наиболее универсальна для этого используют объекты COM, которые регистрируются системными сервисами, и на основе обращения к ним заставляют систему от имени пользователя System начать аутентификацию со своим клиентом, который развернут локально в системе. Результатом атаки является запись файла в произвольную директорию.

На момент написания статьи для операционных систем без патча, возможно запустить эксплойт за счет следующих COM объектов:

  • CLSID: {90F18417-F0F1-484E-9D3C-59DCEEE5DBD8} - Windows 10/11

  • CLSID: {854A20FB-2D44-457D-992F-EF13785D2B51} - Windows 10/11 и Windows Server 2016/2019/2022

  • CLSID: {A9819296-E5B3-4E67-8226-5E72CE9E1FB7} - Windows 11 и Windows Server 2022

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

Ниже можно видеть успешную эксплуатацию уязвимости:

В данном случае эксплойт позволил переписать файл, который располагается в дочерней директории System32. Здесь стоит сделать ремарку, что такая перезапись возможна только если файл принадлежит пользователю из-под которого было начато взаимодействие, эксплойт, по-умолчанию, это делает из-под System пользователя. В Windows 10/11 этот пользователь не владеет системными файлами, которые есть в директории System32, но есть исключения, файл PrinterConfig, который используется print spooler сервисом доступен пользователю System, поэтому для общего доступа в систему с правами System можно его перезаписать и запустить печать в системе. Эскалация привилегий при этом завершится успешно.

God Potato

На момент написания статьи самый последний эксплойт, который вышел в семействе "картошек". В основе этого эксплойта лежит несколько условий и "несовершенств" механизмов взаимодействия в ОС.

Первая особенность - для успешной эксплуатации уязвимости необходимо, чтобы пользователь имел 'ImpersonatePrivilege' привилегию. Эта привилегия известна тем, что можно выполнять подмену Primary токена, в системе, и тем самым выступать в роли некоторых пользователей.

Вторая особенность - механизм работы подсистемы DCOM. Полный перечень действий конечно же можно найти в исходном коде. По факту уязвимость состоит в том, что сервис rpcss при взаимодействии с oxid содержит недостаток, который можно использовать для форсированной аутентификации от имени пользователя System.

По заверению автора, эксплойт работает на системах от Windows 8 до Windows 11. Эксплойт как и прежде использует заранее найденные объекты подсистемы DCOM, для того чтобы инициировать взаимодействие и подменить токен процесса.

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

Напомню, что данная серия статей подготовлена в преддверии старта курса: «Пентест. Практика тестирования на проникновение».

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