ProxyChains-NG الإصدار 4.17 README
ProxyChains هو برنامج UNIX يخطف دوال libc المرتبطة بالشبكة
في البرامج المرتبطة ديناميكيًا (DYNAMICALLY LINKED) عبر DLL مُحمّل مسبقًا (dlsym(), LD_PRELOAD)
ويعيد توجيه الاتصالات عبر وكلاء SOCKS4a/5 أو HTTP.
وهو يدعم TCP فقط (لا UDP/ICMP إلخ).
طريقة عمله هي في الأساس اختراق (HACK)؛ لذا من الممكن ألا يعمل
مع برنامجك، خاصةً إذا كان سكربتًا، أو يبدأ
عمليات متعددة مثل الخدمات الخلفية (daemons) أو يستخدم dlopen() لتحميل
"الوحدات" (modules) (خلل في أداة الربط الديناميكي glibc).
ومع ذلك، يجب أن يعمل مع البرامج البسيطة المترجمة (C/C++)
المرتبطة ديناميكيًا.
إذا كان برنامجك لا يعمل مع proxychains، ففكر في استخدام حل قائم على
iptables بدلاً من ذلك؛ فهو أكثر متانةً بكثير.
المنصات المدعومة: Linux وBSD وMac وHaiku.
*********** انتباه ***********
يمكن استخدام هذا البرنامج للالتفاف على الرقابة.
وقد يكون القيام بذلك خطيرًا جدًا في بعض البلدان.
تأكد دائمًا من أن PROXYCHAINS يعمل كما هو متوقع
قبل استخدامه لأي أمر جاد.
وهذا يشمل كلاً من البرنامج والوكيل (proxy) الذي
ستستخدمه.
على سبيل المثال، يمكنك الاتصال بخدمة "what is my ip"
مثل ifconfig.me للتأكد من أنها لا تستخدم عنوان IP الحقيقي الخاص بك.
استخدم PROXYCHAINS فقط إذا كنت تعرف ما تفعله.
لا يتحمل مؤلفو ومطوّرو PROXYCHAINS أي
مسؤولية عن أي إساءة استخدام لهذا البرنامج و
العواقب الناتجة عن ذلك.
*** التثبيت ***
يتطلب مترجم C يعمل، ويفضل gcc
./configure --prefix=/usr --sysconfdir=/etc
make
[اختياري] sudo make install
[اختياري] sudo make install-config (يقوم بتثبيت proxychains.conf)
إذا لم تقم بالتثبيت، يمكنك استخدام proxychains من مجلد البناء (build directory)
هكذا: ./proxychains4 -f src/proxychains.conf telnet google.com 80
سجل التغييرات:
الإصدار 4.17
- إضافة خطاف (hook) لدالة close_range، لإصلاح الإصدارات الأحدث من openssh
- خيار fat-binary-m1 لنظام ماك (mac)
- إصلاح معالجة أخطاء DNS في proxy_dns_old
- تبسيط كود التهيئة
- إصلاح التحميل المسبق في openbsd
- إصلاح الإغلاق المزدوج في التطبيقات متعددة الخيوط
- تحسينات متعددة لسكريبت configure
الإصدار 4.16
- إصلاح تراجع (regression) في كشف علامات الرابط (linker flags) في سكريبت configure
- إزالة حل مؤقت عمره 10 سنوات لتوقيع glibc getnameinfo الخاطئ
- دعم طريقة ربط DYLD الجديدة لنظام OSX Monterey
- إصلاح ترجمة netbsd
- دعم شبكات IPv6 المحلية (localnets)
- رسالة خطأ أكثر ودية عند فشل execvp
- proxy_getaddrinfo(): يتم ملء ai_socktype إذا تم طلبه
الإصدار 4.15
- إصلاح سكريبت configure لإصدار binutils الذي يحتوي على خلل
- تهيئة rand_seed بدقة نانو ثانية
- إضافة دعم لعناوين IPv6 الرقمية في getaddrinfo
- إصلاح خلل في getaddrinfo عندما تكون العقدة (node) فارغة و!passive
- إضافة ميزة dnat
- إضافة نوع وكيل خام (raw proxy)
- إضافة دعم لنظام haiku
- إضافة proxy_dns_old لمحاكاة سلوك proxychains 3.1
- إضافة ميزة proxy_dns_daemon الجديدة (تجريبية)
- إصلاحات أخرى متنوعة
الإصدار 4.14
- السماح بصيغة بديلة proto://user:pass@ip:port لقائمة الوكلاء (proxylist)
- إصلاح حلقة لا نهائية في وضع round robin عندما تكون جميع الوكلاء معطلة (#147)
- إصلاح الترجمة على android (#265)
- إصلاح تسريب واصف الملف (fd) في العمليات المنسوخة (forked) (#273)
- تخطي محاولة الاتصال بعناوين IP الموجهة إلى null (nullrouted)
- السماح بأسماء النطاقات لقائمة الوكلاء في ظروف معينة
الإصدار 4.13
- تحسين متانة خيط البحث في DNS وإصلاح خطأ segfault
- إصلاح مصادقة socks5 user/pass على الخوادم غير المطابقة للمعايير
- إصلاح تسرب الذاكرة
- إضافة دعم لنظام Solaris
الإصدار 4.12
- إصلاح العديد من مشكلات البناء (build)
- لنظام MAC
- مع -pie
- مع CC مخصص
- إصلاح توافق لبعض تطبيقات الواجهة الرسومية (GUI) (8870140)
- إصلاح توافق لبعض خوادم HTTP (cf9a16d)
- إصلاح عدة تحذيرات لبناء أنظف على debian
- إصلاح random_chain على OSX (0f6b226)
الإصدار 4.11
- دعم أولي لـ IPv6
- إصلاح خلل في hostsreader
- دعم أولي للاستخدام على OpenBSD (على مسؤولية المستخدم)
الإصدار 4.10
- إصلاح تراجع في ترتيب الربط مع LDFLAGS مخصصة
- إصلاح segfault في كود تعيين DNS في البرامج التي تحتوي على أكثر من ~400 استعلام مختلف
الإصدار 4.9
- إصلاح ثغرة أمنية CVE-2015-3887
- إضافة خطاف sendto للتعامل مع علم MSG_FASTOPEN
- استبدال hostentdb الإشكالي بـ hostsreader
- إصلاح الترجمة على OpenBSD (على الرغم من أنه لا يعمل هناك)
الإصدار 4.8.1:
- إصلاح تراجع في هدف install-config في Makefile الخاص بالإصدار 4.8
الإصدار 4.8:
- إصلاح حالة طرفية غريبة حيث تم استخدام getaddrinfo مع AI_NUMERICHOST
لاختبار عنوان IP رقمي بدلاً من حله (يصلح nmap).
- السماح بالاستخدام مع البرامج التي تعتمد على LD_PRELOAD بنفسها
- رفض الإدخالات الخاطئة في ملف الإعدادات
- طباعة رقم الإصدار عند بدء التشغيل
الإصدار 4.7:
- نوع سلسلة round_robin جديد من crass.
- إصلاح خلل في التخصيص الكسول (lazy allocation) عندما لا يتم استخدام مُنشئ GCC.
- علامة configure جديدة --fat-binary لإنشاء ملف ثنائي/مكتبة "fat" على OS X
- إرجاع EBADF بدلاً من EINTR في خطاف close.
من القانوني للبرنامج إعادة محاولة استدعاءات close() عندما يستقبل
EINTR، مما قد يسبب حلقة لا نهائية، كما شوهد في chromium.
الإصدار 4.6:
- بعض الإصلاحات التجميلية لـ Makefile، وإصلاح خلل عند استخدام عنوان IP غير رقمي
كعنوان لخادم الوكيل.
الإصدار 4.5:
- ربط close() لمنع OpenSSH من العبث بالبنية الداخلية.
كان هذا يتسبب في انهيار عميل ssh مع segfault عند تمريره عبر proxychains.
الإصدار 4.4:
- منفذ (port) لنظام FreeBSD
- إصلاح بعض مشكلات التثبيت على Debian و Mac.
الإصدار 4.3:
- إصلاح البرامج التي تقوم بعمليات بحث DNS في العمليات الفرعية (fork()ed)،
مثل irssi. لتحقيق ذلك، تم التضحية بدعم الترجمة بدون pthreads.
- إصلاح سلامة الخيوط لاستدعاءات gethostent().
- تحسين سرعة معالجة DNS، نظرًا لأن قاعدة بيانات hostent مخزنة مؤقتًا.
الإصدار 4.2:
- إصلاح مشكلات الترجمة مع سلسلة أدوات ubuntu 12.04
- إصلاح segfault في مسار برمجي نادر
الإصدار 4.1
- دعم لنظام mac os x (جميع البنى)
- جميع الدوال الداخلية آمنة للخيوط عند الترجمة مع -DTHREAD_SAFE
(الافتراضي).
الإصدار 4.0
- استبدال سكريبت dnsresolver (الذي كان يتطلب وجود ملف ثنائي "dig" مرتبط ديناميكيًا) بالبحث عن DNS عن بُعد.
هذا يسرّع أي عملية تتضمن DNS، لأن السكريبت القديم كان يستخدم TCP.
بالإضافة إلى أنه يسمح باستخدام عناوين .onion عند استخدامه مع TOR.
- إزالة نظام البناء autoconf المعطل واستبداله بـ Makefile بسيط.
يوجد سكريبت ./configure للملاءمة.
كما يضيف دعمًا لملف إعدادات يتم تمريره عبر خيارات سطر الأوامر/
متغيرات البيئة.
الإصدار 3.0
- دعم حل عناوين DNS عبر الوكيل
يدعم خوادم الوكلاء SOCKS4 وSOCKS5 وHTTP CONNECT.
أنواع المصادقة: socks - "user/pass" ، http - "basic".
متى تستخدمه؟
- عندما تكون الطريقة الوحيدة للخروج "إلى الخارج" من شبكتك المحلية (LAN) هي عبر خادم وكيل.
- للخروج من خلف جدار حماية تقييدي يقوم بتصفية المنافذ الصادرة.
- لاستخدام وكيلين (أو أكثر) في سلسلة:
مثل: your_host <--> proxy1 <--> proxy2 <--> target_host
- لتمرير بعض البرامج عبر وكيل (proxify) بدون دعم وكيل مدمج (مثل telnet)
- الوصول إلى الشبكة الداخلية من الخارج عبر وكيل.
- لاستخدام DNS خلف وكيل.
- للوصول إلى خدمات tor onion المخفية.
بعض الميزات الرائعة:
- يمكن لهذا البرنامج مزج أنواع مختلفة من الوكلاء في نفس السلسلة
مثل: your_host <-->socks5 <--> http <--> socks4 <--> target_host
- خيارات ربط (chaining) مختلفة مدعومة
ترتيب عشوائي من القائمة ( طول السلسلة يحدده المستخدم ).
ترتيب دقيق (كما تظهر في القائمة )
ترتيب ديناميكي (استبعاد ذكي للوكلاء المعطلين من السلسلة)
- يمكنك استخدامه مع معظم تطبيقات عملاء TCP، وربما حتى ماسحات
الشبكات، طالما أنها تستخدم وظائف libc القياسية.
المسح المعتمد على pcap لا يعمل.
- يمكنك استخدامه مع الخوادم، مثل squid أو sendmail أو أي شيء آخر.
- حل DNS عبر الوكيل.
الإعدادات:
يبحث proxychains عن ملف الإعدادات بالترتيب التالي:
- الملف المذكور في متغير البيئة PROXYCHAINS_CONF_FILE أو
المقدم كوسيط -f لسكريبت أو ملف proxychains الثنائي.
- ./proxychains.conf
- $(HOME)/.proxychains/proxychains.conf
- $(sysconfdir)/proxychains.conf **
** عادةً /etc/proxychains.conf
مثال استخدام:
$ proxychains telnet targethost.com
في هذا المثال سيتم تشغيل telnet عبر الوكيل (أو الوكلاء المتسلسلين)
المحددين في ملف proxychains.conf
مثال استخدام:
$ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
في هذا المثال سيتم استخدام ملف إعدادات مختلف عن proxychains.conf
للاتصال بالمضيف targethost2.com.
مثال استخدام:
$ proxyresolv targethost.com
في هذا المثال سيتم حل اسم النطاق targethost.com عبر الوكيل (أو الوكلاء المتسلسلين)
المحددين في ملف proxychains.conf
مشاكل معروفة:
-
الإصدارات الأحدث من nmap تحاول تحديد واجهة الشبكة لاستخدامها
حتى لو لم تكن هناك حاجة لذلك (مثل عند إجراء فحوصات SYN بسيطة تستخدم
واجهة برمجة POSIX socket القياسية. يؤدي هذا إلى أخطاء عندما يمرر proxychains
عنوان IP إلى مساحة عناوين محجوزة.
الحلول الممكنة: تعطيل proxy_dns، أو استخدام عنوان IP رقمي، أو استخدام
الدعم الأصلي لوكلاء SOCKS في nmap.
-
يأتي Mac OS X 10.11 (El Capitan) بميزة أمان جديدة تسمى SIP
تمنع ربط (hook) تطبيقات النظام.
الحلول هي تعطيل SIP جزئيًا عن طريق تنفيذ
csrutil enable --without debug في وضع الاسترداد (recovery mode)،
أو نسخ الملف الثنائي للنظام إلى مجلد المنزل وتشغيله من هناك.
راجع المشكلة #78 في github للتفاصيل.
-
يحتوي مُحمّل الربط الديناميكي في glibc على خلل أو ميزة أمان تمنع الوحدات المحملة عبر dlopen()
من الخضوع لنفس خطافات dlsym المثبتة للبرنامج الرئيسي.
يؤثر هذا بشكل أساسي على لغات السكربت مثل perl أو python
التي تعتمد بشكل كبير على dlopen() لكي تعمل الوحدات المكتوبة بـ C.
توجد تقارير غير مؤكدة بأنه يعمل كجذر (root) رغم ذلك.
لا يتأثر musl libc بهذا الخلل.
روابط مفيدة
قد تكون المواقع التالية مفيدة للتحقق من التسريبات:
https://ipfighter.com/
https://browserleaks.com/webrtc
https://dnsleaktest.com
http://check.torproject.org - خاص بـ tor
http://ifconfig.me - يمكن استخدامه عبر curl
http://ifconfig.io/
المجتمع:
#proxychains on irc.libera.chat
التبرعات:
التبرعات بالبيتكوين مرحب بها - يرجى الإرسال إلى هذا العنوان:
1C9LBpuy56veBqw5N33sZMoZW8mwCw3tPh