查看: 7496|回复: 68
收起左侧

[分享] ESET与机器学习(上)

  [复制链接]
B100D1E55
发表于 2017-6-16 10:38:53 | 显示全部楼层 |阅读模式
本帖最后由 B100D1E55 于 2017-6-21 08:01 编辑

2017-6-19更新:

我另外咨询了一些问题(包括ccboxes同学提出的部分问题),现将官方的答复分享一下:

问:我认为静态机器学习算法单独使用并不可靠,因为其仅将可执行文件作为数据提取表层特征,并不算真正看到了内部的行为,而且可能带来较多误报。对于静态机器学习算法侦测病毒ESET有什么看法?
答:我们的确是这样认为的。这类“过激侦测”对于小部分能够容忍较多误报的用户来说或许有用,而我们也为少部分商业用户提供这种侦测。事实上ESET已经部署异常侦测(anomaly detection)好多年了,只不过这类侦测不在终端上报毒。这种异常侦测辅助我们收集到很多有意思的样本(注:我认为这里应该指的是某些可疑文件不触发报毒,但是会通过Live Grid等途径被上报到官方)。这是一种策略,特别是对那些把样本放在多引擎扫描服务上进行免杀测试的行为很有效。我们将一些侦测移到其他防护层,这样一来黑客如果只用多引擎扫描服务测试表层免杀则会认为自己已经成功免杀了。这很类似于一些执法机构“先少抓以抓到更多”的策略。

问:是不是可以这样理解:为了控制误报,产品基本上只能依靠厂商的响应速度(也就是说总有一些第一时间中招的受害者)。一些初创公司的宣传声称他们不需频繁升级就可以侦测很多未知威胁。虽然这些言论掺水严重,但我的确想知道一款优秀的防毒产品是否能够在某种程度上领先于新生恶意威胁。我知道有些产品提供了沙盒以作为第一时间未知鉴定的缓解手段,ESET有考虑过这么做吗?
答:仅当一个安全产品用户少的时候才无需频繁更新。有很多这类初创企业的产品都还没被黑客们用的多引擎扫描服务收录,因为黑客根本没想要对这些产品进行免杀——它们的用户群太小了。一旦这些产品被直接针对性对抗,就需要有快速地响应来修复这些疏漏。主动防御某种程度上是个悖论——你一旦封堵住某种攻击手段了,黑客也就不会再使用这些手段而转去攻击其他那些尚未被保护的弱点。我们测试过一些“下一代”安全产品,他们实际上比“传统”的反病毒产品都要来的脆弱,要么是因为监控能力差,要么是特征能力提取很差。他们唯一的优势就是小众。

至于沙盒的话则要看你指的是哪一种。我们在扫描引擎上有一个轻量级基于二进制翻译的虚拟沙盒。它有两个缺点:1)分析范围有限 2)仿真环境并不完美。另一种沙盒则通过虚拟化文件系统和注册表,对应用程序进行虚拟化以进行行为分析。这种沙盒的缺点包括性能差、违规共享、竞争条件、穿沙、以及容易被反向侦测等。还有一种是基于进程或者域的沙盒(例如Sandboxie, QubesOS等)。这类沙盒使用hypervisor实现已经有很多局限性了,但最大的问题还是在于用户体验差。用户很容易对沙盒内改动和实机的区别产生困惑(例如沙盘内保存的东西在沙盘外看不到)。况且,你下载了一个程序想运行,沙箱没法判断这个文件是否应该被阻挡还是能被放行,到头来还得靠终端用户或者厂商来决定。

根源问题还是数据访问模型。在Windows中这种访问模型是基于用户的——应用通过用户账户进行文件的读取/创建等等。只要这些数据属于这个用户,那么在这个用户名下运行的程序都有访问和修改的权限。唯一的解决方法是使用基于应用的访问模型(例如iOS那种),但这种模型对用户就不是很友好。

ESET在数年前曾经开发过基于进程的沙盒,但在用户体验测试后我们决定终止这个开发。对于大部分用户来说,理解哪些操作可以被保留在实机、那些不行、如何将虚拟环境中的数据迁移到实机上太困难了。

问:假定一个恶意程序绕过扫描执行起来,之后被AMS检测到。这些恶意程序带来的副作用(例如残留的注册表、文件等)怎么办呢?有的厂商使用回滚来进行修复,有的厂商则是跑固定的清毒流程。ESET现阶段似乎并没有类似的回滚策略,有什么原因吗?
答:总的来说目前安全软件的回滚分为三个层次:
1)使用系统功能,例如卷影副本:大多勒索软件都会先关闭这个功能并删掉备份,因此这种方案效果很差
2)轻量级回滚:仅有一小部分文件被备份,大的文件则被略过
3)重量级回滚:包括那些很大的图片、上百兆的ppt等等都会被备份
以上方法要么效果不好,要么对性能影响很大。新的勒索软件都会注入多个进程,一些进程创建文件,另一些进程删除/覆写文件。一个完善的方案需要跟踪系统中所有的变化,这对性能影响很大。ESET的HIPS防勒索通常在修改数个文件后才会触发,相关回滚我们的确有打算开发,但我们其实更倾向于改进其他防护层来阻挡攻击。其中比较典型的就是高级内存扫描(AMS)。AMS的核心在于当恶意行为发动前就进行阻挡,就像“少数派报告”里面那样。AMS会全程监控进程的可执行内存页,当进程访问文件、进程、注册表、网络等时,我们就在内存中提取DNA特征并进行比对。这种检查在CPU实际执行指令之前就会进行。基于其原理,AMS对高混淆的文件或者行为不确定的程序(例如下载器或者一些需要特定条件才会触发的威胁)效果特别好。

------------------------------------------------------------------------------
这篇就是上次写到一半中途消失的文章,努力抢救了一下

从去年开始各路机器学习引擎开始在VT上冒头(CrowdStrike Falcon, SentinelOne, Endgame等),这很可能并不是因为这些厂商胆子大了敢于露脸,而是因为去年VT放出的一个重磅炸弹使得各路厂商不得不将自己的引擎结果分享在VT上——在去年VT新政之前,一些企业安全厂商或者初创只需要订阅VT的服务就可以获得很多传统引擎的检出结果,有一些甚至将这些结果直接“借用”过来辅助自己产品的侦测。VT意识到这个问题之后便强制这些厂商将自己的引擎放在VT上公开“遛一遛”,于是原本隐藏四方的各路“大侠”终于出来分享自己的检测结果了

去年8月的时候曾经获得谷歌风投的机器学习安全厂商CrowdStrike(后文简称CS)终于发文宣布自己的引擎进驻VT,并简略介绍了一下自己的侦测技术。和其他传统引擎不同的是,CS的引擎给出的不是黑/白判别,而是一个恶意百分比(标注为malicious_confidence_xx%),百分比越高则说明待测样本越可能是恶意程序。(我个人认为这种做法有点投机取巧,因为这相当于省略了优化判识阈值的步骤)

CS宣称自己的引擎没有“特征”,而是通过机器捕获恶意程序的特点,训练出来的模型不容易“过时”。是不是和其他那些同样以机器学习为卖点的厂商一个口径?!
CS表示传统技术通过启发或者特征来判识恶意程序,而CS的引擎则通过文件高层特征,例如程序熵值,来判断恶意程序(事实上就是统计引擎吧……)例如下图是一个程序结构视觉化的结果:
different-shading.png
除了熵值等统计特征,CS也表示可以将文件内嵌的资源特征(例如图片、图标等),还有一些提取的代码特征放进机器学习模型中进行训练。他们提取百万计的特征进行训练以有效区分恶意程序和正常程序。
特征提取的数量和质量在这个过程中至关重要,CS展现了两幅图。一幅是特征不足的时候分拣的结果,如下图:
contained-code.png
其中绿色的是正常文件,而黑色的是恶意文件。当特征不足的时候两者仍然混杂在一起,而当更多特征被提取之后:
moving-apart.png
两者开始分离,你甚至可以在当中画一条判别恶意程序/正常文件的分割线
CS表明自己的这套引擎是纯静态的。也就是说和传统ESET、MSE、BD等预执行启发的机理不同,CS引擎仅从文件表层提取特征,即将这些文件都当做单纯训练数据来进行处理,没有任何动态执行的过程。


ESET对机器学习热潮的观点
3.-Most-frequent-misconceptions-about-ML-and-AI-623x410.png
今年年初开始,ESET在自己的博客上发表了一系列关于近期“机器学习热潮”的评论。全部一共8篇文章(链接会附在文末),从各方面阐述了ESET在这个“转折点”的看法,我把ESET的观点大致提炼一下:
1. 关于机器学习引擎所谓“无需特征”“无需频繁升级”“有效检测未知威胁”的说法大多是商业炒作,是不负责任的论调
2. 机器学习不是魔术更不是万灵药,ESET数十年前就在用机器学习进行病毒分拣。由于图灵机的自身局限,人类理想中的反病毒程序仍然无法实现。相对于AlphaGo这类有着明确定义的问题,数字安全显然远来得复杂,黑客完全可以不按常理出牌
3. 一些厂商宣称的非监督学习无法判识文件的黑/白,更适合用于恶意程序归类
4. 不对机器学习的训练集的质量进行严格把控可能会带来毁灭性结果
5. 多层防御仍然是王道。一些厂商宣称自己基于机器学习的单层引擎就可以胜任计算机的安保,这显然是夸大其词
6. 过分激进/不严谨的侦测会带来大量误报,给企业带来巨大损失

总体来说,我认为ESET这些观点还是有道理的。对于第三点,开源的MalHeur(基于非监督学习)就曾经强调自己是恶意程序分拣器而不应被用来判断文件的黑/白。而从VT检出情况来看,一些机器学习引擎的误报相当高,特别是那些纯静态引擎。这也不难理解,仅从文件外观判识程序恶意与否,无异于看到一个长得比较凶悍的人就将其拉进监狱。当然特征提取得好的话并没有我打的比方这么不堪,但这些手段终究不是实际检测到了恶意内容,而只是检测到外观上疑似恶意内容。

当然,ESET的文章中似乎也透露着ESET死守老技术止步不前的态度。真的是这样么?对此我咨询了一下ESET的相关人员,让我惊讶的是其中一个工作人员非常热情地写了一些说明,在这里分享一下:

ESET应用机器学习技术已经有数十年的历史(一篇98年的访谈稿中可以看到ESET在那时候就已经使用神经网络来检测宏病毒,顺带的小八卦:F-Prot是最早用人工免疫网络技术的厂商之一),因此ESET对近期深度学习的浮夸宣传不太感冒。ESET是一家私企,并深知事实真相和市场宣传(特别是那些初创为了吸引投资者的宣传)往往有着很大差距。机器学习是很有效的工具,但并不是完美的解决方案。

1. 监督学习和非监督学习
非监督学习可以有效侦测异常特征,但是没办法告诉你一个样本是黑还是白。在实际使用场景中,由于白文件更新速度极快,仅用异常侦测(anomaly detection)进行恶意程序侦测显然没有实用价值。你可以用白名单来缓解这个问题,但是白名单的维护在现实中往往问题太多以至于很少有公司愿意使用这种方法。而且由于白名单维护繁琐,使用白名单的企业也很难做到软件更新的快速部署(特别是出现高危漏洞的时候)。此外,就算有白名单管控,攻击者仍然可以通过很多侧面手段进行攻击,例如powershell脚本等等
当学习样本被标记后(即被分类为黑/白后)就可以进行监督学习了。但是监督学习的问题在于其无法检测从未见过的新特征。也就是说,针对性攻击(例如震网)难以被这种机器学习手段侦测
对新样本的标记对很多厂商来说是一个巨大的挑战,特别是如果这些样本过去从来没见过,或者和白文件太过相似的时候。这也是为什么很多初创企业十分想要获取高质量的标记过的样本,例如从VT获取其他厂商的侦测结果。这无异于寄生在其他厂商身上,通过其他厂商的病毒分析实验室来为自己的公司和产品服务
2. 误报和泛化
泛化在基于机器学习的分拣器上意味着误报。为了避免误报你需要用更高维的特征进行判别,但这终究会因为维数灾难而受到限制。
设计一个低误报的产品纯粹是ESET的商业决定。ESET的产品使用多层防护进行侦测,因此我们客户受到ransomware感染的报告非常少。误报给客户带来的问题比漏检带来的问题更大。误报控制非常重要,因为一旦出现误报就会扰乱(全球的)生产秩序,而受到病毒感染与之相比仍然是一个小概率事件
机器学习的另一个问题在于它的模型甚至无法100%覆盖训练样本,更别提现实生活中的情形。一些离群/异常的文件会被当作噪声并被机器学习忽略,终究还得通过“特征”来收录这些漏网之鱼。
3. 深度学习的浮夸宣传
深度学习对于层次明显的结构来说效果很好(例如在图片分拣中,单个像素没有任何含义,但当其和边缘、物体、场景等结合在一起时就会有很好的效果)。但对于定义明显的问题来说(特征都有实际含义,例如熵、文件头、API调用、机器码、代码流、字符串等),相比于深度学习,ESET用的一些技术包括梯度提升、支持向量机、或者随机森林等更有效果
除此之外,深度学习对于样本的修改非常脆弱——它非常脆弱,而且可以被轻易欺骗。因此我们仅将深度学习用在我们自动样本处理管线末端一些特定的任务上。
4. 机器学习的免杀
对样本进行修改当然是绕过机器学习最常见的方法。恶意程序作者会不断修改样本直到样本绕过检测,至于这些手法是绕过启发侦测,还是绕过人工特征码,还是绕过机器学习模型的侦测 对他们来说没有任何意义。
对样本的修改有很多方法,但最简单的莫过于不让恶意特征被检测引擎提取出来。这些手段可以是混淆、压缩、加密、嵌入,或者是分离payload。当没有特征能被提取的时候,机器学习基本上就歇菜了。如果一款产品没有一些基础技术,例如脱壳、反混淆,那么机器学习就没法分辨一个压缩的文件到底是不是恶意的。ESET的强项就在于能提取恶意程序的“DNA特征”,这些特征对于机器学习来说非常有效。事实上,ESET产品从不使用表层静态侦测,例如那些自称“新生代”厂商的表层静态特征判识。
为什么不直接对混淆、压缩、或者加密过的文件报毒呢?我们的产品仅在程序的确展现恶意特征的时候才会报毒,因为压缩、加密等手段也会被用在好的目的上(例如JS压缩,exe压缩,或者出于知识产权保护的反编译)
黑客非常有创造力,他们知道如果一个文件混淆程度/加强壳的话就很有可能会被一些厂商报毒。因此他们经常会去修改一些干净的程序或者开源软件,并嵌入他们的恶意代码。对于一些机器学习模型来说,这些恶意程序无异于一个新的白文件。
5.更新的重要性
机器学习的另一个问题是更新。对于安全防护来说,厂商的响应速度要足够快才行。当厂商漏检一个样本的时候,厂商需要极快发布更新来补漏,反过来当遇到误报的时候也要第一时间移除相应检测。一些初创公司所谓“无需更新”是纯粹的市场营销手段,当它们人气越来越高足以被黑客针对性免杀的时候同样没法逃过频繁更新的命运。这也是为什么一些宣称“基于机器学习”的安全公司也仍然会提供频繁的更新。

欢迎分享看法

参考资料:

https://www.welivesecurity.com/2 ... lity-cybersecurity/
https://www.crowdstrike.com/blog ... earning-virustotal/
https://vimeo.com/112702666 (CrowdStrike CTO的webcast,推荐一下:)
http://blog.eckelberry.com/a-bom ... sure-anyone-noticed


P.S. 看到ESET讲到针对免杀的时候我心里还在想可怜的ESET市场占有率应该没有其他几家来得值得免杀吧,结果去OPSWAT查了一下今年5月的市占率报告……
market_share.jpg
他们把微软去掉了,剩下的排位还是挺神奇的(NOTE:以上仅为娱乐数据)

13年IDC报告如下:
mshare.jpg

这刚好是一个采样偏差和样本数量过小带来认知偏差的案例。OPSWAT的采样是“数以千计”客户端,这些采样点里没有铁壳就可以想象了

同理,一些杀软评测中用的样本数是~400,那么检出率98%意味着漏掉了8个。面对一个大威胁池采集400个样本,遇到几个A厂商能检测到的B厂商不能检测到的样本概率并不小,测试结果中A比B高一两个百分点真的能说明面对总威胁池的时候B一定比A差吗?





评分

参与人数 6分享 +3 人气 +6 收起 理由
schumi小粉 + 1 文章写的很好,我看的都入迷了,哈哈
屁颠屁颠 + 3 + 1 版区有你更精彩: )
HEMM + 1 花花绿绿挺好看~我稀饭
fireherman + 1 版区有你更精彩: )
ELOHIM + 1 感谢解答: )

查看全部评分

vkey
发表于 2017-6-16 11:16:50 | 显示全部楼层
墙裂直尺,鞋鞋柯普
900703
发表于 2017-6-16 11:31:10 来自手机 | 显示全部楼层
都沒有大數字和瑞星新引擎猛!
xxl11231220
发表于 2017-6-16 11:41:35 | 显示全部楼层
误杀确实是大问题,防御太单薄,反而误报破坏成本更高。
误报控制非常重要,因为一旦出现误报就会扰乱(全球的)生产秩序,而受到病毒感染与之相比仍然是一个小概率事件。

ccboxes
发表于 2017-6-16 11:49:45 | 显示全部楼层
那不知道ESET对于行为检测的具体态度是怎样的?虽然ESET引以为傲的引擎对深层特征的检测有独到之处,但事实是我们也能看到运用各种手段摆脱ESET侦测的样本,它们甚至不是全新的。在前摄性检测上,似乎ESET也没能逃脱“新变种→入库→查杀→新变种”的循环。为此ESET推出了“高级内存扫描”这种无疑是侵入式的、执行后的技术来针对。再加上ESET本有的HIPS的基础,为什么不干脆推出实质上的行为检测呢?是仅仅为误报控制着想吗?

如果ESET的工作人员对回答问题这么热情,那还有一个与检测无关的功能问题劳烦楼主问一下。虽然在病毒执行前就就将其消灭是最重要的,但即使对查杀率很高的ESET来说,也有大量样本需要依靠“高级内存扫描”这种执行后手段查杀,对于病毒执行后的破坏修复与衍生物的处理,大部分厂商都是在套用通用的修复模板,这样的效果通常很差。对于注册表而言,这种修复只能勉强恢复系统正常运行,会留下大量错误和垃圾项,在文件系统上,也会留下不少衍生物。为什么只有有限的几个厂商推出了“回滚”功能呢?我清楚厂商的大部分精力当然应该放在提升检测率上,但作为一个半吊子程序员,我认为回滚的开发本身应是一个原理明晰的、纯粹的工程问题,应该不需要牵扯过多精力,是我想得太简单了吗?

ysj963
发表于 2017-6-16 11:50:16 | 显示全部楼层
本帖最后由 ysj963 于 2017-6-16 12:03 编辑

第一个占有率高是因为免费,第二个是实力。 不知道有没有统计过,总的使用杀毒软件的比例,这个统计应该在总的使用杀软的比例基础上成立,国内针对ESET比较少吧,国外针对ESET就比较多。黑客可能直接放弃了,个人使用杀毒的总人数比例少,企业版ESET也很少,所以还是针对卡巴、360、诺顿,迈克菲、红伞、比较多,就统计学抽样来说 ,我至今到过的国内各个客户厂商,机构,事业单位 ,基本没看见卡巴、诺顿、迈克菲,360、瑞星,腾管、度卫在企业和个人电脑比较多见,红伞是一般懂点电脑的人在用,不时也能见到,用什么卡巴、诺顿的都是很大的集团企业和事业单位的总部什么的,各分公司没那么规范。ESET我生平只在中科院一台电脑见到过。。 。太高级了!我去的基本都是一线城市单位,别说三线城市了,更本没杀毒的观念。网吧现在也都不装杀软了。我看到某些搞工科计算机的教授电脑里有360 ,有QQ管家、有百度卫士。其实黑客更本不需要搞什么免杀,主要是网站挂马难了,只要有病毒的软件能进入个人电脑 ,几乎人人都会中毒。
猪头无双
发表于 2017-6-16 11:54:07 | 显示全部楼层
ysj963 发表于 2017-6-16 11:50
第一个占有率高是因为免费,第二个是实力。

呵呵,avast仅仅靠免费活不到现在。说话走走脑子。
ysj963
发表于 2017-6-16 12:04:37 | 显示全部楼层
猪头无双 发表于 2017-6-16 11:54
呵呵,avast仅仅靠免费活不到现在。说话走走脑子。

我说的是占有率这么高的原因,你让他收费试试看,你选AVAST还是卡巴斯基还是诺顿还是ESET?
ccboxes
发表于 2017-6-16 12:05:17 | 显示全部楼层
本帖最后由 ccboxes 于 2017-6-16 12:09 编辑

@B100D1E55

楼主阴沟翻船了。。。。。。。。建议删掉市占率报告部分。
注意OPSWAT报告里的这段话:
he data in this report was generated on May 27th, 2017 and includes data collected in the last 6 months from users of our free tools including Metadefender Cloud Client. Metadefender Cloud Client is an endpoint forensics tool that can scan endpoints for malware and vulnerabilities using more than 40 anti-malware and vulnerability engines and can scan drive boots sectors. The purpose of this report is to inspire discussion in the anti-malware community and report on the security practices of our free users. The information in this report is representative of over 40 million data points collected from thousands of live Windows machines and includes both corporate and home users.

所以这个报告完全是一面之词,根本没有可信度。
http://bbs.kafan.cn/thread-2068614-1-1.html
ccboxes
发表于 2017-6-16 12:05:50 | 显示全部楼层
ysj963 发表于 2017-6-16 12:04
我说的是占有率这么高的原因,你让他收费试试看,你选AVAST还是卡巴斯基还是诺顿还是ESET?

http://bbs.kafan.cn/thread-2068614-1-1.html
这个报告本身就是不可信的。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.3( 苏ICP备07004770号 ) GMT+8, 2017-7-21 14:27 , Processed in 0.116015 second(s), 7 queries , MemCache On.

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