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 алыстан чечилгенин жазып алыңыз; ушул төрт факт текшерилген кампа менен үмүттөнгөн кампанын айырмасы.