
오픈 소스 Windows 커널 수준 EDR 연구실로, 시스템 콜 인터셉트, 커널 콜백 및 YARA 규칙을 통해 프로세스 인젝션, 자격 증명 덤핑 및 기타 TTP에 대한 탐지 방법을 이해하고 테스트할 수 있습니다.
Best Edr Of The Market은 엔드포인트 탐지 및 대응(EDR) 보안 제품에서 사용하는 탐지 방법과 그 우회 기법을 낮은 수준의 관점에서 구현하고 이해하기 위해 설계된 오픈소스 실습 환경입니다. 이 기법들은 주로 Windows NT의 원격 측정 기능을 활용하여 프로세스 동작을 동적으로 분석하는 데 기반합니다.
따라서 이 3번째 버전은 PPID Spoofing(T1134.004), Credential Dumping(T1003.001), Process Hollowing/Ghosting/Tampering(T1055.012), APC 큐잉(T1055.004) 및 Thread Hijacking(T1055.003)을 포함한 메모리 코드 인젝션(T1055) 방식, 비정상 시스템 호출(T1106), 레지스트리 지속성 작업(T1547.001) 등 다양한 TTP를 탐지할 수 있습니다.
이 프로젝트는 Yara 규칙 제공을 위해 @Elastic의 protection-artifacts 저장소의 클론을 포함합니다.
📁 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 <driver 경로> <Yara 규칙 폴더 경로>
protection-artifacts를 사용한 예시:
.\beotm.exe .\beotm.sys .\protection-artifacts\yara\rules\
beotm.exe는 자체적으로 beotm.sys 드라이버를 시스템에 설치하며, 시작하기 전에 관리자 모드로 실행하도록 요청합니다. 드라이버가 설치되면 매개변수에 지정된 경로에서 Yara 규칙을 가져와 컴파일합니다:

모든 Yara 규칙이 컴파일되면 아무 키나 누르면 UI 패널로 이동합니다:

beotm.exe가 종료되면 드라이버와 연결된 서비스는 시스템에 계속 활성 상태로 유지되므로, beotm.exe를 다시 실행할 때 드라이버를 다시 설치할 필요가 없습니다. 서비스 이름은 “BeotmDrv”입니다:
C:\Windows\system32>sc.exe query type=driver | findstr /i "beotm"
SERVICE_NAME: BeotmDrv
DISPLAY_NAME: BeotmDrv
원하는 경우 다음과 같이 서비스를 중지할 수 있습니다:
C:\Windows\system32> sc.exe stop BeotmDrv
Windows 가상 머신과 같은 테스트 환경이 필요합니다. 머신은 TESTSIGNING 모드로 구성되어 있어야 합니다.
Windows 10 22H2 VM을 권장합니다(BEOTM이 테스트된 버전입니다).
변경 사항을 테스트하려면 원격 VM 커널을 디버깅할 수도 있습니다. BEOTM이 시작될 때 콜백이 성공적으로 등록되었는지 여부를 알려주는 디버그 메시지가 표시됩니다:
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
이 프로젝트는 Visual Studio 2022에서 설계되었습니다. WDK 업스트림과 x64 스펙트럼 완화 라이브러리 등 모든 필수 구성 요소가 설치되어 있는지 확인하십시오. Windows 하드웨어 설명서에 자세한 방법이 설명되어 있습니다.
이 프로젝트는 C++20을 사용합니다.
이 프로젝트에는 아직 구현되지 않은 NDIS 기반 TCP/IP 필터링 기능이 포함되어 있습니다. "Symbol not found"와 같은 오류가 발생하는 경우 BestEdrOfTheMarketDriver -> 프로젝트 속성 -> 링커 -> 입력 -> 추가 종속성에서 다음 라이브러리를 링크해야 합니다:
$(DDK_LIB_PATH)\fwpkclnt.lib
$(DDK_LIB_PATH)\ndis.lib
$(SDK_LIB_PATH)\uuid.lib
사용자 측에서는 yara를 vcpkg와 함께 설치해야 합니다:
.\vcpkg\vcpkg.exe install yara
vcpkg.exe 실행 파일을 얻는 방법은 다음과 같습니다:
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
충돌, 버그, BSOD 또는 과도한 오탐지가 발생하는 경우 이슈를 열어 주십시오.
오류 원인을 파악하는 데 도움이 되도록 가능한 한 많은 정보를 제공해 주십시오. 이를 위해 버그가 재현된 조건과 그 원인이 된 아티팩트, 그리고 (가능하다면) WinDbg 커널 디버깅 모드에서 analyze -v의 출력을 제공해 주시면 가장 좋습니다.
만약 버그/충돌/BSOD의 원인이 여러분의 아티팩트 중 하나였다면, 해당 소스 코드도 함께 제공해 주시면 감사하겠습니다.
이 프로젝트의 범위는 순전히 교육적인 목적입니다. 드라이버는 통제된 테스트 환경에서만 사용해야 합니다.