
पारदर्शी मैन-इन-द-मिडल प्रॉक्सी जो SSL/TLS कनेक्शनों को समाप्त करता है, चलते-फिरते प्रमाणपत्र जाली बनाता है, और नेटवर्क फोरेंसिक और प्रवेश परीक्षण के लिए डिक्रिप्ट किए गए ट्रैफ़िक को लॉग करता है।
SSLsplit, SSL/TLS एन्क्रिप्टेड नेटवर्क कनेक्शनों के विरुद्ध मैन-इन-द-मिडल हमलों के लिए एक उपकरण है। यह नेटवर्क फोरेंसिक, एप्लिकेशन सुरक्षा विश्लेषण और पेनिट्रेशन परीक्षण के लिए उपयोगी होने का इरादा रखता है।
SSLsplit को उन कनेक्शनों को पारदर्शी रूप से समाप्त करने के लिए डिज़ाइन किया गया है जो नेटवर्क पता अनुवाद इंजन का उपयोग करके इस पर पुनर्निर्देशित किए जाते हैं। फिर SSLsplit SSL/TLS को समाप्त करता है और मूल गंतव्य पते पर एक नया SSL/TLS कनेक्शन शुरू करता है, साथ ही सभी प्रेषित डेटा को लॉग करता है। NAT-आधारित संचालन के अलावा, SSLsplit स्थैतिक गंतव्यों और SNI द्वारा इंगित सर्वर नाम को अपस्ट्रीम गंतव्य के रूप में उपयोग करने का भी समर्थन करता है। SSLsplit विशुद्ध रूप से एक पारदर्शी प्रॉक्सी है और ब्राउज़र में कॉन्फ़िगर किए गए HTTP या SOCKS प्रॉक्सी के रूप में कार्य नहीं कर सकता है।
SSLsplit IPv4 और IPv6 दोनों पर सादे TCP, सादे SSL, HTTP और HTTPS कनेक्शनों का समर्थन करता है। इसके अलावा, इसमें SMTP STARTTLS और समान उन्नयन तंत्रों को सामान्य रूप से समर्थन देने के लिए सादे TCP को SSL में गतिशील रूप से उन्नत करने की क्षमता है। SSLsplit पूरी तरह से सर्वर नाम संकेत (SNI) का समर्थन करता है और RSA, DSA और ECDSA कुंजियों तथा DHE और ECDHE सिफर सूट के साथ काम करने में सक्षम है। जिस OpenSSL संस्करण के विरुद्ध बनाया गया है, उसके आधार पर SSLsplit SSL 3.0, TLS 1.0, TLS 1.1 और TLS 1.2 का समर्थन करता है, और वैकल्पिक रूप से SSL 2.0 का भी।
SSL और HTTPS कनेक्शनों के लिए, SSLsplit तुरंत ही नकली X509v3 प्रमाणपत्र उत्पन्न और हस्ताक्षरित करता है, जो मूल सर्वर प्रमाणपत्र के विषय DN, subjectAltName एक्सटेंशन और अन्य विशेषताओं की नकल करते हैं। SSLsplit में मौजूदा प्रमाणपत्रों का उपयोग करने की क्षमता है, जिनकी निजी कुंजी उपलब्ध है, नकली प्रमाणपत्र उत्पन्न करने के बजाय। SSLsplit NULL-उपसर्ग CN प्रमाणपत्रों का समर्थन करता है, लेकिन अन्यथा SSL/TLS स्टैक में विशिष्ट प्रमाणपत्र सत्यापन कमजोरियों के विरुद्ध शोषण लागू नहीं करता है।
SSLsplit उन तंत्रों के विरुद्ध कई सुरक्षा उपायों को लागू करता है जो सामान्यतः MitM हमलों को रोकेंगे या उन्हें और कठिन बना देंगे। SSLsplit OCSP अनुरोधों को सामान्य तरीके से अस्वीकार कर सकता है। HTTP और HTTPS कनेक्शनों के लिए, SSLsplit सर्वर-निर्देशित सार्वजनिक कुंजी पिनिंग (HPKP) को रोकने, सख्त परिवहन सुरक्षा प्रतिबंधों (HSTS) से बचने, प्रमाणपत्र पारदर्शिता प्रवर्तन (Expect-CT) से बचने और QUIC/SPDY, HTTP/2 या WebSockets (अपग्रेड, वैकल्पिक प्रोटोकॉल) पर स्विच करने से रोकने के लिए हेडर को विकृत करता है। लॉग को अधिक पठनीय बनाने के लिए HTTP संपीड़न, एन्कोडिंग और कीप-अलाइव को अक्षम कर दिया जाता है।
लॉगिंग विकल्पों में पारंपरिक SSLsplit कनेक्ट और सामग्री लॉग फ़ाइलों के साथ-साथ PCAP फ़ाइलें और डिक्रिप्टेड ट्रैफ़िक को नेटवर्क इंटरफ़ेस पर मिरर करना शामिल है। इसके अतिरिक्त, प्रमाणपत्र, मास्टर रहस्य और स्थानीय प्रक्रिया जानकारी को भी लॉग किया जा सकता है।
SSLsplit का उपयोग करने और विभिन्न NAT इंजनों को स्थापित करने के विवरण के लिए मैनुअल पृष्ठ sslsplit(1) देखें।
SSLsplit डिफ़ॉल्ट रूप से OpenSSL, libevent 2.x, libpcap और libnet 1.1.x लाइब्रेरीज़ पर निर्भर करता है; यदि मिररिंग सुविधा को छोड़ दिया जाता है तो libpcap और libnet की आवश्यकता नहीं है। बिल्ड PATH में GNU make और POSIX.2 वातावरण पर निर्भर करता है। यदि उपलब्ध हो, तो pkg-config का उपयोग निर्भरताओं का पता लगाने और कॉन्फ़िगर करने के लिए किया जाता है। वैकल्पिक यूनिट परीक्षण चेक लाइब्रेरी पर निर्भर करते हैं।
SSLsplit वर्तमान में निम्नलिखित ऑपरेटिंग सिस्टम और NAT तंत्रों का समर्थन करता है:
स्थानीय प्रक्रिया जानकारी (-i) के लिए समर्थन वर्तमान में Mac OS X और FreeBSD पर उपलब्ध है।
SSL/TLS सुविधाएँ और अनुकूलता काफी हद तक लिंक किए गए OpenSSL के संस्करण पर निर्भर करती हैं। सर्वोत्तम परिणामों के लिए, OpenSSL या LibreSSL के हालिया रिलीज़ का उपयोग करें।
उपरोक्त आवश्यकताओं के उपलब्ध होने पर, चलाएँ:
make
make test # वैकल्पिक यूनिट परीक्षण
make sudotest # वैकल्पिक यूनिट परीक्षण जिनके लिए विशेषाधिकार आवश्यक हैं
make install # वैकल्पिक स्थापना
pkg-config का उपयोग करके निर्भरताएँ स्वचालित रूप से कॉन्फ़िगर की जाती हैं। यदि निर्भरताएँ नहीं उठाई जाती हैं और PKG_CONFIG_PATH को ठीक करने से मदद नहीं मिलती है, तो आप क्रमशः OPENSSL_BASE, LIBEVENT_BASE, LIBPCAP_BASE, LIBNET_BASE और/या CHECK_BASE को संबंधित उपसर्गों पर सेट करके उनके स्थान मैन्युअल रूप से निर्दिष्ट कर सकते हैं।
आप PREFIX सेट करके डिफ़ॉल्ट स्थापना उपसर्ग (/usr/local) को ओवरराइड कर सकते हैं। अधिक बिल्ड विकल्पों और बिल्ड-टाइम डिफ़ॉल्ट के लिए GNUmakefile और defaults.h देखें।
उपयोगकर्ता दस्तावेज़ीकरण के लिए मैनुअल पृष्ठ sslsplit(1) और sslsplit.conf(5) देखें। रिलीज़ के बीच महत्वपूर्ण परिवर्तनों को सूचीबद्ध करने वाले रिलीज़ नोट्स के लिए NEWS.md और सुरक्षा भेद्यता प्रकटीकरण की जानकारी के लिए SECURITY.md देखें।
SSLsplit एक 2-क्लॉज BSD लाइसेंस के अंतर्गत प्रदान किया गया है।
SSLsplit में MIT और APSL लाइसेंसों के अंतर्गत लाइसेंस प्राप्त घटक शामिल हैं।
विवरण के लिए LICENSE, LICENSE.contrib और LICENSE.third के साथ-साथ संबंधित स्रोत फ़ाइल हेडर देखें।
योगदानकर्ताओं की सूची के लिए AUTHORS.md देखें।
SSLsplit Claes M. Nyberg के mitm-ssl और Moxie Marlinspike के sslsniff से प्रेरित था, लेकिन उनके साथ कोई स्रोत कोड साझा नहीं करता है।