Автор статьи: Александр Колесников
Статья подготовлена в преддверии старта курса: «Пентест. Практика тестирования на проникновение».
В этом цикле статей попробуем воспроизвести максимальное количество Relay атак на инфраструктуру Windows. Рассмотрим настройку инфраструктуры, ее состав и версии Windows.
По сути это означает, что можно передавать вообще любую информацию от имени клиента в сторону сервера и наоборот. Поэтому атакующему не составляет труда через себя пропускать запросы для аутентификации без изменений и добиваться идеальных условий для проведения атаки Relay.
Инфраструктуры под управлением операционной системы Windows могут быть уязвимы для такого рода атак но, чтобы их провести, злоумышленник должен попасть в локальную сеть.
В наших статьях мы будем подразумевать, что у злоумышленника уже получилось попасть в локальную сеть и теперь ему необходимо повысить свои привилегии или собрать больше информации о системе. Для этого он будет стараться использовать Relay атаки.
Есть ли ограничения у атак Relay? На самом деле Relay включает в себя целый набор атак, целью этих атак могут быть различные действия и сборы дополнительных данных. Однако, чтобы научиться их применять правильно, нужно понимать, какие существуют возможности.
Первый пункт, который нужно знать - это какие существуют протоколы в инфраструктуре, на которые можно устроить Relay. В сети можно найти достаточно интересные диаграммы, где показывается какие протоколы куда можно направлять. Несколько примеров картинок представлено ниже:
ntlm_rezume
Красным выделены пересечения протоколов, которые Windows не позволит выполнить Relay, а зеленые - это те протоколы, которые дают шанс атаке на успех. Почему всё так не точно? Каждый выпуск KB может ломать закономерности, поэтому нужно на каждой конкретной версии Windows проверять те данные, которые расположены на картинке.
Также в сети можно найти вот такую картинку относительно возможных протоколов для проведения Relay:
ntlm_relay
Итого, имеем набор примерных границ, где должен работать Relay, теперь попробуем сделать несколько тестов.
Для настройки стенда нам понадобится:
Итого машин будет 4:
Ниже будут приведены команды для настройки каждого сервера с комментариями.
Для первого сервера напираем последовательно команды из списка ниже:
Все команды должны позволить установить необходимые настройки на сервер для создания контроллера домена. В командах указаны данные для имени сервера и домена, их можно заменить на те, которые хотите использовать вы.
Далее необходимо зайти на каждый из оставшихся 2 сервером и прописать следующие данные:
sconfig
Наименования меню можно выбирать по соответствующим номерам из списка, после введения данных, у вас будет готова мини инфраструктура для тестирования Relay атак. Дальнейшие настройки для проведения атак будем рассматривать в рамках проведения атаки. первая часть описания будет показывать что нужно настроить, если стандартная настройка не будет позволять выполнить атаку.
Так как системой для атаки будет настроена Ubuntu, поэтому стоит поставить в систему следующие инструменты:
Любая атака Relay начинается со сбора данных о системах, которые работают в сети. Сбор можно выполнить проще всего с помощью инструмента cme:
Полученный список данных можно использовать для самого простого способа Relay SMB->SMB. Теперь попробуем провести атаку Relay.
Кстати, для того чтобы атака смогла выполнить полезную нагрузку, нужно чтобы пользователь захотел что-то отправить на сервер, иначе никаких Relay действий произвести не получится, поэтому нужно чтобы пользователи начинали выполнять работу с сетевыми шарами (в случае работы с SMB).
Дальше нужно с машин в стенде открыть доступ к нашей системе, то есть системе, где установлен Ubuntu. Вообще для этих целей можно и нужно пользоваться различными ухищрениями, чтобы пользователю нужно было делать поменьше действий, но об этом будем говорить в следующей части статьи.
Результат атаки можно увидеть ниже:
smb->smb
В последующих частях попробуем провести атаку без взаимодействия пользователя с системой атакующего и исследуем Relay для HTTP и LDAP протокола.
Статья подготовлена в преддверии старта курса: «Пентест. Практика тестирования на проникновение».
В этом цикле статей попробуем воспроизвести максимальное количество Relay атак на инфраструктуру Windows. Рассмотрим настройку инфраструктуры, ее состав и версии Windows.
Relay
Лучшее описание этого термина, это описание ситуации, когда он может быть применен. Relay - это атака, в которой злоумышленник смог провести систему и создал условия man-in-the-middle атаки, когда он может контролировать трафик между клиентом и сервером.По сути это означает, что можно передавать вообще любую информацию от имени клиента в сторону сервера и наоборот. Поэтому атакующему не составляет труда через себя пропускать запросы для аутентификации без изменений и добиваться идеальных условий для проведения атаки Relay.
Инфраструктуры под управлением операционной системы Windows могут быть уязвимы для такого рода атак но, чтобы их провести, злоумышленник должен попасть в локальную сеть.
В наших статьях мы будем подразумевать, что у злоумышленника уже получилось попасть в локальную сеть и теперь ему необходимо повысить свои привилегии или собрать больше информации о системе. Для этого он будет стараться использовать Relay атаки.
Есть ли ограничения у атак Relay? На самом деле Relay включает в себя целый набор атак, целью этих атак могут быть различные действия и сборы дополнительных данных. Однако, чтобы научиться их применять правильно, нужно понимать, какие существуют возможности.
Первый пункт, который нужно знать - это какие существуют протоколы в инфраструктуре, на которые можно устроить Relay. В сети можно найти достаточно интересные диаграммы, где показывается какие протоколы куда можно направлять. Несколько примеров картинок представлено ниже:
ntlm_rezume
Красным выделены пересечения протоколов, которые Windows не позволит выполнить Relay, а зеленые - это те протоколы, которые дают шанс атаке на успех. Почему всё так не точно? Каждый выпуск KB может ломать закономерности, поэтому нужно на каждой конкретной версии Windows проверять те данные, которые расположены на картинке.
Также в сети можно найти вот такую картинку относительно возможных протоколов для проведения Relay:
ntlm_relay
Итого, имеем набор примерных границ, где должен работать Relay, теперь попробуем сделать несколько тестов.
Настройка стенда
Не всегда возможно настраивать машины в облаке, где нет лимита на вычислительные возможности. Поэтому будем стараться оптимизировать стенд для работы с Relay атаками под систему, где есть от 400 Гб свободного места на жестком диске и 8 Гб оперативной памяти.Для настройки стенда нам понадобится:
- Virtual Box или аналогичная система виртуализации
- Набор образов ОС (найти можно так же в сети)
Итого машин будет 4:
Kali Linuxоказалась чересчур прожорливой, поэтому можно просто взять Ubuntu Server и поставить весь необходимый софт. Займет намного меньше места, а при запуске можно ставить хоть 512 Мб оперативной памяти, на скорости работы не повлияет.- Windows Server 2016 Core - контроллер домена relay.lab
- WIndows Server Core 2016 - просто добавлен в домен Relay.lab
- Windows Server Core 2016 - просто добавлен в домен Relay.lab
Ниже будут приведены команды для настройки каждого сервера с комментариями.
Для первого сервера напираем последовательно команды из списка ниже:
Код:
Rename-computer -newname DC1
$ipaddress = "192.168.56.100"
New-NetIPAddress -InterfaceAlias Ethernet -IPAddress $ipaddress -AddressFamily IPv4 -PrefixLength 24
Restart-Computer
Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
Install-ADDSForest -DomainName "relay.local" -CreateDNSDelegation:$False -DomainMode Win2012R2 -ForestMode Win2012R2 -DomainNetbiosName RELAY -InstallDns:$True -DatabasePath "C:\NTDS" -SysvolPath "C:\SYSVOL" -LogPath "C:\Logs"
Далее необходимо зайти на каждый из оставшихся 2 сервером и прописать следующие данные:
- Имя компьютера
- DNS сервер, им будет первый сервер, который мы сделали контроллером домена.
- Ввести сервера в домен
sconfig
Наименования меню можно выбирать по соответствующим номерам из списка, после введения данных, у вас будет готова мини инфраструктура для тестирования Relay атак. Дальнейшие настройки для проведения атак будем рассматривать в рамках проведения атаки. первая часть описания будет показывать что нужно настроить, если стандартная настройка не будет позволять выполнить атаку.
Набор атак
Определимся с полным списком атак, которые возможны для Relay. В нашей статье будем придерживаться классификации, в основе которой располагаются действия, которые позволяет выполнить Relay.- Dump Credentials
- Relay to SOCKS
- Active Directory Enumiration
- New computer create
- Privilege Escalation
- Delegation
- DCSync
Dump Credentials
Атака, которая подразумевает, что будет произведена команда, которая заставит удаленно скопировать данные пользователей из хранилища ОС. Такой дамп вызывается через сервис, который обслуживает доступ к реестру внутри системы.Так как системой для атаки будет настроена Ubuntu, поэтому стоит поставить в систему следующие инструменты:
- impacket
- Crack Map Exec (cme)
Любая атака Relay начинается со сбора данных о системах, которые работают в сети. Сбор можно выполнить проще всего с помощью инструмента cme:
Код:
cme smb 192.168.56.1/24
Кстати, для того чтобы атака смогла выполнить полезную нагрузку, нужно чтобы пользователь захотел что-то отправить на сервер, иначе никаких Relay действий произвести не получится, поэтому нужно чтобы пользователи начинали выполнять работу с сетевыми шарами (в случае работы с SMB).
Код:
ntlmrelayx.py -t smb://$TARGET -smb2support
Результат атаки можно увидеть ниже:
smb->smb
В последующих частях попробуем провести атаку без взаимодействия пользователя с системой атакующего и исследуем Relay для HTTP и LDAP протокола.