Apa yang dipintas ProxyChains dan apa yang dibiarkannya
ProxyChains mengaitkan panggilan pustaka dalam program yang dilancarkannya. Sahkan liputan TCP dengan maps, strace dan satu permintaan, kemudian berhenti menganggap DNS atau UDP turut serta.
ProxyChains-NG tidak mencipta terowong. Ia memuatkan pustaka terlebih dahulu yang menggantikan panggilan libc berkaitan rangkaian di dalam satu program yang dilancarkannya, jadi sempadannya ialah panggilan dalam proses, bukan laluan untuk seluruh peranti. Perbezaan inilah yang menentukan apa yang sebenarnya dibuktikan oleh ujian yang berjaya. curl yang berfungsi melalui rantaian mengesahkan satu panggilan yang dikaitkan, bukan bahawa penyelesaian nama, UDP atau setiap proses anak mengikut laluan yang sama. Panduan di bawah mengesahkan liputan dalam tiga langkah, kemudian menyenaraikan apa yang tidak dapat dicapai oleh cangkuk itu.
Bagaimana pramuat sampai ke satu sambungan
Semasa bermula, pelancar meletakkan libproxychains ke dalam LD_PRELOAD dan kemudian melaksanakan program sasaran. Pustaka menyelesaikan simbol libc sebenar dan menggantikannya dengan versinya sendiri bagi fungsi seperti connect dan getaddrinfo. Panggilan yang melalui simbol itu ditulis semula ke proksi SOCKS atau HTTP daripada fail konfigurasi. Panggilan yang mengambil laluan lain tidak pernah bertemu cangkuk, dan kerana itu jaminan adalah bagi setiap panggilan, bukan setiap mesin.
Hanya program yang dipautkan secara dinamik menyertai, dan binari setuid di bawah pelaksanaan selamat mengabaikan pramuat sepenuhnya. Anak-anak mewarisi persekitaran, tetapi hanya selagi pelancar mengekalkannya di tempatnya.
Sahkan pustaka dimuatkan dalam proses itu
Mulakan permintaan dan periksa proses yang hidup, bukan shell yang melancarkannya. Fail maps menunjukkan setiap objek kongsi yang dipetakan ke dalam proses pada masa itu.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsPadanan mengesahkan pustaka yang dicangkuk hadir, yang perlu tetapi tidak mencukupi. Hasil kosong biasanya bermaksud anda memeriksa proses lain, contohnya pelayar yang menyerahkan URL kepada instans yang dimulakan sebelum pelancar. Periksa dengan ldd sama ada binari itu dipautkan secara dinamik sebelum mengejar apa-apa lagi, kerana binaan statik tidak boleh memuatkan pramuat sama sekali. Kemudian baca senarai proksi dalam konfigurasi yang benar-benar digunakan oleh pelancar, kerana laluan usang atau port tertutup menghasilkan cangkuk yang berfungsi tanpa rantaian yang berfungsi.
Jejaki sambungan yang meninggalkan proses
Kehadiran pustaka tidak membuktikan setiap panggilan ditulis semula, jadi ikut panggilan sistem. Jalankan satu permintaan di bawah penjejak dan baca ke mana soket sebenarnya pergi.
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 -uJejak sepatutnya hanya menunjukkan sambungan ke titik akhir proksi anda, dengan port yang sepadan dengan entri dalam fail konfigurasi. Jika alamat destinasi laman sasaran muncul terus dalam jejak, panggilan itu memintas cangkuk, dan itulah penemuan yang anda cari. Bandingkan nombor port dengan senarai proksi dan bukan mempercayai nama fail, kerana konfigurasi sisa daripada projek lain ialah punca biasa akses terus yang senyap. Simpan jejak untuk rekod penerimaan; ia mengambil beberapa saat dan menyelesaikan perdebatan tentang liputan.
Putuskan apa yang tidak dapat diliputi oleh cangkuk
projek proxychains-ng mengehadkan penghalaan semula kepada TCP dan memberi amaran bahawa skrip, proses latar belakang dan modul yang dimuatkan boleh berkelakuan berbeza daripada program utama. UDP dan ICMP berada di luar mekanisme, jadi apa-apa yang bergantung padanya memerlukan laluan tersokong sendiri. DNS mengikut tetapan proxy_dns dan tingkah laku penyelesai aplikasi itu sendiri, yang bermaksud satu permintaan HTTPS yang berjaya tidak memberitahu anda apa-apa tentang penyelesaian nama. Kekalkan juga pengesahan sijil di tempatnya: mencapai pelayan melalui proksi bukan alasan untuk mematikan pemeriksaan identiti.
Jika sandaran langsung mesti mustahil, gunakan sempadan penguatkuasaan yang mengawal trafik itu sendiri, seperti ruang nama rangkaian, peraturan tembok api atau VPN, dan asingkannya daripada cangkuk pustaka. Cangkuk ialah alat keserasian untuk program tertentu, bukan kill switch. Catatkan program, arahan tepat, port proksi yang dilihat dalam jejak dan sama ada DNS diselesaikan dari jauh; empat fakta itu ialah perbezaan antara skop yang disahkan dan skop yang penuh harapan.