文章总结: 本文分析EDR终端安全产品中驱动程序的安全漏洞,指出minifilter驱动通过FltCreateCommunicationPort创建的应用层通信端口存在安全风险。研究发现connectNotifyCallback回调函数的签名验证机制可被绕过,攻击者通过DLL劫持合法EDR进程即可滥用驱动的进程终止、文件强制删除等高风险功能,导致EDR自身成为攻击工具。 综合评分: 85 文章分类: 终端安全,恶意软件,应急响应,漏洞分析,红队
你的EDR没有DR了
原创
WZ WZ
不吃猹的瓜
2026年5月11日 08:30 北京
在小说阅读器读本章
去阅读
现代Windows终端安全中基本离不开EDR (EndpointDetection and Response)的支持, 而完善的EDR又一定离不开驱动程序的支持, 并且EDR的驱动程序是EDR的核心, 检测,阻断和隔离都离不开驱动程序, 这些EDR驱动多多少少都会有关闭自保, 进程终止, 文件隔离等功能, 如果这些功能可以被攻击者使用会怎么样? 那一定非常精彩!
例如安装了某EDR的终端中就有多个文件过滤驱动(Minifilter Driver):
文件过滤驱动是EDR的核心, 为了和应用层的应用程序通信, 文件过滤驱动会使用FltCreateCommunicationPort函数来注册一个通信端口与应用程序通信, FltCreateCommunicationPort的原型如下:
NTSTATUS FLTAPI FltCreateCommunicationPort( PFLT_FILTER Filter, PFLT_PORT *ServerPort, POBJECT_ATTRIBUTES ObjectAttributes, PVOID ServerPortCookie, PFLT_CONNECT_NOTIFY ConnectNotifyCallback, PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback, PFLT_MESSAGE_NOTIFY MessageNotifyCallback, LONG MaxConnections);
其中最重要的就是ConnectNotifyCallback, MessageNotifyCallback这两个回调函数, 根据微软的描述:每当用户模式应用程序调用 filterConnectCommunicationPort 以向微型筛选器发送连接请求时,FltMgr会调用ConnectNotifyCallback回调函数, 为了安全, EDR会通过这个回调函数来检测是哪个进程发起的连接, 验证发起进程有没有符合预期签名等来判断允不允许应用层的进程进行连接;
每当用户模式应用程序调用 filterSendMessage 来通过客户端端口向微筛选器发送消息时FltMgr会调用MessageNotifyCallback回调函数, MessageNotifyCallback是Minifilter处理应用层消息的主回调函数, 主要是用来处理应用层发来的消息, 直说就是接收命令的函数, 文件过滤驱动的关键功能基本就在这个函数里面了;
如果ConnectNotifyCallback回调函数对发起应用层发起连接请求的程序有处理不当的地方就会导致校验无效, 就可能导致攻击者滥用驱动功能, 造成严重的后果;
进入Fltkernel
这里我们就来分析上面这个高度为880088的驱动, 我们简称880; 首先在ida中进入880的入口函数, 可以看到880是一个标准的Minifilter, 通过FltCreateCommunicationPort创建与应用层通信的端口:
我们先来看看这个MessageNotifyCallback函数有哪些功能?
首先驱动里有我们最喜欢的进程终止功能, 看起来可以结束任意进程(包含EDR自己的进程):
文件强制删除功能:
还有许许多多丰富的功能, 包括但不限于文件操作:
注册表操作:
内存操作:
网络操作:
问题来了, 这些操作如此丰富, 我们能用吗? 如何能连接上这个Minifilter的通信端口呢?
我们需要看一下客户端进程连接驱动通信端口的回调函数ConnectNotifyCallback:
看起来有签名验证, 会校验连接的应用层程序是不是自己的厂商的签名:
BYPASS
那我们还能使用这个驱动的功能吗?
能的!兄弟!能的!
我们都有它的驱动了, 还搞不到带它签名的EXE吗, 我们直接从它的安装目录拷贝一个EXE出来, 然后直接反手一个DLL劫持, 这时候我们就有可供驱动验证的合法签名了:
然后让AI写个测试结束任意进程的代码:
再测试直接删除C:\Windows\System32\svchost.exe, 即使svchost.exe还在运行, 删除前:
删除后:
不过这里需要用点小技巧:
总结
所以安装了EDR的环境不一定就安全了, 反而还可能为攻击者提供了便利, 驱动不用自己安装, EXE也直接从EDR的安装目录直接拷贝出来用, 攻击者带个DLL文件就来了….
注:文章仅供研究学习,请勿滥用!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:不吃猹的瓜 WZ WZ《你的EDR没有DR了》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论