查看: 7961|回复: 4
收起左侧

[分享] 牛人技术分析:百度雪狼引擎纯属忽悠

 关闭 [复制链接]
mrzhou
发表于 2014-11-30 16:09:44 | 显示全部楼层 |阅读模式
本帖最后由 mrzhou 于 2014-11-30 16:29 编辑

  
虽然早已不像当年对软件安全那般狂热,但也许是虚荣心作祟,想练练手证明自己宝刀未老,外带着一点点传播真相的责任感。我花了几个无聊看视频的夜晚,完成了大部分百度雪狼引擎的逆向分析,如有错误望指正。
1,BAV版本:
3.0.0.4517
2,引擎文件:
3,病毒库文件:
4,分析评估:
个人认为雪狼仅仅是个非常薄弱传统特征引擎,没有启发,没有虚拟机,没有沙箱等等。
即便是作为一款传统特征引擎也极其不合格,特征总数只有区区2000余条,远远低于传统杀毒软件数百万量级的特征数量。也绝不可能覆盖数量众多的病毒和木马。
对比卡巴斯基特征数量:
这里不禁要提一下,雪狼引擎的库之所以这么小,并非如宣传说的那样是多么牛X的技术突破和多么强大的压缩算法。原因只有一个:特征太少。
这种拿自己的弱点放大百遍当优点大肆宣传的做法,是非常为人不齿的。
二、“量子查杀”&“大数据分析”深度剖析
尽管从上述分析中已经得知,雪狼仅仅是一个传统特征引擎,特征数量也非常少。那么所谓的“量子查杀”和“大数据分析”是不是名副其实呢?下面我将以尽量严谨的逆向分析过程,来揭露它的本质。
MALWARE查杀逆向分析:
1,特征结构描述:
以某条二进制特征为例:
B0 AE CE D2 D6 D0 B9 D8 B4 E5红色字体为FIRST_WORD蓝色字体为SECOND_DWORD黑色字体为THREE_SCRIPT_DATA
2,结构表
特征库SM_VDF结构一共13张
3,流程:
每次读入0X40字节,以WORD形式挨个遍历,第一次匹配WORD提速,成功则第二次匹配DWORD,再成功则执行脚本匹配,再成功则保存特征ID,最后根据这条特征ID查询二叉树关系是否需要满足命中其他特征ID。满足所有条件则最后报毒。
4,二叉树:
5,特征命中:
以上图为例,命中 ID_0可以分为以下几种情况:
0->1->2->30->4>50->4>6
任意3种组合,命中其中一组即报毒。说白了,其实就一个多种组合匹配。
假设特征描述如下,举例:
0:入口点指令为push ebp4:文件区段数为45:匹配字符串“I AM MALWARE!”。6:匹配字符串“I AM VIRUS!”。
根据组合0,4,5报毒规则描述如下:
(入口点指令为pushebp)&(文件区段数为4)&(匹配字符串“IAM MALWARE!”)
根据组合0,4,6报毒规则描述如下:
(入口点指令为pushebp)&(文件区段数为4)&(匹配字符串“IAM VIRUS!”)。
这里的特征4->“文件区段数为4”便是百度所谓的复用特征。
不过这种复用特征数量非常少,而且复用度很低。而且实际上也不是什么了不起的技术,只是一个最简单的多模匹配。
6,实例:
简单特征,例“Win32.Trojan.Delf.a”:
引用:
Word OP:0x6464sign count:00000001idx:000003BC,idy:00000351,Match_Dword:75626569, Virname:Win32.Trojan.Delf.aMethod Size:0000000C
step:1
匹配2进制数据:69 65 62 75 64 64 79
简单特征,例“Win32.Trojan.BHO.a”:
引用:
Word OP:0x2D42sign count:00000001idx:000003E1,idy:00000337,Match_Dword:45423638, Virname:Win32.Trojan.BHO.aMethod Size:0000000C
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 4430 34 36 36 36 33 38 42 35 33
简单特征,例“Base.Record.InternetExplorer.a”
引用:
Word OP:0x6E72sign count:00000002idx:00000030,idy:00000003,Match_Dword:65746E49,Virname:Base.Record.InternetExplorer.aMethod Size:0000000C
step:1
匹配2进制数据:49 6E 74 65 72 6E 65 74 20 45 78 70 6C 6F 72 65 72
复杂脚本特征,例“Win32.Trojan.Nimnal.e”:
引用:
Word OP:0x7404sign count:00000001idx:000001EE,idy:00000797,Match_Dword:43390575, Virname:Win32.Trojan.Nimnal.eMethod Size:00000088step:1回退文件偏移:FFFFFFE4step:2匹配2进制数据:8A 10 83 step:3运算匹配 ANDKEY:0xF0,AndData:E0 step:4匹配2进制数据:01 88 14 step:5运算匹配 ANDKEY:0xF0,AndData:00 step:6匹配2进制数据:83 C0 01 85 step:7移动Buf指针:00000001step:8匹配2进制数据:75 F1 8B DF B8 step:9移动Buf指针:00000004step:10匹配2进制数据:81 3B step:11移动Buf指针:00000004step:12匹配2进制数据:75 05 39 43 04 74 05 83 C3 01 EB EE
7,分析评估:
所谓“量子查杀”:
本质:基于样本“全文”的明文2进制多方式匹配。通过(1.WORD),(2.DWORD)进行提速,最后(3.脚本)3个步骤,每次匹配中的病毒IDX保存,在随后进行多模匹配。只是一个最基本最基本的传统特征码查杀方式而已。尽管切分了文件,但本质不变。
所谓“大数据分析”:
因雪狼查杀机制为全文查杀,导致效率会极为低下。为了提高效率通过统计已有的样本而做出的SECT0表来做提速,仅此而已。
VIRUS查杀逆向分析:
1,特征结构描述:
编译了的二进制格式,包含寄存器,逻辑运算,JCC跳转处理的特性。
PS:只反编译了查杀脚本,修复脚本没有弄,纯体力活,搞不动了,没动力。
2,结构表:
特征库SV_VDF结构一共4张结构表
3,自己反编译后定义脚本执行描述:
BAVREG[0]~BAVREG[9]为引擎寄存器。
BAVREG[0]类似X86下 EAX。返回值。
BAV_FLAGS 对应X86FLAGS 寄存器。
4,实例:
引用:
脚本特征,例“Win32.Virus.Loader.u”
id:0000006D,Win32.Virus.Loader.uBAVREG[0] = BAVE_GetEP_Section_Index();BAV_FLAGS = BAVREG[0] - 0x00000000;Check_BAV_FLAGS == 0 {RetnScan FALSE}//if(BAVE_GetEP_Section_Index() == 0){retn FALSE;}
//获取EP段在第几段,为0就失败。
BAVREG[0] = BAVE_GetAddressOfEntryPoint_RVA();BAVREG[9] = BAVREG[0];BAV_FLAGS = MatchData RVA:BAVREG[0], 60 64 A1 30 00 00 00 8B 40 0C 8B ;Add Offset:00000001;BAV_FLAGS = MatchData RVA:BAVREG[0], 1C AD ;Check_BAV_FLAGS == 1 {RetnScan FALSE};
//获取OEP入口点,匹配2进制60 64 A1 30 00 00 00 8B 40 0C 8B ?? 1C AD
BAVREG[0] += 0x00000015;BAV_FLAGS = MatchData RVA:BAVREG[0], 8B 45 3C 8B 54 05 78 ;Check_BAV_FLAGS == 1 {RetnScan FALSE};
//当前指针+0×15偏移 匹配8B 45 3C 8B 54 05 78
BAVREG[0] += 0x00000074;BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;Check_BAV_FLAGS == 0 {Goto _000000A0};
//当前指针+0×74偏移 匹配61 E9  匹配成功则跳转到 _000000A0:
BAVREG[0] += 0x0000000B;BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;Check_BAV_FLAGS == 0 {Goto _00000079};
//当前指针+0xB偏移匹配61 E9  匹配成功则跳转到 _00000079:
BAVREG[0] += 0x00000009;BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;Check_BAV_FLAGS == 0 {Goto _00000052};
//当前指针+0×9偏移 匹配61 E9  匹配成功则跳转到 _00000052:
BAVREG[0] += 0x00000007;BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;Check_BAV_FLAGS == 0 {Goto _0000002B};
//当前指针+0×7偏移 匹配61 E9  匹配成功则跳转到 _0000002B:
BAVREG[0] += 0x00000045;BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;Check_BAV_FLAGS == 0 {Goto _00000004};
//当前指针+0×45偏移 匹配61 E9  匹配成功则跳转到 _00000004:
{RetnScan FALSE};//返回失败_000000A0:{RetnScan TRUE};//返回成功报毒_00000079:{RetnScan TRUE};//返回成功报毒_00000052:{RetnScan TRUE};//返回成功报毒_0000002B:{RetnScan TRUE};//返回成功报毒_00000004:{RetnScan TRUE};//返回成功报毒
三、Virus&Anti-Virus攻防实验
作为一款传统特征引擎,雪狼在免杀对抗上的能力又如何?
常见的特征免杀方式有两种:
1,逆向分析传统特征库,避开检测条件。2,黑盒定位特征。
尽管我已经解开了雪狼的特征库,但是方法2的成本更低,也是一般黑客最常用的免杀方式。以此做实验更能说明问题。
1,以雪狼可以检测出的某恶意程序为例,使用MYCCL定位特征码。
2,十六进制查看
特征码1:
特征码2:
特征码3:
3,得知这一条特征对应的三处特征码全取在PDB路径上。
4,把路径大小写修改以后保存。
5,查杀测试:
将virus.exe和virus_bypass.exe同时扫描,结果如下。




6,评估分析:
如此简单的特征方式也预见到了会被如此简单的BYPASS。
四、雪狼&其他杀软查杀效果实际对比
为了验证以上所有结论,我托朋友从某论坛下载了一些恶意程序样本,使用几款常见的杀毒软件来做查杀对比测试。一共63个文件。下载链接:
1,测试条件:
1.百度杀毒不允许关闭卡巴引擎,但是在代码里判断系统是否为双核,内存是否大于4G。不满足条件则不打开卡巴引擎,于是被我以此巧妙地关闭了卡巴引擎,以检测雪狼真实效果。
2.360杀毒关闭了BD和小红伞。
3.全部测试都是断网。(各家杀软显示样本数不同原因是有些杀软统计了解包数量,实际测试样本数量均为63个)
2,查杀效果:
瑞星:
360杀毒:
百度杀毒:
火绒杀毒:
3,评估分析:
事实胜于雄辩,效果如何也一目了然。
五、总结&思考:
百度的雪狼引擎只是一款基础的传统特征引擎,而且特征数量之少导致其远远无法应付当前的恶意程序环境,免杀对抗也极为容易。尤其是在系统配置低,只有单核和4g以下内存的机器。如果安装百度杀毒,将会直接关闭卡巴引擎不给用户任何提示和选择,单凭雪狼区区两千条特征远远无法抵御恶意程序的侵袭。
最重要的是不负责任的盲目夸大宣传是不折不扣的欺骗,薄弱的查杀率将会使广大用户暴露在安全威胁之中。跟现在的主流杀软相比,还是太浮躁,一款优秀的反病毒引擎,不是一蹴而就,需要是时间,需要积累。
[原文作者:看雪/monkeycz,,版权属于作者]


  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
1094947421
发表于 2014-11-30 16:13:39 | 显示全部楼层
有人发过了,坐等被删或者移帖
chenxiaojunceo
发表于 2014-11-30 16:29:55 来自手机 | 显示全部楼层
本帖最后由 chenxiaojunceo 于 2014-11-30 16:33 编辑

有人发过了,只不过看来百度杀毒是因为过于强大,踩到某公司的尾巴而且痛得厉害啊。记得以前有一大波人说瑞星卸不掉,只不过用过的人都知道压根没这回事!而后来有说百度杀毒卸不掉,但真的用过的人都知道百度杀毒在开始程序里的那个目录下只有两个东西,一个是软件本身,一个就是卸载工具。而现在看来又开始找个所谓的牛人来唬人了。
zmyx279323199
头像被屏蔽
发表于 2014-11-30 16:45:09 | 显示全部楼层
chenxiaojunceo 发表于 2014-11-30 16:29
有人发过了,只不过看来百度杀毒是因为过于强大,踩到某公司的尾巴而且痛得厉害啊。记得以前有一大波人说瑞 ...

真卸不掉,programs下的文件卸载后重启也不会自动删除
chenxiaojunceo
发表于 2014-11-30 16:54:55 来自手机 | 显示全部楼层
zmyx279323199 发表于 2014-11-30 16:45
真卸不掉,programs下的文件卸载后重启也不会自动删除

剩个文件夹,里面还有几个文件你觉得奇怪?我几乎就没见过哪个软件用官方卸载工具卸载后programs下的文件夹会自动删除的,要不就是空文件夹,要不就剩几个不知干嘛用的文件。直接丢进回收站删掉即可。毕竟软件已经彻底卸掉,没有半点卸不掉。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-25 05:52 , Processed in 0.130446 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表