
مختبر EDR مفتوح المصدر على مستوى نواة ويندوز لفهم واختبار طرق الكشف ضد حقن العمليات، تفريغ بيانات الاعتماد، وTTPs الأخرى عبر اعتراض استدعاءات النظام، استدعاءات النواة العكسية، وقواعد YARA.
Best Edr Of The Market هو مختبر مفتوح المصدر مصمم لتنفيذ وفهم، من منظور منخفض المستوى، طرق الكشف المستخدمة من قبل منتجات أمان كشف والاستجابة للنقاط الطرفية (EDR) والحيل التفافية لها. تعتمد هذه التقنيات بشكل أساسي على استغلال قدرات التتبع عن بُعد (Telemetry) الخاصة بنظام Windows NT لتحليل سلوك العمليات بشكل ديناميكي.
وبالتالي، فإن هذا الإصدار الثالث يجعل من الممكن اكتشاف مجموعة من تقنيات وتكتيكات وإجراءات الخصوم (TTPs) مثل PPID Spoofing (T1134.004)، تفريغ بيانات الاعتماد (T1003.001)، Process Hollowing/Ghosting/Tampering (T1055.012)، طرق حقن الكود في الذاكرة (T1055) بما في ذلك APC queuing (T1055.004) و Thread Hijacking (T1055.003)، استدعاءات النظام غير الطبيعية (T1106)، عمليات الثبات في السجل (T1547.001) وغيرها الكثير...
يدمج المشروع نسخة مستنسخة من مستودع protection-artifacts الخاص بـ @Elastic لتوفير قواعد Yara.
📁 beotmv3
⚙️ beotm.sys
📄 beotm.exe
📁 protection-artifacts/
📁 rules/
📁 yara/
📄 Windows_Trojan_Metasploit.yar
📄 Windows_Hacktool_Mimikatz.yar
📄 Windows_Hacktool_Rubeus.yar
📄 ...
📄 libcrypto-3-x64.dll
beotm.exe <path to driver> <path to Yara rules folder>
مثال باستخدام protection-artifacts:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
يقوم beotm.exe بتثبيت برنامج التشغيل beotm.sys على النظام بنفسه، ويطلب تشغيله في وضع المسؤول قبل البدء. بمجرد تثبيت برنامج التشغيل، يقوم باسترداد وتجميع قواعد Yara المقدمة في المسار المحدد في معلماته:

بمجرد تجميع جميع قواعد Yara، اضغط على أي مفتاح وستتم إعادة توجيهك إلى لوحة واجهة المستخدم:

عند إنهاء beotm.exe، تبقى الخدمة المرتبطة ببرنامج التشغيل نشطة على النظام، لذلك إذا قمت بتشغيل beotm.exe مرة أخرى، فلا حاجة لإعادة تثبيت برنامج التشغيل. تسمى الخدمة "BeotmDrv":
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
يمكنك إيقاف الخدمة إذا أردت، كالتالي:
C:\Windows\system32> sc.exe stop BeotmDrv
ستحتاج إلى بيئة اختبار مثل جهاز افتراضي يعمل بنظام Windows. يجب تكوين الجهاز في وضع TESTSIGNING.
أوصي باستخدام جهاز افتراضي بنظام Windows 10 22H2 (هذا هو الإصدار الذي تم اختبار BEOTM عليه).
يمكنك أيضًا تصحيح نواة الجهاز الافتراضي البعيد إذا كنت ترغب في اختبار تغييراتك. يتم عرض رسالة تصحيح عند تشغيل BEOTM، تُعلم ما إذا تم تسجيل عمليات الاسترجاع (callbacks) بنجاح أم لا:
1: kd> g
____ _ _____ ____ ____ ___ __ _____ _
| __ ) ___ ___| |_ | ____| _ \| _ \ / _ \ / _| |_ _| |__ ___
| _ \ / _ \/ __| __| | _| | | | | |_) | | | | | |_ | | | '_ \ / _ \
| |_) | __/\__ \ |_ | |___| |_| | _ < | |_| | _| | | | | | | __/
|____/_\___||___/\__| |_____|____/|_| \_\ \___/|_| |_| |_| |_|\___| v3
| \/ | __ _ _ __| | _____| |_
| |\/| |/ _` | '__| |/ / _ \ __|
| | | | (_| | | | < __/ |_ Yazidou - github.com/Xacone
|_| |_|\__,_|_| |_|\_\___|\__|
[+] Win Kernel Structs offsets initialized
[+] Altsyscall handler registered !
[+] PsSetCreateThreadNotifyRoutine success
[+] PsSetCreateProcessNotifyRoutineEx success
[+] PsSetLoadImageNotifyRoutine success
[+] ObRegisterCallbacks 1 success
[+] CmRegisterCallbackEx success
[+] Driver loaded
تم تصميم المشروع في Visual Studio 2022. تأكد من حصولك على WDK upstream وجميع المتطلبات الأساسية، مثل مكتبات تخفيف طيف x64. توثق وثائق أجهزة Windows كيفية المتابعة.
يستخدم المشروع C++20.
يتضمن المشروع وظيفة تصفية TCP/IP غير مطبقة بعد تعتمد على NDIS. إذا واجهت أخطاء مثل "Symbol not found". تأكد من ربط المكتبات التالية في BestEdrOfTheMarketDriver -> Project Properties -> Linker -> Entry -> Additional Dependencies:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
على جانب المستخدم، تأكد من تثبيت yara باستخدام vcpkg:
.\vcpkg\vcpkg.exe install yara
إليك كيفية الحصول على الملف التنفيذي vcpkg.exe:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
لا تتردد في فتح مشكلة (issue) لأي عطل/خلل/شاشة زرقاء (BSOD) تواجهها أو أي نتائج إيجابية خاطئة مفرطة.
يرجى تزويدي بأكبر قدر ممكن من المعلومات لمساعدتي في تحديد سبب الخطأ. للقيام بذلك، لا شيء أفضل من تزويدي بالشروط التي تم فيها إعادة إنتاج الخلل، وبالمناسبة، الأداة التي تسببت في ذلك + مخرجات analyze -v على WinDbg في وضع تصحيح النواة (إذا أمكن).
إذا كانت إحدى أدواتك هي التي تسببت في العطل/الخلل/الشاشة الزرقاء، فسيكون رائعًا إذا تمكنت من الحصول على الكود المصدري الخاص بها أيضًا.
نطاق هذا المشروع تعليمي بحت. يجب استخدام برنامج التشغيل في بيئة اختبار محكومة فقط.