ProxyChains ist ein Befehlszeilen-Tool für Linux, das jede von einem Programm hergestellte TCP-Verbindung zwingt, eine angegebene Liste von Proxy-Servern zu durchlaufen, wodurch eine "Kette" für verbesserte Privatsphäre oder zur Umgehung von Netzwerkbeschränkungen gebildet wird. Es funktioniert, indem es netzwerkbezogene Systemaufrufe dynamisch abfängt und sie über einen oder mehrere konfigurierte Proxy-Server umleitet, bevor sie das Ziel erreichen.
Überblick über ProxyChains
ProxyChains fungiert als Wrapper für andere Programme, wodurch deren Netzwerkverkehr über eine Abfolge von Proxys geleitet werden kann. Dieser Verkettungsmechanismus kann den Ursprung von Netzwerkanfragen verschleiern, was es schwieriger macht, die tatsächliche Quell-IP-Adresse zurückzuverfolgen. Es wird häufig für Anonymität, zur Umgehung geografischer Beschränkungen oder zum Zugriff auf Netzwerke mit spezifischen IP-basierten Zugriffssteuerungen eingesetzt.
Wie ProxyChains funktioniert
ProxyChains nutzt den LD_PRELOAD-Mechanismus in Linux. LD_PRELOAD ist eine Umgebungsvariable, die eine Liste von gemeinsam genutzten Bibliotheken angibt, die vor allen anderen Bibliotheken, einschließlich der C-Standardbibliothek (libc), geladen werden sollen. ProxyChains stellt seine eigene gemeinsam genutzte Bibliothek (libproxychains4.so) bereit, die modifizierte Versionen von Standard-Netzwerkfunktionen (z.B. connect(), send(), recv()) enthält.
Wenn ein Programm mit ProxyChains ausgeführt wird (z.B. proxychains4 <Befehl>), wird libproxychains4.so vorgeladen. Diese Bibliothek fängt die Aufrufe des Programms an Netzwerkfunktionen ab. Anstatt direkte Verbindungen herzustellen, werden diese abgefangenen Aufrufe durch die konfigurierte Proxy-Kette umgeleitet. Dieser Prozess ist für die umhüllte Anwendung transparent, die weiterhin so funktioniert, als würde sie direkte Netzwerkverbindungen herstellen.
Installation
Die Installationsverfahren variieren geringfügig je nach Linux-Distribution.
Debian/Ubuntu
sudo apt update
sudo apt install proxychains4
Fedora/CentOS/RHEL
sudo dnf install proxychains-ng
# Oder für ältere Systeme:
sudo yum install proxychains-ng
Arch Linux
sudo pacman -S proxychains-ng
Aus dem Quellcode
Für andere Distributionen oder spezifische Versionen kann ProxyChains aus dem Quellcode kompiliert werden.
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config # Installiert die Standardkonfigurationsdatei nach /etc/proxychains.conf
Konfiguration
Die primäre Konfigurationsdatei für ProxyChains befindet sich typischerweise unter /etc/proxychains.conf oder ~/.proxychains/proxychains.conf. Falls keine davon existiert, kann proxychains.conf aus dem Quellverzeichnis oder /usr/share/proxychains/proxychains.conf nach /etc/proxychains.conf kopiert werden.
Schlüssel-Direktiven
Die Konfigurationsdatei definiert, wie Proxys verwendet werden und welche Proxys verfügbar sind.
strict_chain: Alle Proxys in der Liste werden in der Reihenfolge verwendet, in der sie erscheinen. Wenn ein Proxy in der Kette fehlschlägt, schlägt die Verbindung fehl.dynamic_chain: Alle Proxys in der Liste werden verwendet, aber wenn einer fehlschlägt, wird er übersprungen und die Kette wird mit dem nächsten Proxy fortgesetzt. Dies bietet mehr Ausfallsicherheit.random_chain: Eine angegebene Anzahl von Proxys (chain_len) wird zufällig aus der Liste ausgewählt und in zufälliger Reihenfolge verwendet.chain_len: (Wird mitrandom_chainverwendet) Gibt die Anzahl der zufällig auszuwählenden Proxys an.proxy_dns: Erzwingt, dass DNS-Anfragen über die Proxy-Kette aufgelöst werden, wodurch DNS-Lecks gemindert werden. Dies ist entscheidend für die Anonymität.remote_dns_subnet: (Wird mitproxy_dnsverwendet) Gibt ein IP-Subnetz an, das für Remote-DNS-Abfragen verwendet werden soll, wennproxy_dnsaktiviert ist. Standard ist10.0.0.0/8.
Proxy-Listenformat
Proxys werden am Ende der Datei proxychains.conf unter dem Abschnitt [ProxyList] definiert. Jeder Proxy-Eintrag folgt diesem Format:
Typ IP-Adresse Port [Benutzername] [Passwort]
Unterstützte Typen sind socks4, socks5 und http.
Beispiel-Snippet für proxychains.conf
# ProxyChains Konfigurationsdatei
# Eine der Proxy-Kettentypen auskommentieren:
# strict_chain
# dynamic_chain
random_chain
# Proxy-Liste zufällig anordnen - nein, das macht keinen Sinn.
# Die Standardreihenfolge der Proxys in der Proxy-Liste beibehalten und in dieser Reihenfolge verwenden.
# Wenn Sie zufällig anordnen möchten, verwenden Sie 'random_chain' oben.
# random_chain_len 2
# Einen Host festlegen, von dem die Kette ausgeht.
# Dies kann für einige Anwendungen nützlich sein.
# chain_len 2
# DNS-Anfragen durch die Kette proxen.
# Dies wird dringend für Anonymität empfohlen.
proxy_dns
# Remote-DNS-Subnetz
# Wenn proxy_dns aktiviert ist, wird dieses Subnetz für Remote-DNS-Abfragen verwendet.
# Standard ist 10.0.0.0/8
# remote_dns_subnet 10.0.0.0/8
# Timeout für Proxy-Verbindungen.
# proxy_timeout 10000
# Proxy-Liste - fügen Sie hier Ihre Proxys hinzu
# Format: type ip_address port [username] [password]
[ProxyList]
# socks4 127.0.0.1 9050 # Beispiel für Tor (Standard-SOCKS-Port)
# socks5 192.168.1.1 1080
# http proxy.example.com 8080 user pass
# Beispiel für die Verwendung mehrerer Proxys für eine Kette
socks5 192.168.1.10 1080
socks5 192.168.1.11 1080
http 192.168.1.12 8080
Unterstützte Proxy-Typen
ProxyChains unterstützt die folgenden Proxy-Protokolle:
- SOCKS4: Einfaches Proxy-Protokoll für TCP-Anwendungen. Unterstützt weder UDP noch Authentifizierung.
- SOCKS5: Erweitertes Proxy-Protokoll, das TCP, UDP und Authentifizierung unterstützt. Empfohlen für die meisten Anwendungsfälle.
- HTTP: Unterstützt HTTP-Proxys zum Tunneln von TCP-Verbindungen. Kann mit oder ohne Authentifizierung verwendet werden.
Anwendungsbeispiele
Um ProxyChains zu verwenden, stellen Sie proxychains4 (oder proxychains auf einigen Systemen) dem Befehl voran, den Sie über die Proxys ausführen möchten.
Grundlegende Verwendung
Überprüfen Sie Ihre externe IP-Adresse über die Proxy-Kette:
proxychains4 curl ifconfig.me
Dieser Befehl leitet die curl-Anfrage durch die konfigurierte Proxy-Kette, und ifconfig.me meldet die IP-Adresse des letzten Proxys in der Kette oder des ersten funktionierenden Proxys, wenn dynamic_chain aktiviert ist.
DNS-Lecks testen
Mit aktiviertem proxy_dns in proxychains.conf:
proxychains4 curl https://ipleak.net/
Überprüfen Sie den DNS-Abschnitt auf ipleak.net, um zu bestätigen, dass DNS-Anfragen über die Proxy-Kette und nicht über Ihren lokalen DNS-Server aufgelöst werden.
Verwendung mit Netzwerk-Scannern
Das Scannen eines Ziels über eine Proxy-Kette kann die Quelle des Scans verschleiern.
proxychains4 nmap -sT -Pn target.example.com
Hinweis: nmaps -sS (SYN-Scan) und andere Raw-Paket-Modi funktionieren nicht mit ProxyChains, da LD_PRELOAD nur Socket-Aufrufe auf höherer Ebene abfängt, nicht die Raw-Paket-Generierung. Verwenden Sie -sT (TCP-Connect-Scan).
Verwendung mit Secure Shell (SSH)
Um eine SSH-Verbindung über eine Proxy-Kette herzustellen:
proxychains4 ssh user@remote_host.com
Verwendung mit Wget
Dateien über eine Proxy-Kette herunterladen:
proxychains4 wget https://example.com/file.zip
Verwendung mit einem Webbrowser (z.B. Firefox)
ProxyChains ist für Befehlszeilenanwendungen konzipiert. Für grafische Anwendungen wie Webbrowser ist es im Allgemeinen effektiver, die Proxy-Einstellungen des Browsers direkt zu konfigurieren oder eine dedizierte Proxy-Manager-Erweiterung zu verwenden. Es kann jedoch erzwungen werden:
proxychains4 firefox
Diese Methode ist für komplexe GUI-Anwendungen oft weniger stabil und zuverlässig als native Proxy-Einstellungen.
Vergleich der Kettentypen
| Merkmal | strict_chain |
dynamic_chain |
random_chain |
|---|---|---|---|
| Proxy-Nutzung | Alle Proxys in der Liste, in der Reihenfolge. | Alle Proxys in der Liste, in der Reihenfolge, überspringt fehlgeschlagene. | chain_len Proxys zufällig ausgewählt und angeordnet. |
| Fehlertoleranz | Niedrig (Verbindung schlägt fehl, wenn ein Proxy fehlschlägt). | Hoch (überspringt fehlgeschlagene Proxys). | Moderat (schlägt fehl, wenn ausgewählte zufällige Proxys fehlschlagen). |
| Anonymität | Hoch (fester Pfad, alle Proxys verwendet). | Hoch (fester Pfad, alle funktionierenden Proxys verwendet). | Variabel (zufälliger Pfad, jedes Mal anders). |
| Leistung | Potenziell langsamer aufgrund des festen, vollständigen Pfads. | Schneller, wenn einige Proxys langsam/ausgefallen sind. | Variabel, hängt von den ausgewählten Proxys ab. |
| Anwendungsfall | Wenn alle Proxys zuverlässig sind und die Reihenfolge wichtig ist. | Wenn Ausfallsicherheit wichtig ist. | Wenn eine Variation des Pfades für Anonymität gewünscht ist. |
Sicherheitsüberlegungen und Einschränkungen
ProxyChains ist ein Tool zum Weiterleiten von Traffic, keine vollständige Anonymitätslösung. Benutzer müssen seine Einschränkungen verstehen.
DNS-Lecks
Ohne aktiviertes proxy_dns können DNS-Anfragen direkt vom lokalen System aufgelöst werden, wodurch die echte IP-Adresse des Benutzers dem DNS-Server preisgegeben wird. Die Aktivierung von proxy_dns ist entscheidend für die Anonymität.
Traffic-Lecks
ProxyChains fängt hauptsächlich TCP-Verbindungen ab. Anwendungen, die UDP oder andere Protokolle direkt verwenden (z.B. einige VPN-Clients, VoIP-Anwendungen, bestimmte Spiele oder nmaps Raw-Paket-Modi), können die Proxy-Kette umgehen, was zu Traffic-Lecks führt. Es ist nicht für Anwendungen geeignet, die eine vollständige Anonymisierung des Netzwerk-Stacks erfordern.
Leistungs-Overhead
Das Verketten mehrerer Proxys führt zu Latenz und reduziert den Durchsatz. Jeder Hop in der Kette fügt Verarbeitungszeit und Netzwerkverzögerung hinzu. Je mehr Proxys in der Kette sind, desto langsamer wird die Verbindung sein.
Keine Patentlösung für Anonymität
ProxyChains bietet eine zusätzliche Verschleierungsebene, garantiert aber keine absolute Anonymität. Ausgeklügelte Angreifer können immer noch Traffic-Muster korrelieren oder andere Schwachstellen (z.B. Browser-Fingerprinting, WebRTC-Lecks) ausnutzen, um einen Benutzer zu de-anonymisieren. Es sollte in Verbindung mit anderen Sicherheitspraktiken verwendet werden, wie einem sicheren Betriebssystem, robusten Firewall-Regeln und sorgfältiger Anwendungs-Auswahl.
Anwendungskompatibilität
ProxyChains basiert auf LD_PRELOAD, um Bibliotheksaufrufe abzufangen. Nicht alle Anwendungen verhalten sich vorhersehbar, wenn ihre Netzwerkfunktionen abgefangen werden. Anwendungen, die benutzerdefinierte Netzwerkbibliotheken, statische Verknüpfung oder spezifische Kernel-Schnittstellen verwenden, funktionieren möglicherweise nicht oder nur fehlerhaft mit ProxyChains.