
بيئة تصحيح أخطاء نواة لينكس معبأة بالكامل في حاويات دوكر
LIKE-DBG (LInux-KErnel-DeBuGger) يهدف إلى أتمتة الخطوات المملة عند محاولة إعداد بيئة تصحيح أخطاء نواة لينكس. انطلقت بهدف الغوص في أبحاث استغلال النواة ووجدت أن الحلول الحالية غير عملية بما يكفي. لذلك، هذه محاولة لجعل جميع الخطوات الأولية الضرورية قبل أن تفكر حتى في البدء بالبحث سهلة وممتعة قدر الإمكان. جميع الخطوات من بناء النواة، وتشغيلها داخل بيئة محاكاة، وربط مُصحح الأخطاء، تتم بشفافية داخل حاويات دوكر لتقليل متطلبات النظام إلى الحد الأدنى. حاليًا، توجد حاوية دوكر مخصصة لكل خطوة من الخطوات التالية:
نظرًا لأن هذا المشروع في مراحله المبكرة، أتوقع أن تتغير الأمور بسرعة، مع إدخال تغييرات جذرية على طول الطريق. أهم النقاط التي يجب تحسينها هي:
x86_64 وarm64على الجانب الإيجابي، وعلى الرغم من مراحله المبكرة، توجد بالفعل بعض الميزات المفيدة:
configs/user.ini سهل الفهم يتيح جلسات قابلة للتخصيص بدرجة كبيرة
ctf/misc يحتوي على بعض البرامج النصية الأنيقة للمساعدة في مسابقات CTFx86_64, arm64gcc وclang لبناء النواةconfigs/*.ini.io/scripts/gdb_script لتجربة تصحيح مصممة خصيصًا للسيناريوللبدء، يجب التأكد من توفير المتطلبات التالية على نظامك:
dockertmuxpython>=3.11poetry # https://python-poetry.org/docs/يُنصح بعدم تشغيل هذا المشروع كمستخدم root، على سبيل المثال لأغراض الاختبار على خادم خاص افتراضي (VPS).
قد يعمل بشكل جيد، لكن بشكل عام أشجع بشدة على إنشاء مستخدم مخصص غير جذر ووضعه في مجموعة docker ومجموعة sudo!
ملاحظة: إذا كنت تستخدم إعداد TMUX مخصصًا، فتأكد من أن اللوحة الأولى تبدأ من 0!
يغطي هذا القسم الأدوات غير المطلوبة لتشغيل LIKE-DBG، لكن من الجيد امتلاكها وتساعد كثيرًا عند تصحيح الأخطاء أو كتابة استغلال.
داخل like-dbg قم بتشغيل poetry install
الضبط الدقيق لتجربة تصحيح أخطاء النواة هو أحد أهداف هذا المشروع.
حاليًا، جميع الخيارات القابلة للضبط معروضة في ملفي الإعداد: configs/system.ini و configs/user.ini.
بعض الحقول يُنصح بعدم تغييرها لأنها مخصصة بشكل أساسي لأسباب تطويرية.
على أي حال، جميع الحقول المخصصة لتخصيص البيئة حسب احتياجاتك يجب أن تكون واضحة بذاتها، حيث إن كلًا منها مُعلَّم بتعليق مختصر.
ملاحظة: عند الاستخدام لأول مرة، قم بتشغيل poetry install.
بمجرد الانتهاء من كتابة أو تكييف إعداد، يعتمد الاستخدام على السيناريو الخاص بك.
أسهل طريقة للبدء، والتي تعتمد على إعداد configs/user.ini، هي التالية:
tmux -f .tmux.conf
poetry shell
# This checks out a kernel, builds it, creates a root file system and starts the debugger and debuggee eventually
./start_kgdb.py
يوجد مستخدمان لأنظمة الملفات المنشأة تلقائيًا:
root بدون كلمة مرورuser:userهذا مقصود لتتمكن من التطوير والاستغلال من أي من المنظورين بسهولة.
# If you want to try a CTF challenge where you were given a (compressed) Linux Image and a root filesystem try:
./start_kgdb.py --ctf <Image> <RootFS>
# If you want to kill the current debugging session
./start_kgdb.py -k
# If you want to provide a custom 'user.ini' for a specific debugging setup
./start_kgdb.py -c <path_to_cfg> [other_args]
# If you want to test some partial functionality of LIKE-DBG
# Stage 1: Download Kernel
# Stage 2: Stage 1 & unpack Kernel
# Stage 3: Stage 2 & build Kernel
# Stage 4: Only build a root file system
# Stage 5: Stage 3+4 & start debuggee
./start_kgdb.py -p <stage_nr>
# Update all containers
./start_kgdb.py -u
يحتوي الدليل الفرعي examples على نماذج توضح كيف يمكن لـ LIKE_DBG مساعدتك في مهام تصحيح نواة محددة.
يحتوي كل مثال على README.md مخصص يتضمن المعلومات اللازمة لإعادة إنتاج الأمثلة.

كود بايثون يجب أن يكون مقروءًا إلى حد كبير، لذا لا تتردد في توسيع المشروع بأفكارك الخاصة. جميع طلبات السحب (PRs) مرحب بها جدًا :)! بخلاف ذلك، لا تتردد في إنشاء طلب ميزة أو التوجه إلى صفحة المناقشات للتفكير في ميزات جديدة رائعة!
ملاحظة: إذا كنت ترغب في تقديم شعار، فلا تتردد في ذلك.