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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-51324 — بحث رسالة الماجستير حول CVE-2024-51324 (BYOVD). استغلال متقدم مع 4 أوضاع تشغيل (SCANNER, LOADER, KILLER, CLEANUP)، التحقق من برنامج التشغيل باستخدام SHA-256، وتوثيق أكاديمي كامل. تغطي قطعة المحفظة أمن برامج تشغيل نواة Windows، وهندسة عكسية لـ IOCTL، واستغلال Bring Your Own Vulnerable Driver. | Kitploit
أدوات/GitHubGitHub/devianntsec/cve-2024-51324
أدوات دفاعيةتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالتحقيق الجنائي الرقمياختبار الاختراقالأوراق والأبحاثالتعلم والتعليمالفريق الأحمراستغلال الملفات الثنائية
GitHubdevianntsec/cve-2024-51324

CVE-2024-51324

1منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

حول

بحث رسالة الماجستير حول CVE-2024-51324 (BYOVD). استغلال متقدم مع 4 أوضاع تشغيل (SCANNER, LOADER, KILLER, CLEANUP)، التحقق من برنامج التشغيل باستخدام SHA-256، وتوثيق أكاديمي كامل. تغطي قطعة المحفظة أمن برامج تشغيل نواة Windows، وهندسة عكسية لـ IOCTL، واستغلال Bring Your Own Vulnerable Driver.

عرض المستودع
مشاركة

CVE-2024-51324 — BYOVD: BdApiUtil64.sys · بحث رسالة الماجستير

Platform Language License: MIT Research CVSS

إحضار برنامج تشغيل ضعيف خاص بك (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 بالكامل، اثنتان منهما ليس لهما توثيق عام سابق.

مساهمتي


هيكل المستودع

root@kitploit:~
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

بداية سريعة

المتطلبات الأساسية

  • Windows 10/11 (أي إصدار)
  • Python 3.6+
  • BdApiUtil64.sys (SHA-256: 47EC51B5F0EDE1E70BD66F3F0152F9EB536D534565DBB7FCC3A05F542DBE4428)
  • حساب مسؤول (وضعي LOADER وCLEANUP فقط)
  • حساب مستخدم عادي يكفي لوضع KILLER بمجرد تحميل برنامج التشغيل

الخطوة 1 — فحص النظام

root@kitploit:~
python exploit/byovd_killer.py --scan
python exploit/byovd_killer.py --scan --target lsass.exe

الخطوة 2 — تحميل برنامج التشغيل (يتطلب مسؤول)

root@kitploit:~
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

الخطوة 3 — إنهاء العمليات (لا يتطلب مسؤول)

root@kitploit:~
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

الخطوة 4 — التنظيف (يتطلب مسؤول)

root@kitploit:~
python exploit/byovd_killer.py --cleanup
python exploit/byovd_killer.py --cleanup --service-name MyService

أوضاع التشغيل


العروض التوضيحية

وضع SCANNER — معلومات النظام

وضع SCANNER

وضع SCANNER — بحث العملية المستهدفة

هدف SCANNER

وضع LOADER — تحميل برنامج التشغيل

وضع LOADER

وضع LOADER — مسار مخصص واسم خدمة

LOADER مخصص

وضع KILLER — إنهاء حسب اسم العملية

إنهاء حسب الاسم

وضع KILLER — إنهاء حسب معرف العملية

إنهاء حسب PID

وضع KILLER — تحديد عدد المثيلات

تحديد المثيلات

وضع KILLER — تشغيل جاف (محاكاة)

تشغيل جاف

وضع CLEANUP — إلغاء تحميل برنامج التشغيل

وضع CLEANUP


نظرة عامة تقنية

سطح هجوم IOCTL — ثلاث بدائيات

حددت الهندسة العكسية لـ BdApiUtil64.sys عبر Ghidra 11.0.3 سطح هجوم أوسع مما توثقه أي مصادر عامة سابقة:

البدائية 1 — إنهاء العملية (0x800024B4)

سلسلة الإرسال لها ثلاثة مستويات:

root@kitploit:~
IOCTL 0x800024B4
  └─ FUN_00028630  (موزع IRP_MJ_DEVICE_CONTROL)
       └─ FUN_00015230  (غلاف: يتحقق من كود IOCTL وحجم المخزن المؤقت = 4 بايت)
            └─ FUN_000152b0  (معالج القتل — موقع الثغرة)

المعالج المعاد بناؤه (Ghidra):

root@kitploit:~
if ((param_1 != 0) && (param_1 != 4)) {
    PsLookupProcessByProcessId(param_1, &local_res10);
    ObOpenObjectByPointer(
        local_res10,
        0x200,      // OBJ_KERNEL_HANDLE
        0,          // PassedAccessState: NULL
        0x1fffff,   // PROCESS_ALL_ACCESS
        0,          // ObjectType: NULL
        0,          // AccessMode: KernelMode  ← يتجاوز SeAccessCheck
        local_res18
    );
    ZwTerminateProcess(local_res18[0], 0);
}

لماذا يتجاوز KernelMode SeAccessCheck:

root@kitploit:~
مسار ZwOpenProcess:
  NtOpenProcess → ObOpenObjectByName → SeAccessCheck
                                        (يتحقق من DACL، رمز المتصل، مستوى التكامل)
                                        يمكن أن يعيد STATUS_ACCESS_DENIED

مسار ObOpenObjectByPointer(KernelMode):
  SeAccessCheck  ← لا يتم استدعاؤه
  → يتم منح مقبض PROCESS_ALL_ACCESS دون شروط

ZwOpenProcess غائب عن جدول استيراد برنامج التشغيل. الوصف المبني على ZwOpenProcess الموجود في المصادر السابقة غير صحيح تقنيًا.

البدائية 2 — حذف الملفات العشوائي (0x80002648)

يتلقى المعالج FUN_00013bb0 مسار Unicode، ويتحقق من InputBufferLength ≥ 0x208، ويفوض إلى FUN_00013c10. يفتح المعالج الفرعي الملف في وضع النواة (لا يوجد SeAccessCheck على رمز المتصل) ويرسل طلب IRP من نوع IRP_MJ_SET_INFORMATION مع FileInformationClass = 0xD (FileDispositionInformation)، مما يضع علامة على الملف للحذف. يمكن حذف أي ملف يمكن للنواة الوصول إليه بغض النظر عن أذونات NTFS.

البدائية 3 — حذف الملفات قيد الاستخدام (0x8000264C)

يصل المعالج FUN_000139d0 إلى FileObject->SectionObjectPointer (الإزاحة 0x28 في FILE_OBJECT) ويقوم مؤقتًا بتعيين حقلين إلى الصفر قبل إرسال طلب IRP للحذف:

root@kitploit:~
plVar1 = FileObject->SectionObjectPointer;
plVar1[2] = 0;  // DataSectionObject  → NULL
plVar1[0] = 0;  // ImageSectionObject → NULL

IofCallDriver(device, irp);
KeWaitForSingleObject(...);

// استعادة بعد الانتهاء
plVar1[2] = DataSectionObject_backup;
plVar1[0] = ImageSectionObject_backup;

يتحقق IopDeleteFile من هذه المؤشرات قبل الموافقة على FileDispositionInformation. بتعيينها إلى الصفر، يجعلها المعالج تظهر كما لو أن الملف غير معيّن في الذاكرة، متجاوزًا حماية الملفات قيد الاستخدام. يمكن لهذه البدائية حذف ملف ثنائي لعامل EDR قيد التشغيل من القرص دون إنهاء العملية أولاً.

سلسلة القضاء الكاملة على EDR:

root@kitploit:~
1. إنهاء عملية EDR     (IOCTL 0x800024B4)
2. حذف ثنائي EDR على القرص (IOCTL 0x8000264C) ← يعمل حتى إذا كان معيّنًا في الذاكرة
3. منع إعادة التشغيل     ← الملف التنفيذي لم يعد موجودًا على القرص

الاختبار التجريبي

مقاومة PPL (10 محاولات لكل فئة عملية)

PPL (العملية المحمية الخفيفة) هي التخفيف الوحيد في وقت التشغيل الذي يقاوم إنهاء العمليات القائم على ObOpenObjectByPointer(KernelMode) من هذا البرنامج التشغيل.

تحليل جدول الاستيراد


سيناريوهات ما بعد الاستغلال


الأدلة الجنائية

ما يبقى بعد --cleanup

معرف الحدث 7045 هو الأثر الوحيد الذي يبقى بعد دورة هجوم كاملة مع التنظيف. يحتوي على اسم الخدمة، ImagePath (مسار الثنائي الكامل)، نوع الخدمة، وختم زمني للإنشاء.

مسح السجل هو دليل ضد المهاجم

تنفيذ wevtutil cl System لإزالة معرف الحدث 7045 يولد معرف الحدث 1102 في قناة الأمان، مسجلاً من قام بمسح السجل ومتى. هذا يجعل التلاعب بالسجل قابلاً للكشف حتى لو تم تدمير الأثر الأصلي.

إجراء المهاجمالأثر الناتجالقناةالاستمرارية
wevtutil cl Systemتم حذف معرف الحدث 7045

قواعد الكشف

قاعدة Sigma

root@kitploit:~
title: BYOVD Attack via BdApiUtil64.sys (CVE-2024-51324)
id: a3f7c2e1-8b4d-4f9a-b6e3-2d1c9f8a7b5e
status: experimental
logsource:
  product: windows
  service: system
detection:
  selection_eventid:
    EventID: 7045
  selection_driver:
    - ServiceName|contains: 'BdApi'
    - ImagePath|contains: 'BdApiUtil64.sys'
  condition: selection_eventid and selection_driver
level: high
tags:
  - attack.defense_evasion
  - attack.t1562.001
  - attack.privilege_escalation
  - attack.t1068

قاعدة Sigma كاملة وتكوين Sysmon (معرف الحدث 6 حسب تجزئة SHA-256 + معرف الحدث 13 حسب مفتاح التسجيل) متوفرة في docs/detection/.


الوثائق الفنية

المستندالوصف
تحليل السبب الجذري

السياق الأكاديمي

هذا البحث جزء من رسالة الماجستير في الأمن السيبراني الخاصة بي (UCAM — Campus Internacional de Ciberseguridad)، بتحليل ثغرات N-Day عبر بيئات متعددة.

يمثل هذا CVE متجه برنامج تشغيل النواة في Windows / BYOVD ضمن الرسالة، مظهرًا:

  • تحليل سطح هجوم برنامج تشغيل النواة عبر تعداد IOCTL كامل
  • تصحيح تقني للأوصاف العامة السابقة (ZwOpenProcess غائب؛ الآلية الفعلية هي ObOpenObjectByPointer(KernelMode))
  • اكتشاف بدائيتين غير موثقتين سابقًا (استدعاءات IOCTL لحذف الملفات)
  • توصيف تجريبي لمقاومة PPL
  • تحليل الأثر الجنائي خلال دورة ما بعد التنظيف الكاملة
  • نقد درجات CVSS: الفجوة الموثقة بين الدرجة الرسمية لـ NVD وشدة الاستغلال المحلي

الكلمات المفتاحية: BYOVD · برنامج تشغيل النواة · IOCTL · Ghidra · إنهاء العملية · حذف الملفات · SectionObjectPointer · ObOpenObjectByPointer · التهرب الدفاعي · CVE-2024-51324


المؤلف

Annais Molina (devianntsec) — طالبة ماجستير في الأمن السيبراني

GitHub LinkedIn Email


شكر وتقدير

  • NVD / NIST — سجل CVE والدرجات
  • loldrivers.io — فهرس برامج التشغيل الضعيفة الذي يديره المجتمع
  • BlackSnufkin — مرجع PoC الأصلي
  • Cisco Talos — تحليل BYOVD لبرنامج الفدية DeadLock (ديسمبر 2025)

الترخيص

ترخيص MIT — انظر LICENSE


إخلاء مسؤولية قانوني

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

© 2026 Annais Molina · رسالة ماجستير في الأمن السيبراني
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
تنزيل الأداة
الجانبالوصف
تصحيح تقنيZwOpenProcess غائب عن جدول الاستيراد؛ الآلية الفعلية هي PsLookupProcessByProcessId + ObOpenObjectByPointer(KernelMode)، والتي تتجاوز SeAccessCheck دون شروط
ثلاث بدائيات موثقةإنهاء العملية (0x800024B4)، حذف الملفات العشوائي (0x80002648)، وحذف الملفات قيد الاستخدام مع تجاوز SectionObjectPointer (0x8000264C) — الأخيرتين ليس لهما توثيق عام سابق
أربعة أوضاع تشغيلLOADER، KILLER، SCANNER، وCLEANUP — إدارة دورة حياة كاملة
التحقق من SHA-256يتم التحقق من تجزئة برنامج التشغيل قبل أي محاولة تحميل
اختبار تجريبي لـ PPL10 محاولات لكل فئة عملية تؤكد أن PPL هي التخفيف الوحيد في وقت التشغيل
تحليل جنائيمعرف الحدث 7045 يبقى بعد التنظيف؛ معرف الحدث 1102 كأثر سجل يفضح نفسه
قواعد الكشفقاعدة Sigma وتكوين Sysmon (معرف الحدث 6 حسب التجزئة + معرف الحدث 13 حسب مفتاح التسجيل)
إعادة تقييم CVSSتوثيق الفجوة بين الدرجة الرسمية لـ NVD (3.8 منخفضة) وشدة الاستغلال المحلي المقدرة من قبل الباحث (7.8 عالية)
الوضعالأمرالصلاحياتالوصف
SCANNER--scanأي مستخدممعلومات حالة النظام وبرنامج التشغيل
LOADER--loadمسؤولتحميل برنامج التشغيل عبر إنشاء خدمة نواة
KILLER--kill / --pidأي مستخدمإنهاء العمليات عبر IOCTL
CLEANUP--cleanupمسؤولإيقاف خدمة برنامج التشغيل وحذفها
IOCTLالمعالجالبدائيةالتوثيق السابق
0x800024B4FUN_000152b0إنهاء العمليةجزئي (الآلية غير صحيحة)
0x80002648FUN_00013bb0حذف الملفات العشوائيلا يوجد
0x8000264CFUN_00013850حذف الملفات قيد الاستخدام (تجاوز SectionObjectPointer)لا يوجد
العمليةPPL نشطقابل للإنهاءالسبب
notepad.exeلا✅ 10/10لا حماية
regedit.exeلا✅ 10/10لا حماية
spoolsv.exeلا✅ 9/10إعادة تشغيل من SCM في حالة واحدة
MsMpEng.exeلا (لا يوجد PPL في بيئة الاختبار)✅ 8/10تباين طفيف في التوقيت
lsass.exeلا (RunAsPPL غائب)✅ 6/10تباين في الحالة
csrss.exeنعم (PPL غير مشروط)❌ 0/10STATUS_ACCESS_DENIED
موجودغائب
PsLookupProcessByProcessIdZwOpenProcess
ObOpenObjectByPointerSeAccessCheck
ZwTerminateProcessSePrivilegeCheck
PsGetCurrentProcess
IoGetRequestorProcess
السيناريوالهدفالتأثير
إنهاء EDR/مضاد الفيروساتMsMpEng.exe, SentinelAgent.exeالتهرب من الدفاعات
حذف ثنائي EDR (قيد الاستخدام)ملف EDR التنفيذي على القرصمنع إعادة التشغيل بعد الإنهاء
تعطيل سجلات التدقيقخدمة EventLogالتلاعب بالأدلة الجنائية
تجاوز العملية المحميةlsass.exe (بدون RunAsPPL)تسهيل الوصول إلى بيانات الاعتماد
تحضير برامج الفدية قبل التشفيرعوامل الأمانسلسلة تهرب دفاعي كاملة
الأثرالحالة بعد التنظيف
الخدمة في SCMتمت إزالتها
برنامج التشغيل في driverqueryتمت إزالته
كائن الجهازغير قابل للوصول
مفتاح التسجيلتمت إزالته
معرف الحدث 7045يبقى — لا يمكن إزالته بواسطة sc delete
System
—
wevtutil cl Systemتم توليد معرف الحدث 1102Securityدائم
التحكم في الوصول المفقود في معالج IRP_MJ_DEVICE_CONTROL
تحليل برنامج التشغيلتحليل Ghidra كامل، ثلاث بدائيات IOCTL، اختبار PPL، تحليل جدول الاستيراد
الجدول الزمني لـ CVEالتسلسل الزمني للاكتشاف، الإفصاح، والتصحيح