
Laboratorio EDR open-source a livello kernel per Windows, progettato per comprendere e testare metodi di rilevamento contro iniezione di processi, dumping delle credenziali e altre TTP tramite intercettazione delle chiamate di sistema, callback del kernel e regole YARA.
Best Edr Of The Market è un laboratorio open-source progettato per implementare e comprendere, da una prospettiva di basso livello, i metodi di rilevamento utilizzati dai prodotti di sicurezza Endpoint Detection & Response e le loro soluzioni alternative. Queste tecniche si basano principalmente sullo sfruttamento delle capacità telemetriche di Windows NT per analizzare dinamicamente il comportamento dei processi.
Pertanto, questa terza versione permette di rilevare una serie di TTP come PPID Spoofing (T1134.004), Credential Dumping (T1003.001), process Hollowing/Ghosting/Tampering (T1055.012), metodi di iniezione di codice in memoria (T1055) inclusi APC queuing (T1055.004) e Thread Hijacking (T1055.003), System Call anomale (T1106), operazioni di persistenza nel registro (T1547.001) e molti altri...
Il progetto incorpora un clone del repository protection-artifacts di @Elastic per la fornitura di regole 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>
Esempio con protection-artifacts:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe installa da solo il driver beotm.sys sul sistema e richiede di essere eseguito in modalità amministratore prima di avviarsi. Una volta installato il driver, recupera e compila le regole Yara fornite nel percorso specificato nei suoi parametri:

Una volta compilate tutte le regole Yara, premi un tasto qualsiasi e verrai reindirizzato al pannello UI:

Quando beotm.exe viene terminato, il servizio associato al driver rimane attivo sul sistema, quindi se esegui di nuovo beotm.exe, non è necessario reinstallare il driver. Il servizio si chiama “BeotmDrv”:
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
Puoi fermare il servizio se lo desideri, come segue:
C:\Windows\system32> sc.exe stop BeotmDrv
Avrai bisogno di un ambiente di test come una macchina virtuale Windows. La macchina deve essere configurata in modalità TESTSIGNING.
Consiglio una VM Windows 10 22H2 (questa è la versione su cui BEOTM è stato testato).
Puoi anche eseguire il debug del kernel della VM remota se desideri testare le tue modifiche. Un messaggio di debug viene visualizzato quando BEOTM viene avviato, informando se i callback sono stati registrati con successo o meno:
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
Il progetto è stato progettato in Visual Studio 2022. Assicurati di avere il WDK upstream e tutti i prerequisiti, come le librerie di mitigazione dello spettro x64. La documentazione di Windows Hardware spiega come procedere.
Il progetto utilizza C++20.
Il progetto include funzionalità di filtraggio TCP/IP non ancora implementate basate su NDIS. Se incontri errori come "Symbol not found". Assicurati di collegare le seguenti librerie in BestEdrOfTheMarketDriver -> Project Properties -> Linker -> Input -> Additional Dependencies:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
Dal lato utente, assicurati di installare yara con vcpkg:
.\vcpkg\vcpkg.exe install yara
Ecco come ottenere l'eseguibile vcpkg.exe:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Sentiti libero di aprire un issue per qualsiasi crash/bug/BSOD che incontri o per falsi positivi eccessivi.