Wat ProxyChains onderschept en wat het met rust laat
ProxyChains haakt bibliotheekaanroepen in het programma dat het start. Controleer de TCP-dekking met maps, strace en één verzoek, en stop met aannemen dat DNS of UDP volgen.
ProxyChains-NG maakt geen tunnel. Het laadt vooraf een bibliotheek die netwerkgerelateerde libc-aanroepen vervangt binnen het ene programma dat het start, dus de grens is een aanroep in een proces, niet een route voor het hele apparaat. Dat onderscheid bepaalt wat een geslaagde test werkelijk bewijst. Een werkende curl door de keten bevestigt één gehaakte aanroep, niet dat naamresolutie, UDP of elk kindproces dezelfde weg volgde. De handleiding hieronder verifieert de dekking in drie stappen en somt daarna op wat de haak niet kan bereiken.
Hoe het vooraf laden een verbinding bereikt
Bij het opstarten plaatst de launcher libproxychains in LD_PRELOAD en voert daarna het doelprogramma uit. De bibliotheek lost de echte libc-symbolen op en vervangt ze door eigen versies van functies zoals connect en getaddrinfo. Aanroepen die via die symbolen lopen, worden herschreven naar de SOCKS- of HTTP-proxy uit het configuratiebestand. Aanroepen die een andere weg nemen, ontmoeten de haak nooit, en daarom geldt de garantie per aanroep en niet per machine.
Alleen dynamisch gelinkte programma's doen mee, en setuid-binaries onder veilige uitvoering negeren het vooraf laden volledig. Kinderen erven de omgeving, maar alleen zolang de launcher die op zijn plaats houdt.
Bevestig dat de bibliotheek in dat proces is geladen
Start het verzoek en inspecteer het levende proces in plaats van de shell die het startte. Het bestand maps toont elk gedeeld object dat op dat moment in het proces is gemapt.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsEen treffer bevestigt dat de gehaakte bibliotheek aanwezig is, wat nodig maar niet voldoende is. Een leeg resultaat betekent meestal dat u een ander proces hebt geïnspecteerd, bijvoorbeeld een browser die de URL doorgaf aan een instantie die vóór de launcher werd gestart. Controleer met ldd of de binary dynamisch gelinkt is voordat u iets anders najaagt, want een statische build kan het vooraf laden helemaal niet laden. Lees daarna de proxylijst in de configuratie die de launcher werkelijk gebruikte, want een verouderd pad of een gesloten poort levert een werkende haak zonder een werkende keten.
Volg de verbindingen die het proces verlaten
De aanwezigheid van de bibliotheek bewijst niet dat elke aanroep is herschreven, dus volg de systeemaanroepen. Voer één verzoek uit onder de tracer en lees waar de sockets werkelijk heen gingen.
strace -f -e trace=connect -o /tmp/pc.trace proxychains4 -q curl -sS https://example.com/ -o /dev/null
grep -o "sin_port=htons([0-9]*)" /tmp/pc.trace | sort -uDe trace zou alleen verbindingen naar uw proxy-eindpunt moeten tonen, met de poort die overeenkomt met de vermelding in het configuratiebestand. Als de bestemmingsadressen van de doelsite direct in de trace verschijnen, heeft die aanroep de haak omzeild, en dat is precies de bevinding die u zocht. Vergelijk de poortnummers met de proxylijst in plaats van de bestandsnaam te vertrouwen, want een achtergebleven configuratie uit een ander project is een veelvoorkomende bron van stille directe toegang. Bewaar de trace voor het acceptatiedossier; het kost seconden en beslecht discussies over dekking.
Bepaal wat de haak niet kan dekken
Het proxychains-ng-project beperkt omleiding tot TCP en waarschuwt dat scripts, achtergrondprocessen en geladen modules zich anders kunnen gedragen dan het hoofdprogramma. UDP en ICMP vallen buiten het mechanisme, dus alles wat daarop vertrouwt heeft zijn eigen ondersteunde pad nodig. DNS volgt de instelling proxy_dns en het gedrag van de resolver van de toepassing zelf, wat betekent dat één geslaagd HTTPS-verzoek u niets zegt over naamresolutie. Houd ook certificaatvalidatie waar die hoort: een server bereiken via een proxy is geen reden om identiteitscontroles uit te schakelen.
Als directe terugval onmogelijk moet zijn, gebruik dan een handhavingsgrens die het verkeer zelf beheert, zoals een netwerknaamruimte, firewallregels of een VPN, en houd die gescheiden van de bibliotheekhaak. De haak is een compatibiliteitshulpmiddel voor een genoemd programma, geen kill switch. Noteer het programma, de exacte opdracht, de proxypoort die in de trace te zien was en of DNS op afstand werd opgelost; die vier feiten zijn het verschil tussen een geverifieerde reikwijdte en een hoopvolle.