
سكربت كشف الاستمرارية، الصيد وجمع الأدلة في لينكس
يساعد persisthunt.sh على تسريع التحقيقات من خلال جمع الأدلة المستهدفة المتعلقة بالاستمرارية وإبراز الأنماط المشبوهة المرتبطة عادةً بتقنيات الاستمرارية في لينكس.
يساعد السكربت في كشف الاستمرارية، ومطاردة التهديدات، وجمع الأدلة عبر آليات الاستمرارية المعروفة في لينكس. تُصنَّف النتائج إلى ثلاثة مستويات - High وLow وInformational - بناءً على الثقة والخطورة. تتضمن الأمثلة إدخالات تشغيل تلقائي مشبوهة تُشير إلى /tmp/ أو /home/ أو /dev/tcp أو curl، أو اكتشاف قوالب bind/reverse shell نشطة.
صُمم ليكون أساسًا مرنًا يمكن للمدافعين تخصيصه لبيئاتهم عن طريق إضافة أو إزالة منطق الكشف والكلمات المفتاحية. قد يكون المخرج كبيرًا وقد يتطلب تحليلًا خاصًا بالبيئة، لكنه مناسب أيضًا للمراجعة والتلخيص باستخدام نماذج اللغة الكبيرة (LLMs) أو وكلاء الذكاء الاصطناعي.
شغّله كمستخدم root وأعد توجيه المخرجات إلى ملف
sudo persisthunt.sh > output.log
شغّله على مضيف بعيد عبر SSH
ssh [email protected] 'bash -s' < persisthunt.sh > output.log 2>&1
=== [HIGH] Active reverse shell ===
bob 3889906 0.0 0.0 2800 1848 pts/2 S+ 06:38 0:00 sh -i
=== [HIGH] Active bind shell ===
LISTEN 0 1 0.0.0.0:4444 0.0.0.0:* users:(("python3",pid=3891687,fd=3))
bob 3891687 0.7 0.3 19540 12320 pts/3 S+ 06:41 0:00 python3 -c exec("""import socket as s,subprocess as sp;s1=s.socket(s.AF_INET,s.SOCK_STREAM);s1.setsockopt(s.SOL_SOCKET,s.SO_REUSEADDR, 1);s1.bind(("0.0.0.0",4444));s1.listen(1);c,a=s1.accept(); while True: d=c.recv(1024).decode();p=sp.Popen(d,shell=True,stdout=sp.PIPE,stderr=sp.PIPE,stdin=sp.PIPE);c.sendall(p.stdout.read()+p.stderr.read())""")
=== [HIGH] eBPF programs with raw network sockets (possible BPFdoor persistence) ===
PID: 3903559, Executable: bpfdoorpoc, Stack trace: /proc/3903559/stack:[<0>] packet_recvmsg+0x6e/0x5c0
=== [LOW] Recent ELF binary in tmp/home/hidden dirs ===
/var/tmp/.test
| الثقة | التقنية | الوصف |
|---|
| High | استمرارية وظائف at | وظائف 'at' الشرعية غير شائعة؛ الإدخالات غير المتوقعة في /var/spool/at تُعد مشبوهة للغاية. |
| High | إدخال Cron يشير إلى كلمة مفتاحية مشبوهة | ملفات Cron التي تشير إلى curl/wget/nc/ncat/socat أو مسارات مثل /tmp أو /var/tmp أو /dev/shm أو /home أو الملفات المخفية. |
| High | Bind shell نشط | كشف عمليات المفسِّرات (bash/sh/zsh/dash/ksh/python*/perl/nc/ncat/socat) التي تستمع على مقابس الشبكة (bind shells). |
| High | Reverse shell نشط | كشف العمليات التي يُعاد توجيه stdin وstdout إلى مقابس، مما يشير إلى reverse shells. |
| High | استمرارية باستخدام مقبس شبكة eBPF خام | تستخدم الجذور الخفية (Rootkits) مثل BPFdoor برامج eBPF بمقابس شبكة خام كباب خلفي دائم. اقرأ المزيد |
| High | خدمة/مؤقِت systemd يشير إلى كلمة مفتاحية مشبوهة | البحث في ملفات .service و.timer ضمن مسارات systemd (بما في ذلك وحدات المستخدم تحت ~/.config/systemd/user/) عن كلمات مفتاحية مشبوهة. |
| High | سكربت Init/rc.local/profile يشير إلى كلمة مفتاحية مشبوهة | سكربتات Init وملفات rc.local/profile التي تشير إلى كلمات مفتاحية مشبوهة أو أدوات شبكة في مسارات الاستمرارية. |
| High | سكربت MOTD يشير إلى كلمة مفتاحية مشبوهة | سكربتات MOTD التي تشير إلى كلمات مفتاحية مشبوهة أو أدوات استمرارية. |
| High | ملف تعريف شل يشير إلى كلمة مفتاحية مشبوهة | ملفات تعريف الشل (/etc/profile, /etc/profile.d, ~/.bashrc, ~/.profile, إلخ) التي تحتوي على أوامر أو مسارات مشبوهة. |
| High | ملفات خدمة D-BUS تشير إلى كلمة مفتاحية مشبوهة | ملفات خدمة D-BUS الموجودة في المسار */dbus-1/* والتي تشير إلى كلمات مفتاحية مشبوهة |
| High | سكربتات NetworkManager dispatcher تشير إلى كلمة مفتاحية مشبوهة | سكربتات NetworkManager dispatcher الموجودة في المسار */NetworkManager/dispatcher.d/* والتي تشير إلى كلمات مفتاحية مشبوهة |
| High | ملفات ELF قابلة للتنفيذ مخفية في مجلدات tmp/home/مخفية | الملفات المخفية (الأسماء التي تبدأ بنقطة) في /tmp و/var/tmp و/home و/dev/shm والتي تكون ملفات ELF قابلة للتنفيذ. |
| High | العمليات الجارية | العمليات الجارية التي تشير إلى كلمة مفتاحية مشبوهة |
| High | ملفات ELF ثنائية SUID/SGID/قابلة للكتابة عالميًا | الملفات القابلة للكتابة عالميًا مع تعيين بتات SUID أو SGID والتي تكون ملفات ELF ثنائية (احتمال تصعيد صلاحيات/باب خلفي). |
| High | عملية مخفية مكتشفة في /proc (احتمال وجود جذر خفي) | تعداد العمليات في /proc ومقارنتها بمخرجات ps للعثور على عمليات تخفيها الجذور الخفية (مثل Diamorphine)؛ يتضمن ملاحظات حول كيفية قيام المهاجمين باختراق ps لإخفاء العمليات. |
| High | عملية مخفية باستخدام خدعة bind mount | كشف عمليات التحميل التي تُركَّب فوق /proc/ (مثل mount -o bind mydir /proc/1234) والتي يمكنها إخفاء إدخالات العمليات من ps. |
| High | LD_PRELOAD مُهيأ على مستوى النظام | وجود أو تعديل /etc/ld.so.preload الذي يمكن أن تستغله الجذور الخفية للاستمرارية. |
| Low | ملفات ذات capabilities | الملفات على النظام التي تحتوي على POSIX capabilities (من getcap) — مؤشر بثقة منخفضة لكن يستحق الفحص. |
| Low | ملف ELF ثنائي حديث في مجلدات tmp/home/مخفية | ملفات ELF ثنائية قابلة للتنفيذ تم تعديلها أو إنشاؤها مؤخرًا (خلال 7 أيام) في /tmp و/var/tmp و/dev/shm و/home — مؤشر بثقة منخفضة. |
| Low | ملف إعدادات أو hooks في Git | ملفات إعدادات أو hooks في Git غير نموذجية (مثل .git/config أو .git/hooks/*) يمكن استغلالها للاستمرارية. |
| Low | خطافات APT | يمكن استغلال خطافات APT للاستمرارية. |
| Low | إضافات Yum/DNF | إضافات Yum/DNF تشير إلى كلمة مفتاحية مشبوهة |
| Low | ملف .pth بمحتوى مشبوه (استمرارية بايثون) | ملفات .pth التي تحتوي على imports أو استدعاءات منفَّذة مثل import أو os.system أو exec() والتي تُنفَّذ عند استيراد وحدة بايثون. |
| Low | قواعد udev | قواعد udev بمفتاح RUN (احتمال استمرارية) |
| Low | وحدات PAM | وحدات PAM تشير إلى pam_exec والتي يمكن استغلالها للاستمرارية |
| Low | اختطاف الملفات الثنائية للنظام | ملفات ثنائية معدَّلة مؤخرًا في /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin/ |
| Informational | جميع إدخالات cron (مراجعة يدوية) | طباعة جميع الملفات المتعلقة بـ cron ومحتوياتها (غير التعليقات) للمراجعة اليدوية. |
| Informational | جميع ملفات تعريف الشل (مراجعة يدوية) | طباعة محتويات جميع ملفات تعريف الشل للنظام والمستخدم للفحص اليدوي. |
| Informational | جميع سكربتات init.d وrc.local (مراجعة يدوية) | طباعة سكربتات init.d وrc.local للفحص اليدوي. |
| Informational | جميع ملفات MOTD (مراجعة يدوية) | طباعة سكربتات/ملفات MOTD وupdate-motd.d للمراجعة اليدوية. |
| Informational | ملفات ELF الثنائية الحديثة (7 أيام) (مراجعة يدوية) | سرد ملفات ELF القابلة للتنفيذ الحديثة (7 أيام) للمراجعة اليدوية. |
| Informational | سرد جميع الملفات المخفية في مجلدات home (مراجعة يدوية) | تعداد الملفات المخفية في مجلدات home للمستخدمين للمراجعة اليدوية. |
| Informational | مفاتيح SSH المخوَّلة في مجلدات home (مراجعة يدوية) | طباعة ملفات authorized_keys غير الفارغة في /root و/home للفحص اليدوي. |
| Informational | المستخدمون والمجموعات المحليون (مراجعة يدوية) | سرد المستخدمين والمجموعات المحليين عبر getent للمراجعة اليدوية. |
| Informational | نقاط التحميل (مراجعة يدوية) | طباعة نقاط التحميل الحالية للفحص اليدوي. |
| Informational | اتصالات الشبكة النشطة (مراجعة يدوية) | عرض اتصالات الشبكة النشطة (ss -tunap) للمراجعة اليدوية. |
| Informational | خدمات systemd (مراجعة يدوية) | سرد خدمات systemd قيد التشغيل (systemctl list-units --type=service --state=running). |
| Informational | ملفات خدمة D-BUS (مراجعة يدوية) | العثور على ملفات خدمة D-BUS ضمن مجلدات dbus-1 للمراجعة. |
| Informational | سكربتات NetworkManager dispatcher | يشغّل NetworkManager-dispatcher السكربتات عند تغييرات الشبكة؛ تحقق من السكربتات القابلة للتنفيذ في dispatcher.d ضمن NetworkManager لاحتمال الاستمرارية. |
| Informational | صور الحاويات والحاويات قيد التشغيل | سرد جميع صور الحاويات والحاويات قيد التشغيل باستخدام Docker وPodman وContainerd |
| Informational | الحزم المثبتة | سرد جميع الحزم المثبتة باستخدام dpkg/rpm/dnf |
| Informational | وحدات النواة المحمَّلة | سرد جميع وحدات النواة المحمَّلة |