
أداة مساعدة لبرامج تشغيل نواة Windows تستغل برامج تشغيل موقّعة ضعيفة (BYOVD) لتجاوز DSE، وتحميل برامج تشغيل غير موقّعة، واختطاف العمليات المحمية، وتفريغ ذاكرة العمليات.
الغرض من هذه الأداة هو توفير طريقة بسيطة لاستكشاف نواة/مكونات Windows دون الحاجة إلى إعداد مكثف أو مصحح أخطاء محلي. تتضمن الميزات:
مثال:
التشغيل على Windows 11 24H2*
التشغيل على Windows 10 20H2*
تم التجميع والتشغيل على Windows 8.1*
التشغيل على Windows 7 SP1 مع التحديثات الكاملة (نسخة مجمّعة مسبقاً)*
التشغيل على Windows 10 19H2 (نسخة مجمّعة مسبقاً، SecureBoot مفعّل)*
نظراً لطريقة التحميل غير المعتادة التي لا تتضمن محمّل النواة القياسي، بل تستخدم الكتابة فوق الوحدات المحمّلة بالفعل باستخدام shellcode، هناك بعض القيود:
هذا يعني أنه لا يمكنك استخدام المعاملات المحددة في DriverEntry الخاصة بك لأنها لن تكون صالحة. وهذا يعني أيضاً أنه لا يمكنك تحميل أي برامج تشغيل بل فقط تلك المصممة خصيصاً، أو تحتاج إلى تعديل روتينات shellcode.
لا يوجد كود SEH في x64. بدلاً من ذلك، لديك جدول من مناطق try/except/finally موصوفة بمؤشر في رأس PE. إذا حدث استثناء، فقد يؤدي ذلك إلى شاشة زرقاء (BSOD).
لا يمكن للكود المعيّن إلغاء تحميل نفسه; ومع ذلك، يمكنك تحرير جميع الموارد المخصصة بواسطة الكود المعيّن الخاص بك. يجب تعيين DRIVER_OBJECT->DriverUnload إلى NULL.
إذا كان مشروعك يحتاج إلى تبعية وحدة أخرى، يجب عليك إعادة كتابة جزء المحمّل هذا.
بسبب طريقة التحميل غير المعتادة، لن يكون برنامج التشغيل المعيّن داخل PsLoadedModulesList. هذا يعني أن أي callback مسجل بواسطة هذا الكود سيكون معالجه موجوداً في الذاكرة خارج هذه القائمة. قد يكتشف PatchGuard ذلك ويتسبب في تعطل النظام.
بشكل عام، إذا كنت تريد معرفة ما يجب ألا تفعله في النواة، انظر إلى https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo الذي يحتوي على بعض الأمثلة على الأشياء المحظورة.
هذه الأداة لا تغيّر (ولن تغيّر في المستقبل) البنى الداخلية لـ Windows مثل MmUnloadedDrivers و/أو PiDDBCacheTable. وذلك لأن:
أنت تستخدمه على مسؤوليتك الخاصة. قد تصنّف بعض برامج مكافحة الفيروسات الكسولة هذه الأداة كـ hacktool/malware.
القائمة الكاملة بما في ذلك جميع البيانات الوصفية متاحة هنا:
قد يُضاف المزيد من الموفّرين في المستقبل.
يستخدم برامج تشغيل معروفة بأنها ضعيفة (أو ثقوب أمنية بحكم التصميم) من برامج شرعية للوصول إلى ذاكرة النواة العشوائية باستخدام أوليات القراءة/الكتابة.
اعتماداً على الأمر، سيعمل KDU إما كـ TDL/DSEFix أو يعدّل كائنات عمليات وضع النواة (EPROCESS).
عند وضع -map، سيستخدم KDU لمعظم الموفّرين المتاحين افتراضياً برنامج تشغيل موقّع من طرف ثالث من SysInternals Process Explorer ويختطفه بوضع shellcode محمّل صغير داخل روتين IRP_MJ_DEVICE_CONTROL الخاص به.
يستخدم KDU shellcode لتعيين برامج التشغيل المدخلة وتنفيذ DriverEntry الخاصة بها. هناك بعض متغيرات shellcode المدمجة في KDU. يتم استخدام Shellcode V1 و V2 و V3 مع برنامج تشغيل ضحية من طرف ثالث (Process Explorer، إلخ.).
يأتي KDU مع الكود المصدري الكامل. للبناء من المصدر، تحتاج إلى Microsoft Visual Studio 2019 أو أحدث. لبناء برامج التشغيل، تحتاج إلى Microsoft Windows Driver Kit 10 و/أو أعلى.
تشمل الملفات التنفيذية العاملة الكاملة: kdu.exe (الملف التنفيذي الرئيسي) و drv64.dll (قاعدة بيانات برامج التشغيل). يجب أن تكون في نفس الدليل مع تمكين وصول القراءة/الكتابة لـ kdu.exe. يجب إلغاء حظر جميع الملفات التنفيذية من منطقة النظام.
GenAsIo2Unlock هي أداة خاصة تُستخدم لتوليد موارد "إلغاء القفل" المطلوبة للعمل مع برنامج تشغيل AsIO2. الكود المصدري الكامل لهذه الأداة مضمن في Source\Utils\GenAsIo2Unlock.
إذا واجهت خطأً أو حالة عدم توافق أثناء استخدام KDU مع برامج أو نظام تشغيل من طرف ثالث، فلا تتردد في ملء تقرير. ومع ذلك، إذا كانت حالة عدم التوافق هذه ناتجة عن أفعالك الخاصة، فسيتم تجاهل هذه التقارير.