文章总结: 本文详解BYOVD攻击技术,利用合法签名漏洞驱动实现内核提权以绕过EDR。内容涵盖攻击原理、CVE实例代码复现及LOLDrivers检测方法。建议防御措施包括启用微软驱动黑名单、开启HVCI内存完整性、严格权限分配及监控驱动加载事件,以有效识别和防御此类高级威胁。 综合评分: 90 文章分类: 漏洞分析,应急响应,红队,恶意软件,渗透测试
应急响应对抗 | BYOVD攻击介绍
原创
feiniao
Ice ThirdSpace
2026年1月9日 10:02 广东
1. BYOVD
“自带漏洞驱动程序”(Bring Your Own Vulnerable Driver, BYOVD)是一种复杂且隐蔽的攻击技术。攻击者不会自己编写恶意的内核驱动程序(因为这很难通过操作系统的驱动签名强制策略),而是故意在目标系统上安装一个第三方开发的、合法的、但已知存在漏洞的驱动程序。
由于这个驱动程序是合法的(通常拥有有效的数字签名),操作系统和安全软件会信任它。攻击者随后利用这个驱动程序的已知漏洞,从用户模式(User Mode)跃迁到权限更高的内核模式(Kernel Mode),从而获得对系统的最高控制权。
本质上是利用一个受信任的组件(合法的驱动)来绕过系统最核心的安全防护。
2. 攻击原理与步骤
2.1. 攻击步骤
BYOVD 攻击之所以高效,是因为它利用了现代操作系统(如 Windows)对驱动程序的信任模型。系统会阻止未签名或签名无效的驱动程序加载到内核中,但它通常无法区分一个“签名合法但存在漏洞”的驱动和一个“签名合法且安全”的驱动。
攻击者通常需要先在目标系统上获得管理员权限(User Mode下的最高权限),然后执行以下步骤:
1. 植入 (Dropping):攻击者将一个已知的、存在漏洞的合法驱动程序文件(例如vulnerable.sys)释放到目标系统的磁盘上。这个驱动可能来自任何合法的硬件或软件供应商,但它存在一个已知的漏洞(如任意内存读写)。
2. 加载 (Loading):利用已获得的管理员权限,攻击者通过合法途径(如使用服务控制管理器)在系统中安装并加载这个易受攻击的驱动程序。此时,操作系统和 EDR(终端检测与响应)等安全软件会检查其数字签名,发现签名有效,于是允许其加载。
3. 利用 (Exploitation):一旦这个“特洛伊木马”般的驱动在内核中运行,攻击者就会从他们的恶意软件(仍在用户模式)中,向这个驱动发送特定的控制请求(通常通过 IOCTL 接口)。
4. 提权 (Privilege Escalation):攻击者发送的请求会精确地触发驱动程序中的漏洞。利用这个漏洞,攻击者可以实现在内核空间执行任意代码。
5. 执行恶意操作 (Malicious Actions):一旦获得了内核级别的权限,攻击者就几乎无所不能。
2.2. 攻击目标
获得内核权限后,攻击者的首要目标通常是瘫痪系统的安全防护,以便后续的恶意活动(如勒索、数据窃取)不会被发现。常见操作包括:
· 致盲 EDR/杀毒软件:通过内核权限,强行终止 EDR 和杀毒软件的进程。
· 关闭安全监控:卸载或禁用安全产品的回调(Callbacks)和钩子(Hooks),使其无法监控进程创建、文件访问等敏感操作。
· 绕过防护机制:关闭 Windows 的事件日志(ETW)或篡改内核数据结构,使攻击行为“隐形”。
· 执行其他恶意代码:在内核中直接运行 Rootkit,或者将恶意代码注入到受信任的系统进程中。
2.3. 案例
BYOVD 已被多个高级威胁(APT)组织和勒索软件团伙广泛使用:
· 勒索软件 (Ransomware):诸如LockBit, BlackByte, Medusa Locker 等勒索软件都曾使用 BYOVD 技术。它们利用各种存在漏洞的驱动程序(例如来自 GIGABYTE、Dell、Paragon 等厂商的驱动)来终止 EDR 进程,然后再执行文件加密。
· APT 攻击:像Turla 这样的国家背景黑客组织,会利用 BYOVD 技术来实现持久化和隐蔽的后门。
· Shamoon 攻击:这是早期著名的 BYOVD 案例之一,攻击者利用一个来自 EldoS RawDisk 的合法驱动来直接访问和擦除磁盘数据,导致大规模破坏。
3. 主流攻击手法
3.1. BYOVD(“自带”易受攻击的驱动程序)
这是目前最主流的高级内核攻击手段。
1. 不加载恶意驱动: 攻击者不会尝试加载他们未签名的MyRootkit.sys。
2. 加载“合法”驱动: 攻击者会从合法的第三方厂商(例如,某个显卡、主板、甚至防病毒软件)那里找到一个**“合法的、有签名的”**驱动程序(例如 LegitDriver.sys)。
3. 利用“合法”驱动: 这个合法的LegitDriver.sys本身存在一个已知的漏洞(例如,允许任意写入内核内存)。
4. 获取内核权限: 攻击者(在用户模式下)首先合法地加载这个LegitDriver.sys(Windows 会允许,因为它有签名),然后利用它的漏洞,在内核内存中写入他们自己的 Shellcode。
5. 劫持执行: 一旦恶意 Shellcode 在内核中运行,它就**“黑”进了内核**。此时,它可以去调用PsSetCreateProcessNotifyRoutine 了。
3.2. 窃取代码签名证书
这非常罕见,但曾发生过(例如,Stuxnet 或 Lazarus 组织)。
1. 攻击者通过黑客手段窃取一家合法公司(例如某个游戏公司或硬件制造商)的代码签名私钥。
2. 他们使用这个偷来的“合法”证书来签名他们的恶意驱动程序MyRootkit.sys。
3. Windows 内核检查签名,发现“签名有效,来自一家受信任的公司”,于是允许加载。
4. 实现
https://github.com/BlackSnufkin/BYOVD/tree/main/BdApiUtil-Killer
4.1. 原理
利用CVE-2024-51324这个漏洞来触发,其.sys 驱动程序存在漏洞,触发漏洞后强行关闭失陷终端上的特定安全软件进程。
4.2. 编译
cd /BYOVD-main/BdApiUtil-Killer && cargo build –release –target x86_64-pc-windows-gnu
#
4.3. 运行
运行的时候需要以“管理员权限运行”
相关的执行日志如下:
C:\Users\Administrator\Desktop\d>BdApiUtil-Killer.exe -n 6964 [!] Attempting to initialize driver… [!] Note: This requires administrator privileges! [!] Creating new service [!] Driver initialized successfully [!] Driver started [!] Targeting PID: 6964 (Press Ctrl+C to stop) [!] Process 6964 terminated [!] Successfully killed PID: 6964 [!] Service marked for deletion [!] Driver stopped
#
#
5. 如何查找存在 BYOVD 的驱动
5.1. 已存在漏洞的驱动
5.1.1. LOLDrivers
https://www.loldrivers.io/
· LOLDrivers 是目前全球最大的“易受损驱动”数据库。它收录了所有已知被恶意利用或存在高危漏洞的驱动程序。
· 操作:你可以将手中的驱动文件哈希(MD5/SHA256)与 LOLDrivers 的列表进行比对。
· 判断依据:如果哈希命中,或者文件名和签名者在列表中,该驱动 100% 可被滥用。
5.1.2. 查找工具
相关检测文件:
https://www.loldrivers.io/api/drivers.json
检测方法
5.1.2.1. defender 检测方法
let LOLDrivers = externaldata (Category:string, KnownVulnerableSamples:dynamic, Verified:string ) [h@”https://www.loldrivers.io/api/drivers.json”] with ( format=multijson, ingestionMapping=@’ [ {“Column”:”Category”,”Properties”:{“Path”:”$.Category”}}, {“Column”:”KnownVulnerableSamples”,”Properties”:{“Path”:”$.KnownVulnerableSamples”}}, {“Column”:”Verified”,”Properties”:{“Path”:”$.Verified”}} ]’ ) | mv-expand KnownVulnerableSamples | extend SHA1 = tostring(KnownVulnerableSamples.SHA1), SHA256 = tostring(KnownVulnerableSamples.SHA256) ; // you can filter the drivers further based on category or verified status DeviceEvents | where ActionType == “DriverLoad” | join kind=inner (LOLDrivers | where isnotempty(SHA256)) on SHA256 | union ( DeviceEvents | where ActionType == “DriverLoad” | join kind=inner (LOLDrivers | where isnotempty(SHA1)) on SHA1 )
#
5.1.2.2. splunk 检测方法
index=YOUR_INDEX sourcetype=YOUR_DRIVER_LOAD_SOURCE
| stats min(_time) as firstTime max(_time) as lastTime count by ImageLoaded dest dvc process_hash process_path signature signature_id user_id vendor_product
| lookup loldrivers driver_name AS ImageLoaded OUTPUT is_driver driver_description
| search is_driver=TRUE
| security\_content\_ctime(firstTime)
| security\_content\_ctime(lastTime)
| windows\_vulnerable\_driver\_loaded\_filter
#
5.1.3. 微软易受损驱动程序阻止列表
· 微软官方维护了一个 XML 格式的黑名单(作为 WDAC 策略的一部分发布)。
· 操作:检查驱动的版本号、哈希是否落在微软的SiPolicy.p7b 或推荐阻断规则中。
https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/app-control-for-business/design/microsoft-recommended-driver-block-rules
5.2. 漏洞挖掘
只要满足以下任意一点,该驱动就可能成为 BYOVD 的载体:
5.2.1. 暴露了危险的内核 API
攻击者最喜欢的驱动是那些充当“代理人”角色的驱动——用户层给它指令,它就去内核层执行高权限操作。 在反汇编工具(如 IDA Pro 或 Ghidra)中,搜索以下关键函数的引用:
物理内存读写:MmMapIoSpace, ZwMapViewOfSection, MmGetPhysicalAddress。 判断逻辑:如果驱动允许用户层传入任意物理地址并进行映射/读取/写入,这就是一个超级漏洞。 MSR 寄存器读写:__readmsr, __writemsr。 危险性:通过修改 LSTAR (Long System Target Address Register) 等寄存器,攻击者可以劫持系统调用(Syscall)并执行任意代码。 控制寄存器操作:__writecr0, __writecr3 等。 危险性:可能被用来关闭写保护(WP位),从而修改只读内核内存。 进程内存操作:KeStackAttachProcess, MmCopyVirtualMemory。 危险性:如果允许任意 PID 传入并读取其内存,可被用来读取 LSASS 里的密码或修改杀毒软件内存。
5.2.2. 访问控制列表 (ACL) 过于宽松
在驱动的 DriverEntry 或创建设备对象的代码中,检查 IoCreateDevice 或 IoCreateDeviceSecure。
漏洞特征:如果设备对象的 SDDL(安全描述符定义语言)字符串设置了 WD (World/Everyone) 权限,或者没有明确限制只有管理员(Admin/System)才能访问。 后果:这意味着即使是低权限的恶意软件也能打开这个驱动的句柄,发送指令让内核“自杀”。
5.2.3. IOCTL 处理函数缺乏验证
分析驱动的 IRP_MJ_DEVICE_CONTROL 处理函数(分发例程)。
输入验证缺失:驱动是否检查了用户传入的缓冲区大小(InputBufferLength)?是否验证了指针的合法性(ProbeForRead/ProbeForWrite)? 逻辑漏洞:驱动是否直接信任用户传入的指针并在内核模式下对其进行写入?这会导致“任意地址写入”(Arbitrary Write)漏洞。
5.2.4. 相关工具
Dr.Memory / DriverVerifier(微软自带):用于压力测试,看驱动是否会崩溃(BSOD),崩溃通常意味着内存破坏漏洞。 Screamer:一个专门针对 Windows 驱动的开源漏洞扫描器,可以自动发现缺乏验证的 IOCTL。 DeviceNut:用于查看驱动设备对象的访问权限。
判断流程如下
1. 算哈希 -> 查 LOLDrivers/VirusTotal (看是否有 Vulnerable Driver 标签)。
2. 看导入表 -> 是否有 MmMapIoSpace 等高危函数。
3. 看权限 -> 普通用户能否打开设备句柄。
4. 看逻辑 -> 用户传什么地址它就读写什么地址,完全不加过滤。
拥有微软签名只代表它是“正规厂家生产的”,但不代表它是“安全无毒的”。很多老旧的显卡驱动、主板工具驱动正是因为拥有合法签名且包含上述漏洞,才成为了黑客眼中的“香饽饽”。
6. 如何防御
防御 BYOVD 攻击是一个多层次的挑战,因为它利用了系统固有的信任机制。
6.1. 驱动程序阻止列表
o 微软策略:微软维护一个“易受攻击的驱动程序阻止列表”。在启用了“内存完整性”(HVCI)功能的现代 Windows 系统上,系统会阻止这个列表中的驱动被加载。
o 易受攻击的驱动程序阻止列表:https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/app-control-for-business/design/microsoft-recommended-driver-block-rules
下载下来这个列表是这个样子:
里面有 Audit (仅审核版本)和 Enforced(强制版本),xml 打开如下:
按照官方的做法
应用程序和服务日志 – Microsoft – Windows – CodeIntegrity
再过滤相关的日志 3099,可以看到相关的策略启用了
但是我这边使用 BdApiUti 进行操作时,发现未生成相关的日志,
BdApiUtil64.sys文件的 HASH256 为
47ec51b5f0ede1e70bd66f3f0152f9eb536d534565dbb7fcc3a05f542dbe4428
相关文件并未在微软的列表中,这个时候要么依赖 EDR,要么手工使用WDAC来阻断了
o EDR 厂商:许多 EDR 解决方案也会维护自己的阻止列表,以防止已知的恶意驱动被利用。
6.2. 访问控制
o 最小权限原则:严格控制管理员权限的分配。BYOVD 攻击的第一步几乎总是需要管理员权限,限制管理员账户的数量和使用是关键。
o 应用程序白名单:通过 AppLocker 或 Windows Defender 应用程序控制 (WDAC) 等策略,只允许已知的、受信任的驱动程序和应用程序运行。
6.3. 持续监控与检测
o 驱动加载:密切监控系统上的驱动加载事件(Windows 事件 ID 7045)。任何非标准或不常见的驱动程序安装都应引起警惕。
o 行为检测:先进的 EDR 解决方案会尝试检测可疑的 行为,例如一个非安全相关的进程(如恶意软件)尝试加载一个驱动程序,或者一个驱动程序尝试终止 EDR 进程。
6.4. 系统更新与加固
o 启用内存完整性 (HVCI):这是 Windows 中基于虚拟化的安全 (VBS) 功能之一。它利用硬件虚拟化来保护内核内存,极大地增加了利用内核漏洞的难度,并且是驱动程序阻止列表生效的前提。
o 及时打补丁:虽然攻击者带入的是旧的 漏洞驱动,但保持操作系统和所有软件(包括驱动)的更新仍然是最佳的安全实践。
· win11 的内存隔离功能,可以打开相关的防护
7. refers
https://mp.weixin.qq.com/s/d79eCU9UikVDiLpkafafuQ https://github.com/BlackSnufkin/BYOVD/tree/main/BdApiUtil-Killer/src https://learn.microsoft.com/zh-cn/windows/security/application-security/application-control/app-control-for-business/design/microsoft-recommended-driver-block-rules
https://github.com/rtfmkiesel/loldrivers-client https://www.loldrivers.io/
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ice ThirdSpace feiniao《应急响应对抗 | BYOVD攻击介绍》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论