ProxyChains inachukua nini na inaacha nini
ProxyChains inashika miito ya maktaba katika programu inayoizindua. Thibitisha ufikiaji wa TCP kwa maps, strace na ombi moja, kisha acha kudhani kuwa DNS au UDP zinafuata.
ProxyChains-NG haiundi handaki. Inapakia mapema maktaba inayobadilisha miito ya libc inayohusiana na mtandao ndani ya programu moja inayoizindua, kwa hiyo mpaka ni mwito ndani ya mchakato, si njia ya kifaa kizima. Tofauti hiyo huamua kile ambacho jaribio lililofanikiwa huthibitisha kweli. curl inayofanya kazi kupitia mnyororo huthibitisha mwito mmoja ulioshikwa, si kwamba utatuzi wa majina, UDP au kila mchakato mtoto ulifuata njia hiyo hiyo. Mwongozo hapa chini huthibitisha ufikiaji kwa hatua tatu, kisha huorodhesha kile ambacho ndoano haiwezi kufikia.
Jinsi upakiaji wa mapema unavyofikia muunganisho
Wakati wa kuanza, kizindua huweka libproxychains ndani ya LD_PRELOAD kisha hufanya programu lengwa. Maktaba hutatua alama halisi za libc na kuzibadilisha na matoleo yake ya kazi kama connect na getaddrinfo. Miito inayopita katika alama hizo huandikwa upya kwenda proksi ya SOCKS au HTTP kutoka faili ya usanidi. Miito inayochukua njia nyingine haikutani kamwe na ndoano, ndiyo sababu dhamana ni kwa kila mwito na si kwa mashine.
Hushiriki tu programu zilizounganishwa kwa njia inayobadilika, na faili za binary za setuid chini ya utekelezaji salama hupuuza kabisa upakiaji wa mapema. Watoto hurithi mazingira, lakini tu wakati kizindua kinakiweka mahali pake.
Thibitisha kuwa maktaba imepakiwa katika mchakato huo
Anzisha ombi na ukague mchakato ulio hai badala ya shell iliyoanzisha. Faili ya maps inaonyesha kila kitu kilichoshirikiwa kilichopangwa kwenye mchakato kwa sasa.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsUlinganifu huthibitisha kuwa maktaba iliyoshikwa ipo, jambo ambalo ni lazima lakini halitoshi. Matokeo tupu kwa kawaida humaanisha ulikagua mchakato mwingine, kwa mfano kivinjari kilichokabidhi URL kwa nakala iliyoanzishwa kabla ya kizindua. Kagua kwa ldd ikiwa binary imeunganishwa kwa njia inayobadilika kabla ya kufuata kitu kingine chochote, kwa sababu ujenzi tulivu hauwezi kupakia upakiaji wa mapema hata kidogo. Kisha soma orodha ya proksi katika usanidi ambao kizindua kilitumia kweli, kwa sababu njia ya zamani au bandari iliyofungwa hutoa ndoano inayofanya kazi bila mnyororo unaofanya kazi.
Fuatilia miunganisho inayoondoka kwenye mchakato
Uwepo wa maktaba hauthibitishi kuwa kila mwito uliandikwa upya, kwa hiyo fuata miito ya mfumo. Endesha ombi moja chini ya kifuatiliaji na usome soketi zilikoenda kweli.
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 -uUfuatiliaji unapaswa kuonyesha miunganisho kwenda kwenye kituo chako cha mwisho cha proksi pekee, na bandari ikilingane na ingizo kwenye faili ya usanidi. Ikiwa anwani za marudio za tovuti lengwa zinaonekana moja kwa moja kwenye ufuatiliaji, mwito huo uliikwepa ndoano, na hicho ndicho ugunduzi uliokuwa ukiutafuta. Linganisha namba za bandari na orodha ya proksi badala ya kuamini jina la faili, kwa sababu usanidi uliobaki kutoka mradi mwingine ni chanzo cha kawaida cha ufikiaji wa moja kwa moja wa kimya. Hifadhi ufuatiliaji kwa rekodi ya kukubalika; huchukua sekunde na hutatua mabishano kuhusu ufikiaji.
Amua kile ndoano haiwezi kufunika
mradi wa proxychains-ng hupunguza uelekezaji upya kwa TCP na huonya kwamba skripti, michakato ya chinichini na moduli zilizopakiwa zinaweza kuishi tofauti na programu kuu. UDP na ICMP ziko nje ya utaratibu, kwa hiyo kitu chochote kinachotegemea hizo kinahitaji njia yake mwenyewe inayoungwa mkono. DNS hufuata mpangilio wa proxy_dns na tabia ya kisuluhishi cha programu yenyewe, kumaanisha ombi moja la HTTPS lililofanikiwa haliambii chochote kuhusu utatuzi wa majina. Weka pia uthibitishaji wa cheti mahali pake: kufikia seva kupitia proksi si sababu ya kuzima ukaguzi wa utambulisho.
Ikiwa kurudi moja kwa moja lazima kusiwezekane, tumia mpaka wa utekelezaji unaodhibiti trafiki yenyewe, kama nafasi ya majina ya mtandao, kanuni za firewall au VPN, na uutenganishe na ndoano ya maktaba. Ndoano ni chombo cha uoanifu kwa programu maalum, si kill switch. Rekodi programu, amri kamili, bandari ya proksi iliyoonekana kwenye ufuatiliaji na ikiwa DNS ilitatuliwa kwa mbali; mambo hayo manne ndiyo tofauti kati ya wigo uliothibitishwa na wigo wa matumaini.