Протокол удаленного рабочего стола (RDP) широко используется во внутренних сетях администраторами. Это позволяет администраторам и администраторам систем дистанционно управлять средами Windows. Однако RDP может дать различные возможности атакующему для проведения атак, которые могут использоваться для бокового перемещения в сценариях красной команды. Атаки ниже могут позволить красной команде получить учетные данные, захватить сеансы RDP других пользователей и выполнить произвольный код для удаленных систем, которые будут использовать RDP в качестве механизма аутентификации для зараженных рабочих станций.
RDP Man-in-the-Middle
Внедрение атаки «Человек-в-середине» часто может привести к захвату учетных данных. Выполнение этой атаки на сеансы RDP позволит злоумышленнику тривиально получить пароль открытого текста учетной записи домена для целей бокового перемещения. Seth - это инструмент, который может автоматизировать атаки RDP Man-in-the-middle независимо от того, включена ли аутентификация уровня сети (NLA). Для реализации этой атаки требуются четыре параметра:
- Интерфейс Ethernet
- IP атакующего
- IP-адрес рабочей станции-жертвы (клиента)
- IP целевого RDP хоста (сервера)
1
| ./seth.sh eth 0 10.0 . 0.2 10.0 . 0.3 10.0 . 0.1 |
После выполнения инструмент выполнит на заднем плане ряд шагов, чтобы убедиться, что атака будет успешно выполнена. Эти шаги:
- Подмена ответов ARP
- Включить пересылку трафика IPv4 для перенаправления трафика с хоста-жертвы на машину злоумышленника, а затем на целевой RDP-сервер.
- Настройте правило iptable для отклонения пакета SYN для предотвращения прямой проверки подлинности RDP.
- Захват SYN-пакета хоста назначения.
- Клон сертификата SSL.
- Переконфигурируйте правила iptables для маршрутизации трафика с рабочей станции-жертвы на целевой хост RDP.
- Блокируйте трафик на порт 88, чтобы обновить аутентификацию Kerberos до NTLM.
Шаги 1-3 будут выполняться до аутентификации жертвы. Пользователь, который попытается выполнить аутентификацию через RDP на целевой сервер, будет представлен следующим сообщением:
Когда пользователь установит соединение, учетные данные будут отображаться в текстовом виде злоумышленнику.
Создание RDP
MDSec обнаружил технику, которая позволяет злоумышленнику выполнять боковое перемещение внутри сети, выполняя произвольный код при запуске и распространяясь через cоединения RDP. Чтобы облегчить эту атаку, MDSec разработала пакетный скрипт для реализации доказательства концепции и сценария кобальтового удара. Выполнение пакетного скрипта на рабочей станции, которое уже получил доступ злоумышленник, будет результатом оболочки.
Если пользователь с повышенными правами (администратор или администратор домена) пытается аутентифицироваться через RDP с уже зараженным хостом, пакетный скрипт будет скопирован и в системе другого пользователя.
Пакетный скрипт будет выполняться каждый раз, когда рабочая станция запускается, чтобы добиться настойчивости.
Когда повышенный пользователь, прошедший проверку подлинности через RDP с зараженным хостом, перезагрузит свою машину, код будет выполнен.
Новый сеанс Meterpreter откроется, однако на этот раз на хосте администратора, злоупотребляя службой RDP и без необходимости атаковать эту систему напрямую.
Список активных сеансов Meterpreter будет проверять, имеет ли доступ злоумышленник в обеих системах.
Удар по сеансу RDP
В случае получения доступа локального администратора в целевой системе злоумышленник может захватить RDP-сеанс другого пользователя. Это устраняет необходимость обнаружения злоумышленником учетных данных этого пользователя. Этот метод был первоначально обнаружен Александром Корзниковым, и это было описано в его блоге .
Список доступных сеансов, которые можно использовать, можно получить из диспетчера задач Windows на вкладке « Пользователи ».
Та же информация может быть получена из командной строки.
1
| query user |
Создание службы, которая будет выполнять tscon с правами системного уровня, приведет к захвату сеанса, который имеет 3 в качестве идентификатора.
1
2
| sc create sesshijack binpath= "cmd.exe /k tscon 3 /dest:rdp-tcp#0" net start sesshijack |
При запуске службы пользователь « test » может использовать сеанс netbiosX, не зная его пароля.
Mimikatz также поддерживает эту технику. Первый шаг - получить список сеансов служб терминалов.
1
| ts::sessions |
Попытки использовать сеанс 1 напрямую не сработают, поскольку Mimikatz не был выполнен как SYSTEM. Поэтому следующие команды повысят токен от локального администратора до SYSTEM, чтобы использовать другой сеанс без необходимости знать пароль пользователя.
1
2
3
| ts::remote /id: 1 privilege::debug token::elevate |
При повторном выполнении следующей команды будет захвачен сеанс пользователя netbiosX.
1
| ts::remote /id: 1 |
Комментарии
Отправить комментарий