搜索
查看: 6634|回复: 92
收起左侧

[讨论] 多引擎真的靠谱吗?

  [复制链接]
B100D1E55
发表于 2017-10-2 13:36:15 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2017-10-2 13:40 编辑

在近期为了评测杀软各处收集样本的时候,我发现了一些有趣(狗血)的现象,在这里分享一下。

可能有人会好奇样本区的一些毒源到底是怎么鉴定爬虫抓到的是否为毒,其实很狗血的事实是他们免不了用多引擎扫描作为一些鉴定参考。这里就涉及到一个问题:怎么合理使用多引擎?

这其实是一个相当复杂的问题,如果你把每个独立厂家看作是一个单独的病毒鉴定算法(事实上每个引擎肯定又融合了多个子算法),聪明地融合多引擎扫描结果实质上就是一个机器学习中的boost问题。boost的模型有很多,而现在的多引擎产品选择的往往是最简单的融合方法,即只要有一个报毒就报毒。可能有人认为引擎越多越好,毕竟漏杀的可能性越小。但不要忘记,在这种简单的综合下,查杀率可能增高了10%,但误报率可能会增高10%以上。在后文可以看到一些杀软们放飞自我的时刻,你就知道纯粹靠VT杀毒是多么愚蠢的事情。

在鉴定毒源样本的时候有时候可以看到一些很狗血的事情,例如在有一次从malshare抓样本的时候,我发现有一天里面有两个以上的白记事本程序。后来我才发现有一些不太负责任的毒源直接使用简单的阈值,即当VT报毒超过n个的时候鉴定为“可疑”

这种做法有几个潜在的问题
1)他们甚至没考虑BD家族的庞大,也就是说如果BD报毒了,整个BD系跟着一起报毒,如果把多引擎阈值设成10,那么这个策略基本上就收纳了BD所有的误报情况
2)他们没有考虑到ML引擎的不靠谱性。那些静态ML引擎们傲娇起来比传统厂商厉害得多,某些情况和白样本一言不合就集体报毒
3)他们没有考虑到“跟屁虫”的存在,即有一些厂商依赖其他厂商的扫描结果来做自己的鉴定。如果那些初始厂商误报了,后续就会出现滚雪球般误报厂商变多的现象。

因此,单靠VT引擎报毒数量来鉴定并不是很聪明的方法。我个人认为至少至少至少需要给每个引擎设置一个权重,把机会多让给一些靠谱的厂商。毕竟这些毒源中一些商业毒源(即有些安全厂家也是这些毒源的订阅者)甚至会对厂商形成一个“负反馈循环”,使错的更错,对的变错。

这里来几个简单的狗血例子,请记住这些引擎的名字:
编译环境:gcc 4.9.2 release-build

第一回合:初学者的苦恼——一系列没营养的程序,一系列没营养的报毒
1. 返回0
src0.jpg
rst0.jpg

2. 打印Hello World
src1.jpg
rst1.jpg
3. 打开文件后关闭
src2.jpg
rst2.jpg

4. 什么也不做
src3.jpg
rst3.jpg
5. 睡眠后退出
src4.jpg
rst4.jpg
6. 打印HelloWorld,但是关闭编译器优化
src5.jpg
rst5.jpg


第二回合——机器学习的傲娇

这里我选用一个常见的虚拟机反向侦测软件pafish,这程序就是用来检测自己是否在虚拟机里运行,除此之外没有任何恶意行为,理所当然不该被报毒

原版pafish:
pafish_mod.jpg
尾巴填几个0的pafish:
pafish_more_zeros.jpg
再填几个随机字符:
pafish_zerosandrandom.jpg
随机字符和零交替着填:
alternative.jpg
随机字符和零交替填但间隔变大:
longer_interval.jpg
填很多很多随机字符:
many_random_symbols.jpg

机器学习引擎似乎并没有“看破红尘”,各种无聊的padding大法玩弄着他们的报毒置信度。免杀机器学习难吗?至少让他们误杀不难


第三回合——日常翻车


我将自己的一个简单python脚本用pyinstaller打包成exe,这个脚本给定一个路径可以剔除掉非PE文件(用于测试Cylance的帖子),绿色无污染
pyinstaller.jpg


我觉得如果举办一个无聊的竞赛,比比谁能用最简单的无害代码让VT上最多的杀软报毒,或许能收到更多有想象力的样本。

总之综合上图你看到了,误报的当中总有几个常客在那里捣乱,而反过来,完全没在上面误报例子中出现的引擎,不考虑查杀率的话先每个给一朵小红花。

评分

参与人数 8人气 +8 收起 理由
HEMM + 1 宁可错杀一千不放过一个理论要来击败你惹~
我就是XXX + 1 精品文章
Dust-;羅錠 + 1 版区有你更精彩: )
JAYSIR + 1 版区有你更精彩: )
fireherman + 1 一天内的第二个人气

查看全部评分

cloud01
发表于 2017-10-2 13:41:30 | 显示全部楼层
支持,所以挑几个比较知名靠谱,不同地区老大级,使用人数比较多的病毒库就够了,引擎都是比较老的了,卡巴、BD本体、诺顿、红伞、avast这几个合起来就不错了,本人觉得其中ESET又不适合脱离最新的自身引擎来使用,本身库小。
bbs2811125
发表于 2017-10-2 13:49:22 | 显示全部楼层
有趣的实验,卡巴红伞ESET表现良好
bbs2811125
发表于 2017-10-2 13:50:44 | 显示全部楼层
cloud01 发表于 2017-10-2 13:41
支持,所以挑几个比较知名靠谱,不同地区老大级,使用人数比较多的病毒库就够了,引擎都是比较老的了,卡巴 ...

你没看到上面BDavast诺顿都乱报了么
cloud01
发表于 2017-10-2 13:56:16 | 显示全部楼层
bbs2811125 发表于 2017-10-2 13:50
你没看到上面BDavast诺顿都乱报了么

总的来说还是靠谱的,没报的也会有漏杀 ,这几个都算比较靠谱的了。
bbs2811125
发表于 2017-10-2 14:03:19 | 显示全部楼层
cloud01 发表于 2017-10-2 13:56
总的来说还是靠谱的,没报的也会有漏杀 ,这几个都算比较靠谱的了。

我倒觉得avast的参考性不如ESET
卡巴替代BD、ESET作为传统启发类、Avira兜个底基本上差不多了。当然BD的入库效率应该是所有杀软里边最好的,下来就是卡巴。诺顿的启发云检测率上去了不少但误报也提高了
咖啡的GW版本感觉才是神器
cloud01
发表于 2017-10-2 14:18:10 | 显示全部楼层
本帖最后由 cloud01 于 2017-10-2 14:19 编辑
bbs2811125 发表于 2017-10-2 14:03
我倒觉得avast的参考性不如ESET
卡巴替代BD、ESET作为传统启发类、Avira兜个底基本上差不多了。当然BD的 ...

AVAST确实有点,eset就是库太特殊、必须配自己的引擎才更有效果。卡巴和BD库大,卡巴还有云,但是最新病毒首次查杀率貌似总也不是很高,难道是免杀太多了。这么说来,以后要卡巴加红伞双引擎。
bbs2811125
发表于 2017-10-2 14:37:19 | 显示全部楼层
cloud01 发表于 2017-10-2 14:18
AVAST确实有点,eset就是库太特殊、必须配自己的引擎才更有效果。卡巴和BD库大,卡巴还有云,但是最新病 ...

卡巴被针对很正常,BD也是如此。这两家都属于树大招风型,所以策略都是快速入库。
首次查杀的话,你用红伞估计要失望的,avira入库速度之前不错,但是可能是收集力度的问题,节奏更不太上。反过来倒是ESET一直都是这水平,很平稳。
目前来看综合性做得比较好的就是卡巴和BD两家,要速度有速度,要主防有主防。这个和评测上反应的数据也是吻合的
cloud01
发表于 2017-10-2 14:53:18 | 显示全部楼层
bbs2811125 发表于 2017-10-2 14:37
卡巴被针对很正常,BD也是如此。这两家都属于树大招风型,所以策略都是快速入库。
首次查杀的话,你用红 ...

说到最后还是单奔一个 卡巴、bd、eset就行了。最好都把360功能加上哈哈!
bbs2811125
发表于 2017-10-2 14:55:10 | 显示全部楼层
cloud01 发表于 2017-10-2 14:53
说到最后还是单奔一个 卡巴、bd、eset就行了。最好都把360功能加上哈哈!

这三个选一个然后配上垃圾清理就完事
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2017-10-24 19:18 , Processed in 0.049087 second(s), 5 queries , MemCached On.

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