ProxyChains-NG no crea cap túnel. Precàrrega una biblioteca que substitueix les crides libc relacionades amb la xarxa dins de l'únic programa que llança, així que el límit és una crida dins d'un procés, no una ruta per a tot el dispositiu. Aquesta distinció decideix què demostra realment una prova correcta. Un curl que funciona a través de la cadena confirma una sola crida enganxada, no que la resolució de noms, UDP o cada procés fill hagin seguit el mateix camí. La guia següent verifica la cobertura en tres passos i després enumera què no pot abastar l'enganxament.

Com arriba la precàrrega fins a una connexió

En arrencar, el llançador posa libproxychains dins de LD_PRELOAD i després executa el programa objectiu. La biblioteca resol els símbols reals de libc i els substitueix per les seves pròpies versions de funcions com connect i getaddrinfo. Les crides que passen per aquests símbols es reescriuen cap al proxy SOCKS o HTTP del fitxer de configuració. Les crides que prenen una altra ruta no troben mai l'enganxament, i per això la garantia és per crida i no per màquina.

Només hi participen els programes enllaçats dinàmicament, i els binaris setuid sota execució segura ignoren del tot la precàrrega. Els fills hereten l'entorn, però només mentre el llançador el manté al lloc.

Confirmeu que la biblioteca està carregada en aquest procés

Inicieu la petició i inspeccioneu el procés viu, no la consola que l'ha llançat. El fitxer maps mostra cada objecte compartit que hi ha mapat al procés en aquest moment.

proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/maps

Una coincidència confirma que la biblioteca enganxada hi és, cosa necessària però no suficient. Un resultat buit normalment vol dir que heu inspeccionat un procés diferent, per exemple un navegador que ha passat l'URL a una instància iniciada abans del llançador. Comproveu amb ldd que el binari estigui enllaçat dinàmicament abans de perseguir res més, perquè una compilació estàtica no pot carregar la precàrrega de cap manera. Després llegiu la llista de proxys de la configuració que el llançador ha fet servir realment, ja que un camí obsolet o un port tancat donen un enganxament que funciona sense cap cadena que funcioni.

Resseguiu les connexions que surten del procés

La presència de la biblioteca no demostra que cada crida s'hagi reescrit, així que seguiu les crides de sistema. Executeu una petició sota el rastrejador i llegiu on han anat realment els sockets.

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 -u

El rastre ha de mostrar només connexions cap al vostre extrem de proxy, amb el port que coincideixi amb l'entrada del fitxer de configuració. Si les adreces de destinació del lloc objectiu apareixen directament al rastre, aquella crida ha evitat l'enganxament, i aquesta és precisament la troballa que buscàveu. Compareu els números de port amb la llista de proxys en lloc de confiar en el nom del fitxer, perquè una configuració sobrant d'un altre projecte és una font habitual d'accés directe silenciós. Guardeu el rastre per a l'acta d'acceptació; triga segons i resol discussions sobre la cobertura.

Decidiu què no pot cobrir l'enganxament

El projecte proxychains-ng limita la redirecció a TCP i avisa que els scripts, els processos en segon pla i els mòduls carregats es poden comportar de manera diferent del programa principal. UDP i ICMP queden fora del mecanisme, així que tot el que hi depengui necessita el seu propi camí suportat. DNS segueix el paràmetre proxy_dns i el comportament propi del resolutor de l'aplicació, cosa que vol dir que una petició HTTPS correcta no us diu res sobre la resolució de noms. Mantingueu també la validació de certificats on li toca: arribar a un servidor a través d'un proxy no és cap motiu per desactivar les comprovacions d'identitat.

Si la caiguda directa ha de ser impossible, feu servir una frontera d'aplicació que controli el trànsit mateix, com ara un espai de noms de xarxa, regles de tallafoc o una VPN, i manteniu-la separada de l'enganxament de biblioteca. L'enganxament és una eina de compatibilitat per a un programa concret, no un kill switch. Anoteu el programa, la comanda exacta, el port de proxy vist al rastre i si DNS es va resoldre remotament; aquests quatre fets són la diferència entre un abast verificat i un abast d'esperança.

Articles relacionats