Хакер №024. Спецвыпуск
ПРИКЛАДНОЕ ТУННЕЛИРОВАНИЕ
httpTunnel для win32
Спецвыпуск Xakep, номер #024, стр. 024-070-2
hts -F irc.haxorz.com:7000 80
Начнем разборку нестандартно - с конца :). Последним параметром всегда идет номер порта, используемого для соединения клиента и сервера. Так как мы маскируемся под НТТР, пусть порт будет 80 - стандартный для этого протокола. В параметре -F указываются сервер и порт для редиректа, это, думаю, понятно без разъяснений. Другие возможные варианты перенаправления: "-d название_устройства", когда трафик кидается на другой сетевой интерфейс, или "-s" - когда для перенаправления используются стандартные stdin-stdout (правда, для этого сервер нужно будет запускать не демоном, а обычным процессом).
КЛИЕНТ
Теперь займемся клиентом. Если ты еще помнишь, он должен обволакивать мирковый траф и отправлять его серверу. Для этого на своем компе тебе придется запустить такой процесс:
htc -F 6666 shell.server.com:80
Здесь все с точностью до наоборот: в параметре "-F" указывается порт, трафик с которого пойдет к серверу, а последний параметр отвечает за адрес и порт этого злосчастного сервака. Разумеется, замена на "-d" и "-s" тоже остается в силе.
Другое дело, если корпоративный файрволл не просто просматривает трафик, а заодно отрабатывает программу проксика. В этом случае количество промежуточных соединений возрастает (прога -> клиент httpTunnel -> прокси -> сервер httpTunnel -> ирковый сервер). Для того чтобы наш туннель без проблем пролезал через прокси, командную строку клиента нужно проапгрейдить до следующего вида:
htc -P proxy.company.ru:80 -F 6666 shell.server.com:80
И все! Админы натянуты, траф ползет без препятствий.
ФИЧИ
Для любителей поизвращаться у ttpTunnel есть туча параметров, которые стоит выставить при неидеальных условиях для туннелинга. Краткий их обзор:
для клиента:
-A USER:PASSWORD
пользователь и пароль для не анонимных проксиков (при условии, что прокси уже указан в -Р);
-z FILE
та же фигня, только для авторизации используется файл;
-B BYTES
размер буфера прокси в байтах (понимает цифры типа 56К и 1М);
-c BYTES
выставляет content-length для запросов;
-M SECONDS
максимальное время соединения;
-T SECONDS
выставляет тайм-аут для соединения;
-U STRING
задает строку user-agent (если админ решит пропускать только ИЕ);
для обоих:
-k SECONDS
посылает keepalive-запросы раз в SECONDS (по дефолту 5);
-s
прописывать content-length во все пакеты;
-w
не уходить в бэкграунд после запуска.
ФИНИТА
Туннель помогает пройти сквозь корпоративный, но не сквозь персональный файрволл. Однако при тестировании выяснилось, что персональники видят соединения клиента, но не предпринимают никаких действий к их завершению (игнорируют, проще говоря). Так что у сказочки может быть не просто счастливый, а гиперсчастливый КОНЕЦ!
Назад на стр. 024-070-1 Содержание