- PVSM.RU - https://www.pvsm.ru -

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 1

В данной статье речь пойдет про утилиту udp2raw, которая позволяет обходить межсетевые экраны, настроенные на блокировку протокола UDP, используя RAW сокеты, а также туннелировать любые другие протоколы при работе в связке с OpenVPN.

Обзор возможностей

Официальный сайт инструмента: https://github.com/wangyu-/udp2raw-tunnel [1]

На нем же представлена схема работы утилиты

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 2

Их схемы становится ясно, что инструмент состоит из клиента и сервера, причем второй требуется разместить за межсетевым экраном. Другие утилиты для туннелирования трафика, как правило, требуют то же самое, например, reGeorg, работа которой описана в другой моей статье на defcon.ru [2].

Один сервер может обслуживать одновременно несколько клиентов, а один клиент несколько UDP соединений через один RAW сокет.

Вы можете использовать udp2raw как для Linux (включая Android, OpenWRT, Raspberry PI) с правами root, так и для Windows и MacOS, правда, в довольно специфическом виде — в виде образа виртуальной машины. Но образ виртуальной машины занимает всего 4.4 МБ, так что это вполне применимо.

В базовом виде udp2raw может добавлять фейковые ICMP/TCP заголовки к сетевым пакетам, тем самым заставляя межсетевой экран считать их пакетами соответствующих сетевых протоколов, а не UDP.

В режиме FakeTCP, udp2raw симулируем трехсторонний TCP handshake при установке соединения и затем поддерживает корректную установку SYN/ACK флагов непосредственно при передаче данных.

udp2raw может использоваться и как вспомогательный инструмент для стабилизации соединения, защиты от replay атаки (anti-replay window [3]) или просто для шифрования трафика (AES-128-CBC) в режиме обычного UDP туннеля. В этом случае фейковые ICMP/TCP заголовки к пакетам добавляться не будут.

Так же возможно использование udp2raw в связке с OpenVPN, что позволяет использовать udp2raw для туннелирования не только UDP трафика. Схема работы представлена ниже

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 3

Для конкретно этого случая есть отдельная несложная инструкция [4] на гитхабе разработчика.

Практический пример

Для начала работы с udp2raw в Linux скачиваем архив с github

wget https://github.com/wangyu-/udp2raw-tunnel/releases/download/20170826.0/udp2raw_binaries.tar.gz

и распаковываем

root@kalix64:~/tunneling/udp2raw# tar -xvzf udp2raw_binaries.tar.gz 
udp2raw_amd64
udp2raw_mips34kc
udp2raw_arm
udp2raw_amd64_hw_aes
udp2raw_arm_asm_aes
udp2raw_mips34kc_asm_aes
udp2raw_x86
udp2raw_x86_asm_aes

Клиент и сервер представляют из себя одно и то же приложение. Различаться будут только ключи при запуске

usage:
run as client : ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port  [options]
run as server : ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port  [options]

Предположим, что в сети есть Windows машина с активированным SNMP сервисом и шлюз, блокирующий UDP пакеты, но разрешающий TCP доступ к Windows машине.
Злоумышленнику удалось получить доступ со своей Kali Linux машины к шлюзу и разместить там udp2raw сервер. Если злоумышленник попытается напрямую подключиться к Windows машине на UDP порт 161, то ничего не выйдет

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 4

Тогда он может воспользоваться udp2raw, чтобы спрятать природу SNMP пакетов от межсетевого экрана, запустив на шлюзе

./udp2raw_amd64 -s -l 0.0.0.0:5555 -r 192.168.2.2:161  -a -k "snmptunnel" --raw-mode faketcp

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 5

И на Kali машине

./udp2raw_amd64 -c -l 0.0.0.0:4444  -r 192.168.1.5:5555 -a -k "snmptunnel" --raw-mode faketcp

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 6

Теперь злоумышленник может получать доступ к SNMP сервису удаленной машины через зашифрованный туннель так

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 7

При этом в Wireshark будет виден только TCP трафик

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 8

Если использовать ICMP заголовки, то в Wireshark мы увидим следующее

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 9

Если проверить трафик на стороне шлюза, то будет видно, что Windows машине отсылаются самые обыкновенные SNMP UDP пакеты

Маскировка UDP трафика в TCP-ICMP при помощи udp2raw - 10

В заключении

Дополнительно можно ускорить работу туннеля, используя kcptun [5], а так же ознакомиться с другими инструментами для туннелирования трафика: reGeorg [6], dnscat2 [7], icmptunnel [8] и другими.

В случае использования udp2raw злоумышленником, подобные аномалии в корпоративной сети могут быть обнаружены при помощи IDS, IPS и DPI систем обеспечения сетевой безопасности.

Автор: antgorka

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/263124

Ссылки в тексте:

[1] https://github.com/wangyu-/udp2raw-tunnel: https://github.com/wangyu-/udp2raw-tunnel

[2] описана в другой моей статье на defcon.ru: https://defcon.ru/network-security/3789/

[3] anti-replay window: https://en.wikipedia.org/wiki/Anti-replay

[4] инструкция: https://github.com/wangyu-/udp2raw-tunnel/blob/master/doc/openvpn_guide.md

[5] kcptun: https://github.com/xtaci/kcptun

[6] reGeorg: https://github.com/sensepost/reGeorg

[7] dnscat2: https://github.com/iagox86/dnscat2

[8] icmptunnel: https://github.com/DhavalKapil/icmptunnel

[9] Источник: https://habrahabr.ru/post/336900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best