
एक पारदर्शी प्रॉक्सी जो SSL ट्रैफ़िक को डिक्रिप्ट करता है और IRC संदेशों को प्रिंट करता है।
हम सभी ने बार-बार सुना है कि SSL बिना सत्यापन के सुरक्षित नहीं है। यदि SSL कनेक्शन को कैश्ड सर्टिफिकेट से सत्यापित नहीं किया जाता है, तो इसे कोई भी हमलावर आसानी से हाईजैक कर सकता है। इसलिए 2013 में, कोई सोच सकता है कि हमने इस समस्या को पूरी तरह से खत्म कर दिया है। ब्राउज़र सर्टिफिकेट कैश करते हैं और जब कोई साइट स्व-सत्यापित सर्टिफिकेट प्रस्तुत करती है और उस पर भरोसा नहीं किया जाना चाहिए, तो उपयोगकर्ता को बहुत जोरदार चेतावनी देते हैं, ब्राउज़र विक्रेताओं ने इस समस्या को लगभग हल कर दिया है। हालांकि, HTTPS एकमात्र प्रोटोकॉल नहीं है जो SSL का उपयोग करता है। दुर्भाग्य से, इन अन्य प्रोटोकॉल के कई क्लाइंट डिफ़ॉल्ट रूप से सत्यापित नहीं करते हैं और भले ही वे करें, सुरक्षित सर्टिफिकेट ट्रांसफर की कोई गारंटी नहीं है। आखिरकार, कितने लोग अपने FTPS सर्वर के लिए SSL सर्टिफिकेट पर $50 खर्च करने को तैयार हैं?
एक सामान्य प्रोटोकॉल जो SSL का उपयोग करता है लेकिन शायद ही कभी सत्यापित किया जाता है, वह IRC है। कई IRC क्लाइंट डिफ़ॉल्ट रूप से सत्यापित करते हैं, लेकिन अधिकांश उपयोगकर्ता इसे बंद कर देते हैं क्योंकि IRC सर्वर प्रशासक वैध SSL सर्टिफिकेट खरीदने के इच्छुक नहीं होते हैं। कुछ लोकप्रिय क्लाइंट तो SSL सत्यापन को डिफ़ॉल्ट रूप से बंद रखते हैं (उदाहरण के लिए IRSSI)। हम पहले से जानते हैं कि यह नासमझी है, उपयोगकर्ता और IRC सर्वर के बीच कोई भी हमलावर एक अमान्य सर्टिफिकेट प्रस्तुत कर सकता है और उपयोगकर्ता के सभी ट्रैफ़िक (संभवतः संवेदनशील संदेशों सहित) को डिक्रिप्ट कर सकता है। अधिकांश उपयोगकर्ता SSL "सुरक्षित" IRC सर्वर से कनेक्ट होने पर भी इस तथ्य पर विचार नहीं करते हैं।
sslnuke का उद्देश्य "सुरक्षित" IRC ट्रैफ़िक को डिक्रिप्ट और इंटरसेप्ट करने के उद्देश्य से एक टूल लिखना है। पहले से ही कई मौजूदा टूल हैं जो SSL ट्रैफ़िक को इंटरसेप्ट करते हैं, लेकिन इनमें से अधिकांश HTTP ट्रैफ़िक के लिए तैयार किए गए हैं। sslnuke सीधे IRC को लक्षित करता है ताकि यह प्रदर्शित किया जा सके कि "सुरक्षित" संचार को इंटरसेप्ट करना कितना आसान है। sslnuke का उपयोग सरल है।
सबसे पहले, sslnuke के लिए एक उपयोगकर्ता खाता जोड़ें और उस पर ट्रैफ़िक रीडायरेक्ट करने के लिए iptables नियम जोड़ें:
# useradd -s /bin/bash -m sslnuke
# grep sslnuke /etc/passwd
sslnuke:x:1000:1000::/home/sslnuke:/bin/bash
# iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner 1000 -m tcp \
--dport 6697 --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 4444
अंत में, sslnuke के रूप में लॉगिन करें, बिल्ड करें और sslnuke चलाएं:
# su -l sslnuke
# cd sslnuke
# make
# ./sslnuke
SSL का उपयोग करके अपने पसंदीदा IRC नेटवर्क पर एक IRC क्लाइंट चलाएं और लॉगिन करें, IRC संदेश sslnuke पर stdout पर प्रिंट होंगे।
[*] Received connection from: 192.168.0.5:58007
[*] Opening connection to: 1.1.1.1:6697
[*] Connection Using SSL!
[*] irc.com -> AUTH (1.1.1.1): *** Looking up your hostname...
[*] irc.com -> AUTH (1.1.1.1): *** Found your hostname
[*] irc.com -> victim (1.1.1.1): *** You are connected to irc.vps-heaven.com with TLSv1.2-AES256-GCM-SHA384-256bits
[*] 192.168.0.5 -> nickserv (192.168.0.5): id hello
[*] [email protected] -> victim (1.1.1.1): Password accepted - you are now recognized.
sslnuke स्वचालित रूप से SSL का उपयोग करने वाले क्लाइंट का पता लगाएगा और निर्धारित करेगा कि SSL का उपयोग करना है या नहीं। कोड को वेबसाइट पासवर्ड या FTP डेटा, SSL का उपयोग करने वाली किसी भी चीज़ को दिखाने के लिए आसानी से संशोधित किया जा सकता है। नेटवर्क पर उपयोगकर्ताओं पर हमला करने के लिए, sslnuke का उपयोग ARP पॉइज़निंग टूल के साथ किया जा सकता है, जैसे Blackhat Library में पाया जाने वाला टूल या इसे गेटवे पर तैनात किया जा सकता है।
sslnuke का एक वीडियो प्रदर्शन ascii.io पर देखा जा सकता है।
अब महत्वपूर्ण भाग पर आते हैं, हम SSL कनेक्शन को कैसे सत्यापित करें? पहला कदम SSL सर्टिफिकेट को एक वैकल्पिक माध्यम से स्थानांतरित करना है, सबसे अच्छा तरीका यह होगा कि प्रशासक सीधे आपको सर्टिफिकेट दे। हालांकि, यदि यह संभव नहीं है, तो openssl सर्वर से सर्टिफिकेट डाउनलोड कर सकता है:
# openssl s_client -showcerts -connect irc.com:6697 </dev/null
सर्टिफिकेट को ~/.irssi/ssl/irc.com.crt में सहेजें। आदेश को अपने नेटवर्क से भिन्न कंप्यूटर पर चलाना सबसे अच्छा है ताकि इसे इंटरसेप्ट होने से रोका जा सके। इसके बाद, IRSSI को सर्टिफिकेट का उपयोग करने के लिए कॉन्फ़िगर करें, एक नेटवर्क सेव करें:
/network add irc
/server add -ssl_cafile ~/.irssi/ssl/irc.com.crt -network irc -port 6697 irc.com
यदि IRSSI को कभी अमान्य सर्टिफिकेट मिलता है, तो यह आपको चेतावनी देगा और तुरंत डिस्कनेक्ट कर देगा। हालांकि, वास्तव में पागलपन के लिए, टोर हिडन सर्विस या वीपीएन का उपयोग किया जाना चाहिए। लिनक्स पर स्वचालित टोर हिडन सर्विस रीडायरेक्शन कॉन्फ़िगर करने के लिए निम्नलिखित कमांड चलाए जा सकते हैं:
# echo "VirtualAddrNetwork 10.192.0.0/10" >> /etc/tor/torrc
# echo "AutomapHostsOnResolve 1" >> /etc/tor/torrc
# echo "TransPort 9040" >> /etc/tor/torrc
# echo "DNSPort 5353" >> /etc/tor/torrc
# killall -HUP tor
# iptables -t nat -A OUTPUT -p tcp -d 10.192.0.0/10 -j REDIRECT --to-ports 9040
# iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 5353
# ncat xxxxxxxxxxxxxxx.onion 6667
:irc.com NOTICE AUTH :*** Looking up your hostname...
:irc.com NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
^C
अंततः, IRC क्लाइंट को SSH-शैली की कुंजी सत्यापन का उपयोग करना चाहिए। पहले कनेक्ट पर, उपयोगकर्ता को सर्टिफिकेट फिंगरप्रिंट प्रस्तुत करें और उपयोगकर्ता को इसकी पुष्टि करने के लिए बाध्य करें और फिर सर्टिफिकेट कैश करें। यदि अगली बार यह बदलता है, तो कनेक्शन की अनुमति न दें।
स्रोत कोड Github से डाउनलोड किया जा सकता है।