
Открытая лаборатория EDR на уровне ядра Windows для понимания и тестирования методов обнаружения внедрения процессов, дампа учетных данных и других TTP с помощью перехвата системных вызовов, обратных вызовов ядра и правил YARA.
Best Edr Of The Market — это лаборатория с открытым исходным кодом, предназначенная для реализации и понимания, с низкоуровневой точки зрения, методов обнаружения, используемых продуктами Endpoint Detection & Response, а также способов их обхода. Эти методы в основном основаны на использовании телеметрических возможностей Windows NT для динамического анализа поведения процессов.
Таким образом, эта третья версия позволяет обнаруживать множество TTP, таких как спуфинг PPID (T1134.004), дамп учетных данных (T1003.001), hollowing, ghosting и tampering процессов (T1055.012), внедрение кода в память (T1055), включая постановку в очередь APC (T1055.004) и перехват потоков (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 отображается отладочное сообщение, информирующее о том, были ли обратные вызовы успешно зарегистрированы:
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 spectrum mitigation. В документации по оборудованию 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 в режиме отладки ядра (если возможно).
Если причиной сбоя/ошибки/BSOD стал один из ваших артефактов, было бы здорово, если бы я также мог получить его исходный код.
Сфера применения этого проекта исключительно образовательная. Драйвер предназначен для использования только в контролируемой тестовой среде.