市场上最佳EDR(Best Edr Of The Market)是一个开源实验室,旨在从底层视角实现并理解端点检测与响应(EDR)安全产品所使用的检测方法及其绕过技术。这些技术主要基于利用Windows NT的遥测能力来动态分析进程行为。
因此,这第三个版本能够检测一系列TTP,例如PPID欺骗(T1134.004)、凭据转储(T1003.001)、进程空洞/幽灵/篡改(T1055.012)、内存代码注入(T1055)方法(包括APC排队(T1055.004)和线程劫持(T1055.003))、异常系统调用(T1106)、注册表持久化操作(T1547.001)等等……
该项目包含@Elastic的protection-artifacts仓库的克隆,用于提供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 <driver路径> <Yara规则文件夹路径>
使用protection-artifacts的示例:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe会自动在系统中安装beotm.sys驱动程序,并要求以管理员模式运行后再启动。驱动安装后,它会检索并编译在参数指定路径中提供的Yara规则:

所有Yara规则编译完成后,按任意键即可跳转到UI面板:

当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上游以及所有先决条件,例如x64频谱缓解库。Windows硬件文档中详细说明了操作步骤。
该项目使用C++20。
该项目包含尚未实现的基于NDIS的TCP/IP过滤功能。如果遇到“Symbol not found”类错误,请确保在BestEdrOfTheMarketDriver -> 项目属性 -> 链接器 -> 输入 -> 附加依赖项中链接以下库:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
.\vcpkg\vcpkg.exe install yara
获取vcpkg.exe可执行文件的方法如下:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
如果遇到任何崩溃/错误/蓝屏死机(BSOD)或过多的误报,请随时打开一个issue。
请尽可能多地提供信息以帮助我定位错误原因。为此,最好提供错误重现的条件,以及导致错误的样本和(如果可能)WinDbg内核调试模式下的 analyze -v 输出。
如果是您的样本导致了崩溃/错误/蓝屏死机,如果能同时提供其源代码就更好了。
本项目的范围纯粹是教育性的。该驱动程序仅可用于受控测试环境。