Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
secret_handshake — mTLS के ऊपर x509 प्रमाणपत्रों का उपयोग करने वाला एक प्रोटोटाइप मैलवेयर C2 चैनल | Kitploit
उपकरण/GitHubGitHub/jconwell/secret_handshake
आईडीएस/आईपीएस से बचनाडेटा निष्कासनकमांड एंड कंट्रोलरेड टीमिंग
GitHubjconwell/secret_handshake

secret_handshake

mTLS के ऊपर x509 प्रमाणपत्रों का उपयोग करने वाला एक प्रोटोटाइप मैलवेयर C2 चैनल

रिपॉजिटरी देखें
15315142 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Secret Handshake - mTLS पर x509 प्रमाणपत्रों का उपयोग करने वाला एक मालवेयर C2 चैनल

प्रेरणा

सबसे पहले, मैं इसे ओपन सोर्स क्यों करूँ?

MITRE ATT&CK केवल चोरी किए गए या स्व-हस्ताक्षरित प्रमाणपत्रों की बात करता है, और NDRs (जहाँ तक मैं बता सकता हूँ) x509 प्रमाणपत्रों की सामग्री पर बहुत कम ध्यान देते हैं, सिवाय इसके कि जारी करने वाला CA कौन है। सामान्य तौर पर x509 प्रमाणपत्रों पर भरोसा किया जाता है और उन्हें बिना किसी रोक-टोक के हमारे फ़ायरवॉल से गुजरने की अनुमति होती है। लेकिन संक्षेप में वे सिर्फ़ फ़ाइलें हैं जो किसी भी अन्य फ़ाइल की तरह आसानी से दुर्भावनापूर्ण पेलोड धारण कर सकती हैं। हम उन पर भरोसा करते हैं और उन्हें अनदेखा करते हैं क्योंकि वे एक एन्क्रिप्शन प्रक्रिया का मुख्य घटक हैं, जिसे हम सामान्य मानने लगे हैं। इस परियोजना का प्राथमिक लक्ष्य एक ऐसे सुरक्षा संकेतक वर्ग के प्रति बढ़ी हुई जागरूकता लाना है जिस पर हम भरोसा करने लगे हैं, और उन तरीकों को उजागर करना है जिनका उपयोग इसके दुर्भावनापूर्ण उपयोगों का पता लगाने के लिए किया जा सकता है।

पृष्ठभूमि

मैंने हमेशा सोचा कि क्या खतरे वाले अभिनेताओं (threat actors) ने कभी अपने C2 संचार के हिस्से के रूप में x509 प्रमाणपत्रों का उपयोग किया है, नेटवर्क ट्रैफ़िक को एन्क्रिप्ट करने के लिए नहीं, बल्कि वास्तव में C2 संचार को x509 प्रमाणपत्र में एम्बेड करने के लिए। 5 वर्षों तक जंगल में ऐसा कुछ खोजने के बाद, मैंने आखिरकार इसे स्वयं कोड करने का फैसला किया ताकि यह देख सकूँ कि क्या यह संभव है... और यह है।

HTTPS/TLS पर भेजा गया हर एक एन्क्रिप्टेड संदेश x509 प्रमाणपत्र के स्थानांतरण द्वारा सक्षम होता है। TLS हैंडशेक स्थापित करते समय (नीचे दिया गया चित्र), चौथे चरण के दौरान सर्वर अपना x509 प्रमाणपत्र क्लाइंट को भेजता है। क्लाइंट प्रमाणपत्र को सत्यापित करता है, सर्वर द्वारा समर्थित एन्क्रिप्शन एल्गोरिदम की तुलना करता है और चुनता है कि आगे के सभी संचार के लिए कौन सा एल्गोरिदम उपयोग करना है।

चित्र 1

जैसा कि यह आरेख दिखाता है, यह केवल सर्वर से क्लाइंट तक x509 प्रमाणपत्र का एकतरफ़ा स्थानांतरण है। यह C2 संचार के लिए उपयुक्त नहीं है क्योंकि क्लाइंट के पास सर्वर को वापस जवाब देने का कोई तरीका नहीं है। अधिक से अधिक, इसका उपयोग केवल एकतरफ़ा डेटा स्थानांतरण तंत्र के रूप में किया जा सकता है (नीचे पूर्व कला अनुभाग देखें)।

लेकिन एक अन्य प्रकार का TLS सत्र है जिसे पारस्परिक TLS प्रमाणीकरण (mTLS) कहा जाता है, जहाँ क्लाइंट और सर्वर दोनों एक-दूसरे को प्रमाणित करने के तरीके के रूप में x509 प्रमाणपत्रों का आदान-प्रदान करते हैं।

चित्र 2

जैसा कि उपरोक्त चित्र दिखाता है, पारस्परिक प्रमाणीकरण के दौरान सर्वर का x509 प्रमाणपत्र प्रमाणीकरण के लिए क्लाइंट को भेजा जाता है, और फिर क्लाइंट का x509 प्रमाणपत्र प्रमाणीकरण के लिए सर्वर को भेजा जाता है। आर्टिफैक्ट्स का यह आदान-प्रदान C2 सर्वरों के लिए 2-तरफ़ा संचार चैनल बनाने का एक अवसर दर्शाता है।

x509 प्रमाणपत्रों के माध्यम से 2-तरफ़ा संचार चैनल बनाना

चूंकि सर्वर और क्लाइंट प्रमाणपत्र अंतर्निहित SSL लाइब्रेरी द्वारा आदान-प्रदान किए जाते हैं, इसलिए क्लाइंट के लिए एक ही mTLS कनेक्शन के भीतर सर्वर के प्रमाणपत्र से संदेश निकालने, कमांड चलाने और प्रतिक्रिया प्रमाणपत्र उत्पन्न करने का कोई अवसर नहीं होता है। इसका मतलब है कि C2 चैनल को इस तरह डिज़ाइन करने की आवश्यकता है कि अनुरोध-प्रत्युत्तर आदान-प्रदान दो अलग-अलग पारस्परिक TLS कनेक्शनों पर हो, लगभग छद्म-अर्ध-द्वैध (pseudo-half duplex) संचरण मोड की तरह।

चित्र 3

अनुरोध/प्रतिक्रिया प्रक्रिया निम्नलिखित चरणों का पालन करती है:

  • चरण 1: क्लाइंट और C2 सर्वर दोनों अपने-अपने प्रमाणपत्र उत्पन्न करते हैं। क्लाइंट के प्रमाणपत्र में एक सामान्य “बीकन” संदेश होता है, और सर्वर के प्रमाणपत्र में वह कमांड होता है जिसे वह क्लाइंट से चलवाना चाहता है। यदि क्लाइंट के लिए निष्पादित करने के लिए कोई कमांड नहीं है, तो सर्वर एक सामान्य “स्लीप” प्रमाणपत्र उत्पन्न करता है ताकि क्लाइंट को अगले बीकन से पहले कितनी देर सोना है, यह बताया जा सके।
  • चरण 2: क्लाइंट और C2 सर्वर दोनों चरण 1 में उत्पन्न प्रमाणपत्रों के साथ एक नेटवर्क सॉकेट कॉन्फ़िगर करते हैं।
  • चरण 3: क्लाइंट सर्वर के साथ एक कनेक्शन स्थापित करता है।
  • चरण 4: mTLS हैंडशेक के दौरान सर्वर और क्लाइंट प्रमाणपत्रों का आदान-प्रदान होता है।
  • चरण 5: सर्वर और क्लाइंट दोनों अपने-अपने सॉकेट बंद कर देते हैं।
  • चरण 6: क्लाइंट सर्वर प्रमाणपत्र से निष्पादित करने के लिए कमांड निकालता है। चूंकि क्लाइंट के प्रमाणपत्र में केवल एक सामान्य “बीकन” संदेश होता है, सर्वर इसे त्याग देता है।
  • चरण 7: क्लाइंट कमांड निष्पादित करता है और कमांड आउटपुट एकत्र करता है।
  • चरण 8: क्लाइंट और C2 सर्वर दोनों अपने-अपने प्रमाणपत्र उत्पन्न करते हैं। क्लाइंट के प्रमाणपत्र में अभी निष्पादित कमांड का आउटपुट होता है, और सर्वर एक सामान्य “स्लीप” प्रमाणपत्र उत्पन्न करता है ताकि क्लाइंट को अगले बीकन से पहले कितनी देर सोना है, यह बताया जा सके।
  • चरण 9: क्लाइंट और C2 सर्वर दोनों चरण 8 में उत्पन्न प्रमाणपत्रों के साथ एक नेटवर्क सॉकेट कॉन्फ़िगर करते हैं।
  • चरण 10: क्लाइंट सर्वर के साथ एक कनेक्शन स्थापित करता है।
  • चरण 11: mTLS हैंडशेक के दौरान सर्वर और क्लाइंट प्रमाणपत्रों का आदान-प्रदान होता है।
  • चरण 12: सर्वर और क्लाइंट दोनों अपने-अपने सॉकेट बंद कर देते हैं।
  • चरण 13: क्लाइंट सर्वर प्रमाणपत्र से स्लीप अवधि निकालता है, और सर्वर क्लाइंट प्रमाणपत्र से कमांड आउटपुट निकालता है।
  • चरण 14: क्लाइंट सर्वर द्वारा निर्दिष्ट अंतराल के लिए सोता है।

पूर्व कला

जब मैंने इसे काम करते हुए देखा तो मुझे खुद पर काफ़ी गर्व हुआ कि मैं इतना रचनात्मक हूँ और सब कुछ।

फिर मुझे यह 2018 में जेसन रीव्स द्वारा BSides वार्ता मिली, जिन्होंने TLS पर x509 प्रमाणपत्रों का उपयोग करके एक मालवेयर बाइनरी ड्रॉपर लिखा था। एक साल बाद जेसन ने यह शोधपत्र प्रकाशित किया जिसमें mTLS का उपयोग करके एक पूर्ण 2-तरफ़ा संचार चैनल का विवरण दिया गया था।

चलाने के निर्देश

mTLS के लिए आवश्यक है कि क्लाइंट और सर्वर दोनों के प्रमाणपत्रों पर एक ही CA प्रमाणपत्र द्वारा हस्ताक्षर किए गए हों, इसलिए पहला कदम अपनी स्वयं की CA निजी कुंजी / प्रमाणपत्र जोड़ी उत्पन्न करना है।

रूट CA निजी कुंजी बनाएँ:

openssl genrsa -des3 -out hmCA.key 2048

नोट: पासफ़्रेज़ किसी भी व्यक्ति को, जो आपकी निजी कुंजी प्राप्त कर लेता है, अपना स्वयं का रूट प्रमाणपत्र बनाने से रोकेगा।

रूट CA प्रमाणपत्र बनाएँ:

openssl req -x509 -new -nodes -key hmCA.key -sha256 -days 1825 -out hmCA.pem

उत्पन्न कुंजी और प्रमाणपत्र फ़ाइलों को certs/ca_certs फ़ोल्डर में कॉपी करें। प्रोजेक्ट एक डेमो कुंजी/प्रमाणपत्र जोड़ी के साथ आता है, इसलिए यदि आप चाहें तो इस चरण को छोड़ सकते हैं।

क्लाइंट प्रारंभ करें:

python client.py

सर्वर प्रारंभ करें:

python server.py

पहचान

मैं कभी भी संभावित रूप से दुर्भावनापूर्ण कुछ जारी नहीं करना चाहता, बिना यह भी विवरण दिए कि इसे आपके नेटवर्क लॉग में कैसे पहचाना जाए।

आप सोचेंगे कि इस प्रकार के TLS पैटर्न का पता लगाना आसान होगा, लेकिन यह इतना सरल नहीं है। इस C2 चैनल के मुख्य संकेतों में से एक इसकी अर्ध-द्वैध (half-duplex) शैली का संचार है; सर्वर और क्लाइंट के बीच पूर्ण अनुरोध/प्रत्युत्तर पूरा करने के लिए दो पारस्परिक प्रमाणीकरण प्रवाहों की आवश्यकता होती है। फिर यह कई बार होगा क्योंकि सर्वर क्लाइंट को विभिन्न कमांड भेज रहा होता है।

टूल डाउनलोड करें