Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

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

secret_handshake

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

रिपॉजिटरी देखें
1531542 साल पहले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) शैली का संचार है; सर्वर और क्लाइंट के बीच पूर्ण अनुरोध/प्रत्युत्तर पूरा करने के लिए दो पारस्परिक प्रमाणीकरण प्रवाहों की आवश्यकता होती है। फिर यह कई बार होगा क्योंकि सर्वर क्लाइंट को विभिन्न कमांड भेज रहा होता है।

इसका मतलब है कि आपको निम्नलिखित की तलाश करनी चाहिए:

  • एक ही स्रोत और गंतव्य IP के बीच कई mTLS सत्र, संभवतः एक ही पोर्ट पर, हालाँकि प्रति mTLS कनेक्शन अलग-अलग पोर्ट पर चलने के लिए इसे कॉन्फ़िगर करना कठिन नहीं होगा।
  • चूंकि अनुरोध-प्रत्युत्तर पैटर्न को प्रति सर्वर कमांड के लिए दो mTLS सत्रों की आवश्यकता होती है, दो mTLS सत्रों को काफी निकटता से देखें, जिनके बाद अगली जोड़ी से पहले लंबा ठहराव हो।
  • mTLS सत्रों के जोड़े के बीच स्लीप और जिटर समय की तलाश करें, ठीक वैसे ही जैसे आप किसी अन्य C2 चैनल में करते हैं।
  • प्रत्येक mTLS सत्र के लिए प्रमाणपत्र हैश अलग-अलग होने चाहिए, क्योंकि प्रति सत्र नए प्रमाणपत्र उत्पन्न होते हैं।
  • प्रमाणपत्र विश्वसनीय प्रमाणपत्र प्राधिकरणों द्वारा जारी नहीं किए जाएंगे।
  • x509 प्रमाणपत्र बाइट आकार भी प्रति सत्र भिन्न होंगे। छोटे सर्वर प्रमाणपत्र क्लाइंट को भेजे जा रहे कमांड का संकेत देंगे, लेकिन बड़े प्रमाणपत्र सबसे अधिक संभावना एक दुर्भावनापूर्ण बाइनरी के डाउनलोड का संकेत देंगे। क्लाइंट प्रमाणपत्रों के आकार में सर्वर कमांड प्रमाणपत्रों की तुलना में अधिक भिन्नता होने की संभावना है, क्योंकि वे कमांड आउटपुट एम्बेड कर रहे हैं। बड़े क्लाइंट प्रमाणपत्र डेटा एक्सफ़िलट्रेशन का संकेत देंगे।
  • यदि कम समय में एक ही स्रोत और गंतव्य IP के बीच कई mTLS सत्र हैं, तो देखें कि क्या कभी-कभी समान हैश वाले प्रमाणपत्र भेजे जाते हैं। यह कमांड / प्रतिक्रिया प्रमाणपत्रों के पुन: उपयोग का संकेत दे सकता है, जैसे कि “बीकन” क्लाइंट प्रमाणपत्र या “स्लीप” सर्वर प्रमाणपत्र।

यह पहचान नियमों का एक अचूक सेट लगता है, लेकिन जैसा मैंने पहले कहा, यह इतना आसान नहीं है। पता चलता है कि उद्यम सेवाओं का एक समूह है जिसमें समान mTLS ट्रैफ़िक पैटर्न भी है, जिनमें शामिल हैं:

  • Tanium
  • Microsoft System Center Configuration Manager (SCCM)
  • Microsoft Monitoring Agent
  • Azure Hybrid Runbook Worker
  • Palo Alto Networks
  • MuleSoft
  • TrustedSource
  • Cohesity Helios
  • EMC's Global Security Organization
  • Alert Logic

इनमें से कई एसेट/डिवाइस प्रबंधन सेवाएँ प्रतीत होती हैं, इसलिए सिद्धांत रूप में उन्हें हर बार अपने सभी डिवाइसों पर चलने पर प्रमाणपत्रों का एक ही सेट भेजना चाहिए। आप देख सकते हैं कि क्या हर N घंटे में दोहराए जाने वाले कई mTLS सत्रों के सेट हैं, और फिर देखें कि क्या दो अलग-अलग सेटों के बीच प्रमाणपत्र हैश मेल खाते हैं, या अधिकतर मेल खाते हैं। साथ ही, संभावित रूप से देखें कि क्लाइंट प्रमाणपत्र प्रत्येक mTLS सत्र के लिए अलग-अलग हों, लेकिन सर्वर प्रमाणपत्र सभी सत्रों में समान हो।

संभावित शमन

SSL निरीक्षण इस प्रकार के C2 संचार चैनल को संभावित रूप से अवरुद्ध करने का एक तरीका है, क्योंकि SSL निरीक्षण सर्वर के पास क्लाइंट प्रमाणपत्र को प्रमाणित करने के लिए आवश्यक दुर्भावनापूर्ण CA प्रमाणपत्र नहीं होगा।

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