百度杀毒“雪狼引擎”逆向分析

一、前言&引子

百无聊赖的夜晚,偶尔翻看到这么一篇介绍:

虽然早已不像当年对软件安全那般狂热,但也许是虚荣心作祟,想练练手证明自己宝刀未老,外带着一点点传播真相的责任感。我花了几个无聊看视频的夜晚,完成了大部分百度雪狼引擎的逆向分析,如有错误望指正。

1,BAV版本:

3.0.0.4517

2,引擎文件:

3,病毒库文件:

4,分析评估:

个人认为雪狼仅仅是个非常薄弱传统特征引擎,没有启发,没有虚拟机,没有沙箱等等。

即便是作为一款传统特征引擎也极其不合格,特征总数只有区区2000余条,远远低于传统杀毒软件数百万量级的特征数量。也绝不可能覆盖数量众多的病毒和木马。

对比卡巴斯基特征数量:

这里不禁要提一下,雪狼引擎的库之所以这么小,并非如宣传说的那样是多么牛X的技术突破和多么强大的压缩算法。原因只有一个:特征太少。

这种拿自己的弱点放大百遍当优点大肆宣传的做法,是非常为人不齿的。

二、“量子查杀”&“大数据分析”深度剖析

尽管从上述分析中已经得知,雪狼仅仅是一个传统特征引擎,特征数量也非常少。那么所谓的“量子查杀”和“大数据分析”是不是名副其实呢?下面我将以尽量严谨的逆向分析过程,来揭露它的本质。

MALWARE查杀逆向分析:

1,特征结构描述:

以某条二进制特征为例:

2,结构表:

特征库SM_VDF结构一共13张

3,流程:

每次读入0X40字节,以WORD形式挨个遍历,第一次匹配WORD提速,成功则第二次匹配DWORD,再成功则执行脚本匹配,再成功则保存特征ID,最后根据这条特征ID查询二叉树关系是否需要满足命中其他特征ID。满足所有条件则最后报毒。

4,二叉树:

5,特征命中:

以上图为例,命中 ID_0可以分为以下几种情况:

任意3种组合,命中其中一组即报毒。说白了,其实就一个多种组合匹配。

假设特征描述如下,举例:

根据组合0,4,5报毒规则描述如下:

(入口点指令为push ebp)&(文件区段数为4)&(匹配字符串“I AM MALWARE!”)

根据组合0,4,6报毒规则描述如下:

(入口点指令为push ebp)&(文件区段数为4)&(匹配字符串“I AM VIRUS!”)。

这里的特征4->“文件区段数为4”便是百度所谓的复用特征。

不过这种复用特征数量非常少,而且复用度很低。而且实际上也不是什么了不起的技术,只是一个最简单的多模匹配。

6,实例:

简单特征,例“Win32.Trojan.Delf.a”:

引用:

step:1

匹配2进制数据:69 65 62 75 64 64 79

简单特征,例“Win32.Trojan.BHO.a”:

引用:

step:1

匹配2进制数据:38 36 42 45 42 2D 34 44 32 38 2D 34 35 30 36 2D 41 36 42 41 2D 38 44 30 34 36 36 36 33 38 42 35 33

简单特征,例“Base.Record.InternetExplorer.a”

引用:

step:1

匹配2进制数据:49 6E 74 65 72 6E 65 74 20 45 78 70 6C 6F 72 65 72

复杂脚本特征,例“Win32.Trojan.Nimnal.e”:

引用:

7,分析评估:

所谓“量子查杀”:

所谓“大数据分析”:

VIRUS查杀逆向分析:

1,特征结构描述:

编译了的二进制格式,包含寄存器,逻辑运算,JCC跳转处理的特性。

PS:只反编译了查杀脚本,修复脚本没有弄,纯体力活,搞不动了,没动力。

2,结构表:

特征库SV_VDF结构一共4张结构表

3,自己反编译后定义脚本执行描述:

BAVREG[0]~BAVREG[9] 为引擎寄存器。

BAVREG[0]类似X86下 EAX。返回值。

BAV_FLAGS 对应X86 FLAGS 寄存器。

4,实例:

引用:

脚本特征,例“Win32.Virus.Loader.u”

//获取EP段在第几段,为0就失败。

//获取OEP入口点,匹配2进制60 64 A1 30 00 00 00 8B 40 0C 8B ?? 1C AD

//当前指针+0×15偏移 匹配8B 45 3C 8B 54 05 78

//当前指针+0×74偏移 匹配61 E9  匹配成功则跳转到 _000000A0:

//当前指针+0xB偏移 匹配61 E9  匹配成功则跳转到 _00000079:

//当前指针+0×9偏移 匹配61 E9  匹配成功则跳转到 _00000052:

//当前指针+0×7偏移 匹配61 E9  匹配成功则跳转到 _0000002B:

//当前指针+0×45偏移 匹配61 E9  匹配成功则跳转到 _00000004:

三、Virus&Anti-Virus攻防实验

作为一款传统特征引擎,雪狼在免杀对抗上的能力又如何?

常见的特征免杀方式有两种:

尽管我已经解开了雪狼的特征库,但是方法2的成本更低,也是一般黑客最常用的免杀方式。以此做实验更能说明问题。

1,以雪狼可以检测出的某恶意程序为例,使用MYCCL定位特征码。

2,十六进制查看

特征码1:

特征码2:

特征码3:

3,得知这一条特征对应的三处特征码全取在PDB路径上。

4,把路径大小写修改以后保存。

5,查杀测试:

将virus.exe和virus_bypass.exe同时扫描,结果如下。

6,评估分析:

如此简单的特征方式也预见到了会被如此简单的BYPASS。

四、雪狼&其他杀软查杀效果实际对比

为了验证以上所有结论,我托朋友从某论坛下载了一些恶意程序样本,使用几款常见的杀毒软件来做查杀对比测试。一共63个文件。下载链接:

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1790021 

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1790016

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1789970

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1789968

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1789889

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1789867

http://bbs.kafan.cn/forum.php?mod=viewthread&tid=1789965

1,测试条件:

1.百度杀毒不允许关闭卡巴引擎,但是在代码里判断系统是否为双核,内存是否大于4G。不满足条件则不打开卡巴引擎,于是被我以此巧妙地关闭了卡巴引擎,以检测雪狼真实效果。

2.360杀毒关闭了BD和小红伞。

3.全部测试都是断网。(各家杀软显示样本数不同原因是有些杀软统计了解包数量,实际测试样本数量均为63个)

2,查杀效果:

瑞星:

360杀毒:

百度杀毒:

火绒杀毒:

3,评估分析:

事实胜于雄辩,效果如何也一目了然。

五、总结&思考:

百度的雪狼引擎只是一款基础的传统特征引擎,而且特征数量之少导致其远远无法应付当前的恶意程序环境,免杀对抗也极为容易。尤其是在系统配置低,只有单核和4g以下内存的机器。如果安装百度杀毒,将会直接关闭卡巴引擎不给用户任何提示和选择,单凭雪狼区区两千条特征远远无法抵御恶意程序的侵袭。

最重要的是不负责任的盲目夸大宣传是不折不扣的欺骗,薄弱的查杀率将会使广大用户暴露在安全威胁之中。跟现在的主流杀软相比,还是太浮躁,一款优秀的反病毒引擎,不是一蹴而就,需要是时间,需要积累。