BYOVD ATTACK 学习
字数 1694 2025-08-20 18:17:47
BYOVD攻击技术深入分析与实践指南
一、BYOVD技术概述
BYOVD(Bring Your Own Vulnerable Driver)是一种高级攻击技术,攻击者通过投递存在漏洞的合法驱动程序到目标系统,利用这些驱动的漏洞在Ring 0级别执行恶意操作。
技术特点
- 利用合法驱动程序的签名绕过DSE(Driver Signature Enforcement,驱动签名强制)限制
- 在实战环境中特别有效(测试模式允许未签名驱动,但生产环境通常不开启)
- 最初被Turla和方程式等顶级APT组织使用
可利用驱动资源
- LOLDrivers项目记录了700+可被滥用的合法驱动
- 实际可利用驱动数量远高于公开记录(包括未公开的合法驱动)
二、BYOVD攻击原理分析
核心机制
- 驱动加载:通过Windows API与服务控制管理器(SCM)交互
- 服务创建:创建或打开一个服务来加载目标驱动
- 权限提升:利用驱动漏洞获取高权限操作能力
- 恶意操作:通过IOCTL(输入/输出控制)接口与驱动通信
典型攻击流程
- 获取SCM句柄(OpenSCManager)
- 检查/创建服务(OpenServiceA/CreateServiceA)
- 启动服务(StartServiceA)
- 通过CreateFile获取驱动设备句柄
- 使用DeviceIoControl发送特定IOCTL指令
三、BYOVD实战案例:Kill AV/EDR
案例1:Terminator项目(zam64.sys)
-
关键IOCTL:
- 0x80002048:打开任何特权进程的句柄
- 0x80002010:在驱动中调用函数
-
攻击流程:
- 加载驱动程序
- 通过SCM创建并启动服务(服务名"Terminator")
- 注册当前进程为受信任进程
- 检查并终止EDR进程(循环执行)
项目地址:https://github.com/ZeroMemoryEx/Terminator
案例2:Gmer64.sys驱动
-
关键IOCTL:
- 0x9876C004:初始化操作
- 0x9876C094:终止指定进程
-
攻击流程:
- 获取SCM句柄(OpenSCManager)
- 检查服务是否存在(OpenServiceA)
- 不存在则创建服务(CreateServiceA)
- 启动服务(StartServiceA)
- 通过CreateFile获取驱动访问权限
- 发送初始化IOCTL(0x9876C004)
- 发送终止进程IOCTL(0x9876C094)
技术分析参考:https://www.binarydefense.com/resources/blog/threadsleeper-suspending-threads-via-gmer64-driver/
四、BYOVD高级利用技巧
- EDR致盲:删除回调函数使EDR失去监控能力
- PPL操作:关闭/开启受保护的进程轻量级(PPL)保护
- 签名校验:关闭/强制驱动签名校验
- 持久化:通过合法驱动建立持久化机制
五、防御与检测建议
防御措施
- 启用驱动黑名单机制
- 限制非必要驱动的加载
- 监控异常驱动加载行为
- 实施驱动加载策略(仅允许经过验证的驱动)
检测指标
- 异常驱动加载(特别是已知漏洞驱动)
- 非常规IOCTL代码的使用
- 进程与驱动的异常交互模式
- 服务创建与驱动加载的时间关联性
六、实战注意事项
- EDR共存:直接终止EDR进程容易被总控发现,建议采用更隐蔽的技术
- 驱动选择:优先选择目标环境中已存在的合法驱动
- 操作隐蔽性:避免频繁或大规模的操作引起监控告警
- 环境适配:不同Windows版本可能需要调整技术细节
七、扩展资源
- LOLDrivers项目:收集可被滥用的合法驱动数据库
- Windows内核文档:深入理解驱动通信机制
- IOCTL参考:研究不同驱动的控制接口
- APT报告:分析高级组织对BYOVD的实际运用案例
通过深入理解和实践BYOVD技术,安全研究人员可以更好地防御此类攻击,而红队人员则可以更有效地模拟高级威胁行为。需要注意的是,此类技术应仅用于合法授权的安全测试和研究目的。