Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rootkit-detection-ebpf-time-trace — كشف أنشطة إخفاء الملفات الخاصة بـ rootkit من خلال تحليل التحولات في أوقات تنفيذ دوال النواة. | Kitploit
أدوات/GitHubGitHub/ait-aecid/rootkit-detection-ebpf-time-trace
تعلم الآلةكشف التسللالأوراق والأبحاثالتعلم والتعليمكشف الشذوذ
GitHubait-aecid/rootkit-detection-ebpf-time-trace

rootkit-detection-ebpf-time-trace

كشف أنشطة إخفاء الملفات الخاصة بـ rootkit من خلال تحليل التحولات في أوقات تنفيذ دوال النواة.

عرض المستودع

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
293منذ 11 أشهرتمت المراجعة من قبل Kitploit

كشف الروت كيت باستخدام تتبع الوقت بـ eBPF

يحتوي هذا المستودع على كود لجمع قياسات زمنية لوظائف النواة التي يتم التلاعب بها بواسطة برامج الروت كيت عند إخفاء الملفات، بالإضافة إلى طريقة كشف شبه خاضعة للإشراف تحلل التحولات في أوقات تنفيذ وظائف النواة. يعتمد هذا التنفيذ على برنامج الروت كيت مفتوح المصدر CARAXES، الذي يلف وظيفة filldir للتلاعب بنتائج تعداد الملفات، على سبيل المثال عند تنفيذ الأمر ls. يتم أخذ القياسات الزمنية من عدة وظائف في استدعاء النظام getdents (بما في ذلك filldir) باستخدام مجسات eBPF. للكشف، نطبق نموذج تعلم آلة بسيط يعتمد على الاختبارات الإحصائية. نُحيل إلى المنشور التالي للحصول على شروحات مفصلة لآليات جمع البيانات وكشف الشذوذ. إذا استخدمت أيًا من الموارد المتاحة في هذا المستودع، يرجى الاستشهاد بالمنشور التالي:

  • 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

تشرح الخطوات التالية كيفية إعداد برنامج الروت كيت وكيفية جمع القياسات الزمنية من وظائف النواة. إذا كنت مهتمًا فقط بكشف الشذوذ واستخدام مجموعات البيانات العامة لدينا، يمكنك تخطي هذا القسم.

الإعداد

تم اختبار الروت كيت والتتبع على نواة لينكس 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 ويتطلب سيناريو تحميل النظام تثبيت 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 بالملف المقدم في هذا المستودع (يضمن ذلك أن يتم ربط filldir بدلاً من getdents)، ثم قم بتجميع الروت كيت.

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

إذا واجهت مشاكل في تثبيت الروت كيت أو ترغب في اختبار ما إذا كان يعمل كما هو متوقع، فراجع صفحة ReadMe على CARAXES.

بعد ذلك، عد إلى هذا المستودع وافتح ملف 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-basic بدلاً من ls أو محاكاة تحميل النظام) وتعيين أسماء لتشغيلات مختلفة (--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). سيقوم النص بتحميل جميع الملفات من المجلد المحدد، وتقسيمها إلى بيانات تدريب واختبار (ملخصة في المخرجات)، وحساب وطباعة مقاييس الكشف، ورسم مصفوفة ارتباك.

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.
تنزيل الأداة