ProxyChains-NG tünel oluşturmaz. Başlattığı tek programın içinde ağla ilgili libc çağrılarını değiştiren bir kitaplığı önceden yükler, dolayısıyla sınır cihaz genelinde bir yol değil, bir süreçteki çağrıdır. Bu ayrım, başarılı bir testin gerçekte neyi kanıtladığını belirler. Zincir üzerinden çalışan bir curl tek bir kancalanmış çağrıyı doğrular, ad çözümlemesinin, UDP'nin veya her alt sürecin aynı yolu izlediğini değil. Aşağıdaki kılavuz kapsamı üç adımda doğrular, ardından kancanın ulaşamadıklarını listeler.

Ön yükleme bir bağlantıya nasıl ulaşır

Başlangıçta başlatıcı libproxychains öğesini LD_PRELOAD içine koyar ve ardından hedef programı yürütür. Kitaplık gerçek libc simgelerini çözer ve bunları connect ile getaddrinfo gibi işlevlerin kendi sürümleriyle değiştirir. Bu simgelerden geçen çağrılar yapılandırma dosyasındaki SOCKS veya HTTP vekiline yeniden yazılır. Başka bir yol tutan çağrılar kancayla hiç karşılaşmaz, bu yüzden garanti makine başına değil çağrı başınadır.

Yalnızca dinamik olarak bağlanmış programlar katılır; güvenli yürütme altındaki setuid ikili dosyaları ön yüklemeyi tamamen yok sayar. Alt süreçler ortamı devralır, ancak yalnızca başlatıcı onu yerinde tuttuğu sürece.

Kitaplığın o süreçte yüklü olduğunu doğrulayın

İsteği başlatın ve onu başlatan kabuk yerine canlı süreci inceleyin. maps dosyası o anda sürece eşlenmiş her paylaşılan nesneyi gösterir.

proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/maps

Bir eşleşme kancalanmış kitaplığın varlığını doğrular; bu gerekli ama yeterli değildir. Boş sonuç genellikle başka bir süreci incelediğiniz anlamına gelir, örneğin URL'yi başlatıcıdan önce başlatılmış bir örneğe devreden bir tarayıcıyı. Başka bir şeyin peşine düşmeden önce ldd ile ikili dosyanın dinamik olarak bağlı olup olmadığını denetleyin, çünkü statik bir derleme ön yüklemeyi hiç yükleyemez. Ardından başlatıcının gerçekte kullandığı yapılandırmadaki vekil listesini okuyun, çünkü eski bir yol veya kapalı bir bağlantı noktası çalışan bir kanca ama çalışmayan bir zincir üretir.

Süreçten çıkan bağlantıları izleyin

Kitaplığın varlığı her çağrının yeniden yazıldığını kanıtlamaz, bu yüzden sistem çağrılarını izleyin. İzleyicinin altında bir istek çalıştırın ve yuvaların gerçekte nereye gittiğini okuyun.

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ızca vekil uç noktanıza giden bağlantıları göstermeli ve bağlantı noktası yapılandırma dosyasındaki girdiyle eşleşmelidir. Hedef sitenin varış adresleri izde doğrudan görünüyorsa o çağrı kancayı atlamıştır ve aradığınız bulgu tam olarak budur. Dosya adına güvenmek yerine bağlantı noktası numaralarını vekil listesiyle karşılaştırın, çünkü başka bir projeden kalan yapılandırma sessiz doğrudan erişimin yaygın bir kaynağıdır. İzi kabul kaydı için saklayın; saniyeler sürer ve kapsam tartışmalarını bitirir.

Kancanın neleri kapsayamayacağına karar verin

proxychains-ng projesi yönlendirmeyi TCP ile sınırlar ve betiklerin, arka plan süreçlerinin ve yüklenen modüllerin ana programdan farklı davranabileceği uyarısını verir. UDP ve ICMP bu mekanizmanın dışındadır, dolayısıyla bunlara dayanan her şeyin kendi desteklenen yoluna ihtiyacı vardır. DNS, proxy_dns ayarına ve uygulamanın kendi çözümleyicisinin davranışına uyar; bu da tek bir başarılı HTTPS isteğinin ad çözümlemesi hakkında size hiçbir şey söylemediği anlamına gelir. Sertifika doğrulamasını da yerinde tutun: bir sunucuya vekil üzerinden ulaşmak kimlik denetimlerini kapatmak için gerekçe değildir.

Doğrudan geri dönüş imkânsız olmak zorundaysa, trafiğin kendisini denetleyen bir uygulama sınırı kullanın; ağ ad alanı, güvenlik duvarı kuralları veya VPN gibi, ve bunu kitaplık kancasından ayrı tutun. Kanca belirli bir program için uyumluluk aracıdır, kill switch değildir. Programı, tam komutu, izde görülen vekil bağlantı noktasını ve DNS'in uzaktan çözülüp çözülmediğini kaydedin; bu dört olgu doğrulanmış bir kapsam ile umutlu bir kapsam arasındaki farktır.

İlgili makaleler