BestEdrOfTheMarket Save

Little user-mode AV/EDR evasion lab for training & learning purposes

Project README

Best EDR Of The Market (BEOTM) 🐲

Little AV/EDR Evasion Lab for training & learning purposes. (πŸ—οΈ under construction..)​


BestEDROfTheMarket is a naive user-mode EDR (Endpoint Detection and Response) project, designed to serve as a testing ground for understanding and bypassing EDR's user-mode detection methods that are frequently used by these security solutions.
These techniques are mainly based on a dynamic analysis of the target process state (memory, API calls, etc.),

➑️ What's new in Best EDR Of The Market v1.1.0 🏹

Defensive Techniques βš”οΈβ€‹

In progress:

List of hooks πŸͺ

NTDLL hooks (More hooks on road..)


Function Description
NtProtectVirtualMemory Change the protection on a region of committed pages in the virtual address space of a process using native API.
NtWriteVirtualMemory Write data to the memory of a specified process using native API.
NtMapViewOfSection Create a view of a section of a file mapping into the address space of the calling process using native API.

Kernel32/Base hooks


Function Description
VirtualAlloc Allocate memory in the virtual address space of a process.
WriteProcessMemory Write data to the memory of a specified process.
VirtualFree Release or decommit a region of memory previously allocated.
VirtualFreeEx Release or decommit a region of memory in a specified process.
VirtualProtect Change the protection on a region of committed pages in the virtual address space of a process.
MapViewOfFile Create a view of a file mapping into the address space of the calling process.
VirtualProtectEx Change the protection on a region of committed pages in the virtual address space of a specified process.
UnmapViewOfFile Unmap a mapped view of a file from the calling process's address space.
VirtualQuery Retrieve information about a range of pages in the virtual address space of a specified process.
ReadProcessMemory Read data from the memory of a specified process.
InternetOpenUrlW Opens a URL for reading on the internet.
InternetReadFile Reads data from a handle opened by the InternetOpenUrl or InternetOpenUrlW function.
InternetReadFileExW Reads data from a handle opened by the InternetOpenUrl or InternetOpenUrlW function, and can also return additional data.
InternetOpenW Initializes an application's use of the WinINet functions.

Import Address Table (IAT) Hooks


Function Name Purpose
WriteProcessMemory Writes data to an area of memory in a specified process
ReadProcessMemory Reads data from an area of memory in a specified process
VirtualAlloc Reserves or commits a region of memory within the virtual address space of a process
VirtualAllocEx Reserves or commits a region of memory within the virtual address space of a specified process
VirtualProtect Changes the access protection for a region of committed pages in the virtual address space of the calling process
HeapAlloc Allocates a block of memory from a heap
HeapFree Frees a memory block allocated from a heap
LoadLibraryA Loads the specified module into the address space of the calling process
LocalFree Frees the specified local memory object and invalidates its handle
VirtualQuery Retrieves information about a range of pages in the virtual address space of a specified process
InternetOpenW Initializes an application's use of the WinINet functions
InternetOpenUrlW Opens a URL
InternetReadFile Reads data from a handle opened by the InternetOpenUrl or InternetOpenUrlEx function
VirtualProtectEx Changes the protection on a region of committed pages in the virtual address space of a specified process

Usage πŸ“œ

Usage: BestEdrOfTheMarket.exe [args]


      /help : Shows this help message and quit
      /v : Verbosity  
      /p : Target process path (PID required if not specified)
      /yara : Enabling scanning YARA rules canning
      /iat : IAT hooking
      /stack : Threads call stack monitoring
      /nt : Inline Nt-level hooking
      /k32 : Inline Kernel32/Kernelbase hooking
      /ssn : SSN crushing
      /direct : Direct syscalls detection
      /indirect : Indirect syscalls detection
      /heap : Enabling heap regions analysis (to use with /iat, /k32 or /nt)

Examples⚑

Low-Level Shellcode Injector Detection (Stack analysis + YARA)
BestEdrOfTheMarket.exe /stack /p C:\Samples\MediumLevelDropper.exe /yara /v


Early Bird APC Queue Injector detection (Kernel32 hooking + Normal patterns)
BestEdrOfTheMarket.exe /p C:\Samples\apc_injector.exe /k32 /yara /v


Early Bird APC Queue Injector detection (IAT hooking + YARA)
BestEdrOfTheMarket.exe /p C:\Users\1234Y\apc_injector\x64\Debug\apc_injector.exe /iat /yara


Low level Early Bird APC Queue Injector detection (NT-level hooking + Normal patterns)
BestEdrOfTheMarket.exe /p C:\Samples\low_level_apc_inector.exe /nt


Indirect Syscalls Detection (Stack pointer sanity check)
Hell's Hall (@Maldev-Academy) Github repository

BestEdrOfTheMarket.exe /p C:\Malwares\HellsHall.exe /indirect /v


Direct Syscalls Detection (Instruction pointer sanity check)
DenfensiveInjector (@bats3c) Github repository

BestEdrOfTheMarket.exe /direct /p C:\Malwares\defensiveinjector.exe


Reflective DLL Injector (Heap analysis + YARA)
BestEdrOfTheMarket.exe /p C:\Malwares\ReflectiveDLLInjection.exe /iat /heap


AMSI Patcher detection
BestEdrOfTheMarket.exe /p C:\Malwares\etw_amsi_patcher.exe /v /nt



Structure & Config files βš™οΈ

πŸ“ BestEdrOfTheMarket/
    πŸ“„ BestEdrOfTheMarket.exe
    πŸ“ DLLs/
        πŸ“„ KerneI32.dll
        πŸ“„ ntdII.dll
        πŸ“„ iat.dll
        πŸ“„ callbacks.dll
        πŸ“„ magicbp.dll
    πŸ“ YARA/
        πŸ“„ Metasploit_Artefacts_Rule.yara
        πŸ“„ ...
    πŸ“ YaroRules.json
    πŸ“„ jsoncpp.dll
    πŸ“„ libcrypto-3-x64.dll

YaroRules.json: Contains a json array filled with the simple/normal (not Yara) patterns you would like to be identified through the defensive mechanisms.

{
	"StackPatterns": [
		"40 53 48 83 EC 90 65 48 8B 04",
    "..."
	],
	"HeapPatterns": [
		"4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00",
    "..."
    ],
	"DllHookingPatterns": [
		"59 61 7A 69 64 6F 75",
    "..."
	],
	"GeneralPatterns": [
		"FC E8 82 00 00 00 60 89 E5 31 C0 64 8B 50",
		"..."
	]	
}		

Releases πŸ“¦

Project Setup

Disclaimer βš οΈβ€‹

  • There's no interest in mixing the defensive methods or in putting them all (/nt + /stack + /k32 + /blahblah) as you may encounter crashes due to conflicts beetwen them, especially for low level hooks. Activate the one you want depending on your needs.

  • Don't link the EDR to programs that are too CPU-intensive/thread-creating, as some detection techniques such as call stack analysis constantly monitor the stack state of each thread and this can quickly increase the load on the EDR, it's more relevant (that's also the point) that you link the tool to your own artifacts and keep in mind that a good evasive artifact tries to be as discrete as possible.

Open Source Agenda is not affiliated with "BestEdrOfTheMarket" Project. README Source: Xacone/BestEdrOfTheMarket
Stars
911
Open Issues
3
Last Commit
5 days ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating