
Ratched एक पारदर्शी Man-in-the-Middle TLS प्रॉक्सी है जो पेनेट्रेशन परीक्षण के लिए अभिप्रेत है।
ratched एक Man-in-the-Middle (MitM) प्रॉक्सी है जो विशेष रूप से TLS कनेक्शनों को इंटरसेप्ट करता है। इसका उपयोग Linux के iptables REDIRECT लक्ष्य के साथ किया जाना है; सभी कनेक्शन जिन्हें इंटरसेप्ट किया जाना है, उन्हें स्थानीय ratched पोर्ट पर रीडायरेक्ट किया जा सकता है। SO_ORIGINAL_DST sockopt के माध्यम से, ratched इच्छित गंतव्य (iptables पैकेट मैंगलिंग से पहले) निर्धारित कर सकता है और मूल लक्ष्य से कनेक्शन स्थापित करने का प्रयास करता है।
इसे अन्य MitM सॉफ्टवेयर से अलग करने वाली बात निम्नलिखित है:
ratched ट्रैफिक को अंधाधुंध तरीके से इंटरसेप्ट नहीं करता। विशेष रूप से, यह पहले TLS क्लाइंट के ClientHello भेजने की प्रतीक्षा करता है ताकि ratched उसे पार्स कर सके और Server Name Indication TLS एक्सटेंशन (SNI) के आधार पर निर्णय ले सके कि लक्ष्य को इंटरसेप्ट किया जाना चाहिए या नहीं। यह तब विशेष रूप से उपयोगी होता है जब आपके पास वर्चुअल होस्टिंग है, लेकिन आप केवल किसी विशिष्ट होस्टनाम के कनेक्शन को इंटरसेप्ट करना चाहते हैं।
ratched का उद्देश्य केवल पासवर्ड सूँघना नहीं है, बल्कि मुख्य रूप से ट्रैफिक को PCAPNG फ़ाइल में डंप करना है। PCAPNG फ़ाइल फ़ॉर्मेट को इसलिए चुना गया क्योंकि यह कनेक्शनों को टिप्पणियों (विशेष रूप से, SNI एक्सटेंशन में कौन सा होस्टनाम इंगित किया गया था) के साथ एनोटेट करने की अनुमति देता है और कैप्चर फ़ाइल में नाम रिज़ॉल्यूशन जानकारी (फिर से, लक्ष्य IP पते को SNI एक्सटेंशन के होस्टनाम से मैप करने के लिए) एम्बेड करने की भी अनुमति देता है।
ratched में प्रत्येक इंटरसेप्टेड SNI के लिए अलग-अलग कॉन्फ़िगरेशन होता है, जिसमें समर्थित समूह (पूर्व में "समर्थित एलिप्टिक कर्व्स" के रूप में जाने जाते थे), सिफर सूट और क्लाइंट और सर्वर पक्ष पर विशिष्ट TLS संस्करण शामिल हैं, और यह विभिन्न इंटरसेप्टेड होस्टों के लिए कस्टम प्रमाणपत्र/कुंजी निर्दिष्ट करने की अनुमति देता है।
ratched क्लाइंट प्रमाणपत्रों के लिए व्यापक समर्थन प्रदान करता है और क्लाइंट प्रमाणपत्रों के लिए स्वचालित फोर्जिंग भी प्रदान करता है (दूसरी दिशा में फोर्ज किए गए सर्वर प्रमाणपत्रों के समान)।
ratched OCSP स्टेपलिंग का समर्थन करता है और जब कोई क्लाइंट स्टेटस रिक्वेस्ट TLS एक्सटेंशन भेजता है तो स्वचालित रूप से सकारात्मक OCSP प्रतिक्रियाएँ फोर्ज कर सकता है।
एक बार ratched राउटिंग मशीन पर (उदाहरण में, पोर्ट 9999 पर) सुनना शुरू कर देता है, तो बस एक iptables एंट्री जोड़ें जो यह निर्दिष्ट करे कि आप किस ट्रैफिक को कैप्चर करना चाहते हैं। उदाहरण के लिए, 192.168.1.7 से पोर्ट 443 तक पहुँचने वाले सभी ट्रैफिक को इंटरसेप्ट करने के लिए, उपयोग करें:
# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.7 --dport 443 -j REDIRECT --to-ports 9999
443 पर जाने वाली हर चीज़ को इंटरसेप्ट करने के लिए, बस यह करें:
# iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 9999
यदि आप एक राउटर के रूप में कार्य कर रहे हैं और स्थानीय रूप से आने वाले ट्रैफिक को इंटरसेप्ट करना चाहते हैं, तो REDIRECT के बजाय DNAT लक्ष्य का उपयोग करें, जैसे:
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.123.1:9999
यहाँ, eth1 वह इंटरफ़ेस है जिस पर आप ट्रैफिक इंटरसेप्ट कर रहे हैं और 192.168.123.1 स्थानीय इंटरफ़ेस का IP पता है।
सहायता पृष्ठ काफी हद तक स्व-व्याख्यात्मक होना चाहिए:
usage: ratched [-c path] [-f hostname:port] [--single-shot] [--dump-certs]
[--keyspec keyspec] [--initial-read-timeout secs]
[--mark-forged-certificates] [--no-recalculate-keyids]
[--daemonize] [--logfile file] [--flush-logs] [--crl-uri uri]
[--ocsp-uri uri] [--write-memdumps-into-files]
[--use-ipv6-encapsulation] [-l hostname:port]
[-d key=value[,key=value,...]] [-i hostname[,key=value,...]]
[--pcap-comment comment] [-o filename] [-v]
ratched - TLS connection router that performs a man-in-the-middle attack