
Перенаправление (определенного) TCP, UDP и ICMP трафика на другой адрес назначения.
StreamDivert — это инструмент для man-in-the-middle или ретрансляции входящих и исходящих сетевых соединений в системе. Он позволяет, например, ретранслировать все входящие SMB-соединения на порт 445 на другой сервер или ретранслировать только определённые входящие SMB-соединения с конкретного набора исходных IP-адресов на другой сервер. Вкратце, StreamDivert способен:
Предварительно скомпилированные бинарные файлы для StreamDivert можно скачать здесь.
Как использовать StreamDivert? Запустите инструмент с правами администратора:
streamdivert.exe config_file [-f] [-v]
Конфигурационный файл содержит записи для потоков, которые вы хотите перенаправлять. Пример конфигурационного файла:
//Divert all inbound TCP connections to port 445 (SMB) coming from 10.0.1.50 to 10.0.1.49 port 445
tcp < 445 10.0.1.50 -> 10.0.1.49 445
//Divert all inbound TCP connections to port 445 (SMB) coming from 10.0.1.51 to a local SOCKS server
tcp < 445 10.0.1.51 -> socks
//Divert all inbound TCP connections to port 445 (SMB) coming from fe80::f477:846a:775d:d37 to fe80::20c:29ff:fe6f:88ff port 445
tcp < 445 fe80::f477:846a:775d:d37 -> fe80::20c:29ff:fe6f:88ff 445
//Divert all inbound TCP connections to port 445 (SMB) to 10.0.1.48 port 445
tcp < 445 0.0.0.0 -> 10.0.1.48 445
//Divert all inbound UDP connections to to port 53 (DNS) to 10.0.1.49 port 53
udp < 53 0.0.0.0 -> 10.0.1.49 53
//Divert all inbound ICMP packets coming from 10.0.1.50 to 10.0.1.49
icmp < 10.0.1.50 -> 10.0.1.49
//Divert all outbound TCP connections to 10.0.1.50, port 80 to 10.0.1.49 port 8080
tcp > 10.0.1.50 80 -> 10.0.1.49 8080
//Send all packets going to 10.0.1.50 port 80 and prefer interface 9 to send them. If the interface does not exist or is not up, the packets are send from the default interface.
tcp > 10.0.1.50 80 -> 10.0.1.50 80 interface 9
//Force all packets going to 10.0.1.50 port 80 over interface 9, or drop the packets if the interface does not exist or is not up.
tcp > 10.0.1.50 80 -> 10.0.1.50 80 force interface 9
//Divert all outbound UDP connection to port 53 (DNS) to 10.0.1.49 port 53
udp > 0.0.0.0 53 -> 10.0.1.49 53
Флаг [-f], если присутствует, изменит брандмауэр Windows, чтобы добавить исключение для приложения для правильного перенаправления входящего трафика на другой порт. Флаг [-v] управляет степенью детализации журнала. Если он указан, StreamDivert будет записывать подробную информацию о перенаправленных пакетах и потоках.
Важно помнить при настройке перенаправляемых соединений — не должно быть конфликтующих перенаправляемых потоков. Рассмотрим следующий пример конфигурационного файла:
icmp < 0.0.0.0 -> 10.0.1.50
icmp > 10.0.1.49 -> 10.0.1.48
Эти два перенаправляемых потока будут конфликтовать друг с другом, так как пакеты первого потока будут также захватываться вторым «перенаправителем» пакетов. Как правило, такие проблемы возникают только с UDP и ICMP при использовании масок (wildcards).
Также обратите внимание, что перенаправление с IPv4 на IPv6 и наоборот не поддерживается для трафика UDP и ICMP.
Желаемые функции: