
مراقب سلامة نواة لينكس لكشف ربط استدعاءات النظام
يراقب ksentinel وظائف النواة الهامة وجدول استدعاءات النظام من أجل التعديلات غير المصرح بها. يكتشف استدعاءات النظام الشائعة التي تستهدفها معظم الروتكيتات بما في ذلك خطاطيف ftrace و kprobes واختطاف جدول استدعاءات النظام.
ملاحظة: ksentinel في نسخته الأولية؛ المزيد من التحسينات ستأتي في الإضافات المستقبلية.
طبقة VFS:
مكدس الشبكة:
الاعتمادات:
نظام الوحدات:
البنية التحتية للتتبع:
بالإضافة إلى أكثر من 500 غلاف لاستدعاءات النظام عبر مطابقة البادئات.
make
أثناء التجميع، يتم إنشاء مفتاح فتح عشوائي مكون من 32 حرفًا وعرضه. اكتبه فورًا. هذا المفتاح مضمن في الوحدة المترجمة ولا يُخزن خارجيًا. احتفظ به بأمان إذا كانت حماية ضد التفريغ مفعلة.
sudo make install
يتم تحميل الوحدة مخفية عن lsmod مع تفعيل حماية ضد التفريغ افتراضيًا.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # load module
sudo ./ksentinel-manager.sh status # check status
sudo ./ksentinel-manager.sh watch # monitor live
sudo ./ksentinel-manager.sh violations # view alerts
dmesg -wT | grep ksentinel
عندما تكون حماية ضد التفريغ مفعلة، يجب فتح الوحدة قبل الإزالة:
echo "your_32char_key" > /proc/.ksctl
أو استخدم المدير:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
مثال مع معاملات مخصصة:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
يقوم ksentinel بفحوصات سلامة دورية بناءً على معامل period_ms.
الفترات الأقصر توفر كشفًا أسرع ولكنها تزيد استخدام المعالج. الفاصل الافتراضي (2000 مللي ثانية) له تأثير ضئيل على الأنظمة الحديثة.
ksentinel: [CHANGE - HOOK PATTERN] sys_getdents64 @ 0xffffffff81234567
baseline=1234567890abcdef current=fedcba0987654321
bytes: e9 ab cd ef 12 90 90 90 ...
flags: JMP/CALL_DETECTED ENDBR64_PREFIX
ksentinel: [SCT HOOK] syscall[78] expected=0xffffffff81111111 got=0xffffffffa0222222 (fake_getdents+0x0)
ksentinel: [LSTAR TAMPERED] baseline=0xffffffff81800000 now=0xffffffffa0300000 (evil_syscall_entry+0x0)
يمكن لـ ksentinel اكتشاف التعديلات التي تقوم بها:
يعتمد الكشف على تحميل ksentinel قبل الروتكيت.
تكوين النواة:
الأنوية المدعومة:
تحقق من تكوين النواة:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
الوحدة مخفية مع حماية ضد التفريغ. افتحها أولاً:
sudo ./ksentinel-manager.sh unlock
make clean # clean build artifacts
make # compile module
make install # load module
make uninstall # unload module
المساهمات مرحب بها. حافظ على نمط الكود وأضف اختبارات للميزات الجديدة.
GPL-2.0-only
هذا البرنامج برمجية حرة مرخصة بموجب رخصة GPL الإصدار 2.0. يجب أن تحافظ أي تعديلات على نسب العمل للمؤلف الأصلي وأن تُوزع تحت نفس الرخصة.
انظر ملف LICENSE للحصول على الشروط الكاملة.
MatheuZSecurity
مجتمع باحثي الروتكيتات: https://discord.gg/66N5ZQppU7
هذه الأداة مخصصة للبحث الأمني وإدارة النظام. استخدمها بمسؤولية. المؤلف غير مسؤول عن سوء الاستخدام أو الضرر الناتج عن هذه البرمجية.
| Parameter | Type | Default | الوصف |
|---|
| period_ms | uint | 2000 | الفاصل الزمني لفحص السلامة بالمللي ثانية |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | بادئات الرموز المفصولة بفواصل للمراقبة |
| extra_syms | string | "" | رموز إضافية محددة للمراقبة |
| anti_unload | bool | true | تفعيل حماية ضد التفريغ |