Proxychains-ng

Anonymizers ★ Рекомендуемый v4.17 · 21.01.2024 не обновлялся >2 лет

Перехватывает системные вызовы через LD_PRELOAD и прозрачно заворачивает TCP-соединения любого приложения через цепочку прокси (SOCKS4/5, HTTP). Режимы: strict_chain (все прокси по порядку), dynamic_chain (пропускает упавшие), random_chain (случайный порядок). Незаменим для пентеста: proxychains nmap, proxychains sqlmap, proxychains msfconsole — весь трафик уходит через Tor или список купленных SOCKS. Поддерживает DNS-over-SOCKS (proxy_dns) чтобы DNS-запросы не утекали.

v4.17
21.01.2024 current
Добавлен 24.06.2026 · Обновлён 24.06.2026 · Anonymizers
Установка
git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng && ./configure --prefix=/usr && make && make install

# Конфиг: /etc/proxychains4.conf
# Пример (через Tor):
# strict_chain
# proxy_dns
# [ProxyList]
# socks5 127.0.0.1 9050

# Использование
proxychains4 nmap -sT -Pn target.com
переведено ИИ

ProxyChains-NG версия 4.17 README

=============================

ProxyChains — это UNIX-программа, которая перехватывает сетевые функции libc в ДИНАМИЧЕСКИ СВЯЗАННЫХ программах с помощью предзагружаемой DLL (dlsym(), LD_PRELOAD) и перенаправляет соединения через прокси SOCKS4a/5 или HTTP. Поддерживается только TCP (без UDP/ICMP и т.д.).

Принцип работы по сути является ХАКОМ; поэтому возможно, что он не будет работать с вашей программой, особенно если это скрипт или программа, запускающая множество процессов, как фоновые демоны, или использующая dlopen() для загрузки «модулей» (баг в динамическом компоновщике glibc). Впрочем, она должна работать с простыми скомпилированными (C/C++) динамически связанными программами.

Если ваша программа не работает с proxychains, рассмотрите возможность использования решения на основе iptables; оно гораздо более надежно.

Поддерживаемые платформы: Linux, BSD, Mac, Haiku.

** ВНИМАНИЕ **

Эта программа может использоваться для обхода цензуры. В некоторых странах это может быть ОЧЕНЬ ОПАСНО.

ВСЕГДА УБЕДИТЕСЬ, ЧТО PROXYCHAINS РАБОТАЕТ КАК ОЖИДАЕТСЯ ПЕРЕД ИСПОЛЬЗОВАНИЕМ ЕГО ДЛЯ ЧЕГО-ЛИБО СЕРЬЁЗНОГО.

Это касается как самой программы, так и прокси, который вы собираетесь использовать.

Например, вы можете подключиться к какой-нибудь службе «what is my ip», вроде ifconfig.me, чтобы убедиться, что она не использует ваш реальный IP.

ИСПОЛЬЗУЙТЕ PROXYCHAINS ТОЛЬКО ТОГДА, КОГДА ВЫ ЗНАЕТЕ, ЧТО ДЕЛАЕТЕ.

АВТОРЫ И СОДЕРЖАТЕЛИ PROXYCHAINS НЕ НЕСУТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ЛЮБОЕ ЗЛОУПОТРЕБЛЕНИЕ ИЛИ НЕПРАВИЛЬНОЕ ИСПОЛЬЗОВАНИЕ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ВЫТЕКАЮЩИЕ ПОСЛЕДСТВИЯ.

*** Установка ***

# необходим работающий компилятор C, предпочтительно gcc ./configure --prefix=/usr --sysconfdir=/etc make [опционально] sudo make install [опционально] 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 localnets - более дружелюбные сообщения об ошибке при неудачном execvp - proxy_getaddrinfo(): заполнение ai_socktype при запросе

Версия 4.15 - исправление скрипта configure для проблемной версии binutils - инициализация rand_seed с наносекундной гранулярностью - добавлена поддержка числовых ipv6 в getaddrinfo - исправлен баг в getaddrinfo, когда узел равен null и !passive - добавлена функция dnat - добавлен тип прокси raw - добавлена поддержка haiku - добавлен proxy_dns_old для эмуляции поведения proxychains 3.1 - добавлена новая функция proxy_dns_daemon (экспериментальная) - различные другие исправления

Версия 4.14 - разрешена альтернативный синтаксис proto://user:pass@ip:port для списка прокси - исправлен бесконечный цикл в режиме round robin, когда все прокси недоступны (#147) - исправлена компиляция на android (#265) - исправлен утечка файловых дескрипторов в порождённых процессах (#273) - пропуск попытки соединения с IP, маршрутизация которых заблокирована - разрешены имена хостов для списка прокси в определенных условиях

Версия 4.13 - исправлена надежность потока поиска DNS и исправлено падение с ошибкой сегментации - исправлена аутентификация user/pass socks5 на нестандартных серверах - исправлена утечка памяти - добавлена поддержка 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 - исправлено падение с ошибкой сегментации в коде отображения DNS в программах с более чем ~400 различными запросами

Версия 4.9 - исправлена проблема безопасности CVE-2015-3887 - добавлен хук sendto для обработки флага MSG_FASTOPEN - заменена проблематичная hostentdb на hostsreader - исправлена компиляция на OpenBSD (хотя там всё равно не работает)

Версия 4.8.1: - исправлен регресс в цели установки конфигурации Makefile в версии 4.8

Версия 4.8: - исправление для странного граничного случая, когда getaddrinfo использовался с AI_NUMERICHOST для проверки числового IP вместо его разрешения (исправляет nmap). - разрешено использование с программами, которые сами используют LD_PRELOAD - отклонение неверных записей в конфигурационном файле - вывод номера версии при запуске

Версия 4.7: - новый тип цепочки round_robin от crass. - исправлен баг с отложенным выделением, когда конструктор GCC не использовался. - новый флаг конфигурации --fat-binary для создания «толстого» бинарного файла/библиотеки в OS X - возврат EBADF вместо EINTR в хуке close(). Закономерно для программы повторять вызовы close() при получении EINTR, что может вызвать бесконечный цикл, как наблюдалось в chromium.

Версия 4.6: - некоторые косметические исправления Makefile, исправлен баг, когда нечисловой IP использовался в качестве адреса прокси-сервера.

Версия 4.5: - хук close() для предотвращения нарушения внутренней инфраструктуры OpenSSH. Это вызывало падение клиент ssh с ошибкой сегментации при использовании через прокси.

Версия 4.4: - порт для FreeBSD - исправляет некоторые проблемы установки на Debian и Mac.

Версия 4.3: - исправляет программы, которые делают запросы DNS в дочерних процессах (через fork()), такие как irssi. Для этого пришлось пожертвовать поддержкой компиляции без pthreads. - исправлена потокобезопасность для вызовов gethostent(). - улучшена скорость обработки DNS, так как база hostent теперь кэшируется.

Версия 4.2: - исправлены проблемы компиляции с тулчейном ubuntu 12.04 - исправлено падение с ошибкой сегментации в редком кодовом пути

Версия 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".

Когда использовать? 1) Когда единственный способ выйти "наружу" из вашей локальной сети — через прокси-сервер. 2) Чтобы выйти из-за ограничивающего межсетевого экрана, который фильтрует исходящие порты. 3) Чтобы использовать два (или более) прокси в цепочке: например: ваш_хост <--> прокси1 <--> прокси2 <--> целевой_хост 4) Чтобы "проксифицировать" программу без встроенной поддержки прокси (вроде telnet) 5) Доступ к интранету извне через прокси. 6) Чтобы использовать DNS за прокси. 7) Для доступа к скрытым onion-сервисам tor.

Некоторые интересные функции:

  • Эта программа может смешивать разные типы прокси в одной цепочке например: ваш_хост <-->socks5 <--> http <--> socks4 <--> целевой_хост
  • Поддерживаются различные варианты цепочки случайный порядок из списка (пользователь определяет длину цепочки). точный порядок (как они указаны в списке) динамический порядок (умное исключение мертвых прокси из цепочки)
  • Вы можете использовать её с большинством TCP-клиентских приложений, возможно, даже с сетевыми сканерами, при условии, что они используют стандартный функционал libc. Сканирование на основе pcap не работает.
  • Вы можете использовать её с серверами, такими как squid, sendmail или любыми другими.
  • Разрешение имён DNS через прокси.

Конфигурация:

proxychains ищет конфигурационный файл в следующем порядке: 1) файл, указанный в переменной окружения PROXYCHAINS_CONF_FILE или переданный в качестве аргумента -f скрипту proxychains или бинарному файлу. 2) ./proxychains.conf 3) $(HOME)/.proxychains/proxychains.conf 4) $(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 API сокетов. Это приводит к ошибкам, когда proxychains выдает IP-адрес из зарезервированного адресного пространства. возможные обходные пути: отключить proxy_dns, использовать числовой IP или использовать встроенную поддержку SOCKS прокси в nmap.

  • В Mac OS X 10.11 (El Capitan) появилась новая функция безопасности — SIP (System Integrity Protection), которая предотвращает подмену системных приложений. Решением является частичное отключение SIP с помощью команды csrutil enable --without debug в режиме восстановления, либо копирование системного бинарного файла в домашнюю директория и его запуск оттуда. Подробности смотрите в issue #78 на github.

  • В динамическом линковщике glibc есть ошибка или особенность безопасности, которая не позволяет загружаемым через dlopen() модулям использовать те же хуки dlsym, что установлены для основной программы. Это главным образом влияет на скриптовые языки, такие как Perl или Python, которые heavily полагаются на 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

Комментарии
Войдите, чтобы оставить комментарий