基础

Endpoint Detection and Response (EDR)系统如何检测恶意活动或软件。EDR系统可以从用户空间(用户进程运行的位置)或内核空间(操作系统层级)进行检测。用户空间的典型分析/检测包括静态和动态分析、用户空间钩子和堆栈跟踪分析。

静态分析可以用于文件签名(例如任何杀毒软件使用的方式)或检查元数据(如证书及其有效性)。动态分析可以包括对可执行文件的主动调试,或将其放入类似沙箱的环境中以查看其在运行时的行为。堆栈跟踪分析可以显示进程是否从未备份的内存区域执行特定的Windows API(私有提交内存部分中的动态代码,非常可疑)。来自内核空间的检测通常利用Kerne Callback和ETW Threat Intelligence(ETWti)。

EDR(终端威胁检测和响应)使用签名驱动程序在内核空间中操作,并拦截特定的Kernel Callback来拦截进程和线程的执行,以执行自己的代码来检查是否存在恶意代码。使用 PsSetCreateProcessNotifyRoutine()来拦截新进程的创建并检查其要执行的内容,同时也 可以使用PsSetCreateThreadNotifyRoutine()来拦截新线程的创建并检查其入口点是否存在
恶意代码。该技术需要在内核中运行,因此任何错误都可能导致系统崩溃。

image.png

ETWti是由Microsoft提供的一个接口,驱动程序可以订阅以接收特殊的ETW事件。这些事件专门用于检测恶意活动,包括进程创建、内存分配、线程创建等。

image.png

用户空间hook了什么呢?
在进行用户空间进程的实时分析时,EDR供应商和大多数AV供应商会加载自己的动态链接库(DLL)到操作系统上运行的进程中。加载DLL后,它会对选择的Windows API的内存区域进行修补,以放置一个钩子,这基本上是一个JMP指令,转到它们自己的DLL内存区域。这些钩子检测技术是EDR中最常用的检测技术之一。