ProxyChains — это инструмент командной строки для Linux, который форсирует сетевой трафик любого TCP-приложения через одну или несколько прокси-серверов, создавая цепочки для повышения анонимности или обхода сетевых ограничений.
Что такое ProxyChains?
ProxyChains является утилитой, которая перехватывает сетевые вызовы TCP-приложений, используя механизм LD_PRELOAD для динамической библиотеки libproxychains.so. Это позволяет маршрутизировать весь исходящий TCP-трафик указанного приложения через сконфигурированные прокси-серверы. Утилита поддерживает различные типы прокси, включая SOCKS4, SOCKS5 и HTTP/HTTPS, а также позволяет создавать цепочки из нескольких прокси-серверов для многоуровневого анонимирования или распределения нагрузки.
Основные сценарии использования ProxyChains включают:
- Повышение анонимности: Маршрутизация трафика через несколько прокси-серверов затрудняет отслеживание исходного IP-адреса.
- Обход сетевых ограничений: Доступ к ресурсам, заблокированным по географическому признаку или корпоративным файрволом.
- Тестирование безопасности: Использование при сканировании портов или эксплуатации уязвимостей для маскировки источника атаки.
Установка ProxyChains
Установка ProxyChains в большинстве дистрибутивов Linux выполняется через стандартные менеджеры пакетов.
Debian/Ubuntu
sudo apt update
sudo apt install proxychains4
CentOS/RHEL/Fedora
sudo dnf install proxychains-ng
# Или для старых версий
sudo yum install epel-release
sudo yum install proxychains-ng
Arch Linux
sudo pacman -S proxychains-ng
После установки исполняемый файл обычно называется proxychains4 или proxychains-ng. В данной статье используется proxychains4 как наиболее распространённое наименование.
Конфигурация ProxyChains
Основной файл конфигурации ProxyChains расположен по пути /etc/proxychains.conf или /etc/proxychains4.conf. Пользователь может создать локальную копию ~/.proxychains/proxychains.conf или ~/.proxychains4.conf, которая будет иметь приоритет.
Основные директивы
Файл конфигурации содержит следующие ключевые директивы:
strict_chain: Трафик проходит через все прокси-серверы в списке строго по порядку. Если один из прокси недоступен, вся цепочка прерывается.dynamic_chain: Трафик проходит через все доступные прокси-серверы в списке по порядку. Если какой-либо прокси недоступен, он пропускается, и цепочка продолжается через следующий. Это более гибкий вариант, но может раскрыть IP-адрес, если останется только один прокси или все последующие недоступны.random_chain: Трафик проходит через случайное подмножество прокси-серверов из списка. Количество прокси выбирается директивойchain_len.round_robin_chain: Трафик проходит через прокси-серверы по кругу, используя каждый прокси по очереди для новых соединений. Полезно для распределения нагрузки.chain_len <число>: Используется сrandom_chainдля указания количества прокси в случайной цепочке.proxy_dns: Включение этой опции заставляет все DNS-запросы также проходить через прокси-серверы, что предотвращает утечки DNS. Рекомендуется для обеспечения анонимности.tcp_read_time_out <секунды>: Устанавливает таймаут для чтения данных из TCP-сокета.tcp_connect_time_out <секунды>: Устанавливает таймаут для установки TCP-соединения.
Добавление прокси-серверов
В конце файла конфигурации находится секция [ProxyList], где добавляются прокси-серверы. Каждый прокси указывается в формате:
тип IP порт [пользователь пароль]
Поддерживаемые типы прокси:
socks4socks5httphttps
Пример конфигурации:
# /etc/proxychains4.conf или ~/.proxychains4.conf
# Выберите тип цепочки (раскомментируйте один из них)
# strict_chain
dynamic_chain
# random_chain
# round_robin_chain
# Установите длину цепочки для random_chain
# chain_len = 2
# Включить проксирование DNS
proxy_dns
# Таймауты
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
# Добавьте свои прокси-серверы здесь
# Формат: тип IP порт [пользователь пароль]
# Пример SOCKS5 прокси
socks5 192.168.1.1 9050
# Пример HTTP прокси с аутентификацией
http 10.0.0.100 8080 user pass
# Пример SOCKS5 прокси с аутентификацией
socks5 172.16.0.5 1080 myuser mypassword
# Пример другого SOCKS5 прокси
socks5 127.0.0.1 9050 # обычно Tor
Типы цепочек прокси
Выбор типа цепочки зависит от требований к надёжности и анонимности.
| Тип цепочки | Описание # strict_chain
dynamic_chain
random_chain
round_robin_chain
proxy_dns
chain_len = 2
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 192.168.1.1 9050
http 10.0.0.100 8080 user pass
socks5 172.16.0.5 1080 myuser mypassword
socks5 127.0.0.1 9050
## Использование ProxyChains
Для запуска любого приложения через ProxyChains используется следующий синтаксис:
```bash
proxychains4 <команда> [аргументы]
При запуске proxychains4 выводит информацию о цепочке прокси, через которую будет проходить трафик.
Примеры использования
Получение внешнего IP-адреса с помощью curl
proxychains4 curl ifconfig.me
Вывод:
ProxyChains-4.x (git-16a704e)
|D-chain|-<>-127.0.0.1:9050-<>-ifconfig.me:80-<><>-OK
XXX.XXX.XXX.XXX
Где XXX.XXX.XXX.XXX — это IP-адрес последней прокси в цепочке.
Загрузка файла с помощью wget
proxychains4 wget https://example.com/somefile.zip
Сканирование портов с помощью nmap
Использование nmap с ProxyChains имеет ограничения. nmap генерирует сырые пакеты, которые ProxyChains не может перехватить. Однако для TCP-соединений, например, при использовании опции -sT (TCP connect scan), ProxyChains может быть эффективен.
proxychains4 nmap -sT -Pn -p 80,443 example.com
Опция -Pn отключает пингование хоста, чтобы избежать раскрытия вашего реального IP-адреса через ICMP.
Запуск веб-браузера Firefox
proxychains4 firefox
При запуске Firefox через ProxyChains весь его трафик будет проходить через сконфигурированные прокси. Важно убедиться, что в самом браузере не настроены другие прокси, которые могут конфликтовать или обходить ProxyChains.
Обработка DNS-запросов и предотвращение утечек
Утечка DNS-запросов (DNS leak) происходит, когда запросы на разрешение доменных имен отправляются напрямую на DNS-сервер провайдера, минуя прокси. Это может раскрыть ваш реальный IP-адрес.
Для предотвращения DNS leaks в ProxyChains необходимо активировать опцию proxy_dns в файле конфигурации:
proxy_dns
При активации этой опции ProxyChains перехватывает DNS-запросы и отправляет их через последний прокси-сервер в цепочке. Это гарантирует, что DNS-запросы также анонимизированы.
Дополнительные меры:
- Локальный кэш DNS: Некоторые системы Linux используют локальный DNS-кэш (например,
systemd-resolvedилиdnsmasq). Убедитесь, что он не переопределяет настройки ProxyChains. - Тестирование утечек: После настройки проверьте систему на наличие DNS leaks, используя онлайн-сервисы, такие как
dnsleaktest.comилиipleak.net, запуская их черезproxychains4.
Типичные проблемы и их устранение
ERROR: ld.so: object 'libproxychains.so' from LD_PRELOAD cannot be preloaded
Эта ошибка указывает на проблему с загрузкой библиотеки libproxychains.so. Возможные причины:
- Неправильная архитектура: Вы пытаетесь запустить 32-битное приложение с 64-битной библиотекой ProxyChains или наоборот. Убедитесь, что установлена версия ProxyChains, соответствующая архитектуре вашей системы и запускаемого приложения.
- Отсутствие библиотеки: Библиотека
libproxychains.soне найдена в системных путях. Проверьте её наличие по пути/usr/lib/proxychains4/libproxychains.soили/usr/lib64/proxychains4/libproxychains.so. - SELinux/AppArmor: Системы безопасности могут блокировать
LD_PRELOAD. Временно отключите их или настройте правила.
Connection refused
Проблема указывает на отказ в соединении с прокси-сервером или целевым хостом.
- Прокси недоступен: Убедитесь, что прокси-сервер, указанный в
proxychains.conf, работает и доступен с вашего IP-адреса. Проверьте IP-адрес и порт. - Файрвол: Локальный файрвол или файрвол на стороне прокси-сервера блокирует соединение.
- Неверные учётные данные: Если прокси требует аутентификации, проверьте правильность
userиpass.
Authentication error
Эта ошибка возникает, когда прокси-сервер требует аутентификацию, но предоставленные учётные данные неверны или отсутствуют.
- Проверьте
userиpassв файлеproxychains.confдля соответствующего прокси. - Убедитесь, что прокси-сервер действительно поддерживает указанный тип аутентификации.
Медленная работа/таймауты
Проблема может быть вызвана несколькими факторами:
- Медленный прокси: Сам прокси-сервер имеет низкую пропускную способность или высокую задержку.
- Большое количество прокси в цепочке: Каждое дополнительное звено в цепочке увеличивает задержку.
- Низкие таймауты: Увеличьте значения
tcp_read_time_outиtcp_connect_time_outв файле конфигурации.
Соображения безопасности и анонимности
Использование ProxyChains повышает уровень анонимности, но не является универсальным решением для полной неуязвимости.
- Доверие к прокси-серверам: Каждый прокси-сервер в цепочке видит трафик, проходящий через него. Если один из прокси скомпрометирован или принадлежит ненадёжной стороне, ваша анонимность может быть нарушена.
- Не панацея: ProxyChains работает на уровне TCP. Трафик, который не использует TCP (например, UDP, ICMP), не будет проксироваться. Для полной анонимности требуется комплексный подход, включающий VPN, Tor и другие инструменты.
- Веб-RTC и Flash: Веб-технологии, такие как WebRTC, могут раскрывать ваш реальный IP-адрес, даже если трафик браузера проходит через прокси. Рекомендуется отключать WebRTC в браузере или использовать специальные расширения.
- Отпечатки браузера (Browser Fingerprinting): Даже при анонимном IP-адресе, уникальные настройки браузера, шрифты, плагины и другие параметры могут быть использованы для идентификации пользователя.
Для максимальной анонимности рекомендуется сочетать ProxyChains с другими инструментами и практиками, такими как VPN, Tor (часто как первый или последний прокси