
Laboratoire EDR open-source de niveau noyau Windows pour comprendre et tester les méthodes de détection contre l'injection de processus, le vol d'identifiants et autres TTPs via l'interception d'appels système, les callbacks du noyau et les règles YARA.
Best Edr Of The Market est un laboratoire open-source conçu pour implémenter et comprendre, d'un point de vue bas niveau, les méthodes de détection utilisées par les produits de sécurité Endpoint Detection & Response et leurs contournements. Ces techniques sont principalement basées sur l'exploitation des capacités télémétriques de Windows NT pour analyser dynamiquement le comportement des processus.
Ainsi, cette 3ème version permet de détecter un ensemble de TTPs tels que PPID Spoofing (T1134.004), Credential Dumping (T1003.001), process Hollowing/Ghosting/Tampering (T1055.012), memory code injection (T1055) méthodes incluant l'APC queuing (T1055.004) & Thread Hijacking (T1055.003), Abnormal System Calls (T1106), Registry Persistence Operations (T1547.001) et bien d'autres...
Le projet intègre un clone du dépôt protection-artifacts de @Elastic pour la fourniture de règles 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>
Exemple avec protection-artifacts :
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe installe lui-même le pilote beotm.sys sur le système, et demande à être exécuté en mode administrateur avant de démarrer. Une fois le pilote installé, il récupère et compile les règles Yara fournies dans le chemin spécifié dans ses paramètres :

Une fois toutes les règles Yara compilées, appuyez sur une touche et vous serez redirigé vers le panneau d'interface :

Lorsque beotm.exe est arrêté, le service associé au pilote reste actif sur le système, donc si vous exécutez à nouveau beotm.exe, il n'est pas nécessaire de réinstaller le pilote. Le service s'appelle « BeotmDrv » :
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
Vous pouvez arrêter le service si vous le souhaitez, comme suit :
C:\Windows\system32> sc.exe stop BeotmDrv
Vous aurez besoin d'un environnement de test tel qu'une machine virtuelle Windows. La machine doit être configurée en mode TESTSIGNING.
Je recommande une VM Windows 10 22H2 (c'est la version sur laquelle BEOTM a été testé).
Vous pouvez également déboguer le noyau de la VM distante si vous souhaitez tester vos modifications. Un message de débogage s'affiche au lancement de BEOTM, indiquant si les callbacks ont été enregistrés avec succès ou non :
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
Le projet a été conçu dans Visual Studio 2022. Assurez-vous d'avoir le WDK amont et tous les prérequis, comme les bibliothèques d'atténuation spectre x64. La documentation Windows Hardware détaille la procédure à suivre.
Le projet utilise C++20.
Le projet inclut une fonctionnalité de filtrage TCP/IP basée sur NDIS non encore implémentée. Si vous rencontrez des erreurs du type « Symbol not found ». Assurez-vous de lier les bibliothèques suivantes dans BestEdrOfTheMarketDriver -> Propriétés du projet -> Éditeur de liens -> Entrée -> Dépendances supplémentaires :
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
.\vcpkg\vcpkg.exe install yara
Voici comment obtenir l'exécutable vcpkg.exe :
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
N'hésitez pas à ouvrir un ticket pour tout crash/bogue/BSOD que vous rencontrez ou pour tout faux positif excessif.
Veuillez me fournir autant d'informations que possible pour m'aider à identifier la cause de l'erreur. Pour ce faire, rien de mieux que de me fournir les conditions dans lesquelles le bug a été reproduit et, accessoirement, l'artefact qui l'a provoqué + la sortie de analyze -v sur WinDbg en mode débogage noyau (si possible).
Si l'un de vos artefacts a causé le crash/bogue/BSOD, ce serait cool si je pouvais aussi avoir son code source.
La portée de ce projet est purement éducative. Le pilote doit être utilisé uniquement dans un environnement de test contrôlé.