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

в 10:37, , рубрики: udp2raw, Блог компании PentestIT, информационная безопасность, туннелирование трафика

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

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

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

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

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

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

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

Один сервер может обслуживать одновременно несколько клиентов, а один клиент несколько 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) или просто для шифрования трафика (AES-128-CBC) в режиме обычного UDP туннеля. В этом случае фейковые ICMP/TCP заголовки к пакетам добавляться не будут.

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

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

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

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

Для начала работы с 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, а так же ознакомиться с другими инструментами для туннелирования трафика: reGeorg, dnscat2, icmptunnel и другими.

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

Автор: antgorka

Источник

Поделиться

* - обязательные к заполнению поля