
Laboratório EDR de nível de kernel para Windows de código aberto para entender e testar métodos de detecção contra injeção de processos, roubo de credenciais e outros TTPs por meio de interceptação de chamadas de sistema, callbacks de kernel e regras YARA.
Best Edr Of The Market é um laboratório open-source projetado para implementar e entender, de uma perspectiva de baixo nível, os métodos de detecção utilizados por produtos de segurança de Endpoints Detection & Response e suas soluções alternativas. Essas técnicas são baseadas principalmente na exploração das capacidades telemétricas do Windows NT para analisar dinamicamente o comportamento dos processos.
Assim, esta 3ª versão possibilita detectar um monte de TTPs como PPID Spoofing (T1134.004), Credential Dumping (T1003.001), process Hollowing/Ghosting/Tampering (T1055.012), métodos de injeção de código em memória (T1055) incluindo enfileiramento de APC (T1055.004) & Thread Hijacking (T1055.003), Chamadas de Sistema Anormais (T1106), Operações de Persistência no Registro (T1547.001) e muitos mais...
O projeto incorpora um clone do repositório protection-artifacts do @Elastic para o fornecimento de regras 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>
Exemplo com protection-artifacts:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe instala o driver beotm.sys no sistema por si só, e solicita ser executado em modo administrador antes de iniciar. Uma vez que o driver está instalado, ele recupera e compila as regras Yara fornecidas no caminho especificado em seus parâmetros:

Assim que todas as regras Yara forem compiladas, pressione qualquer tecla e você será redirecionado ao painel da UI:

Quando beotm.exe é encerrado, o serviço associado ao driver permanece ativo no sistema, então se você executar beotm.exe novamente, não há necessidade de reinstalar o driver. O serviço é chamado “BeotmDrv”:
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
Você pode parar o serviço se desejar, da seguinte forma:
C:\Windows\system32> sc.exe stop BeotmDrv
Você precisará de um ambiente de teste, como uma máquina virtual Windows. A máquina deve ser configurada no modo TESTSIGNING.
Recomendo uma VM Windows 10 22H2 (esta é a versão na qual o BEOTM foi testado).
Você também pode depurar o kernel da VM remota se quiser testar suas alterações. Uma mensagem de depuração é exibida quando o BEOTM é iniciado, informando se os callbacks foram registrados com sucesso ou não:
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
O projeto foi desenvolvido no Visual Studio 2022. Certifique-se de ter o WDK upstream e todos os pré-requisitos, como as bibliotecas de mitigação de espectro x64. A documentação de Hardware do Windows detalha como proceder.
O projeto usa C++20.
O projeto inclui funcionalidade de filtragem TCP/IP ainda não implementada baseada em NDIS. Se você encontrar erros do tipo "Symbol not found". Certifique-se de vincular as seguintes bibliotecas em BestEdrOfTheMarketDriver -> Propriedades do Projeto -> Vinculador -> Entrada -> Dependências Adicionais:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
No lado do usuário, certifique-se de instalar yara com vcpkg:
.\vcpkg\vcpkg.exe install yara
Veja como obter o executável vcpkg.exe:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Sinta-se à vontade para abrir uma issue para qualquer travamento/bug/BSOD que você encontrar ou falsos positivos excessivos.
Por favor, forneça o máximo de informações possível para me ajudar a identificar a causa do erro. Para isso, nada melhor do que me fornecer as condições sob as quais o bug foi reproduzido e, incidentalmente, o artefato que o causou + a saída de analyze -v no WinDbg em modo de depuração de kernel (se possível).
Se foi um dos seus artefatos que causou o travamento/bug/BSOD, seria legal se eu pudesse também ter seu código-fonte.
O escopo deste projeto é puramente educacional. O driver deve ser usado apenas em um ambiente de teste controlado.