
Open-Source-Windows-Kernel-Level-EDR-Lab zum Verständnis und Testen von Erkennungsmethoden gegen Process Injection, Credential Dumping und andere TTPs mittels System Call Interception, Kernel Callbacks und YARA-Regeln.
Best Edr Of The Market ist ein Open-Source-Labor, das entwickelt wurde, um die von Endpoint Detection & Response-Sicherheitsprodukten verwendeten Erkennungsmethoden und deren Umgehungen aus einer Low-Level-Perspektive zu implementieren und zu verstehen. Diese Techniken basieren hauptsächlich auf der Ausnutzung der telemetrischen Fähigkeiten von Windows NT, um das Prozessverhalten dynamisch zu analysieren.
Somit ermöglicht diese dritte Version die Erkennung einer Reihe von TTPs wie PPID Spoofing (T1134.004), Credential Dumping (T1003.001), process Hollowing/Ghosting/Tampering (T1055.012), Memory-Code-Injection (T1055) Methoden einschließlich APC Queuing (T1055.004) & Thread Hijacking (T1055.003), Abnormal System Calls (T1106), Registry Persistence Operations (T1547.001) und viele mehr...
Das Projekt enthält einen Klon des @Elastic-Repositorys protection-artifacts für die Bereitstellung von Yara-Regeln.
📁 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 <Pfad zum Treiber> <Pfad zum Yara-Regelordner>
Beispiel mit protection-artifacts:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe installiert den Treiber beotm.sys selbstständig auf dem System und verlangt, vor dem Start im Administratormodus ausgeführt zu werden. Sobald der Treiber installiert ist, ruft es die Yara-Regeln ab, die im angegebenen Pfad bereitgestellt werden, und kompiliert sie:

Sobald alle Yara-Regeln kompiliert wurden, drücken Sie eine beliebige Taste und Sie werden zum UI-Panel weitergeleitet:

Wenn beotm.exe beendet wird, bleibt der mit dem Treiber verbundene Dienst auf dem System aktiv. Wenn Sie beotm.exe erneut ausführen, muss der Treiber nicht neu installiert werden. Der Dienst heißt „BeotmDrv“:
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
Sie können den Dienst bei Bedarf wie folgt stoppen:
C:\Windows\system32> sc.exe stop BeotmDrv
Sie benötigen eine Testumgebung wie eine Windows-VM. Der Rechner muss im TESTSIGNING-Modus konfiguriert sein.
Ich empfehle eine Windows 10 22H2 VM (dies ist die Version, auf der BEOTM getestet wurde).
Sie können auch den Kernel der entfernten VM debuggen, wenn Sie Ihre Änderungen testen möchten. Eine Debug-Meldung wird angezeigt, wenn BEOTM gestartet wird, die informiert, ob die Callbacks erfolgreich registriert wurden:
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
Das Projekt wurde in Visual Studio 2022 entwickelt. Stellen Sie sicher, dass Sie das WDK-Upstream und alle Voraussetzungen wie die x64-Spectrum-Mitigierungsbibliotheken haben. Die Windows-Hardware-Dokumentation beschreibt, wie vorzugehen ist.
Das Projekt verwendet C++20.
Das Projekt enthält bisher nicht implementierte TCP/IP-Filterfunktionalität basierend auf NDIS. Wenn Sie Fehler wie „Symbol not found“ erhalten, stellen Sie sicher, dass Sie die folgenden Bibliotheken unter BestEdrOfTheMarketDriver -> Project Properties -> Linker -> Entry -> Additional Dependencies verknüpfen:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
Auf der Benutzerseite stellen Sie sicher, dass Sie yara mit vcpkg installieren:
.\vcpkg\vcpkg.exe install yara
So erhalten Sie die ausführbare Datei vcpkg.exe:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
Zögern Sie nicht, ein Issue zu eröffnen für jeden Absturz/Bug/BSOD, den Sie erleben, oder für übermäßige False Positives.
Bitte geben Sie mir so viele Informationen wie möglich, um mir zu helfen, die Ursache des Fehlers zu lokalisieren. Dazu gibt es nichts Besseres, als mir die Bedingungen mitzuteilen, unter denen der Fehler reproduziert wurde, und gegebenenfalls das Artefakt, das ihn verursacht hat, sowie die Ausgabe von analyze -v auf WinDbg im Kernel-Debugging-Modus (wenn möglich).
Wenn es eines Ihrer Artefakte war, das den Absturz/Bug/BSOD verursacht hat, wäre es cool, wenn ich auch dessen Quellcode haben könnte.
Der Umfang dieses Projekts ist rein lehrreich. Der Treiber darf nur in einer kontrollierten Testumgebung verwendet werden.