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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CustomC2ChannelTemplate — रिफ्लेक्टिव लोडर द्वारा लागू किए गए IAT हुक का उपयोग करके Cobalt Strike के लिए कस्टम C2 चैनल विकसित करने का टेम्पलेट। | Kitploit
उपकरण/GitHubGitHub/codextf2/customc2channeltemplate
भेद्यता परीक्षण फ्रेमवर्कशोषण फ्रेमवर्कशेलकोडकमांड एंड कंट्रोलरेड टीमिंगपेलोड डेवलपमेंट
GitHubcodextf2/customc2channeltemplate

CustomC2ChannelTemplate

रिफ्लेक्टिव लोडर द्वारा लागू किए गए IAT हुक का उपयोग करके Cobalt Strike के लिए कस्टम C2 चैनल विकसित करने का टेम्पलेट।

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

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

सभी देखें →

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

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

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

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

कस्टम C2 चैनलों के लिए IAT हुकिंग

यह Cobalt Strike के लिए कस्टम C2 चैनल विकसित करने हेतु एक सरल PoC और टेम्पलेट है, जिसमें रिफ्लेक्टिव लोडर द्वारा लगाए गए IAT हुक का उपयोग किया जाता है।

ब्लॉग पोस्ट: https://codex-7.gitbook.io/codexs-terminal-window/red-team/cobalt-strike/building-custom-c2-channels-by-hooking-wininet
TCP चैनल का डेमो gif gif.gif

उपयोग

customCallback.h, hook.c, hash.h और hook.h फ़ाइलें मोटे-मोटे टेम्पलेट हैं, लेकिन इन्हें Crystal kit में डालकर ज्यों-का-त्यों PoC के रूप में उपयोग किया जा सकता है। इन्हें udrl/src फ़ोल्डर में रखें, मौजूदा प्रतियों को बदलते हुए। tcg.h अपरिवर्तित है (Raphael Mudge के tradecraft garden से)।

examples/ फ़ोल्डर के उदाहरण ज्यों-के-त्यों उपयोग किए जा सकते हैं, लेकिन वे उदाहरण मात्र हैं और इन्हें लिखते समय परिचालन संबंधी बातों पर ध्यान नहीं दिया गया है। सावधानी से उपयोग करें।

वर्तमान उदाहरण हैं:

  • named pipe (ब्रोकर को उसी होस्ट पर चलना चाहिए)
  • TCP
  • UDP (मैं चंकिंग करने में बहुत आलसी था, इसलिए अधिकतम कॉलबैक आकार 65535)
  • NTP (मैं चंकिंग करने में बहुत आलसी था, इसलिए अधिकतम कॉलबैक आकार 65535)
  • ICMP (मैं चंकिंग करने में बहुत आलसी था, इसलिए अधिकतम कॉलबैक आकार 65535)
  • Websockets (केवल wininet के साथ काम करता है, ठीक किया जाना है)

ध्यान दें कि Crystal kit की मूल एवेज़न क्षमताएँ जैसे Draugr इम्प्लीमेंटेशन और स्लीप मास्किंग को hook.c से हटा दिया गया है ताकि यह कोडबेस साफ और पोर्टेबल बना रहे। यदि आप उन सुविधाओं को बनाए रखना चाहते हैं, तो आप उन्हें Crystal kit की मूल प्रतियों से वापस जोड़ सकते हैं।

बीकन dll जनरेट करते समय आपको उपयुक्त http लाइब्रेरी winhttp/wininet को http लाइब्रेरी के रूप में चुनना होगा।

जिस malleable प्रोफ़ाइल के साथ इसका परीक्षण किया गया है वह रिपॉजिटरी में दी गई है - सिद्धांततः (अधिकांश) अन्य malleable प्रोफ़ाइल भी काम करनी चाहिए, लेकिन इस टेम्पलेट का परीक्षण इसी प्रोफ़ाइल (GraphStrike से ली गई) के साथ किया गया था।

मैंने यह क्यों बनाया?

आधिकारिक ExternalC2 इंटरफ़ेस उपयोग करने में कष्टदायक है - इसमें externalc2 चैनल के ऊपर SMB बीकन का स्टेजिंग करना आवश्यक होता है, और (4.10 तक) पहले externalc2 एजेंट के माध्यम से स्टेजिंग किए बिना पहले से तैयार SMB बीकन के साथ संचार का समर्थन नहीं करता था। अपनी वर्तमान स्थिति में भी, यह अब भी इस आर्किटेक्चर से बंधा है:

root@kitploit:~
smb beacon --named pipe--> externalc2 agent --custom channel--> externalc2 handler --> teamserver

हाँ, मुझे पता है कि UDC2 को Cobalt Strike 4.12 में जोड़ा गया था। यह वैसे भी UDRL में उस क्षमता को दोहराने का एक मज़ेदार प्रयोग मात्र है।

अवधारणा सरल है - यदि आप कॉलबैक के लिए उपयोग होने वाले WinAPIs को हुक कर सकते हैं, तो आपके पास पहले से ही कॉलबैक के लिए आवश्यक सारा डेटा मौजूद है। कस्टम C2 चैनल लागू करने की यह विधि पहले भी की जा चुकी है, जैसा कि GraphStrike में देखा गया है।

हालाँकि, GraphStrike का इम्प्लीमेंटेशन अभी भी HTTP प्रोटोकॉल से काफी जुड़ा हुआ है। इस रिपो का लक्ष्य किसी भी कस्टम चैनल को लागू करने के लिए एक आसान उपयोग, संशोधन और विस्तार योग्य टेम्पलेट प्रदान करना है, चाहे वह HTTP हो या कुछ और, आस-पास के कोड में न्यूनतम बदलाव के साथ।

टेम्पलेट का विस्तार करना

यह टेम्पलेट स्पष्ट रूप से अपनी डिफ़ॉल्ट अवस्था में उपयोग के लिए नहीं है, इसलिए अपनी पसंद का C2 चैनल लागू करने के लिए आपको निम्नलिखित को संशोधित करना होगा:

customCallback फ़ंक्शन को निम्न कार्य करने के लिए:

  1. base64 ब्लॉब (इसका पहला आर्गुमेंट) किसी भी आवश्यक माध्यम से बाहर भेजें
  2. प्रतिक्रिया प्राप्त करके उसे लौटाएँ

आप args के माध्यम से http अनुरोध के मूल होस्ट और पोर्ट (जो आपने cobalt से सेट किया है) का उपयोग कर सकते हैं:

root@kitploit:~
const char *host
INTERNET_PORT port

और broker.py में handleCallback() फ़ंक्शन को निम्न कार्य करने के लिए संशोधित करें:

  1. कॉलबैक प्राप्त करें
  2. process_encoded_request(your callback data goes here) को कॉल करें
  3. प्रतिक्रियाएँ वापस भेजें।

बस इतना ही।

उदाहरण के तौर पर, customCallback.h में customCallback() फ़ंक्शन का PoC वर्तमान में निम्न कार्य करता है:

  1. base64 ब्लॉब को request.txt फ़ाइल में लिखता है
  2. 500ms प्रतीक्षा करता है
  3. response.txt फ़ाइल से प्रतिक्रिया पढ़ता है
  4. फ़ाइल की सामग्री लौटाता है

broker.py में handleCallback फ़ंक्शन का PoC वर्तमान में निम्न कार्य करता है:

  1. request.txt से कॉलबैक पढ़ता है
  2. process_encoded_request(encoded_request) को कॉल करता है
  3. प्रतिक्रिया को response.txt में लिखता है

usage: broker.py [-h] --host HOST --port PORT जहाँ host और port आपके टीमसर्वर पर http लिसनर को इंगित करते हैं। ब्रोकर http अनुरोध को पार्स करके उसे वास्तविक लिसनर को भेजता है।

इस इम्प्लीमेंटेशन के बारे में कुछ बेतरतीब रोचक तथ्य, जो भी इसे पढ़ना चाहे

यह शायद इसे करने का सबसे "आलसी" तरीका है, लेकिन सबसे स्थिर तरीकों में से एक भी है। यह मूल रूप से पूरे HTTP अनुरोध को लपेटकर आपकी इच्छानुसार ब्रोकर को भेज देता है, जो फिर उसे वास्तव में टीमसर्वर को भेजता है, ताकि वह HTTP बीकन के रूप में चले, और यह टीमसर्वर के लिए पूरी तरह पारदर्शी हो।

मैंने एक (तकनीकी रूप से) स्वच्छ इम्प्लीमेंटेशन भी आज़माया था जिसमें एक बेयरबोन्स Malleable C2 प्रोफ़ाइल का उपयोग शामिल था (मैंने वास्तव में graphstrike वाली का उपयोग किया) और wininet हुकों के भीतर ही malleable स्पेक के अनुसार विभिन्न बीकन डेटा घटकों (id, metadata, output आदि) को पार्स करना शामिल था। इससे कॉलबैक ब्लॉब का आकार थोड़ा छोटा हो जाता, लेकिन वह इम्प्लीमेंटेशन छोड़ दिया गया क्योंकि अनुरोध पार्सिंग के कारण कोडबेस अनावश्यक रूप से गड़बड़ हो गया और उस विशिष्ट प्रोफ़ाइल के उपयोग की भी आवश्यकता थी (जो बहुत बड़ी बात नहीं है लेकिन काफी हैकी है)।

मुझे लगा कि यह इम्प्लीमेंटेशन बेहतर है क्योंकि यह हैकी malleable प्रोफ़ाइल पर कम निर्भर है (तकनीकी रूप से, इसमें अब भी बीकन प्रतिक्रिया आउटपुट को प्रतिक्रिया बॉडी में भेजा जाना आवश्यक है, लेकिन यही एकमात्र आवश्यकता है) और कोड पढ़ने में 10 गुना आसान था।

यह भी ध्यान देने योग्य है कि http अनुरोध json पर base64 एन्कोडिंग के अलावा कोई ऑब्सफस्केशन या एन्क्रिप्शन नहीं है - आप अपना खुद का जोड़ने के लिए स्वतंत्र हैं, लेकिन चूँकि Beacon कॉलबैक पहले से ही एन्क्रिप्टेड हैं, तकनीकी रूप से कोई भी डेटा डिक्रिप्ट होने के जोखिम में नहीं है। सबसे बुरा जो हो सकता है वह यह है कि यदि base64 ब्लॉब प्राप्त हो जाए तो उसे HTTP अनुरोध के रूप में पहचाना जा सकता है। उस जानकारी के साथ जो चाहें करें।

श्रेय और संदर्भ

  • https://github.com/rasta-mouse/Crystal-Kit (विकास और परीक्षण के लिए मूल टेम्पलेट)
  • https://github.com/RedSiege/GraphStrike (ग्राफ चैनल लागू करने के लिए IAT हुकिंग)
  • https://github.com/benheise/TitanLdr (DoH लागू करने के लिए IAT हुकिंग)
  • https://tradecraftgarden.org/ (crystal kit के लिए उपयोग किया गया फ्रेमवर्क, और विस्तार से इसके लिए भी)

हाँ, मैंने कुछ कोड और टिप्पणियाँ लिखने के लिए LLM का उपयोग किया, किसी को भी दस्तावेज़ लिखना या C में स्क्रैच से बॉयलरप्लेट json पार्सिंग लिखना पसंद नहीं है। मुझ पर मुकद्दमा कर लें।

अस्वीकरण

सामान्य अस्वीकरण, मैं किसी भी मानवता के विरुद्ध अपराध या परमाणु क्षति के लिए ज़िम्मेदार नहीं हूँ जो आप इस खराब तरीके से लिखे कोड के उपयोग से कर सकते हैं।

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