
BinProxy هو وكيل للاتصالات TCP العشوائية. يمكنك تعريف تنسيقات الرسائل المخصصة باستخدام gem BinData.
BinProxy هو وكيل (proxy) للاتصالات TCP العشوائية. يمكنك تعريف تنسيقات رسائل مخصصة باستخدام جوهرة BinData.
sudo apt install build-essential ruby-dev يجب أن يكون كافياً.openssl لـ --tls بدون شهادة/مفتاح صريح.gem install binproxy
قد تحتاج إلى استخدام sudo، اعتمادًا على تثبيت Ruby لديك.
git clone https://github.com/nccgroup/BinProxy.git binproxy
cd binproxy
# Install ruby dependencies.
# Depending on your setup, one or both of these may require sudo.
gem install bundler && bundle
# The UI is built with a webpack/babel toolchain:
(cd ui && npm install) \
&& rake build-ui
# Confirm that everything works
# run.sh sets up the environment and passes all args to binproxy
./run.sh --help
لبناء وتثبيت حزمة الجوهرة:
gem build binproxy.gemspec
# Again, you may need sudo here
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، والتي تعطيك تفريغًا سداسي عشريًا لكل رسالة (بافتراض تطابق 1:1 بين الرسائل وحزم TCP)
يمكنك عرض معلومات البروتوكول المُحلَّلة عن طريق تحديد فئة فرعية من BinData::Record† مع وسيطة سطر الأوامر --class.
قد ترغب أيضًا في تعريف ما يلي في فئتك:
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 (v4 أو v4a) أو وكيل HTTP باستخدام العلامات --socks-proxy و --http-proxy على التوالي.
ملاحظة: حاليًا، يدعم وكيل HTTP فقط الاتصالات المُنفقة عبر فعل HTTP CONNNECT؛ لا يمكنه وكالة طلبات HTTP الخام مثل GET و POST إلخ. عمليًا، هذا يعني أن حركة مرور HTTPS ستعمل، لكن حركة مرور HTTP العادية لن تعمل ما لم يدعم العميل علامة لفرض النفق، مثل curl -p.
استخدم العلامة --tls لفك تشفير TLS قبل معالجة الرسائل. افتراضيًا، سيولد BinProxy شهادة موقعة ذاتيًا. يمكنك تحديد ملفات PEM تحتوي على شهادة ومفتاح باستخدام --tls-cert و --tls-key. (إذا قمت بنسخ المستودع المصدر، استخدم rake makecert[example.com] لإنشاء هيئة تصديق ثابتة وشهادة باسم المضيف المناسب.)
انظر أيضًا ملف TODO للحصول على أفكار عشوائية وعناصر قائمة الرغبات.
وظيفة وكيل TCP الأساسية لـ BinProxy نشأت في وكيل لأغراض خاصة كتبه Sean Devlin. ساهم Rusty Burchfield في واجهة مستخدم HTML لهذا الوكيل. على الرغم من أن جزءًا كبيرًا من الكود قد تغير بحيث لا يمكن إلقاء اللوم عليهما في أي أخطاء حالية، إلا أن BinProxy ربما لم يكن موجودًا بدون عمل كلاهما.