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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
userland-exec — تنفيذ PoC على مستوى المستخدم ليُستخدم كأسلوب ناقل هجوم | Kitploit
أدوات/GitHubGitHub/hardenedlinux/userland-exec
الاستغلالالتهرب من IDS/IPSما بعد الاستغلالتحليل الملفات الثنائيةالفريق الأحمر
GitHubhardenedlinux/userland-exec

userland-exec

تنفيذ PoC على مستوى المستخدم ليُستخدم كأسلوب ناقل هجوم

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

الأكثر شعبية

عرض الكل →

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

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

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

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

التنفيذ في فضاء المستخدم

يستبدل تنفيذ فضاء المستخدم صورة العملية الحالية داخل مساحة العناوين الحالية بأخرى جديدة. يحاكي سلوك استدعاء النظام execve، لكن البنى الخاصة بالعملية التي تصف صورة العملية تبقى دون تغيير. بعبارة أخرى، سيبقى اسم العملية كما تبلغه أدوات النظام بالاسم القديم.

يمكن استخدام هذه التقنية لتحقيق التخفي بعد الحصول على تنفيذ عشوائي للكود. ويمكن استخدامها أيضًا لتنفيذ الملفات الثنائية المخزنة في أقسام noexec.

أول تنفيذ في فضاء المستخدم صُنع بواسطة grugq. هذا المستودع مستوحى بشكل كبير من مكتبة Rapid7 Mettle، التي تتضمن وصفًا شاملًا في مدونة لهذه التقنية.

في البداية، كان جزء كبير من كود هذا المستودع يحاكي مكتبة Mettle، لكنه مُنذ ذلك الحين تم توسيعه ليشمل تعقيدات إضافية لتجاوز تحقق SELinux.

تجاوز تحقق SELinux

يتضمن SELinux تحقق execmem، الذي يضمن:

  • الصفحة التي كانت قابلة للكتابة لا يمكن أن تصبح قابلة للتنفيذ (أي أن تغيير PROT_WRITE إلى PROT_EXEC باستخدام mprotect غير مسموح به).
  • لا يمكن لأي صفحة أن تكون قابلة للكتابة والتنفيذ في الوقت نفسه (سياسة W ^ X).
  • تجاوز mprotect

    لتجاوز mprotect، من الضروري إنشاء ملف مؤقت. يمكن تحقيق ذلك باستخدام memfd_create مع munmap وmmap، وبذلك يتم تجنب استدعاء النظام mprotect بالكامل.

    تجاوز W ^ X

    يوضح مثال elf_debugger.c أن أي ملف ELF يحتوي على منطقة PT_LOAD قابلة للتنفيذ والكتابة معًا. هذه المنطقة مطلوبة لتحميل معلومات البرنامج أثناء التنفيذ. ولمعالجة ذلك، أُنشئ تنفيذ bypass_wx.c. هذا التصميم:

    • يعلّم صفحة كقابلة للتنفيذ.
    • عند محاولات الكتابة إلى هذه الصفحة، يطلق إشارة SIGSEGV.
    • يعترض الإشارة ويغيّر حماية الصفحة ديناميكيًا من PROT_EXEC إلى PROT_WRITE.

    الاختبار

    OSArchitectResult
    Ubuntu 24.04x86_64نجاح
    Archlinux 6.12.4x86_64نجاح
    CentOSx86_64نجاح
    Raspberry Pi OSarm64نجاح
    S23 Android 14arm64نجاح

    البناء والاستخدام

    يصف هذا القسم كيفية البناء لأجهزة Android وx86. تأكد من تثبيت libelf قبل المتابعة.

    x86

    البناء

    root@kitploit:~
    mkdir build && cd build
    cmake ..
    make
    

    الاستخدام

    root@kitploit:~
    desktop % strace ./uexec hello others args here 2>&1 | grep exec
    execve("./uexec", ["./uexec", "hello", "others", "args", "here"], 0x7ffc34ec02f0 /* 54 vars */) = 0
    desktop % strace bash -c ./hello 2>&1 | grep exec
    execve("/usr/bin/bash", ["bash", "-c", "./hello"], 0x7ffebecc3130 /* 54 vars */) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec/build", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    execve("./hello", ["./hello"], 0x5fb22658e2a0 /* 54 vars */) = 0
    

    بناء النسخة التصحيحية

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    

    Android

    البناء

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
          -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-30 ..
    make
    

    الاستخدام

    root@kitploit:~
    desktop % adb push uexec hello /data/local/tmp
    uexec: 1 file pushed, 0 skipped. 113.9 MB/s (22912 bytes in 0.000s)
    hello: 1 file pushed, 0 skipped. 184.9 MB/s (6936 bytes in 0.000s)
    2 files pushed, 0 skipped. 0.3 MB/s (29848 bytes in 0.090s)
    
    desktop % adb shell
    dm3q:/ $ cd /data/local/tmp
    dm3q:/data/local/tmp $ chmod +x uexec
    dm3q:/data/local/tmp $ ./hello
    Hello World
    dm3q:/data/local/tmp $ ./uexec hello
    Hello World
    dm3q:/data/local/tmp $
    

    استكشاف الأخطاء وإصلاحها

    على CentOS، قد تظهر مكتبة libc سلوكًا غير معتاد. ولمعالجة هذه المشكلة، تم توفير برنامج "Hello, World" بسيط مكتوب بلغة التجميع، hello_nolibc.s. يوضح هذا المثال مع cmake كيفية بناء وتنفيذ برنامج دون الربط مع libc.

    إذا كان إصدار CMAKE لديك أعلى من 4.0، يمكنك إضافة -DCMAKE_POLICY_VERSION_MINIMUM=3.5 في أمر البناء.

    الترخيص

    يستخدم هذا المستودع رخصة GPL-3.0.

    تنزيل الأداة