- PVSM.RU - https://www.pvsm.ru -
В данной статье речь пойдет про утилиту udp2raw, которая позволяет обходить межсетевые экраны, настроенные на блокировку протокола UDP, используя RAW сокеты, а также туннелировать любые другие протоколы при работе в связке с OpenVPN.
Официальный сайт инструмента: https://github.com/wangyu-/udp2raw-tunnel [1]
На нем же представлена схема работы утилиты
Их схемы становится ясно, что инструмент состоит из клиента и сервера, причем второй требуется разместить за межсетевым экраном. Другие утилиты для туннелирования трафика, как правило, требуют то же самое, например, 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 трафика. Схема работы представлена ниже
Для конкретно этого случая есть отдельная несложная инструкция [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, то ничего не выйдет
Тогда он может воспользоваться udp2raw, чтобы спрятать природу SNMP пакетов от межсетевого экрана, запустив на шлюзе
./udp2raw_amd64 -s -l 0.0.0.0:5555 -r 192.168.2.2:161 -a -k "snmptunnel" --raw-mode faketcp
И на Kali машине
./udp2raw_amd64 -c -l 0.0.0.0:4444 -r 192.168.1.5:5555 -a -k "snmptunnel" --raw-mode faketcp
Теперь злоумышленник может получать доступ к SNMP сервису удаленной машины через зашифрованный туннель так
При этом в Wireshark будет виден только TCP трафик
Если использовать ICMP заголовки, то в Wireshark мы увидим следующее
Если проверить трафик на стороне шлюза, то будет видно, что Windows машине отсылаются самые обыкновенные SNMP UDP пакеты
Дополнительно можно ускорить работу туннеля, используя 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
Нажмите здесь для печати.