搜索
查看: 3372|回复: 35
收起左侧

[分享] Sophos对深度学习的看法

  [复制链接]
B100D1E55
发表于 2019-3-5 15:38:17 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2019-3-5 15:40 编辑

今天摸鱼的时候突然翻出去年写了一半后就压箱底的东西,于是决定还是把坑填一下……
Sophos在2017年2月收购了Invincea(或许后者不出名,但是说到Sandboxie大家心里就有数了,Invincea是Sandboxie的接盘侠)。写这篇科普文的Joshua Saxe原来在Invincea工作,在Invincea被收购后他的头衔也变成了Sophos的首席数据科学家。

P.S. 剔除了没营养的PR文字,同时这篇文章不代表本人观点(斜眼看看SophosML检测率)

深度学习vs传统机器学习

大部分安全公司无论是否属于Next-gen阵营大多将注意力集中在通过决策树算法来检测恶意程序和恶意行为。决策树最早出现于90年代,并已被较为透彻地研究过。它的优点在于使用和调试上相对简单,检出水平也比较优秀

decisiontree.png

上图是一个决策树检测恶意程序的例子,通过对待测样本进行一系列是/否的回答最终得出一个结论。虽然这个手段效果不错,但和深度学习相比就不大行了,为什么?

深度学习使识别过程自动化

虽然决策树和其他传统的机器学习算法的确从数据中“学到”东西,但其依赖于人工来选择二进制文件的特征、日志文件以及网络流结构。例如在上面的决策树例子中,“在100个网络工作站上存在”之类的特征需要人为规定,而算法则决定在树的哪个部位插入这个问题。这个人为选择的过程就会导致结果劣化,因为人往往依赖于自己的直觉来决定什么特征是重要的。

相反,深度学习模仿大脑的工作原理自动找到最优的特征组合,也正是因为这点,IT业界巨头才投入大量人力物力研究相关领域。

例如在计算机视觉中:

screen-shot-2017-05-12-at-8-35-45-am.png

深度学习可以从输入的原始图片当中学到复杂特征组合。上图中神经网络先检测不同的边缘,然后是汽车的各个部位,最后进一步识别汽车的类型和型号。研究人员发现这个多层级的模式识别和动物大脑的工作模式惊人的相似(作者引用了lecun在nature上那片deep learning的文章)

现在来看看在深度神经网络大放异彩之前传统的物体识别算法:

screen-shot-2017-05-12-at-8-37-10-am.png

上图中每一个检测器都是工程师人工设计+调参出来的,每个框代表一个人工设计出来的子系统。这样的做法不仅让系统变得极其复杂,最终的效果也不如深度学习。从结果来看,神经网络在特征选取上优于人工选择的特征集,这在恶意程序分拣/入侵检测领域中同样成立

cmp.jpg
深度学习和之前传统计算机视觉算法在图像识别上的精度对比(绿色时深度学习,蓝色是传统算法)

深度学习的可拓展性

深度学习相较于传统机器学习的巨大优势之一是其可拓展性,当传统机器学习算法在海量数据中挣扎时深度学习可以使用随机梯度下降等手法来轻松学习海量数据。
传统的决策树在每个学习步骤中(训练需要数以百万计的学习步骤)都需要对学习数据集中的大部分进行计算,而深度神经网络在每一个“学习步骤”中只检视固定批量大小的训练样本集(往往只包含数以百计的样本集,甚至更少!)这意味着决策树的内存消耗随着训练数据的增大而增大,海量数据训练需要海量内存,而深度神经网络的训练内存需求基本是固定的。

screen-shot-2017-05-12-at-8-38-38-am.png

这个拓展性上的巨大差异给深度神经网络带来了巨大优势。上图展示了学习样本数量和0-day样本检测率的对比趋势。当学习样本指数型增长后(X轴),检测质量预计会进一步提高(Y轴,指标是AUC)
screen-shot-2017-05-12-at-8-51-06-am.png

上图展示了Sophos使用不同机器学习模型来检测0-day恶意URL的检出率(Y轴)和误报率(X轴)结果。红线是传统的随机森林算法,特征集是人工精心筛选过的,而蓝线则是使用同样的人工特征集训练的深度神经网络,绿色则是端对端地训练出来地神经网络(无人工特征,直接将URL字符串作为训练数据输入)

当把误报率控制在百万分之一的时候,深度学习达到了72%的侦测率。虽然传统的决策树也能达到同样的侦测率,但在检出率相同的时候误报率则变成了千分之一,误报率相差了1000倍。

深度学习带来的好处不仅是检测精度,其资源占用也远小于传统算法。在端点的模型只需要10MB,而对应的决策树模型需要5GB空间。在扫描URL时,深度学习模型只需要20毫秒,而对应的决策树需要250毫秒。详见下表:
决策树模型 Sophos神经网络
URL扫描耗时(每条) 100~500ms 20~100ms
模型大小 500~10000MB10~20MB
精度由于拓展性(scalability)有限难以继续提升 持续性学习海量数据进一步提升精度


总之:

1. 深度学习的算法自主决定了原始数据中哪些对分拣有利,因此带来了更高的检测精度
2. 深度学习算法对大数据十分友好,对恶意程序的总趋势有强大的记忆能力并对新兴威胁有较好的泛化能力
3. 深度学习算法资源占用更友好

the end

额外的一些东西:

作者15年在MALCON上发了一篇用神经网络静态分拣二进制文件的文章,虽然年代久远还是可以看看当时的一些设计:

model.jpg

特征提取中主要分为四类,上下文字节特征(即用滑窗扫过二进制文件并提取熵之类的特征,感觉类似对图像卷积处理那种做法),PE导入表特征,字符串2D直方图特征(对滑窗的计算结果进行进一步处理),以及PE元数据特征(例如编译时间戳之类的)。神经网络一共四层,最后使用贝叶斯校准等手段算出最终威胁分数

rst.jpg

上表中展现了每个特征类别的分拣精确度,其中B~E是单用上述四类特征之一作为训练输入后得到的检测率,最有效的是元数据,检出率高达86.7%。虽然单纯靠着PE Import仅有22.8%的检测率,但当把B~E这一系列特征结合起来之后就得到了A里高达95.2%的检测率。

F比较有意思,作者将训练样本按编译时间戳分为两堆,一堆是14年7月31日前,一堆是7月31日后,使用7月31日前的文件作为训练数据来预测之后的样本,检测率为67.7%(将误报率控制在0.1%时)。因此作者认为这个方法也需要时常使用新的样本对模型进行更新来维持检测精度。

推荐阅读:UCBerkeley的心理学教授Alison Gopnik曾在Smithsonian上发了一篇简单介绍自下而上/自上而下的机器学习理念的科普文,前两天发现网易上有翻译了(GJ),推荐感兴趣的童鞋阅读

http://tech.163.com/19/0303/11/E9BD8FNF00098IEO.html


评分

参与人数 8原创 +1 分享 +3 魅力 +1 人气 +14 收起 理由
gtc + 3 版区有你更精彩: )
bbs2811125 + 3 版区有你更精彩: )
191196846 + 1 版区有你更精彩: )
xiaofeizei + 1
JAYSIR + 2 版区有你更精彩: )

查看全部评分

STCn1000
发表于 2019-3-5 16:26:24 | 显示全部楼层
Sophos那个检出率大概也就Norton的7成左右(仅ML部分)。
然后传统引擎差的不要不要的。
不知道搞什么。
HEMM
发表于 2019-3-5 16:52:01 | 显示全部楼层
WD也不知道是深度什么学习了,还是有人工上报了,某广告进程前几天还活蹦乱跳的,突然就被WD杀了,而且是精确识别为广告进程。比较像是学习了耶,还清理的挺干净的.........
我对此广告进程采取放任的态度..........

评分

参与人数 2人气 +2 收起 理由
B100D1E55 + 1 哈哈哈
ELOHIM + 1 感谢解答: )

查看全部评分

generalbasic008
发表于 2019-3-5 17:22:33 | 显示全部楼层
360安全大脑是什么鬼,能否深入浅出的说明下 深度学习和传统算法区别 ,这篇文章看的不是很清楚。
歪歪正传
发表于 2019-3-5 17:51:17 | 显示全部楼层
刚离职公司电脑标配嫂护士,被我停掉,总被公司通报,让把软件开启,没开启,我也走了
飞碟1234
发表于 2019-3-5 18:06:38 | 显示全部楼层
骚护士净弄些没用的,还是赶紧多学习,多提高,多卖卖原味,呸,多提升一下自身技术实力才是正经
JAYSIR
发表于 2019-3-5 18:21:00 | 显示全部楼层

深度学习好啊
真的好
深度学习妙啊
真的妙

深度学习模型不好解释。。。
出现奇奇怪怪的问题也在所难免了
ELOHIM
发表于 2019-3-5 18:25:39 | 显示全部楼层
既然判断是不是恶意软件的依据是有没有加密数据,那还多此一举分析文件有没有数字签名干嘛呢?
xiaofeizei
发表于 2019-3-5 18:42:32 | 显示全部楼层
HEMM 发表于 2019-3-5 16:52
WD也不知道是深度什么学习了,还是有人工上报了,某广告进程前几天还活蹦乱跳的,突然就被WD杀了,而且是精 ...

什么广告程序
xiaofeizei
发表于 2019-3-5 18:43:42 | 显示全部楼层
既然sb被骚护士收了那有没有融入sb的技术呢
zgj_lz
发表于 2019-3-5 19:41:36 | 显示全部楼层
图文并茂,一定是好文章。怪就怪神经网络深度不深解析不了,可惜了字数表图。
HEMM
发表于 2019-3-5 19:47:51 | 显示全部楼层

是进程不是广告程序,是合法正规软件中的进程,作用是在界面上铺垫些.......嗯.......
当然WD这方面其实还得加强,偶尔只能杀DLL......还是重启杀,能识别算进步了。
不过过极大可能不会加强,只是维持现状,减少BUG或者优化以及搞搞自保啊啥的........这个过程也许.....漫长.....这样才有的更,不负版本号~

评分

参与人数 1人气 +2 收起 理由
xiaofeizei + 2 根据版规,加1分以示鼓励

查看全部评分

B100D1E55
 楼主| 发表于 2019-3-5 22:50:17 | 显示全部楼层
STCn1000 发表于 2019-3-5 16:26
Sophos那个检出率大概也就Norton的7成左右(仅ML部分)。
然后传统引擎差的不要不要的。
不知道 ...

但是我总觉得SophosML的误报比Norton的低不少,Norton自解压之类的都敢随便乱报……

至于Sophos传统引擎早就被google研究员扒得精光了嘛
B100D1E55
 楼主| 发表于 2019-3-5 22:56:19 | 显示全部楼层
ELOHIM 发表于 2019-3-5 18:25
既然判断是不是恶意软件的依据是有没有加密数据,那还多此一举分析文件有没有数字签名干嘛呢?

这说明依据不仅仅是有没有加密数据,还包含其他的因素。比如有签名的样本中如果没有加密数据90%可能是毒,而没有签名的样本分布刚好相反。这时候加入签名这一条件判断就可以分类讨论提高判断精度。当然这张图只是个例子
STCn1000
发表于 2019-3-5 22:58:00 | 显示全部楼层
B100D1E55 发表于 2019-3-5 22:50
但是我总觉得SophosML的误报比Norton的低不少,Norton自解压之类的都敢随便乱报……

至于Sophos传统引 ...

我这诺顿的误报很低,几乎没有,大概是来源问题hahaha
B100D1E55
 楼主| 发表于 2019-3-5 23:01:42 | 显示全部楼层
generalbasic008 发表于 2019-3-5 17:22
360安全大脑是什么鬼,能否深入浅出的说明下 深度学习和传统算法区别 ,这篇文章看的不是很清楚。

对这篇文章在很多细节上很模糊,毕竟科普文也没办法了。Sophos的介绍是一整个系列的,相关引申出来的论文更是多得不得了,之前有打算把一整个系列都搬运过来不过具体能不能做到看之后我摸鱼时间有多少
B100D1E55
 楼主| 发表于 2019-3-5 23:07:37 | 显示全部楼层
zgj_lz 发表于 2019-3-5 19:41
图文并茂,一定是好文章。怪就怪神经网络深度不深解析不了,可惜了字数表图。

你要看解析的话在这里:https://arxiv.org/abs/1508.03096 里面讨论了特征选取依据,每一层的设计思路,以及最后打分究竟怎么搞。
B100D1E55
 楼主| 发表于 2019-3-5 23:10:02 | 显示全部楼层
本帖最后由 B100D1E55 于 2019-3-5 23:20 编辑
STCn1000 发表于 2019-3-5 22:58
我这诺顿的误报很低,几乎没有,大概是来源问题hahaha

诺顿给我的印象一直是高误杀……坛内大概不止我一个人这么觉得,不少人都有类似经历
B100D1E55
 楼主| 发表于 2019-3-5 23:12:23 | 显示全部楼层
xiaofeizei 发表于 2019-3-5 18:43
既然sb被骚护士收了那有没有融入sb的技术呢

目前没有见到。我一直觉得Invincea放弃Sandboxie维护是迟早的事,windows10这种迭代速度已经快把他们拖死了(看看1809能用的Sandboxie都beta了多久就知道),如果盈利跟不上最终结果就是嗝屁
bbs2811125
发表于 2019-3-5 23:40:58 | 显示全部楼层
资瓷营养文
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2019-3-26 00:57 , Processed in 0.044500 second(s), 5 queries , MemCache On.

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