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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
rootkit-detection-ebpf-time-trace — कर्नेल फ़ंक्शन निष्पादन समय में परिवर्तनों के विश्लेषण के माध्यम से रूटकिट फ़ाइल छुपाने की गतिविधियों का पता लगाना। | Kitploit
उपकरण/GitHubGitHub/ait-aecid/rootkit-detection-ebpf-time-trace
मशीन लर्निंगघुसपैठ का पता लगानापेपर और शोधलर्निंग और शिक्षाविसंगति का पता लगाना
GitHubait-aecid/rootkit-detection-ebpf-time-trace

rootkit-detection-ebpf-time-trace

कर्नेल फ़ंक्शन निष्पादन समय में परिवर्तनों के विश्लेषण के माध्यम से रूटकिट फ़ाइल छुपाने की गतिविधियों का पता लगाना।

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
29311 महीने पहलेKitploit द्वारा समीक्षित

eBPF समय अनुरेखण के साथ रूटकिट पहचान

इस रिपॉजिटरी में उन कर्नेल फ़ंक्शनों के समय मापन को एकत्र करने का कोड शामिल है, जिन्हें रूटकिट फ़ाइलें छिपाते समय हेरफेर करते हैं, साथ ही एक अर्ध-पर्यवेक्षित पहचान विधि भी शामिल है जो कर्नेल फ़ंक्शन निष्पादन समय में बदलावों का विश्लेषण करती है। यह कार्यान्वयन ओपन-सोर्स रूटकिट CARAXES पर निर्भर करता है, जो फ़ाइल गणनाओं के परिणामों में हेरफेर करने के लिए filldir फ़ंक्शन को लपेटता है, उदाहरण के लिए, ls कमांड निष्पादित करते समय। eBPF प्रोब्स का उपयोग करके getdents सिस्टम कॉल के कई फ़ंक्शनों (filldir सहित) से समय मापन लिया जाता है। पहचान के लिए हम सांख्यिकीय परीक्षण पर आधारित एक सरल मशीन लर्निंग मॉडल लागू करते हैं। डेटा संग्रह और विसंगति पहचान तंत्रों की विस्तृत व्याख्या के लिए हम निम्नलिखित प्रकाशन का संदर्भ देते हैं। यदि आप इस रिपॉजिटरी में दिए गए किसी भी संसाधन का उपयोग करते हैं, तो कृपया निम्नलिखित प्रकाशन को उद्धृत करें:

  • Landauer, M., Alton, L., Lindorfer, M., Skopik, F., Wurzenberger, M., & Hotwagner, W. (2025). Trace of the Times: Rootkit Detection through Temporal Anomalies in Kernel Activity. Under Review.

रूटकिट और eBPF प्रोबिंग

निम्नलिखित चरण रूटकिट को स्थापित करते हैं तथा समझाते हैं कि कर्नेल फ़ंक्शनों से समय मापन कैसे एकत्र किया जाए। यदि आप केवल विसंगतियों की पहचान में रुचि रखते हैं और हमारे सार्वजनिक डेटा सेट का उपयोग करना चाहते हैं, तो आप इस अनुभाग को छोड़ सकते हैं।

सेटअप

रूटकिट और प्रोबिंग का परीक्षण Linux कर्नेल 5.15-6.11 और Python 3.10 पर किया गया है। टूल्स चलाने के लिए, इस रिपॉजिटरी को डाउनलोड करें और रूटकिट तथा प्रोबिंग तंत्र को चलाने के लिए आवश्यक निम्नलिखित निर्भरताएँ स्थापित करें।

root@kitploit:~
ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/rootkit-detection-ebpf-time-trace.git
ubuntu@ubuntu:~$ cd rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt update
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt install python3-bpfcc make gcc flex bison python3-pip linux-headers-$(uname -r)
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ pip install -r requirements.txt

कुछ परिदृश्यों के लिए अतिरिक्त संसाधनों की आवश्यकता होती है। विशेष रूप से, ls-basic परिदृश्य के लिए ls-basic स्क्रिप्ट को संकलित करना आवश्यक है और system load परिदृश्य के लिए stress-ng स्थापित करना आवश्यक है। यदि आप इन परिदृश्यों का उपयोग नहीं करना चाहते हैं, तो आप निम्नलिखित निर्भरताओं को छोड़ सकते हैं।

root@kitploit:~
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ gcc -o ls-basic ls-basic.c
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo apt install stress-ng

निम्नलिखित कमांड अनिवार्य हैं, क्योंकि रूटकिट डिफ़ॉल्ट रूप से getdents सिस्टम कॉल में हेरफेर करता है, हालाँकि, प्रोबिंग के लिए वर्तमान में केवल filldir में हेरफेर समर्थित है। रूटकिट डाउनलोड करें, hooks.h को इस रिपॉजिटरी में प्रदान की गई फ़ाइल से बदलें (यह सुनिश्चित करता है कि getdents के बजाय filldir को हुक किया गया है), और रूटकिट को संकलित करें।

root@kitploit:~
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ cd ..
ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/caraxes.git
ubuntu@ubuntu:~$ cd caraxes/
ubuntu@ubuntu:~/caraxes$ cp ../rootkit-detection-ebpf-time-trace/hooks.h .
ubuntu@ubuntu:~/caraxes$ sudo make

यदि आपको रूटकिट स्थापित करने में समस्या आती है या यह परीक्षण करना चाहते हैं कि यह अपेक्षा के अनुसार काम करता है या नहीं, तो CARAXES GitHub पेज पर ReadMe देखें।

उसके बाद, इस रिपॉजिटरी पर लौटें और linux.py खोलकर वेरिएबल KERNEL_OBJECT_PATH को संपादित करें ताकि वह उस caraxes फ़ोल्डर की ओर इंगित करे जिसे आपने अभी क्लोन किया है; डिफ़ॉल्ट पथ "/home/ubuntu/caraxes/" है।

root@kitploit:~
ubuntu@ubuntu:~/caraxes$ cd ../rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ vim linux.py

कर्नेल फ़ंक्शन समय का मापन

अब आप प्रोबिंग तंत्र चलाने के लिए तैयार हैं, जो स्वचालित रूप से कर्नेल में प्रोब्स इंजेक्ट करेगा, रूटकिट शुरू करेगा, समय मापन डेटा को एक फ़ाइल में संग्रहीत करेगा, और रूटकिट को रोक देगा। सिस्टम कॉल को ट्रिगर करने के लिए, स्क्रिप्ट इस प्रकार छिपाई जाने वाली फ़ाइलों के साथ एक निर्देशिका बनाती है और प्रोब्स को पोल करते हुए ls को 100 बार निष्पादित करती है (इसे -i फ्लैग के साथ संशोधित किया जा सकता है)। स्क्रिप्ट रूटकिट के साथ (--rootkit फ्लैग), रूटकिट के बिना (--normal फ्लैग), या दोनों के साथ मापन एकत्र करने की अनुमति देती है, और कई परिदृश्यों का समर्थन करती है। निम्नलिखित कमांड के साथ डिफ़ॉल्ट परिदृश्य चलाएँ:

root@kitploit:~
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ sudo python3 probing.py --normal --rootkit
compiling eBPF probes...
probes compiled!

attached bpf probes:
iterate_dir-enter
iterate_dir-return
dcache_readdir-enter
dcache_readdir-return
filldir64-enter
filldir64-return
verify_dirent_name-enter
verify_dirent_name-return
touch_atime-enter
touch_atime-return

Running experiment with ls for 100 times.
Iteration 0...
detection_PID: 70133
Iteration 1...
detection_PID: 70134
...
Iteration 99...
detection_PID: 70338
polled 40 times!
done with the "rootkit version"
Experiment finished, saving output.
Saved data to events/events_2025-01-17T09:59:52.183801_rootkit.json.gz
412K    events/events_2025-01-17T09:59:52.183801_rootkit.json.gz

मापन events निर्देशिका में संग्रहीत किए जाते हैं। अन्य मापदंडों के बारे में जानने के लिए python3 probing.py -h के साथ सहायता पृष्ठ देखें, जो अन्य परिदृश्यों में डेटा संग्रह स्थापित करने की अनुमति देते हैं (उदाहरण के लिए, ls के बजाय ls-basic का उपयोग करना या सिस्टम लोड का अनुकरण करना) और विभिन्न रनों को नाम निर्दिष्ट करते हैं (--description)। कुछ पैरामीटरीकृत कमांडों के लिए repeat_seq.sh देखें; वास्तव में, हमने अपने सार्वजनिक डेटा सेट एकत्र करने के लिए इस स्क्रिप्ट का उपयोग किया है। ध्यान दें कि हम getdents सिस्टम कॉल से केवल कुछ उपलब्ध कर्नेल फ़ंक्शनों पर विचार करते हैं। यह निर्दिष्ट करने के लिए कि प्रोबिंग तंत्र को किन फ़ंक्शनों पर प्रोब्स संलग्न करने चाहिए, probing.py खोलें और फ़ाइल की शुरुआत में probe_points सूची में फ़ंक्शन नाम जोड़ें या हटाएँ।

विसंगति पहचान

विसंगति पहचान एल्गोरिदम चलाने के लिए केवल python निर्भरताओं को स्थापित करना आवश्यक है। यदि आपने पिछले चरण में पहले से ऐसा नहीं किया है, तो pip के साथ आवश्यकताओं को स्थापित करने के लिए निम्नलिखित कमांड चलाएँ।

root@kitploit:~
ubuntu@ubuntu:~$ git clone https://github.com/ait-aecid/rootkit-detection-ebpf-time-trace.git
ubuntu@ubuntu:~$ cd rootkit-detection-ebpf-time-trace
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ pip install -r requirements.txt

फिर, Zenodo पर हमारे द्वारा प्रदान किया गया डेटा सेट डाउनलोड करें और निकालें। यदि आपने पिछले चरण में अपना स्वयं का डेटा उत्पन्न किया है और उसका उपयोग करना चाहते हैं, तो इस चरण को छोड़ दें।

root@kitploit:~
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ wget https://zenodo.org/records/14679675/files/events.zip
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ unzip events.zip

अब आप विसंगति पहचान को निम्नानुसार चलाने के लिए तैयार हैं। मापन डेटा वाली निर्देशिका (-d), प्रशिक्षण के लिए उपयोग किए जाने वाले सामान्य डेटा का अंश (-t), संचालन का तरीका (-m) और समूहीकरण फ़ंक्शन (-g) निर्दिष्ट करें। स्क्रिप्ट निर्दिष्ट निर्देशिका से सभी फ़ाइलों को लोड करेगी, उन्हें प्रशिक्षण और परीक्षण डेटा में विभाजित करेगी (आउटपुट में सारांशित), पहचान मेट्रिक्स की गणना और मुद्रण करेगी, और एक confusion matrix (भ्रम मैट्रिक्स) प्लॉट करेगी।

root@kitploit:~
ubuntu@ubuntu:~/rootkit-detection-ebpf-time-trace$ python3 evaluate.py -d events -t 0.333 -m offline -g fun
100%|█████████████████████████████████████████████| 1250/1250 [02:47<00:00,  7.45it/s]
Processed all files from events

Normal batches: 750
  Normal batches for training: 250
    default: 50
    file_count: 50
    system_load: 50
    ls_basic: 50
    filename_length: 50
  Normal batches for testing: 500
    default: 100
    file_count: 100
    system_load: 100
    ls_basic: 100
    filename_length: 100
Anomalous batches: 500
  default: 100
  file_count: 100
  system_load: 100
  ls_basic: 100
  filename_length: 100

Results (Run 1)
 Threshold=3.5111917342151415e-16
 Time=0.0027740001678466797
 TP=499
 FP=9
 TN=491
 FN=1
 TPR=R=0.998
 FPR=0.018
 TNR=0.982
 P=0.9822834645669292
 F1=0.9900793650793651
 ACC=0.99
 MCC=0.9801254640896192

Confusion Matrix (Run 1)
Predicted
default     file_count  system_load ls_basic    filename_length
Pos   Neg   Pos   Neg   Pos   Neg   Pos   Neg   Pos   Neg
100   0     100   0     100   0     100   0     100   0      Pos - Actual default
3     97    100   0     99    1     100   0     2     98     Neg - Actual default
100   0     100   0     100   0     100   0     100   0      Pos - Actual file_count
100   0     0     100   100   0     100   0     100   0      Neg - Actual file_count
100   0     100   0     100   0     100   0     100   0      Pos - Actual system_load
100   0     100   0     4     96    100   0     100   0      Neg - Actual system_load
100   0     100   0     100   0     99    1     100   0      Pos - Actual ls_basic
100   0     100   0     100   0     2     98    100   0      Neg - Actual ls_basic
99    1     100   0     100   0     100   0     100   0      Pos - Actual filename_length
3     97    100   0     99    1     100   0     0     100    Neg - Actual filename_length

इस स्क्रिप्ट के उपलब्ध मापदंडों के बारे में अधिक जानने के लिए python3 evaluate.py -h का उपयोग करके मैनुअल देखें। साथ ही, हमारे पेपर में मूल्यांकन के लिए उपयोग किए गए पैरामीटरीकृत कमांडों को देखने के लिए demo.sh पर एक नज़र डालें।

उद्धरण

यदि आप इस रिपॉजिटरी में दिए गए किसी भी संसाधन का उपयोग करते हैं, तो कृपया निम्नलिखित प्रकाशन को उद्धृत करें:

  • Landauer, M., Alton, L., Lindorfer, M., Skopik, F., Wurzenberger, M., & Hotwagner, W. (2025). Trace of the Times: Rootkit Detection through Temporal Anomalies in Kernel Activity. Under Review.
टूल डाउनलोड करें