
proxychains — инструмент, который заставляет любое TCP-соединение, устанавливаемое любым приложением, проходить через прокси, такие как TOR или любой другой прокси SOCKS4, SOCKS5 или HTTP(S). Поддерживаемые типы аутентификации: "user/pass" для SOCKS4/5, "basic" для HTTP.
ProxyChains — это UNIX-программа, которая перехватывает сетевые функции libc в динамически скомпонованных программах через предварительно загружаемую DLL и перенаправляет соединения через SOCKS4a/5 или HTTP-прокси.
ВНИМАНИЕ: эта программа работает только с динамически скомпонованными программами. кроме того, и proxychains, и вызываемая программа должны использовать один и тот же динамический компоновщик (т.е. одну и ту же libc)
когда процесс выполняет fork, делает DNS-запрос в дочернем процессе, а затем использует IP-адрес в родительском, соответствующее сопоставление IP не будет найдено, потому что fork не может записать обратно в таблицу сопоставлений родительского процесса. IRSSI демонстрирует такое поведение, поэтому вам придётся передавать ему уже разрешённый IP-адрес. (для этого можно использовать скрипт proxyresolv (требуется «dig»))
это означает, что сейчас вы не можете использовать onion-url-адреса Tor для irssi. для решения этой проблемы внешнее хранилище данных (файл, канал и т.д.) должно управлять сопоставлением dns <-> ip. конечно, необходима надлежащая блокировка. shm_open, mkstemp — возможные кандидаты для подхода на основе файлов; другой вариант — запустить некий серверный процесс, который управляет поиском по таблице соответствий. поскольку connect() и т.д. перехватываются, это не должен быть TCP-сервер.
Я не решаюсь вносить это изменение, поскольку описанное поведение выглядит довольно идиотским (делать fork только ради DNS-запроса), а irssi — единственная известная программа, которую это затрагивает.
Proxychains-4.3.0 доступен через pkgsrc для всех, кто использует Linux, NetBSD, FreeBSD, OpenBSD, DragonFlyBSD или Mac OS X. Вам достаточно установить репозиторий pkgsrc-wip и выполнить make install в каталоге wip/proxychains.
Вы можете узнать больше о pkgsrc на link:http://www.pkgsrc.org[pkgsrc] и о pkgsrc-wip на link:https://pkgsrc.org/wip[Домашняя страница Pkgsrc-wip]
Вы можете установить текущую версию proxychains на Mac OS X с помощью homebrew. Вам нужно скачать неофициальный link:https://gist.github.com/3792521[homebrew formula] в ваш BREW_HOME, по умолчанию /usr/local/Library/Formula/, и выполнить
$ brew install proxychains
# needs a working C compiler, preferably gcc
./configure
make
sudo make install
Версия (4.x) удаляет скрипт dnsresolver, для которого требовался динамически скомпонованный бинарник «dig» для удалённого DNS-запроса. это ускоряет любые операции, связанные с DNS, поскольку старому скрипту приходилось использовать TCP. кроме того, теперь можно использовать .onion-адреса при работе с TOR. также сломанная система сборки autoconf заменена простым Makefile. тем не менее, для удобства есть скрипт ./configure. добавлена поддержка конфигурационного файла, передаваемого через аргументы командной строки/переменные окружения.
Версия (3.x) добавляет поддержку разрешения DNS через прокси: поддерживаются прокси-серверы SOCKS4, SOCKS5 и HTTP CONNECT.
like: your_host <--> proxy1 <--> proxy2 <--> target_host
like: your_host <-->socks5 <--> http <--> socks4 <--> target_host
proxychains nmap -sT -PO -p 80 -iR (find some webservers through proxy)
proxychains ищет конфигурацию в следующем порядке:
подробнее см. в /etc/proxychains.conf
$ proxychains4 telnet targethost.com
в этом примере telnet будет запущен через прокси (или цепочку прокси), указанные в proxychains.conf
$ proxychains4 -f /etc/proxychains-other.conf targethost2.com
в этом примере для подключения к хосту targethost2.com будет использоваться другой конфигурационный файл, нежели proxychains.conf.
$ proxyresolv targethost.com
в этом примере targethost.com будет разрешён через прокси (или цепочку прокси), указанные в proxychains.conf
$ ssh -fN -D 4321 some.example.com
$ PROXYCHAINS_SOCKS5_HOST=127.0.0.1 PROXYCHAINS_SOCKS5_PORT=4321 proxychains zsh
в этом примере будет запущена оболочка, весь трафик которой проксируется через «динамический прокси» OpenSSH (SOCKS5-прокси) на локальном хосте на порту 4321.
$ export PROXY_DNS_SERVER=8.8.8.8
$ proxychains4 telnet targethost.com
в этом примере будет выполнен telnet к targethost.com с использованием сервера имён 8.8.8.8, заданного пользователем через PROXY_DNS_SERVER