ProxyChains nəyi tutur, nəyi toxunmadan buraxır
ProxyChains işə saldığı proqramda kitabxana çağırışlarını qarmaqlayır. TCP əhatəsini maps, strace və bir sorğu ilə yoxlayın, sonra DNS və ya UDP-nin izlədiyini güman etməyi dayandırın.
ProxyChains-NG tunel yaratmır. İşə saldığı tək proqramın daxilində şəbəkə ilə bağlı libc çağırışlarını əvəz edən bir kitabxananı əvvəlcədən yükləyir, yəni sərhəd cihaz miqyaslı marşrut deyil, prosesdəki çağırışdır. Bu fərq uğurlu testin əslində nəyi sübut etdiyini müəyyən edir. Zəncir vasitəsilə işləyən curl yalnız bir qarmaqlanmış çağırışı təsdiqləyir, ad həllinin, UDP-nin və ya hər alt prosesin eyni yolu izlədiyini deyil. Aşağıdakı təlimat əhatəni üç addımda yoxlayır, sonra qarmağın çata bilmədiyi yerləri sadalayır.
Əvvəlcədən yükləmə bağlantıya necə çatır
Başlanğıcda işə salan vasitə libproxychains kitabxanasını LD_PRELOAD dəyişəninə qoyur və sonra hədəf proqramı icra edir. Kitabxana real libc simvollarını həll edir və connect və getaddrinfo kimi funksiyaların öz versiyalarını yerinə qoyur. Həmin simvollardan keçən çağırışlar konfiqurasiya faylındakı SOCKS və ya HTTP proksisinə yönləndirilir. Başqa yol tutan çağırışlar qarmaqla heç vaxt qarşılaşmır, buna görə də zəmanət maşın üzrə deyil, çağırış üzrədir.
Yalnız dinamik linklənmiş proqramlar iştirak edir, təhlükəsiz icra altındakı setuid binarları isə əvvəlcədən yükləməni tamamilə nəzərə almır. Alt proseslər mühiti miras alır, ancaq işə salan vasitə onu yerində saxladıqca.
Kitabxananın həmin prosesdə yükləndiyini təsdiqləyin
Sorğunu başladın və onu işə salan qabıqdan deyil, canlı prosesdən yoxlayın. maps faylı hazırda prosesə xəritələnmiş hər paylaşılan obyekti göstərir.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsUyğunluq qarmaqlanmış kitabxananın mövcud olduğunu təsdiqləyir, bu zəruri amma kifayət deyil. Boş nəticə adətən başqa prosesi yoxladığınızı bildirir, məsələn URL-i işə salan vasitədən əvvəl başlamış nüsxəyə ötürən brauzeri. Başqa heç nəyin ardınca getməzdən əvvəl binarnı ldd ilə dinamik linklənib-linklənmədiyini yoxlayın, çünki statik quruluş əvvəlcədən yükləməni ümumiyyətlə yükləyə bilmir. Sonra işə salan vasitənin həqiqətən istifadə etdiyi konfiqurasiyadakı proksi siyahısını oxuyun, çünki köhnəlmiş yol və ya bağlı port işləyən qarmaq, amma işləməyən zəncir yaradır.
Prosesdən çıxan bağlantıları izləyin
Kitabxananın mövcudluğu hər çağırışın yenidən yazıldığını sübut etmir, buna görə sistem çağırışlarını izləyin. Bir sorğunu izləyicinin altında işə salın və soketlərin həqiqətən hara getdiyini oxuyun.
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İz yalnız proksi son nöqtənizə bağlantıları göstərməli, port konfiqurasiya faylındakı girişlə uyğun olmalıdır. Hədəf saytın təyinat ünvanlarının izdə birbaşa görünməsi həmin çağırışın qarmağı keçdiyini bildirir və axtardığınız tapıntı elə budur. Port nömrələrini fayl adına güvənmək əvəzinə proksi siyahısı ilə müqayisə edin, çünki başqa layihədən qalmış konfiqurasiya səssiz birbaşa girişin geniş yayılmış mənbəyidir. İzi qəbul qeydi üçün saxlayın; saniyələr çəkir və əhatə ilə bağlı mübahisələri həll edir.
Qarmağın nəyi əhatə edə bilmədiyini müəyyənləşdirin
proxychains-ng layihəsi yönləndirməni TCP ilə məhdudlaşdırır və skriptlərin, fon proseslərinin və yüklənmiş modulların əsas proqramdan fərqli davrana biləcəyini xəbərdar edir. UDP və ICMP mexanizmdən kənarda qalır, buna görə onlara güvənən hər şey öz dəstəklənən yoluna ehtiyac duyur. DNS proxy_dns parametrini və tətbiqin öz həlledici davranışını izləyir, yəni bir uğurlu HTTPS sorğusu sizə ad həlli haqqında heç nə demir. Sertifikat yoxlamasını da yerində saxlayın: proksi vasitəsilə serverə çatmaq şəxsiyyət yoxlamalarını söndürmək üçün səbəb deyil.
Birbaşa geri dönüş qeyri-mümkün olmalıdırsa, trafikin özünü idarə edən bir məcburiyyət sərhədi istifadə edin, məsələn şəbəkə ad məkanı, firewall qaydaları və ya VPN və onu kitabxana qarmağından ayrı saxlayın. Qarmaq adı çəkilən proqram üçün uyğunluq alətidir, kill switch deyil. Proqramı, dəqiq əmri, izdə görünən proksi portunu və DNS-in uzaqdan həll edilib-edilmədiyini qeyd edin; bu dörd fakt yoxlanılmış əhatə ilə ümidvar əhatə arasındakı fərqdir.