ProxyChains-NG версия 4.17 README
ProxyChains — это UNIX-программа, которая перехватывает сетевые функции libc
в ДИНАМИЧЕСКИ СВЯЗАННЫХ программах через предварительно загружаемую DLL (dlsym(), LD_PRELOAD)
и перенаправляет соединения через прокси SOCKS4a/5 или HTTP.
Она поддерживает только TCP (без UDP/ICMP и т.п.).
По сути, это ХАК; поэтому вполне возможно, что он не будет
работать с вашей программой, особенно если это скрипт, или она запускает
множество процессов, например фоновые демоны, или использует dlopen() для загрузки
«модулей» (ошибка в glibc dynlinker).
Однако он должен работать с простыми скомпилированными (C/C++) динамически связанными
программами.
Если ваша программа не работает с proxychains, рассмотрите возможность использования
решения на основе iptables; оно гораздо надёжнее.
Поддерживаемые платформы: Linux, BSD, Mac, Haiku.
*********** ВНИМАНИЕ ***********
эта программа может использоваться для обхода цензуры.
в некоторых странах это может быть ОЧЕНЬ ОПАСНО.
ВСЕГДА УБЕДИТЕСЬ, ЧТО PROXYCHAINS РАБОТАЕТ КАК ОЖИДАЕТСЯ,
ПРЕЖДЕ ЧЕМ ИСПОЛЬЗОВАТЬ ЕГО ДЛЯ ЧЕГО-ЛИБО СЕРЬЁЗНОГО.
это касается как самой программы, так и прокси, который вы собираетесь
использовать.
например, вы можете подключиться к какому-нибудь сервису «какой у меня ip»,
например ifconfig.me, чтобы убедиться, что используется не ваш реальный ip.
ИСПОЛЬЗУЙТЕ PROXYCHAINS ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ ПОНИМАЕТЕ, ЧТО ДЕЛАЕТЕ.
АВТОРЫ И СОПРОВОЖДАЮЩИЕ PROXYCHAINS НЕ НЕСУТ НИКАКОЙ
ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ ЗЛОУПОТРЕБЛЕНИЕ ИЛИ НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ЭТОГО
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ПОСЛЕДСТВИЯ.
*** Установка ***
требуется рабочий компилятор C, желательно gcc
./configure --prefix=/usr --sysconfdir=/etc
make
[optional] sudo make install
[optional] sudo make install-config (устанавливает proxychains.conf)
если вы не устанавливали, вы можете использовать proxychains из каталога сборки
так: ./proxychains4 -f src/proxychains.conf telnet google.com 80
Список изменений:
Версия 4.17
- добавлен хук для функции close_range, исправляющий новые версии openssh
- опция fat-binary-m1 для mac
- исправлена обработка ошибок DNS в proxy_dns_old
- упрощён код инициализации
- исправлена предварительная загрузка на openbsd
- исправлено двойное закрытие в многопоточных приложениях
- различные улучшения скрипта configure
Версия 4.16
- исправлена регрессия в определении флагов компоновщика в скрипте configure
- удалён 10-летний обходной путь для неверной сигнатуры getnameinfo в glibc
- поддержка нового метода перехвата DYLD для OSX Monterey
- исправление компиляции на netbsd
- поддержка локальных сетей IPv6
- более понятное сообщение об ошибке при сбое execvp
- proxy_getaddrinfo(): заполнять ai_socktype, если запрошено
Версия 4.15
- исправлен скрипт configure для версии binutils с ошибками
- инициализация rand_seed с точностью до наносекунд
- добавлена поддержка числового ipv6 в getaddrinfo
- исправлена ошибка в getaddrinfo, когда node равен null и !passive
- добавлена функция dnat
- добавлен тип прокси raw
- добавлена поддержка haiku
- добавлен proxy_dns_old для эмуляции поведения proxychains 3.1
- добавлена новая функция proxy_dns_daemon (экспериментальная)
- прочие исправления
Версия 4.14
- добавлена поддержка альтернативного синтаксиса proto://user:pass@ip:port для proxylist
- исправлена бесконечная петля в режиме round robin, когда все прокси недоступны (#147)
- исправлена компиляция на android (#265)
- исправлена утечка fd в форкнутых процессах (#273)
- пропуск попытки подключения к ip с null-маршрутом
- разрешены имена хостов для proxylist при определённых обстоятельствах
Версия 4.13
- повышена устойчивость потока DNS-запросов и исправлен segfault
- исправлена аутентификация socks5 user/pass на несоответствующих серверах
- исправлена утечка памяти
- добавлена поддержка Solaris
Версия 4.12
- исправлены некоторые проблемы сборки
- для MAC
- с -pie
- с пользовательским CC
- исправление совместимости для некоторых GUI-приложений (8870140)
- исправление совместимости для некоторых HTTP-прокси (cf9a16d)
- исправлены некоторые предупреждения для более чистой сборки на debian
- исправлен random_chain на OSX (0f6b226)
Версия 4.11
- предварительная поддержка IPv6
- исправлена ошибка в hostsreader
- предварительная поддержка использования на OpenBSD (caveat emptor)
Версия 4.10
- исправлена регрессия в порядке компоновки с пользовательскими LDFLAGS
- исправлен segfault в коде сопоставления DNS в программах с более чем ~400 различными запросами
Версия 4.9
- исправлена проблема безопасности CVE-2015-3887
- добавлен хук sendto для обработки флага MSG_FASTOPEN
- проблемный hostentdb заменён на hostsreader
- исправлена компиляция на OpenBSD (хотя там не работает)
Версия 4.8.1:
- исправлена регрессия в цели install-config Makefile в версии 4.8
Версия 4.8:
- исправлен странный крайний случай, когда getaddrinfo использовалась с AI_NUMERICHOST
для проверки числового ip вместо его разрешения (исправляет nmap).
- разрешено использование с программами, которые сами полагаются на LD_PRELOAD
- отклонение некорректных записей в файле конфигурации
- вывод номера версии при запуске
Версия 4.7:
- новый тип цепочки round_robin от crass.
- исправлена ошибка с ленивым выделением памяти, когда конструктор GCC не использовался.
- новый флаг configure --fat-binary для создания «толстого» бинарника/библиотеки на OS X
- возврат EBADF вместо EINTR в хуке close.
программа имеет право повторять вызовы close() при получении
EINTR, что могло вызывать бесконечный цикл, как в chromium.
Версия 4.6:
- некоторые косметические исправления Makefile, исправлена ошибка, когда нечисловой ip
использовался в качестве адреса прокси-сервера.
Версия 4.5:
- перехват close(), чтобы OpenSSH не вмешивался во внутреннюю инфраструктуру.
это приводило к segfault ssh-клиента при проксировании.
Версия 4.4:
- порт для FreeBSD
- исправлены некоторые проблемы установки на Debian и Mac.
Версия 4.3:
- исправлены программы, выполняющие DNS-запросы в дочерних процессах (fork()),
например irssi. для этого была принесена в жертву поддержка компиляции без pthreads.
- исправлена потокобезопасность вызовов gethostent().
- повышена скорость обработки DNS, поскольку база hostent кэшируется.
Версия 4.2:
- исправлены проблемы компиляции с тулчейном ubuntu 12.04
- исправлен segfault в редком пути выполнения кода
Версия 4.1
- поддержка mac os x (все архитектуры)
- все внутренние функции потокобезопасны при компиляции с -DTHREAD_SAFE
(по умолчанию).
Версия 4.0
- скрипт dnsresolver (требовавший наличия динамически слинкованного бинарника «dig»)
заменён на удалённый DNS-запрос.
это ускоряет любые операции, связанные с DNS, так как старый скрипт вынужден был использовать TCP.
кроме того, это позволяет использовать .onion URL при работе с TOR.
- сломанная система сборки autoconf заменена простым Makefile.
правда, для удобства есть скрипт ./configure.
также добавлена поддержка файла конфигурации, передаваемого через аргументы командной строки/
переменные окружения.
Версия 3.0
- поддержка разрешения DNS через прокси
поддерживаются прокси-серверы SOCKS4, SOCKS5 и HTTP CONNECT.
Типы аутентификации: socks - «user/pass», http - «basic».
Когда это использовать?
- Когда единственный способ выйти «наружу» из вашей LAN — через прокси-сервер.
- Чтобы выбраться из-за ограничивающего брандмауэра, фильтрующего исходящие порты.
- Чтобы использовать два (или более) прокси в цепочке:
например: your_host <--> proxy1 <--> proxy2 <--> target_host
- Чтобы «проксировать» программу без встроенной поддержки прокси (например, telnet)
- Доступ к интранету снаружи через прокси.
- Чтобы использовать DNS за прокси.
- Чтобы получать доступ к скрытым tor onion-сервисам.
Некоторые интересные возможности:
- Эта программа может смешивать разные типы прокси в одной цепочке
например: your_host <-->socks5 <--> http <--> socks4 <--> target_host
- Поддерживаются разные варианты цепочек
случайный порядок из списка (пользователь задаёт длину цепочки).
точный порядок (в том виде, в котором они указаны в списке)
динамический порядок (умное исключение мёртвых прокси из цепочки)
- Вы можете использовать её с большинством TCP-клиентских приложений, возможно даже с сетевыми
сканерами, если они используют стандартную функциональность libc.
сканирование на основе pcap не работает.
- Вы можете использовать её с серверами, например squid, sendmail и т.п.
- Разрешение DNS через прокси.
Конфигурация:
proxychains ищет файл конфигурации в следующем порядке:
- файл, указанный в переменной окружения PROXYCHAINS_CONF_FILE или
переданный как аргумент -f скрипту или бинарнику proxychains.
- ./proxychains.conf
- $(HOME)/.proxychains/proxychains.conf
- $(sysconfdir)/proxychains.conf **
** обычно /etc/proxychains.conf
Пример использования:
$ proxychains telnet targethost.com
в этом примере telnet будет запущен через прокси (или цепочку прокси),
указанные в proxychains.conf
Пример использования:
$ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
в этом примере будет использован другой файл конфигурации, нежели proxychains.conf,
для подключения к хосту targethost2.com.
Пример использования:
$ proxyresolv targethost.com
в этом примере targethost.com будет разрешён через прокси (или цепочку прокси),
указанные в proxychains.conf
Известные проблемы:
-
новые версии nmap пытаются определить сетевой интерфейс для использования,
даже когда это не нужно (например, при простых syn-сканированиях, использующих
стандартный POSIX socket API. это приводит к ошибкам, когда proxychains выдаёт
ip-адрес из зарезервированного адресного пространства.
возможные обходные пути: отключите proxy_dns, используйте числовой ip или встроенную
поддержку SOCKS-прокси в nmap.
-
Mac OS X 10.11 (El Capitan) поставляется с новой функцией безопасности SIP,
которая предотвращает перехват системных приложений.
обходные пути: частично отключить SIP, выполнив
csrutil enable --without debug в режиме восстановления,
либо скопировать системный бинарник в домашний каталог и запускать его оттуда.
подробности см. в issue #78 на github.
-
в glibc dynlinker есть ошибка или функция безопасности, которая не позволяет модулям, загруженным
через dlopen(), подвергаться тем же хукам dlsym, что установлены для основной
программы. это в основном затрагивает скриптовые языки, такие как perl или python,
которые сильно полагаются на dlopen() для работы модулей, написанных на C.
есть неподтверждённые сообщения, что под root это работает.
musl libc не подвержена этой ошибке.
Полезные ссылки
следующие сайты могут оказаться полезными для проверки утечек:
https://ipfighter.com/
https://browserleaks.com/webrtc
https://dnsleaktest.com
http://check.torproject.org - для tor
http://ifconfig.me - можно использовать через curl
http://ifconfig.io/
Сообщество:
#proxychains на irc.libera.chat
Пожертвования:
приветствуются пожертвования в биткоинах - пожалуйста, отправляйте на этот адрес:
1C9LBpuy56veBqw5N33sZMoZW8mwCw3tPh