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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
botnet-hackpack — C में एक बुनियादी Command & Control botnet बनाएं | Kitploit
उपकरण/GitHubGitHub/treehacks/botnet-hackpack
स्थायित्व तंत्रमालवेयर विश्लेषणकमांड एंड कंट्रोललर्निंग और शिक्षारेड टीमिंगपेलोड डेवलपमेंट
GitHubtreehacks/botnet-hackpack

botnet-hackpack

C में एक बुनियादी Command & Control botnet बनाएं

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

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

सभी देखें →

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

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

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

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

सरल C&C बॉटनेट

यह हैकपैक आपको एक बुनियादी ढाँचा लागू करने की प्रक्रिया से गुज़ारेगा जो मूलतः एक बॉटनेट की विशेषता बताता है। यदि आपने पहले C के साथ काम किया है तो यह मददगार हो सकता है। अगर आपको यह ट्यूटोरियल पसंद आया, तो इस रिपॉजिटरी को स्टार करना न भूलें!

नोट: यहाँ सीखी गई किसी भी बात का दुरुपयोग न करें। यह हैकपैक केवल शैक्षिक उद्देश्यों के लिए बॉटनेट का एक केस स्टडी है। इस हैकपैक में सीखी गई अवधारणाओं के दूरगामी उपयोग के मामले हैं (मूलतः नेटवर्किंग से संबंधित कोई भी चीज़)। सबसे महत्वपूर्ण बात, यह हैकपैक स्थानीय रूप से परीक्षण और तैनात किए जाने के लिए है (कृपया इस हैकपैक से संबंधित किसी भी चीज़ को अन्य हैकर्स के साथ साझा न करें)। गोपनीयता महत्वपूर्ण है, कृपया इसका सम्मान करें।

बॉटनेट क्या है?

बॉटनेट बनाने से पहले, यह समझना ज़रूरी है कि बॉटनेट क्या है। बॉटनेट कंप्यूटरों का एक नेटवर्क है जो दूरस्थ रूप से कमांड प्राप्त करने और उन्हें स्थानीय रूप से तैनात करने में सक्षम होते हैं। वैकल्पिक रूप से, वे नेटवर्क में अन्य नोड्स को जानकारी वापस भेज सकते हैं। इनका उपयोग वितरित सेवा अस्वीकार (DDoS) हमलों से लेकर व्यापक रूप से स्पाइवेयर तैनात करने तक हर चीज़ के लिए किया गया है। आपने अतीत में कई बॉटनेट के बारे में सुना होगा। सबसे प्रमुख शायद Mirai और Gameover Zeus हैं, जिन्होंने क्रमशः 3.8 हज़ार और 3.6 मिलियन IoT उपकरणों को नियंत्रित किया। बॉटनेट कुछ कार्यों को कैसे लागू करते हैं, इसमें बहुत अंतर है। लेकिन अपने बॉटनेट को सफलतापूर्वक बनाने के लिए, हमें अपने कार्यशील नेटवर्क में निम्नलिखित सुविधाएँ सुनिश्चित करनी होंगी।

हमारे बॉटनेट को चाहिए:

  1. एक मास्टर नोड शामिल करें जो नेटवर्क पर अन्य सभी नोड्स को नियंत्रित करे
  2. होस्ट कंप्यूटरों पर छिपा हुआ मैलवेयर/स्लेव नोड्स तैनात करे
  3. मास्टर नोड से स्लेव नोड तक कमांड प्रेषित करें, उन्हें क्रियान्वित करें, और आउटपुट वापस मास्टर को भेजें

यह संरचना कमांड एंड कंट्रोल बॉटनेट के रूप में जानी जाती है। इन बॉटनेट में एक मास्टर सर्वर और कई स्लेव सर्वर होते हैं। हालाँकि, बॉटनेट की यह शैली पुरानी हो चुकी है और मास्टर डोमेन तक पहुँच काटकर आसानी से नष्ट किया जा सकता है। अधिक हालिया और परिष्कृत बॉटनेट पीयर-टू-पीयर आर्किटेक्चर का पालन करते हैं, जहाँ प्रशासनिक अधिकार या तो सभी नोड्स में या नेटवर्क में नोड्स के एक उपसमूह में वितरित होते हैं। ये बॉटनेट सुरक्षा विशेषज्ञों के लिए बहुत बड़ा सिरदर्द हैं क्योंकि नियंत्रण का कोई केंद्रीय बिंदु नहीं है और ये लाखों नोड्स तक बढ़ सकते हैं। ऐसे बॉटनेट को गिराना अपने आप में एक दिलचस्प पढ़ाई है। हालाँकि, इस हैकपैक के उद्देश्यों के लिए, चीजों को सरल रखें। हम एक C&C बॉटनेट के लिए एक सरल स्लेव नोड लागू करेंगे।

alt tag

कार्यान्वयन

मास्टर

यह हैकपैक मुख्यतः क्लाइंट मैलवेयर को लागू करने से संबंधित होगा। मास्टर सर्वर के लिए, हम Netcat नामक एक ओपन-सोर्स TCP सर्वर का उपयोग कर सकते हैं। Netcat का बॉटनेट से कोई लेना-देना नहीं है। यह केवल एक सुविधाजनक, स्थापित उपकरण है जिसे हम ग्राहकों को टेक्स्ट पैकेट भेजने और प्राप्त करने के लिए पुनः उपयोग कर सकते हैं (जो कि मास्टर वास्तव में है)। मैंने netcat सर्वर में थोड़ा बदलाव किया है और इसे "master" नामक बाइनरी में संकलित किया है। यहाँ और कोई काम नहीं! हमारा मास्टर उपयोग के लिए तैयार है।

स्लेव

अब अधिक दिलचस्प भाग पर चलते हैं: दूरस्थ कमांड प्राप्त करना और निष्पादित करना (हम बाद में अपने मैलवेयर को छिपाने के बारे में चिंता करेंगे)। यहाँ लक्ष्य हमारे स्लेव नोड को यथासंभव सरल बनाना और ऊपर विस्तृत आवश्यकताओं का पालन करना है। ध्यान दें कि lib/macros.h में कई स्थिरांक परिभाषित किए गए हैं, इसलिए बेझिझक उनका उपयोग करें। सभी कार्यान्वित फ़ंक्शन हस्ताक्षर lib/connect.h या lib/utils.h में पाए जा सकते हैं।

1. आरंभीकरण

bot.c फ़ाइल खोलें। हमारे सर्वर में एक नया नोड शुरू करते समय, हमें इसे शायद एक नाम देना चाहिए ताकि मास्टर को पता चले कि किन ग्राहकों को कमांड तैनात करनी है। ऐसे कई नामकरण परंपराएँ हैं जिनका उपयोग किया जा सकता है। IP पते का उपयोग करना शायद सबसे अच्छा है क्योंकि यह प्रत्येक ग्राहक के लिए एक अद्वितीय पहचानकर्ता है। हालाँकि, सामान्य मनुष्यों के लिए इसे अधिक पठनीय बनाने के लिए, आइए कंप्यूटर के उपयोगकर्ता नाम का उपयोग करें। C फ़ंक्शन getenv() का उपयोग करके तर्क "USER" के साथ, कंप्यूटर USER पर्यावरण चर में जो संग्रहीत है वह प्राप्त होता है। यह एक स्थान है जहाँ उपयोगकर्ता का उपयोगकर्ता नाम संग्रहीत होता है, तो चलिए इसका उपयोग करते हैं। साथ ही, अब जब आपका स्लेव चल रहा है, तो आइए मास्टर को खोजें। ऐसा करने के लिए, हमें अपने मास्टर का IP पता जानना होगा। हर नेटवर्क डिवाइस का एक IP पता होता है। यह अन्य नोड्स की पहचान करने और स्थान पता लगाने के लिए जिम्मेदार है। इसके अलावा, मास्टर के पास विभिन्न पोर्ट पर कई सर्वर चल सकते हैं। इसलिए, हमें न केवल मास्टर से कनेक्ट करना होगा, बल्कि सही पोर्ट भी निर्दिष्ट करना होगा। यह पोर्ट मास्टर द्वारा चुना जाता है लेकिन बदला जा सकता है। इस हैकपैक में, हम स्थानीय रूप से परीक्षण करना चाहते हैं। इसलिए, हम अपने कंप्यूटर को अपने नेटवर्क के रूप में उपयोग करेंगे। प्रत्येक कंप्यूटर का स्थानीय IP पता (जिसे "localhost" भी हल करता है) "127.0.0.1" है। मास्टर में, मैंने इसे पोर्ट 9999 पर चलाने के लिए निर्दिष्ट किया है। इन तीन चीजों (मास्टर IP पता, मास्टर पोर्ट, और स्लेव नाम) के साथ, हम सर्वर और क्लाइंट के बीच एक संचार पाइपलाइन शुरू कर सकते हैं जिसे सॉकेट कहा जाता है। इन तीन तर्कों को init_socket() फ़ंक्शन में पास करें ताकि एक सॉकेट बनाया जा सके। init_function() एक बिल्ट-इन C कमांड नहीं है। बल्कि, हमें इसे लागू करने की आवश्यकता है। फिर, हमें आने वाले संदेशों को रखने के लिए स्टैक पर कुछ स्थान आवंटित करने की आवश्यकता है। आइए यहाँ काफी उदार बनें और लगभग 10KB स्टैक स्पेस का उपयोग करें। इस स्टैक पॉइंटर को msg कहें। अंत में, यह इंगित करने के लिए एक printf कथन है कि सब कुछ ठीक चल रहा है।

char* name = //क्लाइंट का उपयोगकर्ता नाम प्राप्त करें और इसे name में संग्रहीत करें
int channel = //SERVER, PORT और name दिए जाने पर एक चैनल आरंभ करें;
//CMD_LENGTH आकार की स्टैक स्पेस आवंटित करें ताकि char प्रकार का डेटा रखा जा सके। स्टैक पॉइंटर को msg कहें
printf("%s बॉटनेट में शामिल हो रहा है\n", name);

अब lib/connect.c पर जाएँ। आइए init_channel() को लागू करें। पहले मैंने CMD_LENGTH लंबाई का एक स्टैक char बफर जिसे msg कहा जाता है, और एक विशेष C नेटवर्किंग निर्माण जिसे server कहा जाता है, परिभाषित किया है जो मास्टर से हमारे कनेक्शन के बारे में जानकारी रखता है। पहले अपने पास किए गए IP पते को मानव-पठनीय प्रारूप (संख्याओं और बिंदुओं के साथ) से नेटवर्क बाइट ऑर्डर में बाइनरी प्रारूप में बदलें। यह सॉकेट लाइब्रेरी से एक विशेष C फ़ंक्शन जिसे inet_addr() कहा जाता है, का उपयोग करके किया जाता है। यह बस एक IP पता लेता है और इसे नेटवर्क में उपयोग योग्य बाइनरी में आउटपुट करता है। C में, हम आसानी से एक नेटवर्क निर्दिष्ट कर सकते हैं जो sockaddr_in नामक स्ट्रक्ट के फ़ील्ड भरकर किया जाता है। हमारे स्ट्रक्ट का इंस्टेंस server कहलाता है। हमें इस स्ट्रक्ट के 3 फ़ील्ड भरने होंगे: server.sin_addr.s_addr (मास्टर IP पता), server.sin_family (एक 1-बाइट मान जो संचार डोमेन निर्दिष्ट करता है), और server.sin_port (वह पोर्ट जिससे हम मास्टर से जुड़ेंगे)। sin_family को सॉकेट लाइब्रेरी द्वारा प्रदान किए गए C मैक्रो दिए जा सकते हैं। आमतौर पर, जैसा कि इस मामले में है, हम इस फ़ील्ड को AF_INET पर सेट करते हैं। इसका मतलब है कि हमारा कनेक्शन नेटवर्क नोड्स को उनके IP पतों के माध्यम से पहचानता है, जो हम चाहते हैं। हालाँकि, PF_INET का उपयोग करना भी संभव है जो AF_INET के समान है लेकिन यह निर्दिष्ट करता है कि नेटवर्क विशिष्ट नोड्स की पहचान करने के लिए प्रोटोकॉल के भीतर कुछ भी उपयोग कर सकता है। ऐसे भी कई कथित ऐतिहासिक कारण हैं कि दोनों क्यों मौजूद हैं, लेकिन यह ऐसी चीज़ है जिसके बारे में मैं वास्तव में नहीं जानता या परवाह नहीं करता। बस AF_INET का उपयोग करें। अंत में, सर्वर पोर्ट सेट करते समय, हमें port को htons() (होस्ट टू नेटवर्क शॉर्ट) नामक एक विशेष फ़ंक्शन के माध्यम से पास करना होगा। यह डेटा को होस्ट बाइट ऑर्डर से नेटवर्क बाइट ऑर्डर में बदलता है। यह बाइट ऑर्डर गड़बड़ी एंडियननेस नामक किसी चीज़ से संबंधित है। आप इसके बारे में यहाँ अधिक पढ़ सकते हैं।

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