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攻击原理分析

核心机制

  1. 驱动加载:通过Windows API与服务控制管理器(SCM)交互
  2. 服务创建:创建或打开一个服务来加载目标驱动
  3. 权限提升:利用驱动漏洞获取高权限操作能力
  4. 恶意操作:通过IOCTL(输入/输出控制)接口与驱动通信

典型攻击流程

  1. 获取SCM句柄(OpenSCManager)
  2. 检查/创建服务(OpenServiceA/CreateServiceA)
  3. 启动服务(StartServiceA)
  4. 通过CreateFile获取驱动设备句柄
  5. 使用DeviceIoControl发送特定IOCTL指令

三、BYOVD实战案例:Kill AV/EDR

案例1:Terminator项目(zam64.sys)

  • 关键IOCTL

    • 0x80002048:打开任何特权进程的句柄
    • 0x80002010:在驱动中调用函数
  • 攻击流程

    1. 加载驱动程序
    2. 通过SCM创建并启动服务(服务名"Terminator")
    3. 注册当前进程为受信任进程
    4. 检查并终止EDR进程(循环执行)

项目地址:https://github.com/ZeroMemoryEx/Terminator

案例2:Gmer64.sys驱动

  • 关键IOCTL

    • 0x9876C004:初始化操作
    • 0x9876C094:终止指定进程
  • 攻击流程

    1. 获取SCM句柄(OpenSCManager)
    2. 检查服务是否存在(OpenServiceA)
    3. 不存在则创建服务(CreateServiceA)
    4. 启动服务(StartServiceA)
    5. 通过CreateFile获取驱动访问权限
    6. 发送初始化IOCTL(0x9876C004)
    7. 发送终止进程IOCTL(0x9876C094)

技术分析参考:https://www.binarydefense.com/resources/blog/threadsleeper-suspending-threads-via-gmer64-driver/

四、BYOVD高级利用技巧

  1. EDR致盲:删除回调函数使EDR失去监控能力
  2. PPL操作:关闭/开启受保护的进程轻量级(PPL)保护
  3. 签名校验:关闭/强制驱动签名校验
  4. 持久化:通过合法驱动建立持久化机制

五、防御与检测建议

防御措施

  1. 启用驱动黑名单机制
  2. 限制非必要驱动的加载
  3. 监控异常驱动加载行为
  4. 实施驱动加载策略(仅允许经过验证的驱动)

检测指标

  1. 异常驱动加载(特别是已知漏洞驱动)
  2. 非常规IOCTL代码的使用
  3. 进程与驱动的异常交互模式
  4. 服务创建与驱动加载的时间关联性

六、实战注意事项

  1. EDR共存:直接终止EDR进程容易被总控发现,建议采用更隐蔽的技术
  2. 驱动选择:优先选择目标环境中已存在的合法驱动
  3. 操作隐蔽性:避免频繁或大规模的操作引起监控告警
  4. 环境适配:不同Windows版本可能需要调整技术细节

七、扩展资源

  1. LOLDrivers项目:收集可被滥用的合法驱动数据库
  2. Windows内核文档:深入理解驱动通信机制
  3. IOCTL参考:研究不同驱动的控制接口
  4. APT报告:分析高级组织对BYOVD的实际运用案例

通过深入理解和实践BYOVD技术,安全研究人员可以更好地防御此类攻击,而红队人员则可以更有效地模拟高级威胁行为。需要注意的是,此类技术应仅用于合法授权的安全测试和研究目的。

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技术,安全研究人员可以更好地防御此类攻击,而红队人员则可以更有效地模拟高级威胁行为。需要注意的是,此类技术应仅用于合法授权的安全测试和研究目的。