Экспертно

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

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

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

  1. Подключиться к целевой машине через RDP.
  2. Запустить rdp2tcp клиент на своей тачке.
  3. Запустить rdp2tcp сервер на целевой тачке.
  4. Добавить правило перенаправления трафика в специальном инструменте.

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

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

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

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

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, с помощью монтирования папки, и т.п., выбор за вами. После запуска сервера появятся подобные сообщения:

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

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

python2 rdp2tcp.py add socks5 127.0.0.1 1085

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