
proxychains - एक उपकरण जो किसी भी दिए गए एप्लिकेशन द्वारा किए गए किसी भी TCP कनेक्शन को TOR या किसी अन्य SOCKS4, SOCKS5 या HTTP(S) प्रॉक्सी जैसे प्रॉक्सी के माध्यम से गुजरने के लिए बाध्य करता है। समर्थित auth-types: SOCKS4/5 के लिए "user/pass", HTTP के लिए "basic"।
ProxyChains एक UNIX प्रोग्राम है, जो dynamically linked programs में network-related libc functions को preloaded DLL के माध्यम से hook करता है और कनेक्शनों को SOCKS4a/5 या HTTP proxies के माध्यम से redirect करता है।
WARNING: यह प्रोग्राम केवल dynamically linked programs पर काम करता है। साथ ही proxychains और call किए जाने वाले प्रोग्राम दोनों को same dynamic linker (यानी same libc) का उपयोग करना चाहिए।
जब कोई process fork करता है, child में DNS lookup करता है, और फिर parent में ip का उपयोग करता है, तो संबंधित ip mapping नहीं मिलेगी, ऐसा इसलिए होता है क्योंकि fork parent की mapping table में वापस नहीं लिख सकता। IRSSI यह व्यवहार दिखाता है, इसलिए आपको उसे resolved ip address देना होगा। (ऐसा करने के लिए आप proxyresolv स्क्रिप्ट का उपयोग कर सकते हैं, जिसके लिए "dig" आवश्यक है)
इसका मतलब है कि आप वर्तमान में irssi के लिए tor onion urls का उपयोग नहीं कर सकते। इस समस्या को हल करने के लिए, एक बाहरी डेटा स्टोर (file, pipe, ...) को dns <-> ip mapping का प्रबंधन करना होगा। बेशक उचित locking होनी चाहिए। file-based दृष्टिकोण के लिए shm_open, mkstemp संभावित उम्मीदवार हैं, दूसरा विकल्प किसी प्रकार की server प्रक्रिया spawn करना है जो map lookups का प्रबंधन करे। चूँकि connect() आदि hooked हैं, यह TCP सर्वर नहीं होना चाहिए।
मैं यह बदलाव करने में हिचकिचा रहा हूँ, क्योंकि वर्णित व्यवहार काफी मूर्खतापूर्ण लगता है (केवल DNS lookup के लिए fork करना), और irssi वर्तमान में एकमात्र ज्ञात प्रभावित प्रोग्राम है।
Proxychains-4.3.0 Linux, NetBSD, FreeBSD, OpenBSD, DragonFlyBSD या Mac OS X पर pkgsrc के साथ सभी के लिए उपलब्ध है। आपको बस pkgsrc-wip रिपॉज़िटरी स्थापित करनी है और wip/proxychains निर्देशिका में make install चलाना है।
आप link:http://www.pkgsrc.org[pkgsrc] पर pkgsrc के बारे में और link:https://pkgsrc.org/wip[Pkgsrc-wip होमपेज] पर pkgsrc-wip के बारे में अधिक जानकारी प्राप्त कर सकते हैं।
आप Mac OS X पर homebrew के साथ वर्तमान proxychains स्थापित कर सकते हैं। आपको अनौपचारिक link:https://gist.github.com/3792521[homebrew formula] डाउनलोड करके अपने BREW_HOME में डिफ़ॉल्ट रूप से /usr/local/Library/Formula/ पर रखना है और चलाना है
$ brew install proxychains
# needs a working C compiler, preferably gcc
./configure
make
sudo make install
Version (4.x) dnsresolver स्क्रिप्ट को हटा देता है, जिसमें remote DNS lookup के लिए एक dynamically linked "dig" बाइनरी का मौजूद होना आवश्यक था। यह DNS से जुड़े किसी भी ऑपरेशन को तेज़ करता है, क्योंकि पुरानी स्क्रिप्ट को TCP का उपयोग करना पड़ता था। इसके अतिरिक्त यह TOR के साथ उपयोग करने पर .onion urls का उपयोग करने की अनुमति देता है। साथ ही इसने टूटी हुई autoconf build system को एक सरल Makefile के साथ हटा दिया। सुविधा के लिए हालाँकि एक ./configure स्क्रिप्ट है। यह command line switches/environment variables के माध्यम से पारित config file के लिए समर्थन भी जोड़ता है।
Version (3.x) proxy के माध्यम से DNS resolving के लिए समर्थन प्रस्तुत करता है। यह SOCKS4, SOCKS5 और HTTP CONNECT proxy सर्वरों का समर्थन करता है।
like: your_host <--> proxy1 <--> proxy2 <--> target_host
like: your_host <-->socks5 <--> http <--> socks4 <--> target_host
proxychains nmap -sT -PO -p 80 -iR (find some webservers through proxy)
proxychains निम्न क्रम में कॉन्फ़िगरेशन की खोज करता है:
/etc/proxychains.conf में अधिक देखें
$ proxychains4 telnet targethost.com
इस उदाहरण में यह proxychains.conf द्वारा निर्दिष्ट proxy (या chained proxies) के माध्यम से telnet चलाएगा।
$ proxychains4 -f /etc/proxychains-other.conf targethost2.com
इस उदाहरण में यह targethost2.com होस्ट से कनेक्ट करने के लिए proxychains.conf के अलावा एक अलग कॉन्फ़िगरेशन फ़ाइल का उपयोग करेगा।
$ proxyresolv targethost.com
इस उदाहरण में यह proxychains.conf द्वारा निर्दिष्ट proxy (या chained proxies) के माध्यम से targethost.com को resolve करेगा।
$ ssh -fN -D 4321 some.example.com
$ PROXYCHAINS_SOCKS5_HOST=127.0.0.1 PROXYCHAINS_SOCKS5_PORT=4321 proxychains zsh
इस उदाहरण में, यह localhost पोर्ट 4321 पर OpenSSH के "dynamic proxy" (SOCKS5 proxy) के माध्यम से सभी ट्रैफ़िक को proxied करते हुए एक shell चलाएगा।
$ export PROXY_DNS_SERVER=8.8.8.8
$ proxychains4 telnet targethost.com
इस उदाहरण में, यह उपयोगकर्ता द्वारा PROXY_DNS_SERVER के माध्यम से प्रदान किए गए 8.8.8.8 nameserver का उपयोग करके targethost.com को telnet करेगा।