
Laboratorio de EDR a nivel de kernel de Windows de código abierto para comprender y probar métodos de detección contra inyección de procesos, volcado de credenciales y otros TTPs mediante interceptación de llamadas al sistema, callbacks del kernel y reglas YARA.
Best Edr Of The Market es un laboratorio de código abierto diseñado para implementar y comprender, desde una perspectiva de bajo nivel, los métodos de detección utilizados por los productos de seguridad de detección y respuesta de endpoints (EDR) y sus soluciones alternativas. Estas técnicas se basan principalmente en la explotación de las capacidades telemétricas de Windows NT para analizar dinámicamente el comportamiento de los procesos.
Por lo tanto, esta 3.ª versión permite detectar una gran cantidad de TTPs como PPID Spoofing (T1134.004), Credential Dumping (T1003.001), Process Hollowing/Ghosting/Tampering (T1055.012), inyección de código en memoria (T1055) incluyendo métodos como APC Queuing (T1055.004) y Thread Hijacking (T1055.003), Llamadas al Sistema Anormales (T1106), Operaciones de Persistencia en el Registro (T1547.001) y muchos más...
El proyecto incorpora un clon del repositorio protection-artifacts de @Elastic para el aprovisionamiento de reglas 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 <ruta al controlador> <ruta a la carpeta de reglas Yara>
Ejemplo con protection-artifacts:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe instala el controlador beotm.sys en el sistema por sí mismo, y solicita ejecutarse en modo administrador antes de iniciar. Una vez instalado el controlador, recupera y compila las reglas Yara proporcionadas en la ruta especificada en sus parámetros:

Una vez compiladas todas las reglas Yara, presione cualquier tecla y será redirigido al panel de interfaz de usuario:

Cuando beotm.exe finaliza, el servicio asociado al controlador permanece activo en el sistema, por lo que si ejecuta beotm.exe nuevamente, no es necesario reinstalar el controlador. El servicio se llama “BeotmDrv”:
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
Puede detener el servicio si lo desea, de la siguiente manera:
C:\Windows\system32> sc.exe stop BeotmDrv
Necesitará un entorno de prueba como una máquina virtual de Windows. La máquina debe estar configurada en modo TESTSIGNING.
Recomiendo una máquina virtual con Windows 10 22H2 (esta es la versión en la que se probó BEOTM).
También puede depurar el kernel de la máquina virtual remota si desea probar sus cambios. Se muestra un mensaje de depuración cuando se lanza BEOTM, informando si las devoluciones de llamada se han registrado exitosamente o no:
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
El proyecto fue diseñado en Visual Studio 2022. Asegúrese de tener el WDK actualizado y todos los requisitos previos, como las bibliotecas de mitigación de espectro x64. La documentación de Windows Hardware detalla cómo proceder.
El proyecto utiliza C++20.
El proyecto incluye funcionalidad de filtrado TCP/IP basada en NDIS aún no implementada. Si encuentra errores como "Symbol not found". Asegúrese de enlazar las siguientes bibliotecas en BestEdrOfTheMarketDriver -> Propiedades del Proyecto -> Enlazador -> Entrada -> Dependencias Adicionales:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
En el lado del usuario, asegúrese de instalar yara con vcpkg:
.\vcpkg\vcpkg.exe install yara
Así es como se obtiene el ejecutable vcpkg.exe:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
No dude en abrir un issue para cualquier cuelgue/error/BSOD que encuentre o cualquier falso positivo excesivo.
Por favor, proporcione la mayor cantidad de información posible para ayudarme a identificar la causa del error. Para ello, nada mejor que proporcionarme las condiciones en las que se reprodujo el error y, de paso, el artefacto que lo causó + la salida de analyze -v en WinDbg en modo de depuración del kernel, (si es posible).
Si fue uno de sus artefactos el que causó el cuelgue/error/BSOD, sería genial si también pudiera tener su código fuente.
El alcance de este proyecto es puramente educativo. El controlador debe ser utilizado únicamente en un entorno de prueba controlado.