
OpenPetya v2.0.0
إثبات مفهوم لـ bootkit وتطبيق إقلاع UEFI مستوحى من برنامج الفدية Petya، مكتوب بلغة Assembly و C و C++
OpenPetya
أداة إثبات مفهوم (Proof-of-Concept) لـ bootkit وتطبيق إقلاع UEFI مستوحاة من برمجية الفدية Petya، مكتوبة بلغة Assembly و C و C++
إذا وجدت هذا المشروع مفيدًا أو غنيًا بالمعلومات، سأكون ممتنًا حقًا لوضع ⭐ على المستودع. دعمك سيكون حافزًا كبيرًا لي لمواصلة تحسين هذه الأداة.
نظرة عامة
OpenPetya هو مشروع تعليمي مصمم لدراسة كيفية عمل الـ bootkits وبرمجيات الفدية منخفضة المستوى داخليًا.
يركز المشروع على:
- تحميل MBR مخصص
- عملية إقلاع متعددة المراحل
- الانتقال إلى الوضع المحمي (Protected Mode)
- تشفير جدول الملفات الرئيسي (MFT) لنظام NTFS
- التشفير المعتمد على Salsa20
- التحقق من كلمة المرور وسير عمل الاستعادة
- برمجة UEFI
OpenPetya ليس المقصود منه إعادة تنفيذ دقيقة لـ Petya أو NotPetya. بدلاً من ذلك، هو إثبات مفهوم مبسط مصمم لأغراض التعلم والبحث.
من الجدير بالذكر أن OpenPetya لا يتضمن وظيفة القيادة والتحكم (C2). بالإضافة إلى ذلك، يخزن OpenPetya بيانات النسخ الاحتياطي لـ MFT كنص واضح داخل قطاعات مخفية بعد التشفير. هذا السلوك مصمم عمدًا لأغراض تعليمية لأن تلك الميزات بسيطة نسبيًا مقارنة بآليات الإقلاع الأساسية والتشفير المطبقة في هذا المشروع. ومع ذلك، يمكنك تعديل أو إزالة هذه الميزات إذا لزم الأمر.
ملاحظة: في الإصدار 2.0.0، اخترت عدم تنفيذه لـ UEFI خوفًا من إساءة استخدامه لإلحاق الضرر بأنظمة تشغيل Windows الحديثة.
الدافع وراء المشروع
v1.0.0
على مدى الأشهر القليلة الماضية، كنت أدرس:
- تحليل البرمجيات الخبيثة
- محملات الإقلاع (bootloaders)
- الجذور الخفية والـ bootkits
- دواخل Windows
- أساسيات أنظمة التشغيل
- برمجة Assembly منخفضة المستوى
أثناء البحث عن Petya و NotPetya، أدركت أن العديد من الموارد عبر الإنترنت تشرح فقط سير العمل العام بإيجاز دون توضيح كيفية عمل عملية الإقلاع الأساسية فعليًا.
بالإضافة إلى ذلك، تعتمد العديد من المشاريع الحالية المتعلقة بـ Petya على ملفات bootloader مستخرجة أو مكونات أصلية معدلة بدلاً من تنفيذ المنطق من الصفر.
لذلك، قررت تطوير OpenPetya كمشروع عملي لفهم:
- كيفية عمل bootkits ذات MBR مخصص
- كيفية عمل محملات الإقلاع من المرحلة الثانية
- كيفية عمل سير عمل تشفير القرص
- كيفية تنفيذ آليات التحقق من كلمة المرور والاستعادة
كما يخدم المشروع جزءًا من بحثي المستمر حول الـ bootkits والبرمجيات الخبيثة منخفضة المستوى ودواخل أنظمة التشغيل.
مقالات ذات صلة:
- تحليل Petya
- تحليل NotPetya
- MBR ومحمل إقلاع بسيط
- OpenBootloader
- ملاحظات حول الجذور الخفية والـ Bootkits
- ملاحظات حول لغة تجميع PC
- ملاحظات حول التشفير الجاد
v2.0.0
في الإصدار 2.0.0، أصبحت فضوليًا حول كيفية عمل الـ bootkits الحديثة (كما هو مغطى في الفصول الأخيرة من كتاب "Rootkits and Bootkits" لأليكس ماتروسوف ويوجين روديونوف وسيرجي براتوس). لذلك، قررت دراسة برمجة تطبيقات EFI من الصفر. ثم اكتشفت أنها أصعب بكثير مما توقعت (من ناحية التصحيح).
على أي حال، بعد كتابة بعض تطبيقات EFI البسيطة، نشرت OpenPetya v2.0.0!
الميزات
v1.0.0
-
MBR مخصص
يستخدم OpenPetya سجل إقلاع رئيسي (MBR) مخصصًا لتحميل حمولة المرحلة الثانية.
-
محمل إقلاع مخصص للمرحلة الثانية
يحتوي محمل إقلاع المرحلة الثانية على الوظائف الأساسية للمشروع، بما في ذلك:
- تشفير/فك تشفير Salsa20
- التحقق من كلمة المرور
- منطق الاستعادة
- واجهة المستخدم
-
الانتقال إلى الوضع المحمي
ينتقل محمل الإقلاع من الوضع الحقيقي 16-بت إلى الوضع المحمي 32-بت قبل تنفيذ المنطق عالي المستوى.
-
تشفير MFT
على غرار Petya الأصلية، يقوم OpenPetya بتشفير الأجزاء الحرجة من جدول الملفات الرئيسي (MFT) لنظام NTFS باستخدام Salsa20.
-
التحقق من كلمة المرور
يتحقق OpenPetya من كلمة المرور المدخلة قبل فك التشفير لمنع التلف غير القابل للإصلاح الناتج عن مفاتيح غير صالحة.
-
الاستعادة التلقائية
بمجرد إدخال كلمة المرور الصحيحة:
- تتم استعادة البيانات المشفرة
- يتم استرداد سلسلة الإقلاع الأصلية
- يزيل OpenPetya نفسه تلقائيًا
v2.0.0
لا يتضمن OpenPetya v2.0.0 تشفير MFT في تطبيق EFI المخصص (petya.efi). يقدم لوحة تسجيل دخول بسيطة ويقوم بـ chainloading بمجرد صحة كلمة المرور.
اخترت عدم تنفيذ تشفير MFT في تطبيق EFI لأنه قد يُساء استخدامه لإلحاق الضرر بأنظمة تشغيل Windows الحديثة، بينما نفذته في v1.0.0 لأن الجهات الخبيثة أظهرته بالفعل في عام 2016.
المكونات
OpenPetya.exe
تطبيق التثبيت والتحكم في وضع المستخدم.
الوظائف:
- اختيار القرص
- التثبيت
- تشغيل إعادة التشغيل
- واجهة الأدوات المساعدة
mbr.bin
كود سجل الإقلاع الرئيسي (MBR) المخصص المسؤول عن:
- تحميل المرحلة الثانية
- تنفيذ الإقلاع المبكر
stage2.bin
الحمولة الأساسية لـ OpenPetya.
المسؤوليات:
- الانتقال إلى الوضع المحمي
- عمليات التشفير Salsa20
- تشفير/فك تشفير MFT
- التحقق من كلمة المرور
- الاستعادة
- واجهة وقت الإقلاع
petya.efi
الحمولة الأساسية لـ OpenPetya.
الوظائف:
- التحقق من كلمة المرور
- chainloading
سير العمل
BIOS
يُلخص سير عمل OpenPetya (MBR + Bootloader) أدناه.
- يقوم المستخدمون بتثبيت OpenPetya باستخدام
OpenPetya.exeواختيار كلمة مرور. - تتم إعادة تشغيل الجهاز يدويًا أو عبر آلية BSOD (عبر
NtRaiseHardError) التي يوفرها برنامج التثبيت. - أثناء الإقلاع، يقوم MBR المخصص بتحميل حمولة المرحلة الثانية.
- تقوم حمولة المرحلة الثانية بتحويل وحدة المعالجة المركزية إلى الوضع المحمي.
- يقوم OpenPetya بتشفير الأجزاء المحددة من جدول الملفات الرئيسي (MFT) لنظام NTFS.
- بعد التشفير، تتم إعادة تشغيل الجهاز مرة أخرى.
- تظهر واجهة وقت الإقلاع تطالب المستخدم بكلمة المرور.
- إذا كانت كلمة المرور صحيحة:
- يتم فك تشفير البيانات المشفرة
- تتم استعادة سلسلة الإقلاع الأصلية
- يزيل OpenPetya نفسه تلقائيًا
- يعمل Windows بشكل طبيعي مرة أخرى.
على عكس برمجية الفدية Petya الأصلية، لا يحاول OpenPetya خداع المستخدمين بشاشات CHKDSK مزيفة أو سلوك هندسة اجتماعية. المشروع مصمم purely للأغراض التعليمية والبحثية.
UEFI
يُلخص سير عمل OpenPetya (UEFI) أدناه:
- تظهر واجهة وقت الإقلاع تطالب المستخدم بكلمة المرور.
- إذا كانت كلمة المرور صحيحة:
- يقوم النظام بتنفيذ chainloading
- يزيل المستخدمون برنامج EFI المخصص يدويًا
البناء
يمكنك بناء المشروع باستخدام الأوامر أدناه.
make # Build mbr.bin and stage2.bin
./build.sh # Build OpenPetya.exe
الاستخدام
تحذير: يرجى تنفيذه في جهازك الافتراضي!
توضح الأوامر أدناه كيفية تثبيت MBR المخصص ومحمل إقلاع المرحلة الثانية (مطلوب صلاحيات إدارية):
BIOS القديم:
OpenPetya.exe --list
OpenPetya.exe --drive 0 --install mbr.bin stage2.bin
UEFI:
OpenPetya.exe --is-admin
OpenPetya.exe --firmware
OpenPetya.exe --uefi-secure
OpenPetya.exe --drive 0 --uefi-install petya.efi
OpenPetya.exe --drive 0 --uefi-restore
ملاحظات تقنية
شروحات مفصلة حول:
- عملية إقلاع MBR
- الوضع الحقيقي والوضع المحمي
- تنفيذ Salsa20
- سير عمل تشفير MFT
- تصميم bootkit
- مزيد من المناقشات حول Petya و NotPetya
- كيفية استخدام واجهات برمجة التطبيقات غير الموثقة (مثل
NtRaiseHardError)
موثقة في هذه المقالة.
إخلاء المسؤولية
تم تطوير هذا المشروع purely للأغراض التعليمية والبحثية.
الهدف من OpenPetya هو دراسة:
- الـ bootkits
- دواخل أنظمة التشغيل
- تقنيات البرمجيات الخبيثة منخفضة المستوى
- بنية محمل الإقلاع
لا تستخدم هذا المشروع للأنشطة غير القانونية أو ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
المؤلف ليس مسؤولاً عن أي إساءة استخدام لهذا البرنامج.
العرض التوضيحي (Windows 7)
لقطات الشاشة
عرض توضيحي لوقت التشغيل
الخطط المستقبلية
- تحسين سير عمل الاستعادة
- تحليل أفضل لـ NTFS
- محاكاة أكثر دقة لسلوك Petya
- أبحاث إضافية حول الـ bootkits
- وضع الرسومات بملء الشاشة
- دعم Linux
شكر وتقدير
شكرًا لاطلاعك على هذا المشروع. الملاحظات والاقتراحات مرحب بها.