ProxyChains nimani ushlaydi va nimani tinch qoldiradi
ProxyChains ishga tushirgan dastur ichidagi kutubxona chaqiruvlarini ilgakka oladi. maps, strace va bitta so'rov bilan TCP qamrovini tekshiring, so'ng DNS yoki UDP ham ergashadi deb o'ylashni bas qiling.
ProxyChains-NG tunnel yaratmaydi. U ishga tushiradigan yagona dastur ichida tarmoqqa oid libc chaqiruvlarini almashtiruvchi kutubxonani oldindan yuklaydi, shuning uchun chegara — jarayondagi chaqiruv, butun qurilma uchun yo'nalish emas. Aynan shu farq muvaffaqiyatli sinov aslida nimani isbotlashini belgilaydi. Zanjir orqali ishlaydigan curl bitta ilgakka olingan chaqiruvni tasdiqlaydi, nom hal qilish, UDP yoki har bir bola jarayon bir xil yo'ldan yurganini emas. Quyidagi qo'llanma qamrovni uch bosqichda tekshiradi, so'ng ilgak yeta olmaydigan joylarni sanab chiqadi.
Oldindan yuklash ulanishga qanday yetadi
Ishga tushishda ishga tushiruvchi libproxychains ni LD_PRELOAD ichiga qo'yadi va so'ng maqsadli dasturni bajaradi. Kutubxona haqiqiy libc belgilarini hal qiladi va ularni connect hamda getaddrinfo kabi funksiyalarning o'z versiyalari bilan almashtiradi. Shu belgilar orqali o'tadigan chaqiruvlar konfiguratsiya faylidagi SOCKS yoki HTTP proksisiga qayta yoziladi. Boshqa yo'lni tanlagan chaqiruvlar ilgakka hech qachon uchramaydi, shuning uchun kafolat har bir chaqiruvga tegishli, butun mashinaga emas.
Faqat dinamik bog'langan dasturlar qatnashadi, xavfsiz bajarish ostidagi setuid binar fayllari esa oldindan yuklashni butunlay e'tiborsiz qoldiradi. Bolalar muhitni meros oladi, lekin ishga tushiruvchi uni joyida ushlab turguncha xolos.
Kutubxona aynan shu jarayonda yuklanganini tasdiqlang
So'rovni boshlang va uni ishga tushirgan qobiqni emas, tirik jarayonni ko'zdan kechiring. maps fayli hozir jarayonga moslangan har bir umumiy obyektni ko'rsatadi.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsMos kelish ilgakka olingan kutubxona borligini tasdiqlaydi, bu zarur, ammo yetarli emas. Bo'sh natija odatda siz boshqa jarayonni ko'rganingizni bildiradi, masalan, URL manzilini ishga tushiruvchidan oldin boshlangan nusxaga bergan brauzerni. Boshqa narsa ortidan quvishdan oldin ldd bilan binar fayl dinamik bog'langanini tekshiring, chunki statik yig'ish oldindan yuklashni umuman yuklay olmaydi. So'ng ishga tushiruvchi haqiqatan ishlatgan konfiguratsiyadagi proksi ro'yxatini o'qing, chunki eskirgan yo'l yoki yopiq port ishlaydigan ilgak bersa-da, ishlaydigan zanjir bermaydi.
Jarayondan chiqadigan ulanishlarni kuzating
Kutubxona borligi har bir chaqiruv qayta yozilganini isbotlamaydi, shuning uchun tizim chaqiruvlarini kuzatib boring. Kuzatuvchi ostida bitta so'rovni ishga tushiring va soketlar aslida qayerga ketganini o'qing.
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 -uIz faqat sizning proksi yakuniy nuqtangizga ulanishlarni ko'rsatishi kerak va port konfiguratsiya faylidagi yozuvga mos kelishi lozim. Maqsadli saytning manzillari izda to'g'ridan-to'g'ri ko'rinsa, bu chaqiruv ilgakni chetlab o'tgan bo'ladi, va siz izlagan topilma aynan shu. Fayl nomiga ishonish o'rniga port raqamlarini proksi ro'yxati bilan solishtiring, chunki boshqa loyihadan qolgan konfiguratsiya jimgina to'g'ridan-to'g'ri kirishning keng tarqalgan manbai. Izni qabul yozuvi uchun saqlang; u bir necha soniya oladi va qamrov haqidagi bahslarni hal qiladi.
Ilgak nimani qamrab olmasligini hal qiling
proxychains-ng loyihasi qayta yo'naltirishni TCP bilan cheklaydi va skriptlar, fon jarayonlari hamda yuklangan modullar asosiy dasturdan boshqacha harakat qilishi mumkinligi haqida ogohlantiradi. UDP va ICMP bu mexanizmdan tashqarida, shuning uchun ularga tayanadigan har narsaga o'zining qo'llab-quvvatlanadigan yo'li kerak. DNS proxy_dns sozlamasiga va ilovaning o'z hal qiluvchisi xulqiga ergashadi, ya'ni bitta muvaffaqiyatli HTTPS so'rovi nom hal qilish haqida sizga hech narsa aytmaydi. Sertifikat tekshiruvini ham joyida saqlang: proksi orqali serverga yetish shaxsni tekshirishni o'chirish uchun sabab emas.
Agar to'g'ridan-to'g'ri orqaga qaytish imkonsiz bo'lishi shart bo'lsa, trafikni o'zi boshqaradigan majburiy chegara ishlating, masalan, tarmoq nomlar fazosi, firewall qoidalari yoki VPN va uni kutubxona ilgagidan alohida tuting. Ilgak muayyan dastur uchun moslik vositasi, kill switch emas. Dasturni, aniq buyruqni, izda ko'rilgan proksi portini va DNS uzoqdan hal qilingan-qilinmaganini yozib qo'ying; aynan shu to'rt fakt tekshirilgan qamrov va umidga asoslangan qamrov o'rtasidagi farqdir.