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 барање не ви кажува ништо за разрешувањето имиња. Задржете ја и проверката на сертификати на место: стигнувањето до сервер преку прокси не е причина да ги исклучите проверките на идентитетот.

Ако директното враќање мора да биде невозможно, користете граница на спроведување што го контролира самиот сообраќај, како мрежен именски простор, правила на огнен ѕид или VPN, и држете ја одделно од библиотечната кука. Куката е алатка за компатибилност за именувана програма, не kill switch. Запишете ја програмата, точната команда, прокси портата видена во трагата и дали DNS бил решен оддалечено; тие четири факти се разликата помеѓу проверен опфат и опфат на надеж.

Поврзани статии