ProxyChains-NG nuk krijon tunel. Ai parangarkon një bibliotekë që zëvendëson thirrjet libc të lidhura me rrjetin brenda programit të vetëm që nis, pra kufiri është një thirrje në një proces, jo një rrugë për gjithë pajisjen. Ky dallim vendos çfarë provon në të vërtetë një test i suksesshëm. Një curl që punon përmes zinxhirit konfirmon një thirrje të kapur, jo që zgjidhja e emrave, UDP ose çdo proces fëmijë ndoqën të njëjtën rrugë. Udhëzuesi më poshtë verifikon mbulimin në tre hapa, pastaj rendit atë që grepi nuk mund të arrijë.

Si arrin parangarkimi në një lidhje

Në nisje, nisësi vendos libproxychains në LD_PRELOAD dhe pastaj ekzekuton programin e synuar. Biblioteka zgjidh simbolet e vërteta të libc dhe i zëvendëson me versionet e veta të funksioneve si connect dhe getaddrinfo. Thirrjet që kalojnë nëpër ato simbole rishkruhen drejt proxy SOCKS ose HTTP nga skedari i konfigurimit. Thirrjet që marrin një rrugë tjetër nuk takojnë kurrë grepin, dhe për këtë arsye garancia është për thirrje dhe jo për makinë.

Marrin pjesë vetëm programet e lidhura në mënyrë dinamike, dhe binarët setuid nën ekzekutim të sigurt e injorojnë plotësisht parangarkimin. Fëmijët trashëgojnë mjedisin, por vetëm sa kohë që nisësi e mban në vend.

Konfirmoni që biblioteka është e ngarkuar në atë proces

Filloni kërkesën dhe inspektoni procesin e gjallë, jo shellin që e nisi. Skedari maps tregon çdo objekt të përbashkët që është hartuar aktualisht në proces.

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

Një përputhje konfirmon praninë e bibliotekës së kapur, e cila është e nevojshme por jo e mjaftueshme. Një rezultat bosh zakonisht do të thotë që inspektuat një proces tjetër, për shembull një shfletues që i dha URL-në një instance të nisur përpara nisësit. Kontrolloni me ldd nëse binari është i lidhur në mënyrë dinamike përpara se të ndiqni ndonjë gjë tjetër, sepse një ndërtim statik nuk mund ta ngarkojë fare parangarkimin. Pastaj lexoni listën e proxy-ve në konfigurimin që nisësi përdori vërtet, sepse një shteg i vjetëruar ose një port i mbyllur prodhojnë një grep që punon pa një zinxhir që punon.

Gjurmoni lidhjet që dalin nga procesi

Prania e bibliotekës nuk provon që çdo thirrje u rishkrua, prandaj ndiqni thirrjet e sistemit. Ekzekutoni një kërkesë nën gjurmuesin dhe lexoni ku shkuan vërtet soketat.

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

Gjurma duhet të tregojë vetëm lidhje drejt pikës fundore të proxy-t tuaj, me portën që përputhet me hyrjen në skedarin e konfigurimit. Nëse adresat e destinacionit të faqes së synuar shfaqen drejtpërdrejt në gjurmë, ajo thirrje e anashkaloi grepin, dhe ky është pikërisht gjetja që po kërkonit. Krahasoni numrat e portave me listën e proxy-ve në vend që të besoni emrin e skedarit, sepse një konfigurim i mbetur nga një projekt tjetër është një burim i zakonshëm i aksesit të drejtpërdrejtë të heshtur. Ruani gjurmën për regjistrin e pranimit; zgjat sekonda dhe zgjidh debatet për mbulimin.

Vendosni çfarë nuk mund të mbulojë grepi

projekti proxychains-ng e kufizon ridrejtimin në TCP dhe paralajmëron se skriptet, proceset në sfond dhe modulet e ngarkuara mund të sillen ndryshe nga programi kryesor. UDP dhe ICMP qëndrojnë jashtë mekanizmit, pra çdo gjë që mbështetet tek ata ka nevojë për rrugën e vet të mbështetur. DNS ndjek cilësimin proxy_dns dhe sjelljen e zgjidhësit të vetë aplikacionit, që do të thotë se një kërkesë e suksesshme HTTPS nuk ju thotë asgjë për zgjidhjen e emrave. Mbani edhe vërtetimin e certifikatave aty ku i takon: arritja e një serveri përmes një proxy nuk është arsye për të çaktivizuar kontrollet e identitetit.

Nëse rënia e drejtpërdrejtë duhet të jetë e pamundur, përdorni një kufi zbatimi që kontrollon vetë trafikun, si një hapësirë emrash rrjeti, rregulla firewall ose një VPN, dhe mbani atë të ndarë nga grepi i bibliotekës. Grepi është një mjet përputhshmërie për një program të caktuar, jo një kill switch. Regjistroni programin, komandën e saktë, portën e proxy-t të parë në gjurmë dhe nëse DNS u zgjidh në distancë; këto katër fakte janë dallimi midis një shtrirjeje të verifikuar dhe një shtrirjeje shprese.

Artikuj të ngjashëm