Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.
Всем привет, в этой статье пойдет речь о способе туннелирования трафика через RDP-соединение. Такой способ может подойти для тех случаев, когда мы нашли машину с доступом в новые сегменты сети, к которой есть возможность подключиться по RDP, но мы не можем подключиться к серверу chisel или прокинуть meterpreter оболочку из-за ограничений фаерволла. Именно в таких ситуациях можно использовать инструмент rdp2tcp.
rdp2tcp - инструмент для туннелирования трафика и проброса портов через существующую RDP-сессию. Сама работа инструмента устроена следующим образом (оригинал):
Для создания полноценного туннеля нам необходимо:
Подключиться к целевой тачке через RDP.
Запустить rdp2tcp клиент на своей тачке.
Запустить rdp2tcp сервер на целевой тачке.
Добавить правило перенаправления трафика в специальном инструменте.
Разберем более подробно процесс компиляции и создания туннеля. Для начала скопируем репозиторий:
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 можно туннелировать трафик (главное не забыть изменить порт в конфиг-файле):
Заключение
В данной статье мы рассказали, как можно туннелировать трафик через RDP-соединение, по аналогии с SSH. С помощью rdp2tcp можно также прокидывать прямые (forward) и реверсивные (reverse) порты. Мы надеемся, что эта статья поможет вам в ситуациях, подобным описанной во вступлении.
Подписывайтесь на наш Telegram-канал https://t.me/giscyberteam