
أداة كشف الثبات في لينكس مبنية على Bash للتحقيقات الرقمية الجنائية (DFIR). تفحص أكثر من 15 آلية ثبات (systemd، cron، وحدات kernel، SSH، حاويات) مع تسجيل الثقة وتوليد تقارير بصيغ CSV/JSONL للتحليل الجنائي.
أداة شاملة لاكتشاف آليات الثبات في لينكس لأغراض التحقيق الرقمي والاستجابة للحوادث (DFIR).
Persistnux هي أداة مبنية على bash مصممة لتحديد آليات الثبات المعروفة في لينكس التي يستخدمها المهاجمون للحفاظ على الوصول إلى الأنظمة المخترقة. تقوم بإجراء فحوصات شاملة عبر النظام وتوليد تقارير مفصلة بصيغتي CSV و JSONL لمزيد من التحليل.
.service) في /etc/systemd/system، /lib/systemd/system، /usr/lib/systemd/system/etc/crontab، /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow و /etc/cron.deny (ACL) — الإدخالات التي تشير إلى مستخدمين غير موجودين يتم وضع علامة عليها/etc/profile، /etc/bash.bashrc، /etc/zshrc)/etc/profile.d/*).bashrc، .bash_profile، .zshrc، .profile، إلخ)/etc/rc.local والمتغيرات/etc/init.d)/etc/rc*.d)/etc/ld.so.preload) — يتم التحقق من كل مكتبة مدرجة عبر مدير الحزم/etc/ld.so.conf، /etc/ld.so.conf.d/) — سلامة ملفات الإعداد + فحص ملفات .so في المسارات غير القياسية والتحقق منها/etc/environment (LD_PRELOAD/LD_LIBRARY_PATH) — يتم وضع علامة عالية على ملف البيئة؛ يتم التحقق من مسارات المكتبات المشار إليها (غير مُدارة/معدلة → حرج)/etc/modprobe.d/، /etc/modprobe.conf) — سلامة الملف؛ تحليل توجيهات install لأهداف الأوامر المشبوهة؛ وضع علامة عالية على blacklist لوحدات الأمان (apparmor، selinux، seccomp)/etc/modules، /etc/modules-load.d/) — سلامة الإعداد؛ حل أسماء الوحدات المشار إليها إلى ملفات .ko عبر modinfo والتحقق منهاlsmod) — تعداد والتحقق من السلامة.config/autostart، /etc/xdg/autostart) — مسح جميع منازل المستخدمين عند وجود صلاحيات الجذر/etc/environment) — التحقق من مسارات مكتبات LD_PRELOAD/LD_LIBRARY_PATH/etc/sudoers، /etc/sudoers.d/) — أنماط NOPASSWD/ALL → عالية.so عبر مدير الحزم؛ متابعة توجيهات @include؛ تضمين /etc/pam.confpam_exec.so — النصوص المفقودة/المشبوهة → حرجpam_python.so / pam_perl.so — استخراج النص وتحليلهpam_script.so في /etc/security/pam_env.conf و ~/.pam_environment/etc/security//etc/update-motd.d/) — التحقق من الحزمة؛ المعدل → حرج~/.ssh/authorized_keys لكل مستخدم — يتم وضع علامة على المفاتيح المعدلة مؤخرًا؛ تحليل محتوى خيار command= للأنماط المشبوهة~/.ssh/rc لكل مستخدم — يتم وضع علامة متوسط عند وجود المحتوى؛ محتوى صدف عكسي/مشبوه → عالي/حرجdpkg -V على Debian/Ubuntu، rpm -Va على RHEL/CentOS)/usr/bin، /usr/sbin، /bin، /sbin → نتيجة حرجة/lib/security → نتيجة حرجةinit= في نواة GRUB (/etc/default/grub، /etc/default/grub.d/*.cfg)/pre-pivot التي تكتب إلى /sysroot/etc/shadow/etc/initramfs-tools/scripts/ و /hooks//boot/initrd.img-* المعدلة مؤخرًا (بناءً على mtime).pkla مع ResultAny/ResultInactive/ResultActive=yes غير مشروطةunix-user:*).rules مع polkit.Result.YES غير مشروطة (Polkit قائم على JavaScript >= 0.106)Exec= (/usr/share/dbus-1/system-services/)allow own="*" أو send_destination="*"/etc/NetworkManager/dispatcher.d/)RUN+= في Udev تنفذ أوامر أو نصوص عشوائية (/etc/udev/rules.d/، /lib/udev/rules.d/)/run/udev/rules.d/at/cron في RUN+= (تجاوز شائع لتقييد المقدمة)--privileged، --pid=host)docker.sock داخل الحاويات (تحكم كامل بالمضيف عبر Docker API)nsenter -t 1 في نقاط دخول الحاوية أو Dockerfilesgetcap — cap_setuid+ep على GTFOBins → حرج.original، .old، .bak، .real) مع نصوص تغليف/etc/passwd/etc/passwdauthorized_keys في SSH# استنساخ المستودع
git clone https://github.com/yourusername/persistnux.git
cd persistnux
# جعل البرنامج النصي قابلاً للتنفيذ
chmod +x persistnux.sh
# التشغيل بالإعدادات الافتراضية (يظهر فقط النتائج المشبوهة)
sudo ./persistnux.sh
# عرض المساعدة وجميع الخيارات
./persistnux.sh --help
# التشغيل كمستخدم عادي (نطاق محدود)
./persistnux.sh
بشكل افتراضي، يظهر Persistnux فقط النتائج المشبوهة (متوسط، عالي، حرج) لتقليل الضوضاء والتركيز على التهديدات القابلة للتنفيذ.
# الافتراضي: إظهار النتائج المشبوهة فقط
sudo ./persistnux.sh
# إظهار جميع النتائج بما في ذلك خط الأساس (ثقة منخفضة)
sudo ./persistnux.sh --all
# أو
sudo FILTER_MODE=all ./persistnux.sh
# إظهار النتائج ذات الثقة العالية والحرجة فقط
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh
# دمج المرشحات: ثقة عالية فقط
sudo ./persistnux.sh --min-confidence HIGH
# تحديد دليل إخراج مخصص
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh
# الدمج مع التصفية
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
بشكل افتراضي، يقوم Persistnux بإنشاء دليل إخراج ./persistnux_output/ يحتوي على: