https://www.roe.ch/sslsplit
SSLSplit هي أداة للهجمات Man-in-Middle ضد اتصالات الشبكة المشفرة SSL/TLS. يهدف إلى أن يكون مفيدًا للطب الشرعي الشبكي وتحليل أمان التطبيق واختبار الاختراق.
تم تصميم SSLSplit لإنهاء الاتصالات الشفافية التي يتم إعادة توجيهها إليها باستخدام محرك ترجمة عنوان الشبكة. ثم يقوم SSLSPLIT بإنهاء SSL/TLS ويبدأ اتصال SSL/TLS جديد بعنوان الوجهة الأصلية ، أثناء تسجيل جميع البيانات المنقولة. إلى جانب العملية المستندة إلى NAT ، يدعم SSLSplit أيضًا وجهات ثابتة واستخدام اسم الخادم المشار إليه بواسطة SNI كوجهة المنبع. يعد SSLSplit محضًا وكيلًا شفافًا ولا يمكن أن يكون بمثابة وكيل HTTP أو Socks تم تكوينه في متصفح.
يدعم SSLSplit اتصالات TCP العادية و SSL و HTTP و HTTPS عبر كل من IPv4 و IPv6. كما أن لديها القدرة على ترقية TCP العادي إلى SSL ديناميكيًا من أجل دعم SMTP StartLs وآليات ترقية مماثلة. يدعم SSLSplit مؤشر اسم الخادم بالكامل (SNI) وهو قادر على العمل مع مفاتيح RSA و DSA و ECDSA و DHE و ECDHE Cipher. اعتمادًا على إصدار OpenSSL المصمم ضد SSLSplit يدعم SSL 3.0 و TLS 1.0 و TLS 1.1 و TLS 1.2 و SSL 2.0 اختياريًا.
بالنسبة لاتصالات SSL و HTTPS ، يقوم SSLSplit بإنشاء وعلامات شهادات X509V3 المزورة على نحو حافل ، وتحاكي موضوع شهادة الخادم الأصلي DN ، وملحق tourceName وخصائص أخرى. يتمتع SSLSplit بالقدرة على استخدام الشهادات الموجودة التي يتوفر المفتاح الخاص ، بدلاً من توليد الشهادات المزورة. يدعم SSLSPLIT شهادات NULL-PREFIX CN ولكنها لا تنفذ مآثر مقابل نقاط الضعف المحددة للتحقق من الشهادة في أكوام SSL/TLS.
ينفذ SSLSplit عددًا من الدفاعات ضد الآليات التي من شأنها أن تمنع عادة هجمات MITM أو تجعلها أكثر صعوبة. يمكن لـ SSLSplit رفض طلبات OCSP بطريقة عامة. بالنسبة لاتصالات HTTP و HTTPS ، فإن رؤوس MANGLES SSLSPLIT لمنع تثبيت المفتاح العمومي المتبادل للخادم (HPKP) ، وتجنب قيود أمان النقل الصارمة (HSTS) ، وتجنب تطبيق شفافية الشهادة (توقع CT) ومنع التبديل إلى QUIC/spdy ، و HTTP/2 أو WebSockets (UPGRADE ، PENTRADE). يتم تعطيل ضغط HTTP والترميزات والاحتفاظ بجعل السجلات أكثر قابلية للقراءة.
تتضمن خيارات التسجيل ملفات SSLSplit التقليدية وملفات سجل المحتوى بالإضافة إلى ملفات PCAP ومرور حركة مرور على واجهة شبكة. بالإضافة إلى ذلك ، يمكن تسجيل الشهادات والأسرار الرئيسية ومعلومات العملية المحلية.
راجع الصفحة اليدوية SSLSPLIT (1) للحصول على تفاصيل حول استخدام SSLSPLIT وإعداد محركات NAT المختلفة.
يعتمد SSLSplit على مكتبات OpenSSL و Libevent 2.x و LibpCap و Libnet 1.1.x افتراضيًا ؛ لا يلزم حاجة إلى libpcap و libnet إذا تم حذف ميزة النسخ المتطابق. يعتمد البناء على صنع GNU وبيئة posix.2 في PATH . إذا كان ذلك متاحًا ، يتم استخدام PKG-Config لتحديد وتكوين التبعيات. تعتمد اختبارات الوحدة الاختيارية على مكتبة الشيك.
يدعم SSLSplit حاليًا أنظمة التشغيل التالية وآليات NAT:
دعم معلومات العملية المحلية ( -i ) متاح حاليًا على Mac OS X و FreeBSD.
تعتمد ميزات SSL/TLS وتوافقها بشكل كبير على إصدار OpenSSL المرتبط. للحصول على النتائج المثلى ، استخدم إصدارًا حديثًا من OpenSSL أو Libressl.
مع المتطلبات المذكورة أعلاه ، قم بتشغيل:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
يتم تكوين التبعيات باستخدام PKG-Config. إذا لم يتم التقاط التبعيات وتثبيت PKG_CONFIG_PATH ، فيمكنك تحديد مواقعها يدويًا من خلال الإعداد OPENSSL_BASE و LIBEVENT_BASE و LIBPCAP_BASE و LIBNET_BASE و/أو CHECK_BASE إلى البادئة المعنية.
يمكنك تجاوز بادئة التثبيت الافتراضية ( /usr/local ) عن طريق تعيين PREFIX . لمزيد من خيارات الإنشاء والافتراضات الافتراضية لوقت البناء ، راجع GNUmakefile و defaults.h .
راجع الصفحات اليدوية sslsplit(1) و sslsplit.conf(5) لوثائق المستخدم. راجع NEWS.md للحصول على ملاحظات الإصدار في سرد تغييرات كبيرة بين الإصدارات SECURITY.md .
يتم توفير SSLSplit بموجب ترخيص BSD من طبقة 2. يحتوي SSLSplit على مكونات مرخصة بموجب تراخيص MIT و APSL. انظر LICENSE ، LICENSE.contrib LICENSE.third
انظر AUTHORS.md للحصول على قائمة المساهمين.
استلهم SSLSplit من mitm-ssl من قبل Claes M. Nyberg و sslsniff بواسطة Moxie Marlinspike ، ولكن لا يشاركهم أي رمز مصدر معهم.