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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
kfd — kfd، اختصار لوصف ملف kernel، هو مشروع لقراءة وكتابة ذاكرة kernel على أجهزة Apple. | Kitploit
أدوات/GitHubGitHub/felix-pb/kfd
أمان iOSالاستغلالأمن الجوالاستغلال الملفات الثنائية
GitHubfelix-pb/kfd

kfd

kfd، اختصار لوصف ملف kernel، هو مشروع لقراءة وكتابة ذاكرة kernel على أجهزة Apple.

عرض المستودع
1k1849منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

إخلاء مسؤولية سريع: لا أنوي إضافة إزاحات (offsets) لأجهزة أخرى أو إصدارات iOS أخرى.

kfd

kfd، اختصارًا لـ kernel file descriptor (واصف ملفات النواة)، هو مشروع لقراءة وكتابة ذاكرة النواة على أجهزة Apple. يعتمد على ثغرات متنوعة يمكن استغلالها للحصول على PTEs معلّقة (dangling PTEs)، والتي سيُشار إليها باسم بدائية PUAF، اختصارًا لـ "physical use-after-free". بعد ذلك، يعيد تخصيص كائنات نواة معينة داخل تلك الصفحات الفيزيائية ويتلاعب بها مباشرةً من مساحة المستخدم عبر الـ PTEs المعلّقة لتحقيق بدائية KRKW، اختصارًا لـ "kernel read/write". كود الاستغلال موجود بالكامل في مكتبة، libkfd، لكن المشروع يحتوي أيضًا على أغلفة تنفيذية بسيطة لكل من iOS وmacOS. الواجهة العامة لـ libkfd صغيرة وبديهية إلى حد كبير:

root@kitploit:~
enum puaf_method {
    puaf_physpuppet,
    puaf_smith,
    puaf_landa,
};

enum kread_method {
    kread_kqueue_workloop_ctl,
    kread_sem_open,
};

enum kwrite_method {
    kwrite_dup,
    kwrite_sem_open,
};

u64 kopen(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method);
void kread(u64 kfd, u64 kaddr, void* uaddr, u64 size);
void kwrite(u64 kfd, void* uaddr, u64 kaddr, u64 size);
void kclose(u64 kfd);

kopen() تفتح مفهوميًا "واصف ملفات النواة" (kernel file descriptor). وتقبل الوسائط الأربعة التالية:

  • puaf_pages: العدد المستهدف من الصفحات الفيزيائية ذات الـ PTEs المعلّقة.
  • puaf_method: الطريقة المستخدمة للحصول على بدائية PUAF، مع الخيارات التالية:
    • puaf_physpuppet:
      • تستغل هذه الطريقة CVE-2023-23536.
      • تم إصلاحها في iOS 16.4 وmacOS 13.3.
      • يمكن الوصول إليها من App Sandbox ولكن ليس من WebContent sandbox.
      • مكافأة Apple Security Bounty بقيمة 52,500$.
    • puaf_smith:
      • تستغل هذه الطريقة CVE-2023-32434.
      • تم إصلاحها في iOS 16.5.1 وmacOS 13.4.1.
      • يمكن الوصول إليها من WebContent sandbox وربما تم استغلالها بنشاط.
    • puaf_landa:
      • تستغل هذه الطريقة CVE-2023-41974.
      • تم إصلاحها في iOS 17.0 وmacOS 14.0.
      • يمكن الوصول إليها من App Sandbox ولكن ليس من WebContent sandbox.
      • مكافأة Apple Security Bounty بقيمة 70,000$.
  • kread_method: الطريقة المستخدمة للحصول على بدائية kread() الأولية.
  • kwrite_method: الطريقة المستخدمة للحصول على بدائية kwrite() الأولية.

إذا نجح الاستغلال، تُرجع kopen() واصف ملفات غير شفاف (opaque) بحجم 64 بت. عمليًا، هو مجرد مؤشر من مساحة المستخدم إلى بنية تحتاجها libkfd. ومع ذلك، وبما أنه لا ينبغي الوصول إلى تلك البنية خارج المكتبة، يتم إرجاعها كعدد صحيح غير شفاف. إذا لم ينجح الاستغلال، ستطبع المكتبة رسالة خطأ، وتنتظر لمدة 30 ثانية، ثم تخرج برمز حالة 1. تنتظر لمدة 30 ثانية لأن النواة قد تتعرض لانهيار (panic) عند الخروج مع بعض طرق PUAF التي تتطلب بعض التنظيف بعد KRKW (مثل puaf_smith).

kread() وkwrite() هما المعادلان في مساحة المستخدم لـ copyout() وcopyin()، على الترتيب. يُرجى ملاحظة أن خيارات kread_method وkwrite_method موصوفة في مقال تحليلي منفصل. بالإضافة إلى ذلك، يمكن استخدام البدائيات الأولية التي تمنحها تلك الطرق لبناء بدائية KRKW أفضل. أخيرًا، تقوم kclose() ببساطة بإغلاق واصف ملفات النواة. جميعها تأخذ العدد الصحيح غير الشفاف الذي تُرجعه kopen() كوسيطتها الأولى.


كيف تبني kfd وتشغّله على iPhone؟

في Xcode، افتح المجلد الجذر للمشروع ووصّل جهاز iOS الخاص بك.

  • لبناء المشروع، اختر Product > Build (⌘B).
  • لتشغيل المشروع، اختر Product > Run (⌘R)، ثم انقر على زر "kopen" في التطبيق.

كيف تبني kfd وتشغّله على Mac؟

في الطرفية (Terminal)، انتقل إلى المجلد الجذر للمشروع.

اختياريًا، لزيادة حدود واصفات الملفات على المستوى العام وعلى مستوى العملية الواحدة، مما سيحسّن معدل النجاح خاصةً عند التشغيل عدة مرات متتالية، أدخل الأمر make s واكتب كلمة مرور sudo.

  • لبناء المشروع، أدخل الأمر make b.
  • لتشغيل المشروع، أدخل الأمر make r.
  • لبناء المشروع وتشغيله دفعة واحدة، أدخل الأمر make br.

أين تجد مقالات تحليلية مفصّلة عن الاستغلالات؟

قدّم هذا README نظرة عامة عالية المستوى لمشروع kfd. بمجرد تحقيق بدائية PUAF، يصبح باقي الاستغلال عامًا. لذلك، جمعت الجزء المشترك من الاستغلالات في مقال تحليلي مخصص:

  • استغلال الـ PUAFs

بالإضافة إلى ذلك، قسّمت الجزء الخاص بكل ثغرة من أجزاء الاستغلالات المستخدمة لتحقيق بدائية PUAF إلى مقالات تحليلية منفصلة، مذكورة أدناه بترتيب زمني للاكتشاف:

  • PhysPuppet
  • Smith
  • Landa

ومع ذلك، يُرجى ملاحظة أن هذه المقالات كُتبت لجمهور على دراية مسبقة بنظام الذاكرة الافتراضية XNU.

تنزيل الأداة