Программа tcpproxy предназначена для построения туннелей между закрытыми сетями, не требует настроек на строне сервера, имеет встроенный телнет сервер. Основное назначение программы - построение tcp туннеля как в закрытую сеть так и из закрытой сети для обхода ограничений корпоративного прокси сервера.
Программа состоит из 2-х модулей: client и server. Серверная часть обеспечивает взаимодействие с целевым сервисом. В случае использования программы для проникновения в закрытую сеть серверная часть запускается внутри этой сети. Если программа используется для выхода во внешний мир для обхода прокси то серверная часть запускается на внешнем узле а на клиенте во внутренней сети настраивается туннель для работы с целевым сервисом.
При запуске с ключом -S <имя службы> серверная часть программы будет установлена как служба. При этом требуется наличие ключа -s (запустить как сервер).
Параметры туннелей задаются на стороне клиента в формате : clientport:targethost:targetport.
При запуске сервера с ключом -o auto сервер пытается установить соединение с клиентом по следующим портам: 25, 110, 5190 а также через http прокси сервер.
Встроенный телнет сервер позволяет, в случае установления соединения, осмотреться в целевой сети, чтобы принять решение с каким узлом во внутренней сети установить туннель.
Параметры запуска:
Client: tcpproxy [options] clientport:targethost:targetport
Server: tcpproxy -s [options]
Options are:
-s run as server
-h <tunnelListenIP/tunnelConnectIP>
-p <tunnelListenPort/tunnelConnectPort>
-c <clientsListenIP>
-l don't use reverse mode (client initiator)
-n <log file>
-o tunnelMode <tcp | icmp | auto (server only)>
-D dump data
-A use proxy
-H <http_proxy_host>
-P <http_proxy_port>
-S <service name>
-L <log level (0...10)>
-M <log type (0 - file, 1 - console, 2 - none (default))>
-N <log codepage> (default: 866)
-O <intervalTime> (default: 1s.)
-T timestamp true
-W <telnet listen port>
-B don't remove firewallsРассмотрим типичные ситуации при которых может быть использована программа.
1. Проникновение в закрытую сеть и доступ к локальному серверу по протоколу RDP:
Запуск сервера:
tcpproxy -s -o auto -h <адрес ответной части туннеля> -S tcpproxy
При таких параметрах запуска сервер будет установлен как служба с именем tcpproxy, будет пытаться установить соединение с клиентом по портам 25, 110, 5190 или использовать 443 порт прокси сервера. Настройки для прокси при этом берутся из реестра.
Запуск клиента:
tcpproxy -o tcp -p <25 | 110 | 5190 | 443> 3389:127.0.0.1:3389
При таких параметрах запуска клиент будет ожидать подключения по какому то из указанных портов и установит туннель с узлом на котором запущен tcpproxy сервер по протоколу RDP.
2. Обход ограничений корпоративного прокси сервера. (Плохой админ закрыл доступ к игровым серверам).
Внутри локальной сети в данном случае запускается клиентская часть программы со следующими параметрами:
tcpproxy -l -o tcp -A -H <адрес прокси> -P <порт прокси> -h <адрес сервера> 8080:127.0.0.1:8080
Сервер при этом запускается где то в интернете (например дома на ADSL канале) со следующими параметрами:
tcpproxy -l -s -S tcpproxy
На этом же узле должен быть запущен http прокси, например, для доступа к произвольным сайтам.
Взять программу можно здесь tcpproxy_1.2.2
Все вопросы по использованию программы сюда: kandrey@oviont.com