HookDump
تفريغ خطافات وظائف EDR
يرجى الرجوع إلى منشور مدونة Zeroperil لمزيد من المعلومات https://zeroperil.co.uk/hookdump/
بناء المصدر
- من أجل بناء هذا، ستحتاج إلى Visual Studio 2019 (إصدار المجتمع كافٍ) وCMake. سيقوم ملف الدفعة Configure.bat بإنشاء دليلين بناء مع حلول Visual Studio.
- قد يتم بناء المشروع باستخدام MinGW مع سطر أوامر CMake الصحيح، هذا غير مُختبر YMMV.
- هناك اعتماد على مفكك zydis، لذا تأكد من تحديث الوحدات الفرعية في git قبل تهيئة المشروع.
- يوجد مشروع 32 بت و64 بت، قد تجد أن EDR يخطف وظائف مختلفة في 32/64 بت لذا بناء وتشغيل كلا الملفين التنفيذيين قد يوفر نتائج أكثر اكتمالاً
ملاحظات
- بعض أنظمة EDR تستبدل كعب WOW في بنية TEB (خاصة Wow32Reserved) من أجل خطف استدعاءات النظام للثنائيات 32 بت. في هذه الحالة قد ترى صفر خطاف حيث لا توجد تعليمات قفز في NTDLL. على الأرجح سترى خطافات في إصدار x64 حيث يتم استخدام تعليمة استدعاء النظام syscall بدلاً من كعب WOW
- لاحظنا أن Windows Defender لا يستخدم أي خطافات في وضع المستخدم
- تم تصميم هذه الأداة لتُشغل كمستخدم قياسي، لا يلزم رفع الصلاحيات
أنواع الخطافات المكتشفة
JMP
تم تصحيح تعليمة قفز في الوظيفة لإعادة توجيه تدفق التنفيذ
WOW
كشف كعب WOW64 لاستدعاء النظام الذي يتم خطفه، مما يسمح بتصفية جميع استدعاءات النظام
EAT
العنوان في جدول عناوين التصدير لا يتطابق مع العنوان في جدول عناوين التصدير في النسخة على القرص
GPA
خطاف GetProcAddress، ميزة تجريبية، يتم إخراجها فقط في وضع الإسهاب، عندما لا تتطابق نتيجة GetProcAddress مع عنوان الوظيفة الذي تم حله يدويًا. YYMV مع هذا ويجب توخي الحذر للتحقق من النتائج
التحقق
الطريقة الوحيدة للتحقق حقًا من عمل البرنامج بشكل صحيح هي التحقق في مصحح الأخطاء من وجود الخطافات. إذا كنت تحصل على نتيجة صفر خطاف وتتوقع رؤية شيء مختلف، فتحقق أولاً من هذا في مصحح الأخطاء وتواصل معنا من فضلك.