BYOVD(Bring Your Own Vulnerable Driver,自带漏洞驱动)

一、引言
近年来,随着攻防对抗的升级,越来越多的APT组织、勒索软件团伙采用BYOVD攻击来绕过EDR检测,达成致盲EDR、投放恶意软件、进行勒索等目的。本文将简要介绍BYOVD的攻击链路及其技术底层逻辑,并介绍防御指南(可点击文末“阅读原文”查看深入剖析)。

二、BYOVD介绍
BYOVD(Bring Your Own Vulnerable Driver,自带漏洞驱动)是一种利用带有合法数字签名但存在漏洞的驱动,来获取内核模式(Ring-0)的执行权限的后渗透攻击策略。
BYOVD经典攻击过程

本节以一个典型的驱动漏洞为例,该漏洞源于IOCTL处理函数缺乏校验,可导致任意进程终止,来描绘BYOVD的典型攻击流程。
1)获取管理员权限
加载内核驱动需要目标机器管理员权限,攻击者往往通过网络钓鱼、Web漏洞、本地提权等方式获取管理员权限。
2)投放漏洞驱动
攻击者将带有合法签名但存在漏洞的.sys驱动文件投放到目标机器中,由于该驱动文件本身来源可信且带有合法数字签名,因此不会被杀软或EDR拦截。
3)加载漏洞驱动
攻击者使用Windows SCM或调用NtLoadDriverAPI将漏洞驱动注册为内核服务并加载。
4)提权
漏洞驱动加载到内核后,该驱动即拥有内核(Ring 0)级权限。
5)下发指令
攻击者通过驱动的漏洞点,下发对应的IOCTL指令,指示驱动终止EDR进程。
6)执行恶意操作
此时,免除于EDR的监控与阻断,攻击者可以为所欲为,执行任意操作,包括:投放病毒/勒索软件、禁用ETW监控、在内核中运行rootkit等。

三、BYOVD技术分析
本节以开源项目BlackSnufkin/BYOVD中的漏洞驱动STProcessMonitor作为案例,复现BYOVD攻击,并分析其技术原理。
3.1载荷准备&分析

使用命令编译载荷:
cargo build --release -p STProcessMonitor-Killer
编译后的载荷STProcessMonitor-Killer.exe在target/release目录下,将其拷贝到目标机器,并将.sys文件一并拷贝到同目录(这里使用STProcessMonitor_v114.sys驱动)。右键查看STProcessMonitor_v114.sys文件属性,发现其携带Microsoft Windows Third Party Component CA 2012颁发的有效数字签名证书,尽管有效期为2025.02.12 - 2026.02.19,但证书签发时间戳为2025年5月9日 11:43:46,在有效期范围内,因此,仍然会被微软认定为有效签名。

3.2 载荷执行

目标机器上安装并运行了火绒安全软件,以此作为操作对象。
执行命令尝试杀掉火绒的HipsDaemon.exe进程:
STProcessMonitor-Killer.exe --version 114 -n HipsDaemon.exe
可以看到,执行成功,该进程被成功杀掉:

点开火绒界面,可以看到其显示安全服务异常:

如法炮制,使用命令杀掉火绒的HipsTray.exe进程,也成功了,此时火绒已经成功退出:
STProcessMonitor-Killer.exe --version 114 -n HipsTray.exe

3.3 驱动文件逆向

通过Ghidra对STProcessMonitor_v114.sys文件进行逆向,从DriverEntry入口顺着设备注册逻辑入手,可以看到在处理IOCTL指令的fun_140001b70函数中,存在以下漏洞片段:

当IOCTL设备控制码为0xB822200C时,程序仅校验了缓冲区大小是否大于7字节(近乎于无门槛),即进入了进程终止逻辑。从用户缓冲区获取进程ID,启动ZwOpenProcess以最大权限访问该进程,然后调用ZwTerminateProcess终止目标进程。由于该驱动加载后位于Ring 0,为系统最大权限,使得其可以达成杀死任意进程的目的。

四、BYOVD检测与防御
4.1 Loivers

Loivers(Living Off The Land Drivers)是一个安全社区维护的开源项目,持续收集并记录已被证实存在漏洞、被APT组织或勒索软件滥用的合法签名驱动程序。
Loivers数据库提供了一系列驱动文件哈希(MD5/SHA1/SHA256),可借助以下工具对系统驱动进行哈希匹配扫描:
• Powershell脚本
• LOivers-client客户端程序
• Yara扫描
4.2 Windows事件日志

在BYOVD攻击中,驱动释放、服务注册及模块加载都会在Windows事件日志中存在相应记录,通过配置并收集特定的事件日志,可实现检测:
• Sysmon Event ID 11:文件创建事件日志,监控.sys驱动文件是否由异常进程释放到磁盘。
• System Event ID 7045:服务创建事件日志,当驱动通过SCM注册服务时会触发该日志记录。
• Sysmon Event ID 6:驱动加载日志,记录了驱动加载的文件路径、哈希和签名等重要信息,可用于识别漏洞驱动加载。
• CodeIntegrity Event ID 3004 / 3033:Windows代码完整性日志。驱动因签名无效或命中内核黑名单被系统拦截或审计时会触发该日志,可据此检测。
4.3 基于行为特征检测

基于文件哈希识别的漏洞驱动静态检测存在滞后性,攻击者可能使用尚未被记录的0-day/1-day漏洞驱动,此时可使用基于行为特征的检测方式:
• 异常的IOCTL通信监控:利用 EDR 的底层探针或ETW,监控用户态进程对驱动设备的CreateFile(打开设备句柄)和DeviceIoControl(发送控制码)调用。
• 行为关联分析:监控可疑的进程调用链。
• 敏感API调用与权限提升行为:监控 NtLoadDriver或 ZwLoadDriver等底层 API 的直接调用。
4.4 启用HVCI与WDAC

WDAC是微软提供的原生应用程序控制框架,可通过设置拦截策略,决定哪些驱动能够被加载到内核中。
• 设置微软漏洞驱动拦截列表:通过该名单,开启策略后,系统会在加载驱动时对比文件哈希及特征,阻止拦截列表中的漏洞驱动加载。
• 启用HVCI:其利用Windows虚拟化强制实施内核代码完整性。即使漏洞驱动被加载进内核,也能在硬件层面阻止内核内存页被标记为“可写可执行”,导致恶意rootkit或shellcode注入内核失败,从而降低BYOVD攻击的危害。
4.5 使用山石智恺EDR

面对自带合法签名的 BYOVD 攻击,传统的静态查杀往往无能为力。山石智恺 EDR 在特征匹配的基础上,紧紧盯住 BYOVD 攻击必经的“加载、调用、执行”三大核心阶段,通过高精度的驱动加载监控、强大的行为规则引擎以及细粒度的 API Hooking 技术,为企业终端构建起一道精准、轻量的内核级防御屏障,为您的系统安全保驾护航。
更多详情,请点击“阅读原文”查看深入剖析。
