Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Z-Jail — صندوق رمل لينكس خفيف الوزن ومتعدد الطبقات يجمع بين namespaces وpivot_root وseccomp-bpf وإسقاط الصلاحيات، ومحرك قرارات قائم على الأدلة (النسخة العامة من Truthimatics) لتنفيذ كود آمن وقابل للتدقيق. | Kitploit
أدوات/GitHubGitHub/division-36/z-jail
أدوات دفاعيةتصعيد الامتيازاتأمن الحاوياتالتحليل الديناميكي (عزل)التهرب من IDS/IPSالتحقيق الجنائي الرقميCTFتحليل الملفات الثنائيةالتعلم والتعليممختبرات وتدريب عملي
GitHubdivision-36/z-jail
741212منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Z-Jail

صندوق رمل لينكس خفيف الوزن ومتعدد الطبقات يجمع بين namespaces وpivot_root وseccomp-bpf وإسقاط الصلاحيات، ومحرك قرارات قائم على الأدلة (النسخة العامة من Truthimatics) لتنفيذ كود آمن وقابل للتدقيق.

عرض المستودع
Z-Jail

Z-Jail

حاجز حماية متعدد الطبقات لتنفيذ الأكواد الأصلية على لينكس.
سبع طبقات دفاع مستقلة — لا تبعيات خارجية، ملف ثنائي PIE بحجم ~73 KiB.


┌──────────────────────────────────────────────────────┐
│                    Z-Jail                            │
├──────────────────────────────────────────────────────┤
│  Truthimatics PV  (evidence-based verdict engine)    │
│  Namespaces       (mount, pid, net, ipc, uts)        │
│  pivot_root       (chroot on steroids)               │
│  Capabilities     (drop all, lock securebits)        │
│  NO_NEW_PRIVS     (no privilege escalation)          │
│  seccomp-BPF      (whitelist: 15 syscalls only)      │
│  Audit            (JSON logging + BLAKE2b hashing)   │
└──────────────────────────────────────────────────────┘

جدول المحتويات

  • البداية السريعة
  • لماذا Z-Jail
  • البنية
  • الطبقات
  • الاستخدام
  • البناء والتثبيت
  • الاختبار
  • الأداء
  • نموذج التهديد
  • التوثيق
  • خارطة الطريق
  • الترخيص

البداية السريعة

git clone https://github.com/Division-36/Z-Jail.git
cd Z-Jail
make
sudo ./z_jail --root=/path/to/rootfs --seccomp-enforce -- /bin/ls

يجب أن يحتوي دليل --root على نظام ملفات أدنى يتضمن الملف الثنائي المستهدف وتبعياته (بالنسبة للملفات الثنائية ثابتة الربط، يكفي الملف الثنائي وحده).


لماذا Z-Jail

حلول العزل الحالية تنطوي على مقايضات:

Z-JailFirecrackergVisorbwrapnsjail
التبعيات الخارجيةصفرlibc, seccompGo runtimelibclibc, protobuf
حجم الملف الثنائي~73 KiB20+ MiB40+ MiB~70 KiB~1 MiB
عزل الجهاز الافتراضيلانعم (microVM)لا (بيئة عزل)لالا
القائمة البيضاء لـ seccompنعملانعماختيارينعم
تجزئة المحتوىنعملالالالا
تدقيق JSONنعملانعملاجزئي
تعقيد البناءأمر make واحدمعقّدمعقّدبسيطمتوسط

يسدّ Z-Jail الفجوة بين bwrap (بسيط، بدون seccomp افتراضياً) وnsjail (غني بالميزات، تبعيات ثقيلة). وهو مصمم لـخطوط CI، وتحديات CTF jail، وتقييم الأكواد خفيف الوزن حيث تحتاج إلى دفاع متعمق دون سحب بيئة تشغيل حاويات.


البنية

تدفق البيانات

flowchart LR
    CLI[CLI args] --> P[parse_args]
    P --> C{clone namespaces}
    C -->|child| CR[child_run]
    C -->|parent| W[waitpid]
    CR --> RL[setrlimit]
    RL --> FD[close fds >= 3]
    FD --> DUMP[PR_SET_DUMPABLE=0]
    DUMP --> PV[pivot_root]
    PV --> NNP[PR_SET_NO_NEW_PRIVS]
    NNP --> CAP[drop capabilities]
    CAP --> SC[seccomp-BPF]
    SC --> SIG[signal parent]
    SIG --> EX[execve target]
    W --> A[audit JSON]
    A --> EXIT[exit]

ترتيب الطبقات

تُرتَّب الطبقات بحيث لا يمكن لطبقة لاحقة أن تُبطَل بواسطة طبقة سابقة:

  1. setrlimit — وضع سقف لوحدة المعالجة المركزية، ومساحة العناوين، وعدد الملفات، والعمليات قبل أي شيء آخر
  2. fd scrub — إغلاق كل واصفات الملفات الموروثة باستثناء أنبوب التقرير
  3. PR_SET_DUMPABLE=0 — تعطيل ملفات التفريغ الأساسية، وتأمين /proc/self/mem
  4. pivot_root — الانفصال عن نظام ملفات المضيف؛ إلغاء تحميل الجذر القديم بشكل كسول
  5. PR_SET_NO_NEW_PRIVS — لا setuid، ولا تصعيد capset بعد هذه النقطة
  6. drop_caps — تصفير جميع القدرات، وقفل securebits
  7. seccomp-BPF — تقييد استدعاءات النظام إلى القائمة البيضاء فقط
  8. signal parent — إخبار العملية الأم بأن بيئة العزل جاهزة
  9. execve — استبدال العملية بالملف الثنائي المستهدف
sequenceDiagram
    participant P as Parent
    participant C as Child
    P->>C: clone (NEWNS|NEWPID|NEWNET|NEWIPC|NEWUTS)
    Note over C: setrlimit(CPU, AS, NOFILE, NPROC)
    Note over C: close(all fds > 2)
    Note over C: PR_SET_DUMPABLE=0
    Note over C: pivot_root → chdir("/") → umount -l
    Note over C: PR_SET_NO_NEW_PRIVS
    Note over C: capset(all zero) + securebits
    Note over C: seccomp(SECCOMP_MODE_FILTER, whitelist)
    C->>P: write(pipe, ready=1)
    Note over C: execve(target)
    P->>P: waitpid
    P->>P: write audit JSON

الطبقات

1. النسخة العامة من Truthimatics

محرك أحكام قائم على الأدلة. يجمع ملاحظات موزونة حول الملف الثنائي المنفَّذ ويحدد حكماً نهائياً (DETERMINISTIC أو REJECT أو UNCERTAIN). تحمل كل ملاحظة وزناً؛ أي ملاحظة واحدة بوزن أكبر من 50% من الإجمالي تحسم الحكم.

2. مساحات الأسماء

تُنشأ خمس مساحات أسماء عبر clone():

مساحة الاسمالعلامةالغرض
MountCLONE_NEWNSشجرة نظام ملفات معزولة
PIDCLONE_NEWPIDفضاء معرفات العمليات (الطفل هو pid 1)
NetCLONE_NEWNETلا واجهات شبكة
IPCCLONE_NEWIPCلا ذاكرة مشتركة / إشارات semaphores
UTSCLONE_NEWUTSاسم مضيف منفصل

يتطلب CAP_SYS_ADMIN في مساحة الأسماء الأولية.

3. pivot_root

يستبدل جذر مساحة أسماء التركيب بدليل --root:

  1. ربط-تركيب دليل الجذر على نفسه (MS_BIND|MS_REC)
  2. pivot_root(new_root, put_old) — مبادلة شجرة التركيب
  3. chdir("/") — الانتقال إلى الجذر الجديد
  4. umount2("/.pivot_old", MNT_DETACH) — فصل الجذر القديم
  5. rmdir("/.pivot_old") — التنظيف

هذا أقوى بصرامة من chroot(2) — لا توجد طريقة للعملية المعزولة للهروب عائدة إلى جذر المضيف، حتى مع CLONE_NEWNS من داخل بيئة العزل (وهو محظور أصلاً بواسطة seccomp).

4. القدرات

تُسقَط جميع القدرات عبر:

capset(hdr, data)  // data = {0, 0, 0}
prctl(SECBIT_KEEP_CAPS_LOCKED | SECBIT_NO_SETUID_FIXUP | ...)

تُسقط العملية setuid/setgid قبل capset بحيث يسري تغيير uid بينما ما تزال CAP_SETUID محتفظاً بها. بعد capset، تختفي جميع القدرات ويُقفل securebits — لا يمكن إعادة التمكين.

5. NO_NEW_PRIVS

prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);

يمنع العملية أو عملياتها الفرعية من اكتساب امتيازات جديدة عبر الملفات الثنائية setuid، أو قدرات الملفات، أو انتقالات LSM. لا رجعة فيه.

6. seccomp-BPF (whitelist-v1)

قائمة سماح من 15 استدعاء نظام — أي شيء غير موجود في القائمة يحصل على SECCOMP_RET_KILL:

استدعاء النظامالرقمملاحظات
read0stdin
write1stdout/stderr + أنبوب التقرير
openat257الوصول إلى الملفات (وليس open)
close3—
lseek8—
brk12إدارة الكومة
mmap9مقيد بالوسائط: flags & 4 == 0 (بدون MAP_SHARED)، flags == 0x22 (MAP_PRIVATE|MAP_ANONYMOUS)
munmap11—
execve59تنفيذ واحد عند الإقلاع
exit_group231خروج نظيف للعملية
rt_sigaction13معالجات الإشارات
rt_sigprocmask14حجب الإشارات
getrandom318مصدر أرقام عشوائية
clock_gettime228التوقيت
fstat5بيانات الملف الوصفية

يُولَّد مرشح BPF ديناميكياً: لكل إدخال في القائمة البيضاء، تُصدَر سلسلة قفزات تسمح بالاستدعاء (إذا تطابق استدعاء النظام) أو تصل إلى KILL. تُفحص البنية أولاً (AUDIT_ARCH_X86_64).

يُتحقَّق من المرشح بشكل مستقل عبر اختبار قائم بذاته (tests/seccomp_filter_test.c، نجاح 8/8) ينفّذ fork+execve لحالات اختبار مقابل prctl(PR_SET_SECCOMP) حقيقي دون الحاجة إلى صلاحيات الجذر.

تنزيل الأداة