
BinProxy मनमाने TCP कनेक्शनों के लिए एक प्रॉक्सी है। आप BinData जेम का उपयोग करके कस्टम संदेश प्रारूप परिभाषित कर सकते हैं।
BinProxy एक मनमानी TCP कनेक्शन के लिए प्रॉक्सी है। आप BinData जेम का उपयोग करके कस्टम संदेश प्रारूप परिभाषित कर सकते हैं।
sudo apt install build-essential ruby-dev से काम चल जाना चाहिए।--tls के लिए openssl बाइनरी।gem install binproxy
आपको अपनी Ruby स्थापना के आधार पर sudo का उपयोग करने की आवश्यकता हो सकती है।
git clone https://github.com/nccgroup/BinProxy.git binproxy
cd binproxy
# Ruby निर्भरताएँ स्थापित करें।
# आपकी सेटअप के आधार पर, इनमें से एक या दोनों को sudo की आवश्यकता हो सकती है।
gem install bundler && bundle
# UI को webpack/babel टूलचेन के साथ बनाया गया है:
(cd ui && npm install) \
&& rake build-ui
# पुष्टि करें कि सब कुछ काम करता है
# run.sh एनवायरनमेंट सेटअप करता है और सभी आर्ग्स को binproxy को पास करता है
./run.sh --help
gem पैकेज बनाने और स्थापित करने के लिए:
gem build binproxy.gemspec
# फिर से, यहाँ sudo की आवश्यकता हो सकती है
gem install binproxy-1.0.0.gem
स्थापना समस्याओं पर बग रिपोर्ट का स्वागत है!
binproxy चलाएँ।पूरी सूची के लिए --help देखें, लेकिन संक्षेप में:
binproxy -c <class> [<local-host>] <local-port> <remote-host> <remote-port>
यदि आप -c आर्गुमेंट छोड़ते हैं, तो एक सरल हेक्स डंप दिखाया जाता है।
यदि आप स्थानीय होस्ट छोड़ते हैं, तो binproxy localhost मान लेता है।
--socks-proxy या --http-proxy विकल्पों के साथ, रिमोट होस्ट और पोर्ट गतिशील रूप से निर्धारित होते हैं, और उन्हें निर्दिष्ट नहीं किया जाना चाहिए।
# Proxy from localhost:9000 -> example.com:9000
binproxy localhost 9000 example.com 9000
# Act as a SOCKS proxy on localhost:1080
# MITM and unwrap TLS on the proxied traffic, using a self-signed cert and key
binproxy -S --tls 1080
# "Poor substitute for Burp" mode:
#
# HTTP proxy; MITM TLS w/ pre-generated cert; simple header parsing
# Note: this will only work on HTTPS traffic, not plain HTTP!
# If you're working with the source repo, you generate the certs with:
# rake makecert[example.com]
# And then import certs/ca-cert.pem into your browser or OS's trust store.
binproxy -H --tls \
--tls-cert certs/example.com-cert.pem \
--tls-key certs/example.com-key.pem \
--class-name DumbHttp::Message \
localhost 8080
डिफ़ॉल्ट रूप से, प्रॉक्सी बिल्ट-इन RawMessage क्लास का उपयोग करता है, जो आपको प्रत्येक संदेश का हेक्सडंप देता है (मान लेते हुए कि संदेशों और TCP पैकेटों के बीच 1:1 संबंध है)।
आप --class कमांड लाइन आर्गुमेंट के साथ BinData::Record उपवर्ग† निर्दिष्ट करके पार्स किए गए प्रोटोकॉल जानकारी देख सकते हैं।
आप अपनी क्लास में निम्नलिखित को भी परिभाषित करना चाह सकते हैं:
def summary
# return a single-line description of this record
end
# currently supported options are
# - nil : use default display
# - "anon" : for structs, show contents directly
# - "hex" : for numbers, display as 0x1234ABCD
# - "hexdump" : for strings, display like `hexdump -C`
default_parameter display_as: "..."
# TODO: document state stuff
def self.initial_state
end
def current_state
end
def update_state
end
† तकनीकी रूप से, BinData::Base का कोई भी उपवर्ग काम करेगा।
डिफ़ॉल्ट रूप से, BinProxy सभी ट्रैफ़िक को एक स्थिर अपस्ट्रीम होस्ट और पोर्ट पर रिले करता है। इसे --socks-proxy और --http-proxy फ़्लैग के साथ क्रमशः SOCKS (v4 या v4a) या HTTP प्रॉक्सी के रूप में कार्य करने के लिए भी कॉन्फ़िगर किया जा सकता है।
नोट: वर्तमान में, HTTP प्रॉक्सी केवल HTTP CONNECT वर्ब के साथ टनल किए गए कनेक्शनों का समर्थन करता है; यह रॉ HTTP GET, POST आदि अनुरोधों को प्रॉक्सी नहीं कर सकता। व्यवहार में, इसका मतलब है कि HTTPS ट्रैफ़िक काम करेगा, लेकिन सादा HTTP ट्रैफ़िक तब तक काम नहीं करेगा जब तक कि क्लाइंट टनलिंग को बाध्य करने वाला फ़्लैग समर्थन न करे, जैसे curl -p।
संदेशों को प्रोसेस करने से पहले TLS एन्क्रिप्शन को खोलने के लिए --tls फ़्लैग का उपयोग करें। डिफ़ॉल्ट रूप से, BinProxy एक सेल्फ-साइन्ड प्रमाणपत्र उत्पन्न करेगा। आप --tls-cert और --tls-key के साथ प्रमाणपत्र और कुंजी वाली PEM फ़ाइलें निर्दिष्ट कर सकते हैं। (यदि आपने स्रोत रेपो क्लोन किया है, तो एक स्थिर CA और उपयुक्त होस्टनाम वाला प्रमाणपत्र उत्पन्न करने के लिए rake makecert[example.com] का उपयोग करें।)
यादृच्छिक विचारों और इच्छा सूची आइटमों के लिए TODO फ़ाइल भी देखें।
BinProxy का मुख्य TCP प्रॉक्सी कार्यक्षमता Sean Devlin द्वारा लिखित एक विशेष प्रयोजन प्रॉक्सी से उत्पन्न हुई है। Rusty Burchfield ने उस प्रॉक्सी के लिए HTML UI में योगदान दिया। जबकि कोड में इतना बदलाव हो चुका है कि वे अब किसी भी वर्तमान बग के लिए जिम्मेदार नहीं ठहराए जा सकते, BinProxy संभवतः उन दोनों के काम के बिना अस्तित्व में नहीं होता।