Туннелирование трафика через RDP-соединение

Данная статья представлена исключительно в образовательных целях. Red Team сообщество «GISCYBERTEAM» не несёт ответственности за любые последствия ее использования третьими лицами.

Всем привет, в этой статье пойдет речь о способе туннелирования трафика через RPD-соединение. Такой способ может подойти для тех случаев, когда мы нашли машину с доступом в новые сегменты сети, к которой есть возможность подключиться по RDP, но мы не можем подключиться к серверу chisel или прокинуть meterpreter оболочку из-за ограничений фаерволла. Именно в таких ситуациях можно использовать инструмент rdp2tcp.

rdp2tcp — инструмент для туннелирования трафика и проброса портов через существующую RDP-сессию. Сама работа инструмента устроена следующим образом (оригинал):

e30379b6b1d17b556cbe7a7da27246dd.png

Для создания полноценного туннеля нам необходимо:

  1. Подключиться к целевой тачке через RDP.

  2. Запустить rdp2tcp клиент на своей тачке.

  3. Запустить rdp2tcp сервер на целевой тачке.

  4. Добавить правило перенаправления трафика в специальном инструменте.

Разберем более подробно процесс компиляции и создания туннеля. Для начала скопируем репозиторий:

git clone https://github.com/V-E-O/rdp2tcp.git

Перед самой компиляции необходимо поправить файл с инструкцией для компиляции сервера под Windows. Если взглянуть на файл Makefile.mingw32 в каталоге server, мы увидим на второй строчке компилятор, который будет использоваться для сборки бинарного файла:

9294f5673e017a4bdc7a0a0f744fc7f7.png

Нужно изменить эту строчку с именем компилятора для нужной архитектуры. Если у вас нет компилятора — можете установить его следующим образом:

sudo apt install mingw-w64

После этого установятся разные версии под любые архитектуры. Для компиляции под x86_64 достаточно изменить значение на второй строчке на x86_64-w64-mingw32-gcc.

После этого достаточно в корневом каталоге репозитория написать:

sudo make

Теперь у нас должны скомпилироваться сервер и клиент, которые необходимы для обмена данными (см. картинку выше).

Следующим шагом будет подключение по RDP к целевой машине. Можно использовать как rdesktop, так и xfreerdp. Рассмотрим на примере подключения через xfreerdp:

xfreerdp /v:target_ip /u:user /p:pass /rdp2tcp:~/tools/rdp2tcp/client/rdp2tcp

Здесь в параметре rdp2tcp указывается путь до клиентского бинаря. Следующим шагом будет запуск сервера на целевой машине. Его можно передать через drag-n-drop, с помощью монтирования папки, и т.п., выбор за вами. После запуска сервера появятся подобные сообщения:

af70b4b375710a1a5f4ca46a89ab3d24.png

Последнее, что остается сделать — это добавить правило для перенаправления трафика. Для этого в каталоге tools в репозитории есть питоновский скрипт:

cc9077cee80927232d27f81e4f89f806.png

С помощью этого скрипта можно прокидывать порты или организовывать полноценные туннели. Для socks5-туннеля достаточно написать следующее:

python2 rdp2tcp.py add socks5 127.0.0.1 1085

Теперь с помощью proxychains можно туннелировать трафик (главное не забыть изменить порт в конфиг-файле):

5308795e69f2b7ea6b85204a3dc50340.png

Заключение

В данной статье мы рассказали, как можно туннелировать трафик через RDP-соединение, по аналогии с SSH. С помощью rdp2tcp можно также прокидывать прямые (forward) и реверсивные (reverse) порты. Мы надеемся, что эта статья поможет вам в ситуациях, подобным описанной во вступлении.

Подписывайтесь на наш Telegram-канал https://t.me/giscyberteam

© Habrahabr.ru