ProxyChains нені ұстап алады және нені тыныш қалдырады
ProxyChains іске қосқан бағдарламаның ішіндегі кітапхана шақыруларын ілгекке алады. maps, strace және бір сұраныспен TCP қамтуын тексеріңіз, содан кейін DNS немесе UDP ілеседі деп есептеуді доғарыңыз.
ProxyChains-NG туннель жасамайды. Ол іске қосатын жалғыз бағдарламаның ішінде желіге қатысты libc шақыруларын алмастыратын кітапхананы алдын ала жүктейді, сондықтан шекара — процестегі шақыру, бүкіл құрылғының бағыты емес. Дәл осы айырмашылық сәтті тестің шын мәнінде нені дәлелдейтінін анықтайды. Тізбек арқылы жұмыс істейтін curl бір ілген шақыруды растайды, атты шешу, UDP немесе әрбір еншілес процесс сол жолмен жүрді дегенді емес. Төмендегі нұсқаулық қамтуды үш қадаммен тексереді, содан кейін ілгек жете алмайтын жерлерді тізіп шығады.
Алдын ала жүктеу қосылымға қалай жетеді
Іске қосылу кезінде іске қосқыш libproxychains кітапханасын LD_PRELOAD ішіне қояды, содан кейін мақсатты бағдарламаны орындайды. Кітапхана нақты libc таңбаларын шешіп, connect мен getaddrinfo сияқты функциялардың өз нұсқаларымен алмастырады. Осы таңбалар арқылы өтетін шақырулар конфигурация файлындағы SOCKS немесе HTTP прокси серверіне қайта жазылады. Басқа жолға түсетін шақырулар ілгекке ешқашан кездеспейді, сондықтан кепілдік әр шақыруға қатысты, бүкіл машинаға емес.
Тек динамикалық байланысқан бағдарламалар қатысады, ал қауіпсіз орындау астындағы setuid бинарлары алдын ала жүктеуді мүлдем елемейді. Еншілестер ортаны мұраға алады, бірақ іске қосқыш оны орнында ұстап тұрғанша ғана.
Кітапхананың сол процеске жүктелгенін растаңыз
Сұранысты бастап, оны іске қосқан қабықты емес, тірі процесті қарап шығыңыз. maps файлы процеске қазір бейнеленген әрбір ортақ нысанды көрсетеді.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsСәйкестік ілген кітапхананың бар екенін растайды, бұл қажет, бірақ жеткіліксіз. Бос нәтиже әдетте сіз басқа процесті қарағаныңызды білдіреді, мысалы, URL мекенжайын іске қосқыштан бұрын іске қосылған данаға берген браузерді. Басқа нәрсенің соңына түспес бұрын ldd арқылы бинардың динамикалық байланысқанын тексеріңіз, өйткені статикалық құрастыру алдын ала жүктеуді мүлдем жүктей алмайды. Содан кейін іске қосқыш шынымен пайдаланған конфигурациядағы прокси тізімін оқыңыз, өйткені ескірген жол немесе жабық порт жұмыс істейтін ілгек береді, бірақ жұмыс істейтін тізбек бермейді.
Процестен шығатын қосылымдарды қадағалаңыз
Кітапхананың болуы әр шақырудың қайта жазылғанын дәлелдемейді, сондықтан жүйелік шақыруларды бақылаңыз. Трассировщик астында бір сұранысты орындап, сокеттердің шын мәнінде қайда кеткенін оқыңыз.
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Із тек сіздің прокси соңғы нүктесіне қарай қосылымдарды көрсетуі керек, порт конфигурация файлындағы жазбаға сәйкес болуы тиіс. Егер мақсатты сайттың баратын мекенжайлары ізде тікелей көрінсе, бұл шақыру ілгекті айналып өткенін білдіреді және дәл осы сіз іздеген табыс. Порт нөмірлерін файл атына сенудің орнына прокси тізімімен салыстырыңыз, өйткені басқа жобадан қалған конфигурация үнсіз тікелей қатынастың жиі көзі. Ізді қабылдау хаттамасы үшін сақтаңыз; ол секундтарға созылады және қамту туралы дауларды шешеді.
Ілгек нені қамти алмайтынын шешіңіз
proxychains-ng жобасы қайта бағыттауды TCP-мен шектейді және скрипттер, фондық процестер мен жүктелген модульдер негізгі бағдарламадан өзгеше әрекет етуі мүмкін екенін ескертеді. UDP мен ICMP осы механизмнен тыс, сондықтан оларға сүйенетін кез келген нәрсеге өзінің қолдау көрсетілетін жолы қажет. DNS proxy_dns параметріне және қолданбаның өз шешушісінің әрекетіне бағынады, яғни бір сәтті HTTPS сұранысы атты шешу туралы ештеңе айтпайды. Сертификат тексеруін де өз орнында қалдырыңыз: прокси арқылы серверге жету жеке басты тексеруді өшіруге себеп емес.
Егер тікелей кері қайту мүмкін болмауы керек болса, трафиктің өзін басқаратын орындау шекарасын қолданыңыз, мысалы желілік аттар кеңістігі, firewall ережелері немесе VPN, және оны кітапхана ілгегінен бөлек ұстаңыз. Ілгек нақты бағдарламаға арналған үйлесімділік құралы, kill switch емес. Бағдарламаны, нақты пәрменді, ізде көрінген прокси портын және DNS қашықтан шешілгенін жазып алыңыз; осы төрт факт тексерілген ауқым мен үмітпен қаралған ауқымның айырмашылығы.