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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
blackpill — एक Linux kernel rootkit जो Rust में लिखा गया है और एक custom type-2 hypervisor, eBPF XDP और TC प्रोग्राम का उपयोग करता है। | Kitploit
उपकरण/GitHubGitHub/shard77/blackpill
विशेषाधिकार वृद्धिस्थायित्व तंत्रआईडीएस/आईपीएस से बचनापार्श्व आंदोलनशेलकोडपोस्ट-शोषणकमांड एंड कंट्रोलरेड टीमिंगपेलोड डेवलपमेंटबाइनरी शोषणArchived
GitHub
340455 महीने पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

blackpill

एक Linux kernel rootkit जो Rust में लिखा गया है और एक custom type-2 hypervisor, eBPF XDP और TC प्रोग्राम का उपयोग करता है।

रिपॉजिटरी देखें

ब्लैकपिल

ब्लैकपिल एक गुप्त लिनक्स रूटकिट है जो रस्ट में बनाया गया है।

Open issues Commit activity License

विशेषताएँ

रूटकिट कई मॉड्यूलों से बना है (यहाँ रस्ट मॉड्यूल की बात हो रही है, कर्नेल मॉड्यूल की नहीं):

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

आर्किटेक्चर इस प्रकार दिखता है:

रूटकिट सरल आर्किटेक्चर योजना

और यहाँ बताया गया है कि C2 से VM गेस्ट तक मैलिशियस कोड कैसे निष्पादित होता है:

रूटकिट कोड निष्पादन अनुक्रम आरेख

C2 रूटकिट को तैयार किए गए असेंबल x86_64 म्नेमोनिक्स भेजता है, जो फिर उन्हें VM गेस्ट को निष्पादित करने के लिए भेजता है। VM गेस्ट होस्ट से अलग होता है और इसका उपयोग मैलिशियस कोड को निष्पादित करने के लिए किया जा सकता है।

कर्नेल को आने वाले मैलिशियस पैकेट दिखाई नहीं देते क्योंकि वे eBPF XDP प्रोग्राम द्वारा फ़िल्टर किए जाते हैं और LKM मॉड्यूल को भेजे जाते हैं, और बाहर जाने वाले पैकेट eBPF TC प्रोग्राम द्वारा संशोधित किए जाते हैं।

[!महत्वपूर्ण]
यह प्रोजेक्ट अभी भी कार्य-प्रगति पर है। सभी सुविधाएँ काम नहीं कर रही हैं!
बेझिझक मुद्दे या पुल रिक्वेस्ट सबमिट करें।

हुकिंग

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

रक्षा चोरी

गोपनीयता सुनिश्चित करने के लिए, रूटकिट दो प्राथमिक एंटी-डिटेक्शन तंत्रों का उपयोग करता है:

  1. कर्नेल मॉड्यूल सूची से मॉड्यूल को हटाना
    जब एक कर्नेल मॉड्यूल लोड किया जाता है, तो यह कर्नेल की मॉड्यूल सूची में जुड़ जाता है, जो lsmod या /proc/modules जैसे टूल्स के माध्यम से दिखाई देता है। पता लगाने से रोकने के लिए:

    • रूटकिट स्वयं को इस सूची से मैन्युअल रूप से हटा लेता है।
    • सूची से हटाए जाने के बावजूद, मॉड्यूल कार्यशील रहता है, जिससे इसकी कार्यक्षमता का निरंतर निष्पादन संभव होता है।
  2. एक विशिष्ट निर्देशिका को छिपाने के लिए filldir64 फ़ंक्शन को हुक करना
    रूटकिट द्वारा उपयोग की जाने वाली फ़ाइलों को छिपाने के लिए, filldir64 फ़ंक्शन पर एक हुक लागू किया गया है। यह फ़ंक्शन तब आमंत्रित किया जाता है जब कोई प्रक्रिया निर्देशिका सामग्री पढ़ती है (जैसे getdents या readdir सिस्टम कॉल के माध्यम से)।

    • हुकिंग प्रक्रिया:
      • रूटकिट kprobes का उपयोग करके filldir64 फ़ंक्शन को इंटरसेप्ट करता है।
      • निष्पादन के दौरान, हैंडलर उपयोगकर्ता को लौटाए गए निर्देशिका प्रविष्टियों का निरीक्षण करता है।
      • यदि कोई प्रविष्टि /BLACKPILL-BLACKPILL निर्देशिका (जो महत्वपूर्ण रूटकिट फ़ाइलों को संग्रहीत करने के लिए उपयोग की जाती है) से मेल खाती है, तो इसे फ़िल्टर कर दिया जाता है और उपयोगकर्ता को नहीं लौटाया जाता है।

हाइपरवाइज़र

हमारे सरल हाइपरवाइज़र को निम्नलिखित के अनुसार कार्यान्वित किया गया था:

  1. प्रारंभिक सिस्टम कॉन्फ़िगरेशन

    • BIOS/UEFI में हार्डवेयर वर्चुअलाइज़ेशन एक्सटेंशन (Intel VT-x या AMD-V) को सक्षम करें (रूटकिट ऐसा नहीं करता है, इसे पहले से सक्षम होना चाहिए)।
    • VMX (वर्चुअल मशीन एक्सटेंशन (Intel)) या SVM (सिक्योर वर्चुअल मशीन (AMD)) मोड में स्विच करने के लिए नियंत्रण रजिस्टर (CR0, CR4, और IA32_EFER) कॉन्फ़िगर करें।
  2. VMX या SVM मोड में प्रवेश करना

    • वर्चुअलाइज़ेशन-विशिष्ट डेटा संरचनाएँ (Intel के लिए VMCS या AMD के लिए VMCB) प्रारंभ करें।
    • VM निकास को संभालने के लिए प्रोसेसर सुविधाओं को प्रोग्राम करें, जैसे गेस्ट और होस्ट के बीच बातचीत।
  3. होस्ट और गेस्ट के बीच संक्रमण का प्रबंधन करना

    • वर्चुअल मशीनों के लिए प्रवेश और निकास बिंदु (VM entry/exit) कॉन्फ़िगर करें।
    • गेस्ट द्वारा किए गए संवेदनशील सिस्टम कॉलों को इंटरसेप्ट करने और उनके प्रभावों का विश्लेषण करने के लिए तर्क लागू करें।
  4. गेस्ट सिस्टम निर्माण

    • गेस्ट के लिए मेमोरी आवंटित करें और इसके संसाधनों (रजिस्टर, स्टैक, आदि) को प्रारंभ करें।
  5. संचार

    • कमांड या डेटा प्रसारित करने के लिए रूटकिट और हाइपरवाइज़र के बीच संचार चैनलों का उपयोग करें।

स्थायित्व

स्थायित्व किसी भी रूटकिट की एक महत्वपूर्ण क्षमता है, जो इसे रिबूट के बाद भी लक्ष्य प्रणाली पर नियंत्रण बनाए रखने में सक्षम बनाती है। अपने वर्तमान कार्यान्वयन में, स्थायित्व तंत्र /bin/touch कमांड का उपयोग करके फ़ाइल सिस्टम में एक परीक्षण फ़ाइल बनाकर अपनी कार्यक्षमता प्रदर्शित करता है। यह प्लेसहोल्डर क्रिया रूटकिट की विशेषाधिकार प्राप्त संचालन निष्पादित करने की क्षमता को दर्शाती है और इसे अधिक उन्नत स्थायित्व रणनीतियों को लागू करने के लिए बढ़ाया जा सकता है।

अब यह बेकार है क्योंकि APT-स्तरीय रूटकिट बनाना हमारी प्राथमिकता नहीं है, बल्कि कम देखी गई अवधारणाओं पर अधिक शोध है।

विकास वातावरण सेटअप

हमारे रूटकिट को संकलित करने से पहले कई चरणों को पूरा करने की आवश्यकता है। विकास वातावरण में शामिल हैं:

  • एक Alpine Linux छवि जो आवश्यक उपकरण प्रदान करती है
  • Rust सक्रिय के साथ एक कस्टम संकलित कर्नेल
  • KVM द्वारा त्वरित एक QEMU वर्चुअल मशीन

रिपॉजिटरी और इसके उथले सबमॉड्यूल को क्लोन करके शुरू करें:

root@kitploit:~
git clone [email protected]:DualHorizon/blackpill.git --recursive --depth 1

महत्वपूर्ण निर्भरताएँ

एक आर्क-आधारित वितरण पर:

root@kitploit:~
sudo pacman -S qemu-base qemu-desktop docker grub

लिनक्स कर्नेल

एक आर्क-आधारित लिनक्स वितरण पर, Rust और अन्य निर्भरताएँ स्थापित करें:

root@kitploit:~
sudo pacman -S rust rust-src rust-bindgen
sudo pacman -S clang lld llvm

फिर हमें Rust स्रोत और बाइंडजेन की आवश्यकता होगी:

root@kitploit:~
rustup component add rust-src clippy rustfmt
cargo install --locked bindgen-cli

सुनिश्चित करें कि आप फ़ोल्डर linux/ में चलाकर अपने कर्नेल को Rust के साथ संकलित करना शुरू कर सकते हैं:

root@kitploit:~
$ cd blackpill
$ pushd linux
$ make LLVM=1 rustavailable
Rust is available!
$ popd

पहली बार सेटअप कार्य लॉन्च करें जो कर्नेल को कॉन्फ़िगर और संकलित करता है:

root@kitploit:~
make first-time-setup

[!महत्वपूर्ण]
यदि आपसे विकल्पों को अनुकूलित करने के लिए कहा जाए, तो हर बार Enter दबाएँ।

रूटकिट

आप Rust कर्नेल मॉड्यूल (आउट-ऑफ-ट्री) को निम्न के साथ संकलित कर सकते हैं:

root@kitploit:~
make

VM को निम्न के साथ लॉन्च करें:

root@kitploit:~
make vm

VM के अंदर, आप स्वचालित रूप से root के रूप में लॉग इन हैं। आप मॉड्यूल को सक्षम कर सकते हैं:

root@kitploit:~
$ modprobe blackpill
# आप कर्नेल लॉग की जाँच कर सकते हैं
$ dmesg

उपयोग

स्थानीय विशेषाधिकार वृद्धि

एक बार VM शुरू हो जाने के बाद, आप अपने विशेषाधिकारों को बढ़ाने के लिए उपरोक्त कमांड का उपयोग कर सकते हैं:

root@kitploit:~
mkdir ImFeelingRootNow_<PID>

<PID> को उस प्रक्रिया के प्रक्रिया आईडी से बदलें जिसके विशेषाधिकार को आप बढ़ाना चाहते हैं।

C2

विवरण

यह सरल C2 संक्रमित मशीन को UDP के माध्यम से x86-64 ऑपकोड भेजता है और TCP पैकेट प्राप्त करता है। इसके कार्य अब मशीन के साथ निम्न-स्तरीय संपर्क तक सीमित हैं, लेकिन अधिक रैपरों के साथ बहुत सारे व्यावहारिक उपयोग की अनुमति दे सकते हैं।

उपयोग

पायथन क्लाइंट सेटअप करें:

root@kitploit:~
cd blackpill-c2
poetry install
poetry shell
python client.py

अपने तर्कों ([ip] [port]) के साथ क्लाइंट लॉन्च करने के बाद आपको मिलना चाहिए:

root@kitploit:~
$ python client.py 0.0.0.0 1339
Rootkit से कनेक्टेड!

फिर आप उपलब्ध कमांड प्रदर्शित करने के लिए help कमांड का उपयोग कर सकते हैं:

root@kitploit:~
blackpill: help
उपलब्ध कमांड
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ कमांड                              ┃ विवरण                                                  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ read_virt_memory <address>          │ 'address' पर 4 बाइट्स (32 बिट्स) मेमोरी पढ़ें          │
│ write_virt_memory <address> <value> │ 'address' पर 4 बाइट्स (32 बिट्स) मेमोरी लिखें           │
│ launch_userland_binary <path>       │ 'path' पर एक यूज़रलैंड बाइनरी लॉन्च करें               │
│ change_msr <msr> <value>            │ एक मॉडल स्पेसिफिक रजिस्टर (MSR) का मान बदलें            │
│ read_phys_memory <address> <value>  │ 'address' पर 4 बाइट्स (32 बिट्स) भौतिक मेमोरी पढ़ें  │
│ write_phys_memory <address> <value> │ 'address' पर 4 बाइट्स (32 बिट्स) भौतिक मेमोरी लिखें │
│ stop_execution                      │ गेस्ट VM का निष्पादन रोकें                            │
│ change_vmcs_field <field> <value>   │ VMCS फ़ील्ड को 'value' में बदलें                       │
│ help                                │ यह सहायता संदेश दिखाएँ                               │
└─────────────────────────────────────┴─────────────────────────────────────────────────────────┘

श्रेय

पर्यावरण सेटअप:

  • लिनक्स कर्नेल मॉड्यूल को रस्ट में लिखने के लिए वातावरण स्थापित करना - द लिनक्स फाउंडेशन
  • कर्नेल कॉन्फ़िग qemu-busybox-min.config पैच
  • रस्ट आउट-ऑफ-ट्री मॉड्यूल
टूल डाउनलोड करें
  • अन्य सभी निर्देशिका प्रविष्टियाँ सामान्य रूप से लौटा दी जाती हैं, जिससे उपयोगकर्ता-स्थान टूल्स के लिए पारदर्शिता सुनिश्चित होती है।
  • इनग्रेस और एग्रेस नेटवर्क ट्रैफ़िक को संशोधित करने के लिए eBPF XDP और TC प्रोग्राम का उपयोग करना
    अपने मैलिशियस नेटवर्क संचार को सामान्य करने के लिए, हम eBPF XDP (eXpress डेटा पथ) और TC (ट्रैफ़िक नियंत्रण) प्रोग्रामों का उपयोग करते हैं। इस प्रकार, हम यह कर सकते हैं:

    • XDP प्रोग्राम के साथ सबसे निचले नेटवर्क स्तर पर विशिष्ट आने वाले (इनग्रेस) पैकेटों को इंटरसेप्ट करें, जो हमारे C2 से तैयार किए गए TCP पेलोड सिग्नेचर से मेल खाते हैं, जिन्हें हम बाद में VM/LKM प्रोसेसिंग के लिए एक कस्टम BPF मैप पर रीडायरेक्ट करते हैं।
    • TC प्रोग्राम के साथ विशिष्ट बाहर जाने वाले (एग्रेस) पैकेटों को इंटरसेप्ट करें, जो VM/LKM द्वारा उत्पन्न TCP पैकेटों से मेल खाते हैं, जिन्हें हम बाद में उनके पेलोड को हमारे C2 प्रतिक्रिया डेटा के साथ अधिलेखित करके संशोधित करते हैं। मूल पैकेट TCP द्वारा स्वचालित रूप से पुनर्प्रेषित हो जाते हैं, जिससे वैध ट्रैफ़िक का स्वरूप बना रहता है।