
بحث رسالة الماجستير حول CVE-2024-51324 (BYOVD). استغلال متقدم مع 4 أوضاع تشغيل (SCANNER, LOADER, KILLER, CLEANUP)، التحقق من برنامج التشغيل باستخدام SHA-256، وتوثيق أكاديمي كامل. تغطي قطعة المحفظة أمن برامج تشغيل نواة Windows، وهندسة عكسية لـ IOCTL، واستغلال Bring Your Own Vulnerable Driver.
إحضار برنامج تشغيل ضعيف خاص بك (BYOVD) — مضاد الفيروسات بايدو
BdApiUtil64.sys
ثلاث بدائيات نواة غير موثقة: إنهاء العمليات، حذف الملفات العشوائي،
وحذف الملفات قيد الاستخدام مع تجاوزSectionObjectPointer
المتأثر: مضاد الفيروسات بايدو الإصدار v5.2.3.116083 (BdApiUtil64.sys)
تحميل برنامج التشغيل الضعيف إلى النواة (وضع LOADER)
يحتوي هذا المستودع على بحث رسالة الماجستير الخاص بي حول CVE-2024-51324، وهو ثغرة من نوع إحضار برنامج تشغيل ضعيف خاص بك (BYOVD) في برنامج تشغيل النواة لمضاد الفيروسات بايدو BdApiUtil64.sys.
يسجل السجل الوطني للثغرات (NVD) درجة أساسية لـ CVSS v3.1 تبلغ 3.8 (منخفضة) مع المتجه AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N و CWE-269 (إدارة صلاحيات غير سليمة). لا تعكس هذه الدرة واقع الهجوم المحلي الموثق في هذا البحث: بمجرد تحميل برنامج التشغيل من قبل مسؤول (خطوة واحدة يمكن تحقيقها عبر الهندسة الاجتماعية أو أي تصعيد صلاحيات محلي)، يمكن لأي عملية لاحقة — بما في ذلك عمليات الصندوق الرملي أو عمليات المستخدم العادي — إرسال استدعاءات IOCTL دون فحوص صلاحيات إضافية. درجة CVSS v3.1 التي قدرها الباحث بـ 7.8 (عالية) مع المتجه AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H تلتقط بشكل أكثر دقة واقع الاستغلال بعد التحميل. تتم مناقشة كلتا الدرجتين في الوثائق الفنية.
يقوم برنامج التشغيل بإنشاء كائن الجهاز \Device\BdApiUtil مع SecurityDescriptor = NULL، مما يسمح لأي عملية بغض النظر عن مستوى التكامل بفتح مقبض وإرسال استدعاءات IOCTL. يكشف التحليل الثابت عبر Ghidra 11.0.3 أن الآلية الداخلية أكثر أهمية مما تم توثيقه سابقًا: يستخدم برنامج التشغيل PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode) بدلاً من ZwOpenProcess، متجاوزًا SeAccessCheck بالكامل. تم توصيف ثلاث بدائيات IOCTL بالكامل، اثنتان منهما ليس لهما توثيق عام سابق.
| الجانب | الوصف |
|---|---|
| تصحيح تقني | ZwOpenProcess غائب عن جدول الاستيراد؛ الآلية الفعلية هي PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode)، والتي تتجاوز SeAccessCheck دون شروط |
| ثلاث بدائيات موثقة | إنهاء العملية (0x800024B4)، حذف الملفات العشوائي (0x80002648)، وحذف الملفات قيد الاستخدام مع تجاوز SectionObjectPointer (0x8000264C) — الأخيرتين ليس لهما توثيق عام سابق |
| أربعة أوضاع تشغيل | LOADER، KILLER، SCANNER، وCLEANUP — إدارة دورة حياة كاملة |
| التحقق من SHA-256 | يتم التحقق من تجزئة برنامج التشغيل قبل أي محاولة تحميل |
| اختبار تجريبي لـ PPL | 10 محاولات لكل فئة عملية تؤكد أن PPL هي التخفيف الوحيد في وقت التشغيل |
| تحليل جنائي | معرف الحدث 7045 يبقى بعد التنظيف؛ معرف الحدث 1102 كأثر سجل يفضح نفسه |
| قواعد الكشف | قاعدة Sigma وتكوين Sysmon (معرف الحدث 6 حسب التجزئة + معرف الحدث 13 حسب مفتاح التسجيل) |
| إعادة تقييم CVSS | توثيق الفجوة بين الدرجة الرسمية لـ NVD (3.8 منخفضة) وشدة الاستغلال المحلي المقدرة من قبل الباحث (7.8 عالية) |
CVE-2024-51324/
├── README.md
├── LICENSE
│
├── drivers/
│ └── BdApiUtil64.sys # برنامج التشغيل (غير موزع)
│
├── exploit/
│ ├── exploit-explanation.md
│ └── byovd_killer.py # الاستغلال الرئيسي — 4 أوضاع تشغيل
│
└── docs/
├── screenshots/
│ ├── 01-byovd-scan.png
│ ├── 02-byovd-scan-target.png
│ ├── 03-byovd-load.png
│ ├── 04-byovd-load-custom.png
│ ├── 05-kill-name.gif
│ ├── 06-kill-pid.gif
│ ├── 07-kill-limit.gif
│ ├── 08-dry-run.gif
│ └── 09-byovd-cleanup.png
│
└── analysis/
├── 01-root-cause.md
├── 02-driver-analysis.md # تحليل Ghidra كامل، ثلاث بدائيات، اختبار PPL
└── 03-timeline.md
BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe
python exploit/byovd_killer.py --load
python exploit/byovd_killer.py --load --driver C:\path\to\BdApiUtil64.sys
python exploit/byovd_killer.py --load --service-name MyService
python exploit/byovd_killer.py --kill notepad.exe
python exploit/byovd_killer.py --pid 1234
python exploit/byovd_killer.py --kill notepad.exe --max-instances 2
python exploit/byovd_killer.py --kill notepad.exe --dry-run
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService
| الوضع | الأمر | الصلاحيات | الوصف |
|---|---|---|---|
| SCANNER | --scan | أي مستخدم | معلومات حالة النظام وبرنامج التشغيل |
| LOADER | --load | مسؤول | تحميل برنامج التشغيل عبر إنشاء خدمة نواة |
| KILLER | --kill / --pid | أي مستخدم | إنهاء العمليات عبر IOCTL |
| CLEANUP | --cleanup | مسؤول | إيقاف خدمة برنامج التشغيل وحذفها |









حددت الهندسة العكسية لـ BdApiUtil64.sys عبر Ghidra 11.0.3 سطح هجوم أوسع مما توثقه أي مصادر عامة سابقة:
| IOCTL | المعالج | البدائية | التوثيق السابق |
|---|---|---|---|
0x800024B4 | FUN_000152b0 | إنهاء العملية | جزئي (الآلية غير صحيحة) |
0x80002648 | FUN_00013bb0 | حذف الملفات العشوائي | لا يوجد |
0x8000264C | FUN_00013850 | حذف الملفات قيد الاستخدام (تجاوز SectionObjectPointer) | لا يوجد |