您已经知道端点检测和响应 (EDR)会监控 Windows API 调用是否存在可疑行为。通常,他们使用用户模式 API 挂钩等技术来拦截 ntdll.dll 中的函数。到目前为止,我们使用了诸如直接系统调用、C 语言、汇编语言、SysWhispers 或 Halo's Gate 等规避方法,但仅靠这些措施已经不够了,因为现代 EDR 已经发展并包含了多种检测机制:
-
Windows 和 EDR 现在使用Windows 事件跟踪 (ETW)来捕获实时活动。 ETW 可以检测进程何时进行异常系统调用或在 RWX 内存中执行代码。
-
另外,我们不要忘记AMSI(反恶意软件扫描接口),它可以扫描并阻止正在运行的 shellcode。
-
在内核模式下监控。即使我们避免使用 ntdll.dll 中的钩子,现代 EDR 也会在内核模式下检查系统调用。这意味着即使攻击者使用直接系统调用,EDR 仍然可以检测到异常行为(例如 RWX 内存分配)。
-
启发式和基于行为的检测:即使没有 ntdll.dll 中的挂钩,也可以检测到将代码加载到可执行内存中、进行堆栈修改或产生可疑子进程的进程。
-
一些 EDR 实现基于机器学习的检测,寻找代码执行中的行为模式。
-
内存检查和 shellcode 检测。此外,EDR hooks、ETW 和 Page Guard 等工具可以检测 shellcode 何时尝试在非合法内存中执行。
-
一些 EDR 现在强制针对系统调用践踏进行保护并监视进程正在调用哪些 Windows 函数。
...
那么我们凡人究竟怎样才能逃避我们所喜爱的和臭名昭著的 EDR 呢?
你可以想象,攻击者已经开发出新技术来绕过这些保护措施。在本文中,我们探讨了逃避 EDR 的最新技术:
🔨 1. 高级 Syscall Stomping
您已经知道,现代 EDR 已经可以检测直接系统调用,因此攻击者采用了系统调用踩踏等技术来混淆检测机制。
📝概念:
不是直接调用可疑的系统调用(例如NtAllocateVirtualMemory),而是用所需系统调用的号码覆盖另一个系统调用。
👨💻 汇编代码示例:
mov r10, rcxmov eax, 0x3F ; Cambiar el número de syscallsyscallret
✅优点:避免在 EDR 日志中检测到可疑的系统调用。
🚨缺点:一些 EDR 现在可以检测系统调用序列中的异常。
Windows 已经实现了Shadow Stacks来检测函数调用篡改。攻击者已经开始使用间接系统调用,从映射内存调用函数。
👨💻 C 代码示例:
HMODULE hNtdll = LoadLibraryA("C:\Windows\System32\ntdll.dll");pNtAllocateVirtualMemory NtAllocateVirtualMemory = (pNtAllocateVirtualMemory)GetProcAddress(hNtdll, "NtAllocateVirtualMemory");
✅优点:使用干净的副本,ntdll.dll避免钩子。
🚨缺点:ntdll.dll如果您从不寻常的位置进行映射,某些 EDR 会检测。
2025 年最有效的趋势之一是滥用Windows 回调(例如APC)DPC和ETW在合法进程的上下文中执行恶意代码。
📝概念:
EDR 依赖于ETW记录可疑事件。通过在运行时禁用 ETW,可以逃避检测。
👨💻 禁用 ETW 的 C++ 示例:
voidDisableETW(){ ULONG OldProtect; PVOID EtwEventSend = GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"); VirtualProtect(EtwEventSend, 1, PAGE_EXECUTE_READWRITE, &OldProtect); *(BYTE*)EtwEventSend = 0xC3; // Reemplaza la primera instrucción con RET}
✅优点:防止EDR记录可疑事件。
🚨缺点:一些 EDR 检测到ntdll.dll内存中的修改。
这些技术允许在不被发现的情况下切换x86和x64执行系统调用。
📝概念:
天堂之门: 64 位进程执行 32 位系统调用以避免被发现。
地狱之门 2.0:系统调用直接从 识别并执行ntoskrnl.exe。
✅优点:完全避免钩住ntdll.dll。
🚨缺点:在现代版本的 Windows 上难以实现和检测。
一种将合法进程替换为恶意进程而 EDR 无法检测到的技术。
👨💻示例:
创建一个暂停的进程(CreateProcess用CREATE_SUSPENDED)。
进程内存被替换(NtUnmapViewOfSection + VirtualAllocEx)。
该进程恢复(ResumeThread)。
✅优点:该进程在日志中仍然显示为合法。
🚨缺点:高级 EDR 可以检测执行流程中的异常。
对象回调滥用:操纵内核对象回调以在特权进程中执行恶意代码。
Process Hollowing 2.0:改进的变体,使用监控较少的 API 来替换内存中的进程。
内核回调劫持:劫持内核回调以转移合法进程的执行。
LSASS 线程操作滥用:在 LSASS 中创建和操作线程以逃避检测,而无需转储整个内存。
更远? 好吧,我认为我们有一个很好的列表,可以开始深入研究其中的一些,并将它们添加到 Windows 上的 Maldev 系列中:
MalDev 实践系列:
-
基本 shellcode 加载器
https://www.hackplayers.com/2022/07/maldev-practico-shellcode-loader-basico.html
-
shellcode注入基础
https://www.hackplayers.com/2022/07/maldev-practico-shellcode-injection.html
-
僵尸线程
https://www.hackplayers.com/2022/07/maldev-practico-zombiethread.html
-
基本 AV 规避
https://www.hackplayers.com/2022/07/maldev-practico-evasion-de-av-basica.html
-
基本 EDR 规避
https://www.hackplayers.com/2022/08/maldev-practico-evasion-de-edr-basica.html
-
无线程进程注入
https://www.hackplayers.com/2023/03/maldev-practico-threadless-injection.html
-
早期级联注入
https://www.hackplayers.com/2025/01/early-cascade-injection.html
请记住...如果您真的想逃避 EDR,您将需要使用 组合技术...
原文始发于微信公众号(Ots安全):2025 年 EDR 规避的新趋势
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论