Zer atzematen duen ProxyChains-ek eta zer uzten duen bakean
ProxyChains-ek abiarazten duen programako liburutegi-deiei heldu egiten die. Egiaztatu TCP estaldura maps, strace eta eskaera bakarrarekin, eta utzi pentsatzeari DNS edo UDP atzetik doazenik.
ProxyChains-NG-k ez du tunelik sortzen. Abiarazten duen programa bakar baten barruan sareko libc deiak ordezkatzen dituen liburutegi bat aurrez kargatzen du, beraz muga prozesu bateko deia da, ez gailu osoko ibilbide bat. Bereizketa horrek erabakitzen du zer frogatzen duen benetan proba arrakastatsu batek. Katea zeharkatzen duen curl funtzional batek atzemandako dei bat baieztatzen du, ez izen-ebazpenak, UDPk edo prozesu seme bakoitzak bide bera jarraitu zuenik. Beheko gidak hiru urratsetan egiaztatzen du estaldura, eta gero zerrendatzen du kakoak zer ezin duen iritsi.
Nola iristen den aurrez karga konexio batera
Abiaraztean, abiarazleak libproxychains LD_PRELOAD barruan jartzen du eta gero helburuko programa exekutatzen du. Liburutegiak libc-ren benetako sinboloak ebazten ditu eta bere bertsioekin ordezkatzen ditu connect eta getaddrinfo bezalako funtzioak. Sinbolo horietatik pasatzen diren deiak konfigurazio fitxategiko SOCKS edo HTTP proxira biridazten dira. Beste bide bat hartzen duten deiek ez dute inoiz kakorik aurkitzen, eta horregatik bermea dei bakoitzeko da, ez makina osorako.
Esteka dinamikodun programek soilik hartzen dute parte, eta exekuzio seguruko setuid binarioek erabat ezikusi egiten diote aurrez kargari. Seme-alabek ingurunea heredatzen dute, baina abiarazleak tokian mantentzen duen bitartean soilik.
Egiaztatu liburutegia prozesu horretan kargatuta dagoela
Hasi eskaera eta aztertu prozesu bizia, abiarazi zuen shell-a baino. maps fitxategiak prozesuan une honetan mapatuta dauden objektu partekatu guztiak erakusten ditu.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsBat-etortze batek kako-liburutegia dagoela baieztatzen du, eta hori beharrezkoa da baina ez da nahikoa. Emaitza hutsak esan nahi du beste prozesu bat aztertu duzula, adibidez abiarazlearen aurretik abiatutako instantzia bati URLa eman zion nabigatzaile bat. Egiaztatu ldd erabiliz binarioa esteka dinamikoduna den, beste ezeren atzetik hasi aurretik, eraikuntza estatikoak ezin duelako aurrez karga batere kargatu. Gero irakurri abiarazleak benetan erabili zuen konfigurazioko proxy zerrenda, bide zaharkitu batek edo portu itxiek kako funtzionala ematen baitute kate funtzionalik gabe.
Jarraitu prozesua uzten duten konexioei
Liburutegiaren presentziak ez du frogatzen dei bakoitza biridatzi zenik, beraz jarraitu sistemako deiak. Exekutatu eskaera bat trazatazailepean eta irakurri socketak benetan nora joan ziren.
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 -uTrazak zure proxy muturrerako konexioak soilik erakutsi beharko lituzke, portua konfigurazio fitxategiko sarrerarekin bat etorrita. Helburuko gunearen helmuga-helbideak trazan zuzenean agertzen badira, dei horrek kakotik saihestu zuen, eta horixe da bilatzen zenuen aurkikuntza. Alderatu portu-zenbakiak proxy zerrendarekin fitxategi-izenari fidatu beharrean, beste proiektu bateko konfigurazio soberakina sarbide zuzen isilaren iturri ohikoa baita. Gorde traza onarpen-erregistrorako; segundo batzuk besterik ez du hartzen eta estalduraren inguruko eztabaidak argitzen ditu.
Erabaki zer ezin duen kakoak estali
proxychains-ng proiektuak TCPra mugatzen du birbideratzea eta ohartarazten du scriptek, atzeko planoko prozesuek eta kargatutako moduluek programa nagusiaren desberdin jokatu dezaketela. UDP eta ICMP mekanismotik kanpo daude, beraz, horien mende dagoen edozein gauzak bere bide onartua behar du. DNS proxy_dns ezarpenari eta aplikazioaren resolver-aren jokabideari jarraitzen dio, eta horrek esan nahi du HTTPS eskaera arrakastatsu batek ezer esaten ez dizula izen-ebazpenaz. Mantendu ziurtagiriak egiaztatzea dagokion tokian ere: zerbitzari batera proxy bidez iristea ez da identitatea egiaztatzeari uzteko arrazoia.
Atzera egite zuzena ezinezkoa izan dadin, erabili trafikoa bera kontrolatzen duen betearazpen-muga bat, hala nola sare-namespace bat, suebaki-arauak edo VPN bat, eta eduki liburutegi-kakotik bereizita. Kak tresna bat da programa jakin batentzako, ez kill switch bat. Erregistratu programa, komando zehatza, trazan ikusitako proxy portua eta DNS urrunetik ebatzi zen ala ez; lau datu horiek dira egiaztatutako esparruaren eta itxaropen-esparruaren arteko aldea.