杀软为什么先倒下
原创 邵博 2026-10-12 07:30 河南


一次真实勒索入侵事件的复盘,讲给每一位IT从业者——邵博
今年 10 月,我们接手了一起勒索软件组织入侵事件。客户说法很直接:服务器被勒索了。
接报之后,我们先做了一件很基础的事——翻日志,把攻击者什么时候进来、进来之后做了什么,按时间排出来。
结果翻第一台域控制器(可以理解成管账号和权限的那台核心服务器)的时候,就卡住了。
这台机器的安全日志里,最早的一条记录,是「日志被清除」。
这句话什么意思呢?就是说,这台服务器原本应该记着几个月的登录记录、账号变更、权限操作,现在这些全没了。你能看到的记录,是从被删掉的那一刻才开始记的。
攻击者先删了监控,再动手。
继续往下查,我们才碰到这起事件里最值得说的一件事:攻击者在拿到系统最高权限之后,做的第一件事是让服务器上的安全软件「消失」。而他用到的工具,是一枚证件齐全的正规驱动程序。
没有病毒样本,没有偷来的签名证书。他只是找了一枚「身份合法、但本身有毛病」的驱动,借它的手,把安全软件的进程杀掉。
这个手法有个专门的名字,叫 BYOVD。近几年它在勒索攻击里出现得越来越频繁,所以我们把这次查清楚的部分写下来,尽量讲得直白一点。
先说一件反常的事
现在的终端安全软件,基本都带「自我保护」。
你打开任务管理器,右键结束它的进程,通常会被拒绝;你去服务列表里点停止,也点不动。有些产品会把自己注册成一个「受保护进程」,这种进程只有系统内核和极少数授权组件才动得了。
这个设计的目的很明确:哪怕攻击者已经拿到了管理员权限,也别想轻松把防护关掉。
所以当我们在现场看到安全软件的进程确实不见了、而且它的自我保护一点动静都没有时,第一反应是一定要搞清楚攻击者用了什么样的手法使安全软件“致盲”。
后来在另一台机器上,我们找到了答案。
现场留下的那条注册表
处置阶段,我们在一台受害主机上查到一个人为创建的内核服务。它的注册表长这样:
reg query
"HKLM\SYSTEM\CurrentControlSet\Services\WdiSvchostEx2"
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WdiSvchostEx2
Type REG_DWORD 0x1
Start REG_DWORD 0x4
ErrorControl REG_DWORD 0x0
ImagePath REG_EXPAND_SZ \??\C:\Windows\System32\drivers\kvcore.sys
DisplayName REG_SZ WdiSvchostEx2
DeleteFlag REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WdiSvchostEx2\Instances
里面的几个值,值得单独说说。
Type 是 0x1,代表这是一个内核驱动,而不是普通软件。
这里要插一句,驱动程序和我们平时装的软件不太一样。普通程序出了问题,最多是自己崩溃;而驱动跑在操作系统最核心的那一层,它能调用的,是系统最底层的功能,包括管理进程、管理内存、管理磁盘。
打个比方:普通软件像是楼里的租户,各有各的房间;驱动程序则像是拿着全楼钥匙的物业,很多普通程序做不到的事,它能做。
Start 是 0x4、DeleteFlag 是 0x1,说明我们看到的已经是被人处理过的现场——服务被禁用,并且标了待删除。这通常意味着,现场处置的时候已经有人先一步发现了它。
ImagePath 指向 C:\Windows\System32\drivers\kvcore.sys。放在系统驱动目录里,是最不容易被人多看两眼的位置。
最该留意的,是它的服务名:WdiSvchostEx2。
Windows 本身确实有一组 Wdi 开头的服务,真名叫 WdiServiceHost 和 WdiSystemHost,属于系统自带的诊断组件。而 WdiSvchostEx2 这个拼法,在 Windows 里并不存在。
起这个名字的人很清楚自己在做什么。它不像 hack、rootkit 那样一眼可疑,它长得像系统自带的东西,混在几百个服务列表里,人工排查时很容易被一扫而过。
我们把驱动文件取出来算了一下哈希(可以理解成给文件算一个指纹):
SHA-256: ae4abb650c7df1d3654afc814617de6f6589dc2c3be434154b3be0f6521e2259
比对公开漏洞库后确认,这是杀毒软件「XX杀毒 V21」的内核驱动 kvcore.sys,版本 1.23.6.27,对应漏洞编号 CVE-2026-19193,评分 7.8,属于高分档。这个漏洞今年 8 月已经公开。
到这里就能定性了:攻击者没有自己造武器。他从公开渠道找来一枚「有正式签名、但本身有缺陷」的驱动,把它放进系统,然后借它去办自己想办的事。
这就是 BYOVD,全称是 Bring Your Own Vulnerable Driver,直译过来就是「自带一个有问题但合法的驱动」。
为什么「有正规签名」反而更值得警惕
要理解这个手法为什么有效,得先知道 Windows 在加载驱动的时候,到底检查什么。
它会验签名。简单讲,就是看看这个驱动文件是不是由一家受信任的公司签发、发布之后有没有被人改过。这套机制存在的意义,是挡住来路不明的驱动。
但它不检查的是——
这个驱动的内部逻辑写得好不好;它对外提供的接口,有没有做身份校验;它是不是允许任意一个程序通过它,去干掉系统里的其他程序。
也就是说,签名机制做的是身份审查,不是安全审查。它确认的是「这东西是谁做的」,而不是「这东西安不安全」。
再打一个比方。大楼请物业,入职时会查身份证、查工作证,确认这个人确实是自己人。但查证件这件事,只能证明他的身份,证明不了他不会做坏事,也证明不了他手上那串钥匙能开多少门。
BYOVD 就是瞄着这道缝进来的。攻击者不去伪造证件——伪造很难,成本高,还容易被查出来。他去找一个证件为真、但可以被指使去干坏事的人,让这个人代劳。
具体到这枚驱动,问题出在它对外的那个接口上。
它提供了一个功能,允许其他程序给它发指令。但在设计这个接口的时候,「谁可以连上来」这道门放得太松了——系统里任何账户、任何程序都能连上;而且它在收到指令之后,也不会去核对下指令的到底是谁。
于是整条路变得很短。一个普通程序连上这个接口,报出「我要终止某个进程」和目标进程的编号,驱动在系统最底层收到之后,按标准流程把这个进程结束掉。整个过程不需要目标程序配合,也不需要它同意。
真正让人不太舒服的地方在这里:我们平时认为最硬的那层保护,在这条路面前是无效的。
前面说过,安全软件会把自己注册成「受保护进程」,这个机制防的是「别的普通程序来杀我」。但当执行终止动作的代码已经跑在系统最底层,目标程序带不带保护标记就不重要了——系统不会去问它,你为什么要杀这个进程。
所以我更愿意把这个手法理解成一种「能力外包」:攻击者自己不必具备突破防护的本事,他只需要找到一枚系统愿意信任的驱动,把它的能力借过来用。
这已经不是个别案例
如果只是有人写了个精巧的利用,不值得单独写一篇文章。麻烦在于,这个手法已经产业化了。
今年 3 月,几家安全厂商给出的统计数字差不多:目前在地下流通的「EDR 杀手」(EDR 指终端检测与响应软件,企业装在电脑上用来发现入侵的那类程序)接近 90 款,其中 54 款用的就是 BYOVD 这条路,它们合计滥用了 35 个有正规签名的驱动。
这组数字对防守方不太友好。攻击者手上只要有一枚还没被拦住的驱动就够了,而防守方要覆盖的是 35 枚。
再举个例子。有一个叫 EDRKillShifter 的工具,被至少 8 个勒索团伙拿去用。这意味着什么?意味着对一般的勒索团伙来说,「关掉企业终端防护」已经是一个开箱即用的功能,他们完全不需要自己懂驱动开发。
今年 6 月披露的一个叫 Gentlemen 的组织更典型。他们把自己那套框架当成一款产品来运营:至少 8 个变体,覆盖 48 家安全厂商的 400 多个进程,然后当作「新人礼包」发给每一个加盟成员。
这个组织最值得注意的是更新速度。今年 4 月的一次入侵里,他们用了一枚工业控制设备的驱动,而这枚驱动当时还不在任何公开的危险驱动名单上——换句话说,它是个零日。漏洞细节公开到被武器化,他们能压到几天。
参与这类攻击的团伙名单还在变长:Qilin、Akira、LockBit、Medusa、Warlock、RansomHouse、BlackByte 都有相关活动。安全行业也在正式承认这件事——MITRE 维护的攻击手法知识库 ATT&CK,在今年 4 月的版本里,把「抑制防御」这一类动作放在了更显眼的位置。说白了就是,大家认了:动手之前先把对手弄瞎,已经是标准流程,不是附带效果。
为什么「拉黑名单」这条老路越来越难走
看到这里,很多人的第一反应是:那就把这些危险驱动加进黑名单,全部禁掉。
方向没错,但只能算及格。因为最近两年,绕过黑名单的手法也成熟了,而且问题出在根上,不是临时技巧。
第一个问题:改一个字节,指纹就变了。
现在很多防护产品识别驱动,靠的是文件哈希,也就是给文件算一个指纹,指纹一样就拦住。
有团伙在被厂商拦下之后,只改了驱动文件里时间戳字段的一个字节。这个改动不影响功能,文件照样带着有效签名,但算出来的指纹完全变了——靠指纹的黑名单当场失效。
这件事麻烦在哪?一个有效签名理论上可以对应无数个不同的指纹。只要签名覆盖的范围里还有哪怕一个字节可以动,攻击者就能不断造出「签名有效、指纹全新」的驱动。这个盲区直到 2025 年 8 月才被正式记录成一个漏洞。
第二个问题:拿过期的证书,给自己签字。
今年年初有一个组织,没有去利用任何现成驱动的漏洞,而是翻出了一枚 2015 年就已经过期、属于某设备厂商的被盗签名证书,给自己写的驱动签了名。
在 Windows 的校验视角里,这枚驱动是合法的:证书是真的,根证书是受信任的,签名也是正确的,唯一的问题是过期。而 Windows 对「已吊销证书签出的驱动」,处理上存在缺口。同期还有一起案例,某取证软件的证书 2010 年就到期并被吊销,攻击者用这枚证书签名的驱动,系统照样加载了。
微软在收紧,但收的是旧时代的口子。从今年 4 月的更新开始,Windows 11(24H2 / 25H2 / 26H1)和 Windows Server 2025 不再默认信任旧版交叉签名程序签出的驱动,新的内核驱动要走 WHCP 认证;Windows 11 25H2 也终结了对历史遗留驱动的「祖父条款」。
这是该做的事,但边界要说清楚:走完认证的驱动,一样可能有危险接口,一样可能被滥用。只要系统底层的功能可以被上层程序触发去做敏感操作,这个威胁就一直存在。
说回这次事件:攻击者其实是从「一把钥匙」开始的
前面都在讲技术,下面这段是我们觉得这次最值得说的一点。
用这个手法有个前提:攻击者必须先拿到管理员权限,才有可能把驱动装进系统。
也就是说,它是「进屋之后」的动作,不是破门而入的动作。这跟很多人对「高级攻击」的想象正好相反——它不是从外面砸门进来的,而是已经站在屋子里,伸手把摄像头关掉的那一下。
这次事件的链条,正好印证了这一点。
攻击者最开始拿到的不是漏洞,是一组管理账户的口令。凭这组口令,他通过 Windows 自带的远程管理功能在内网移动,很短时间里就控制了几台关键服务器。
在其中一台服务器上,他改写了一个以最高权限运行的系统服务的程序路径,完成提权——这一步做完,他才真正拿到「可以安装驱动」的资格。
再往后,才是装上那枚有签名的驱动、让安全软件的进程静默退出,然后是对域控制器的操作、对日志的清除,以及更大范围的口令获取。
所以这个手法出现在整条链的中段。而这起事件真正的根因,在更早的地方:一组管理账户口令外泄,加上没有做权限分层——一个管理账户同时握着好几台关键服务器的远程权限,拿到这一个,就等于拿到一片。
还有一条教训要单独说:日志。
这次好几台服务器的日志被清除,或者被大量无意义的事件冲掉,其中一台域控的安全日志被整体清空,现存最早的一条记录就是「日志被清除」本身。后果是,我们无法确定驱动到底是哪一刻被装上的,也无法确认防护总共失效了多久。
在只保留几小时日志的机器上,任何「这个行为以前没出现过」的判断都是不可靠的。做取证最怕的从来不是对手多高明,而是现场没有数据。
如果是你,可以做这几件事
下面几件事的优先级比较清楚。前三件是防守,后三件是发现。
先说防守。
第一,把「驱动落盘」这一步堵住。Windows 10和Windows 11自带一套攻击面缩减(ASR)规则,其中有一条叫「阻止滥用易受攻击的已签名驱动」,规则 ID 是 56a863a9-875e-4185-98a7-b882c64b5ce5,务必用「阻止」模式下发到所有终端。这条能拦在驱动写进磁盘的阶段,比等它变成服务再去发现要早得多。
第二,开启「内存完整性」,也就是HVCI。它把系统对驱动的校验放进一个受隔离保护的环境里,恶意代码碰不到,同时会自动执行微软内置的危险驱动名单。
但要明白它的定位:它是给系统内核做加固,不是做驱动准入。一枚签名合法但有缺陷的驱动,依然满足它的要求,依然装得上。它能做的是把这类驱动造成的破坏限制住。对使用现成工具包的勒索团伙,这一层通常够用。
第三,如果设备上不了内存完整性,就单独下发微软的危险驱动名单。地址是 aka.ms/VulnerableDriverBlockList,通过一个叫 DriverSiPolicy.p7b 的策略文件下发到终端。这份名单从 Windows 11 的 2022 年更新起默认启用,内存完整性开启时会自动强制执行。但它是静态名单,以季度更新为主,前面提到的那个零日案例说明,被武器化的驱动完全可能先进场、后进名单。
如果条件允许,最强的做法是应用控制,也就是 App Control / WDAC。它的逻辑是「默认拒绝」:只有被明确批准过的驱动才能装,其余一律拦住,既不看签名也不查名单。它不依赖「事先知道哪个驱动是坏的」,正好补上前面几层的缺口。建议优先在域控制器、备份服务器、跳板机这类机器上强制实施。
再说发现。这三件事比拦截更现实,因为大多数环境做不到完全拦截。
一是把「驱动安装」和「安全软件停止」这两件事连起来看。记录所有驱动加载事件,凡是来自非标准路径的驱动加载,与其后 60 秒内安全产品服务停止或进程消失,做成一条关联告警。
二是给安全软件的心跳做基线。任意 5 分钟窗口内,某台机器的安全代理上报量比最近 14 天的基线下降超过 70%,就告警。代理已经「瞎了」、而管理后台还显示在线,是这类事件里很常见的情况。
三是做内核服务名的仿冒检测。这次那个 WdiSvchostEx2 就是典型例子——把新建的内核驱动服务名,和系统自带的服务名做相似度比对。这条规则很便宜,但在这类事件里经常第一时间命中。
最后一句给运维同事:权限治理仍然是一切的前提。这次攻击者从头到尾没有使用任何零日漏洞,他用到的是一组有效的管理账户口令、一个可以被改写的系统服务、和一枚从公开漏洞库找来的签名驱动。把管理账户收敛到受控堡垒机上或特权管理设备中、禁止它们直接远程登录业务主机,是对单点防护产品的有效补充。
最后
回头看这件事,最让我们在意的其实不是那枚驱动本身。
那枚驱动,只是一个已经拿到最高权限的人,用来关掉摄像头的工具。在他伸手之前,他先拿到了一组口令,顺着口令走遍内网,在服务器上提了权。
这个手法值得警惕的地方也在这里——它把一件过去需要专业开发能力的事,降成了一个下载即用的动作。行业统计里那地下流通的「EDR 杀手」 54 款工具、35 枚驱动、8 个团伙,说明这门手艺已经从「技术」变成了「服务」。
对防守方来说,这意味着判断标准要换。以前我们问的是「能不能认出坏的东西」,现在更该问的是「能不能只让好的东西进来」。
签名只能证明一枚驱动的来路,证明不了它安不安全;黑名单拦得住已知的坏,拦不住明天新出现的坏。
这是这次事件之后,我们调整最大的一个认知。
(本文基于一次真实事件处置的技术总结撰写,已对所有机构名称、主机标识、网络地址与账户信息做匿名化处理。为不构成利用指导,文中未涉及任何漏洞验证或利用的操作步骤。文中漏洞编号与驱动样本哈希均为公开信息。)
历史文章:
本文转载自微信公众号「大兵说安全」,查看原文。版权归原作者所有,如有侵权请联系删除。