搜索
查看: 9949|回复: 38
收起左侧

[交流探讨] 卡巴斯基的机器学习技术介绍

  [复制链接]
B100D1E55
发表于 2018-4-2 12:18:01 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2018-4-3 11:35 编辑

前置推荐阅读:https://www.kaspersky.com.cn/blog/how-machine-learning-works-simplified/5009/

0.png
基本的模型运作原理:分成训练和保护两个阶段,训练在厂商那里进行,用户得到训练好的模型对各类文件进行侦测。其他的诸如监督/非监督学习/深度学习等知识因为以前介绍过了所以不再赘述。

机器学习主要面临的几个问题
1)需要海量训练数据,特别是训练集的选取。训练集选取不当会引发误报等问题
2)模型的可解读性:当今流行的深度神经网络等被称作“黑盒模型”,也就是说给定输入X,它会产生输出Y,但这中间的流程难以被人类解读。这在实际生活中会导致一系列问题,比如一旦出现了误报,研究人员想追溯误报的根源,这种情况下黑盒会带来不少麻烦
3)误报问题:卡巴训练模型时非常看重误报问题(P.S.这从其较低误报率也可以看出来)。为了进一步减少低误报模型的误报可能性,卡巴进一步采取了分段模型(即区分执行前/后),后文会有介绍
4)机器学习算法需要能快速响应恶意程序的变化趋势:一般而言其他领域的机器学习经常假定数据的分布时固定的,也就是说随时间推进变化不大,但反病毒领域显然不是这么一回事。因此需要开发一个足够灵活的模型能在不重新训练的前提下快速更新
1.png
单个固定检测模型的检测率随时间推进的衰减趋势

卡巴斯基的机器学习检测手段

1)在未知文件执行前通过相似哈希检测新恶意程序
传统的检测特征一般是基于局部代码/文件哈希值、文件属性、代码片段等属性,但早期需要人工进行特征提取,难以应对现今海量样本的数据压力。为了避免高度频繁的检测逃逸,卡巴专注于提取这种特征:
    1. 能快速计算的特征,比如文件的字节内容
    2. 宏观统计特征,比如可执行文件的结构
通过这些轻量特征,卡巴通过机器学习产生一种特征叫局部敏感哈希(locality-sensitive hashes,LSH)
传统的哈希(例如md5)只要文件有细微差别,输出的哈希值就可能大不相同。而LSH正是为了克服这个问题
2.png
如上图,使用局部敏感哈希之后,相似的文件会映射到同一个或者临近的“筐”里。
LSH的计算采用非监督学习,但还需要进一步使用监督学习来生成最终的“相似性哈希”,在这个训练流程中
   1. 训练数据X就是一系列特征向量
   2. Y则是输出的标记,告诉研究人员两个文件是否近似
   3. 训练过程中,算法会将哈希函数的参数进行拟合,拟合的目标是让相似的文件哈希尽量靠拢,而非相似的尽量远离
在实际的产品中有多套这样的哈希计算模型,一些专注于可执行文件的结构计算而不关注实际内容,另一些专注于文件的ASCII字符串,等等。对于不同的恶意程序,这些模型通过不同的特征子集从不同角度捕捉文件之间的区别。例如文件结构哈希异常可能代表有一个新种类的壳,而字符串则往往能捕捉到Syscall参数的特征(例如创建的文件名,下载的URL等)

2)运行前的双阶段检测机制
3.png
为了更精确地侦测恶意程序,程序执行前地侦测分为两个阶段。上图案例中显示了一个二维哈希平面(也就是两个特征X和Y),每个区域是一个哈希的“筐”。映射到同一个筐里的文件说明相似度高。一些区域基本只包含了恶意程序,因此如果一个文件映射到这种区域中基本就是恶意的,较为困难的情况则是L区域的情况——同一个框中仍旧混杂了黑白的文件。这时候设计者可以选择进一步增加哈希提取特征来将二者区分开来,或者使用那个区域特定的分拣器进行进一步判断。卡巴采取的就是后者的手段

5.png
双阶段侦测的主要好处是准确且快速:对未知文件轻量级特征的提取和对应的哈希计算非常快,这步骤可以过滤掉大部分文件,而位于“困难区域”的文件则进入第二阶段,使用查找到的区域专属分拣模型(例如决策树)进行进一步分析。需要注意的是就算有这样分阶段地检测,对于一些更含糊的文件(例如包含了大量白文件,置信度难以确定),卡巴则跳过检测,使用后续的其他手段进行分析,例如行为监控
双阶段侦测的好处之一在于可以有效减少误报,某一些检测模型对于大文件集误报不低,但第一阶段计算哈希的时候就已经对文件进行了初始的“过滤”,输入到对应模型的文件是恶意的可能性已经大大增加,因此概率上有效减少了误报
双阶段侦测的好处之二在于每个哈希筐都可以训练针对性模型,因此分检结果更加精确
此外,这种模型的好处也在于它的可解读性强,遇到误报之类的问题解决起来更方便。

深度学习防止特殊攻击
一些特定的攻击非常稀少,以至于研究人员没有足够多的同类样本来训练检测模型。这时候就需要使用基于深度模型的算法,卡巴将这种方法称为“模范网络”(ExNet)
deep.png
主要流程是先训练一个模型来针对输入的特征构建一个紧凑的表示,然后使用它同时训练多个分拣器。这些分拣器分别用于检测特定类别的恶意程序。深度学习可以让研究人员将特征提取,特征精简,模型生成等步骤通过单个神经网络管线完成,并能萃取出不同恶意程序的区分特征。这个模型可以通过和大量白文件共同训练有效地泛化以检测新兴攻击。

深度学习辅助执行后防御
前述的方法仅用在静态检测上,而这里深度学习则用在未知程序实机运行的检测中。通过威胁行为引擎,产品会收集程序的行为日志,然后进一步将这些日志压缩为特征向量,最后被用来训练深度神经网络来区分正常/恶意的行为路径
6.png
上图中,收集的行为日志会先被转换成一个二分图,这个二分图包含两种类别的节点(行为和参数),而对应的行为和参数之间用线关联。这种数据结构比原始数据更加紧凑,而且对行为之间的顺序调换有着一定的抗混淆能力
紧接着,算法会从途中提取行为模式。这些模式中包含了原始行为日志中的一部分重要行为和对应的参数(例如注册表更改、网络访问等)
然后,算法会将行为模式进一步压缩成一个稀疏的二进制向量,像两种每个部分都代表着一种特定的行为或者对应参数的令牌。
训练过的深度神经网络会将这个稀疏的二进制向量转换成紧凑的表示,这又被称为模式嵌入。接下来这些模式嵌入会通过取最大值被合并成单个向量,也被叫做日志嵌入
最终,通过程序对应的日志嵌入,神经网络会给出一个最后的可疑度决断

使用神经网络的好处在于权重值都是正数,同时激活函数有着很好的单调性。这些特性带来了一系列好处
  1.分拣模型的打分会随着行为量的增加单调递增,也就是说恶意程序没办法通过额外执行一些“干净行为”来混淆检测
  2.由于模型输出的稳定性,模型检出不会随时间产生波动(例如最终决策是干净程序,但中途某个时候决策为恶意)
  3.由于日志空间是单调递增的,在解决误报的时候很容易能抓出导致误报的行为

机器学习辅助大数据分析
机器学习能有效减少人工鉴定的工作量:
7.png
每一个上传到分析实验室的样本都会先经过复杂的特征提取处理,比如k-means或者dbscan,这些处理会将相似度高的对象集合起来
对于上图1~3的分拣类别,实验室采取机器学习算法,例如置信度传播来验证未知样本和已知集合的相似度。有时候就算是对类别3,这种方法也非常有效。剩下类别3的一部分连同类别4则会转交人工处理。
filtering.png

模型的萃取
实验室内部的模型和终端用户机器上的模型大不相同。实验室的模型有时候需要大规模CPU/GPU集群进行计算,同时需要进行异常复杂的特征提取。而对于客户端来说这显然是不现实的,因此需要对实验室内部模型进行萃取来减少性能负担:
8.png

首先,在实验室里我们先将复杂的特征通过计算集群进行提取,训练出一个大模型
接着选取一些未知文件,使用大模型来标记他们
随后,使用标记好的样本来训练轻量级分拣模型
最终将轻量级模型分发给客户端。

个人总结

在客户端上,卡巴扫描中运用的两个主要侦测手段是相似性哈希和决策树 decision.png
实验室里,卡巴使用了更多更复杂的分析分拣手段。
其中KSN依托的哈希应该就是相似性哈希。而与之形成对比的是ESET云端的哈希仍旧是基于行为特征而非文件静态特征 esetpipe.jpg
对比ESET自动决策管线,其实两者相似性还是很多的,只不过ESET客户端更侧重行为分析
参考阅读:avast基于GPU的自动样本分拣和特征生成系统
参考资料:
https://www.kaspersky.com/enterp ... ng-in-cybersecurity
https://media.kaspersky.com/en/b ... gies-whitepaper.pdf
https://media.kaspersky.com/en/e ... achine-Learning.pdf
https://media.kaspersky.com/en/b ... human-expertise.pdf

评分

参与人数 7经验 +10 人气 +7 收起 理由
驭龙 + 1 版区有你更精彩: )
FUZE + 1 毒,大佬,学习了
dongwenqi + 1 版区有你更精彩: )
ELOHIM + 1 精品文章!
pal家族 + 1 版区有你更精彩: )

查看全部评分

cloud01
头像被屏蔽
发表于 2018-4-2 12:57:48 | 显示全部楼层
eset还是略牛逼,就是太保守。导致效果略差。
iamLMH
发表于 2018-4-2 13:16:03 来自手机 | 显示全部楼层
前排支持大神
pal家族
发表于 2018-4-2 13:43:28 | 显示全部楼层
楼主这搞来的不是对public开放的吧?
2605276004x
发表于 2018-4-2 15:20:03 | 显示全部楼层
看过
dajise111
发表于 2018-4-2 15:22:39 | 显示全部楼层
这么看来 ESET的技术还是很先进的   不过实际效果来看  ESET貌似和卡巴比还差一大截
superax
发表于 2018-4-2 15:25:30 | 显示全部楼层
这个机器学习,KES11正式版上面已经有了,不知道KIS2019上面有没有啊?
pal家族
发表于 2018-4-2 15:39:15 | 显示全部楼层
superax 发表于 2018-4-2 15:25
这个机器学习,KES11正式版上面已经有了,不知道KIS2019上面有没有啊?

个人版向来最靠前。。。。
而且这个东西出来已经很长时间,,卡巴明面上的宣传挺少的
桑德尔
发表于 2018-4-2 16:14:51 | 显示全部楼层
dajise111 发表于 2018-4-2 15:22
这么看来 ESET的技术还是很先进的   不过实际效果来看  ESET貌似和卡巴比还差一大截

这篇文章好像就在谈机器学习和启发式分析吧?如果只玩静态扫描那ESET的检测率简直可谓惊天地泣鬼神了,但是你认真阅读会发现文中提到,对于不好下定义的文件卡巴会通过行为分析持续监控后续行为,所以即使扫描没能干掉主防还能抢救,而且卡巴的主防做的还很不错,但是ESET如果扫描被过了那十有八九是真的嗝屁了
dajise111
发表于 2018-4-2 16:18:29 | 显示全部楼层
桑德尔 发表于 2018-4-2 16:14
这篇文章好像就在谈机器学习和启发式分析吧?如果只玩静态扫描那ESET的检测率简直可谓惊天地泣鬼神了,但 ...

是的 ESET的优势就在于高启发和机器学习做的较早,但是如果高启发过了  那基本上就歇菜了   所以综合来讲 ESET和卡巴 诺顿 趋势 FS比 还是差一些  
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 湘ICP备2021004765号-1 ) GMT+8, 2021-9-17 07:03 , Processed in 0.137983 second(s), 20 queries .

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

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