首页
社区
课程
招聘
[原创]百度雪狼引擎逆向分析
2014-11-27 21:49 47070

[原创]百度雪狼引擎逆向分析

2014-11-27 21:49
47070
百度雪狼引擎逆向分析

百无聊赖的夜晚,偶尔翻看到这么一篇介绍:
“百度首度自研推出的核心查杀引擎“雪狼”,采用全新“量子查杀”技术.”
“雪狼引擎依托百度大数据分析,通过海量样本的分析技术得到文件多维度信息,实现了短小、抗免杀、能力超强的识别模式技术的突破.”


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

二.引擎结构&功能分析

1.BAV版本:
  3.0.0.4517

2.引擎文件:


3.病毒库文件:


4.分析评估:
特征总数2000余条,远远低于传统杀毒软件数百万量级的特征数量.这时我表示更加好奇了。
对比卡巴斯基特征数量:


三.”量子查杀”&”大数据分析”深度剖析
  尽管从上述分析中已经得知,雪狼仅仅是一个传统特征引擎,特征数量也非常少.那么所谓的”量子查杀”和”大数据分析”是不是名副其实呢?下面我将以尽量严谨的逆向分析过程,寻找真相。

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->3
0->4>5
0->4>6
任意3种组合,命中其中一组即报毒。说白了,其实就一个多种组合匹配。

假设特征描述如下,举例:
0:入口点指令为push ebp
4:文件区段数为4
5:匹配字符串”I AM MALWARE!”.
6:匹配字符串”I AM VIRUS!”.

根据组合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”:
Word OP:0x6464
sign count:00000001
idx:000003BC, idy:00000351, Match_Dword:75626569, Virname:Win32.Trojan.Delf.a
Method Size:0000000C
step:1
匹配2进制数据:69 65 62 75 64 64 79 


简单特征,例” Win32.Trojan.BHO.a”:
Word OP:0x2D42
sign count:00000001
idx:000003E1, idy:00000337, Match_Dword:45423638, Virname:Win32.Trojan.BHO.a
Method 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 44 30 34 36 36 36 33 38 42 35 33 


简单特征,例” Base.Record.InternetExplorer.a”
Word OP:0x6E72
sign count:00000002
idx:00000030, idy:00000003, Match_Dword:65746E49, Virname:Base.Record.InternetExplorer.a
Method 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:0x7404
sign count:00000001
idx:000001EE, idy:00000797, Match_Dword:43390575, Virname:Win32.Trojan.Nimnal.e
Method Size:00000088
step:1
回退文件偏移:FFFFFFE4
step: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指针:00000001
step:8
匹配2进制数据:75 F1 8B DF B8 
step:9
移动Buf指针:00000004
step:10
匹配2进制数据:81 3B 
step:11
移动Buf指针:00000004
step: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 对应X86 FLAGS 寄存器。

4.实例:
脚本特征,例” Win32.Virus.Loader.u”
id:0000006D, Win32.Virus.Loader.u
BAVREG[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};
//当前指针+0x15偏移 匹配8B 45 3C 8B 54 05 78
BAVREG[0] += 0x00000074;
BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;
Check_BAV_FLAGS == 0 {Goto _000000A0};
//当前指针+0x74偏移 匹配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};
//当前指针+0x9偏移 匹配61 E9  匹配成功则跳转到 _00000052:
BAVREG[0] += 0x00000007;
BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;
Check_BAV_FLAGS == 0 {Goto _0000002B};
//当前指针+0x7偏移 匹配61 E9  匹配成功则跳转到 _0000002B:
BAVREG[0] += 0x00000045;
BAV_FLAGS = MatchData RVA:BAVREG[0], 61 E9 ;
Check_BAV_FLAGS == 0 {Goto _00000004};
//当前指针+0x45偏移 匹配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个文件.下载链接:
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.评估分析:
事实胜于雄辩,效果如何也一目了然.

五.总结&思考:
现在压力太大,无法总结思考。!!!!!!
有空总结最后声明下,以上为我个人研究结果,如有违反啥的请联系我。我会编辑。



阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (117)
雪    币: 107
活跃值: (311)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 2014-11-27 21:56
2
0
沙发.........................
终于座了一次沙发....好难得...

只能说..楼主好精神...为何不继续看着无聊的电影啊..

不过百度的是不敢恭维的...现在除了数字就是管家..其他的从来都没用过...

大厂出品的还是放心点
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mlyKnown 2014-11-27 22:03
3
0
mark。。杀毒数字真心不错,现在用管家。。
雪    币: 296
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GuluYZ 2014-11-27 22:03
4
0
闲的蛋疼啊~大家都知道这个玩意是个垃圾~还有时间去逆向这个。。。。佩服猴子哥哥。牛!
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dalerkd 1 2014-11-27 22:05
5
0
前排出售瓜子饮料咯
雪    币: 376
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
蛋蛋好疼 2014-11-27 22:07
6
0
360当年也是这样,初期都差不多
雪    币: 79
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zyccrazy 2014-11-27 22:08
7
0
前辈出品 必须精品啊
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dalerkd 1 2014-11-27 22:12
8
0
突然想起,学校或者企业安装百度杀毒、输入法、浏览器是按台算钱的(给机房管理员)。偶在装离线版的百度杀毒上面直接分析老旧病毒,就没见它提示过!!!汗。。。
雪    币: 175
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
疾光 2014-11-27 22:17
9
0
高手就是不同
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
busan 2014-11-27 22:22
10
0
分析得很赞,百度杀毒就是渣
雪    币: 7076
活跃值: (3468)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
bxc 6 2014-11-27 22:23
11
0
国产软件,永远说的比做的好
(只针对大部分国软,还有小部分还是不错的.)
雪    币: 2660
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
安于此生 34 2014-11-27 22:28
12
0
猴哥宝刀未老哇...
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tobacco 2014-11-27 22:35
13
0
膜拜楼主!
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
孤单的狼 2014-11-27 22:47
14
0
好文章  过程很精彩!
雪    币: 8863
活跃值: (2374)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
cvcvxk 10 2014-11-27 22:50
15
0
楼主good job~
雪    币: 7852
活跃值: (2306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
option 2014-11-27 22:50
16
0
话说卡巴源码都泻过了,怎么没见学到什么呢
雪    币: 211
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ejoyc 2014-11-27 22:55
17
0
各种膜拜楼主!
雪    币: 6590
活跃值: (3020)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asd 2014-11-27 22:57
18
0
销售很厉害
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
tuobaofeng 2014-11-27 22:59
19
0
现在的杀毒软件都快变成娱乐软件了
雪    币: 41
活跃值: (154)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
熔岩 2014-11-27 23:01
20
0
大哥,字体能小一点吗?
雪    币: 6437
活跃值: (2315)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuyangzjg 2014-11-27 23:02
21
0
会有当事开发的回复不~~
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
万抽抽 2 2014-11-27 23:02
22
0
这是我这个月的膝盖,请楼主收好~
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MysteryMOP 2014-11-27 23:30
23
0
打脸打的好!!支持LZ!!
雪    币: 859
活跃值: (304)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
Vsbat 4 2014-11-27 23:41
24
0
膜拜前辈逆向~~哈哈:)
雪    币: 20
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小色 2014-11-27 23:44
25
0
给你个赞。
游客
登录 | 注册 方可回帖
返回