本帖最后由 wangkaka 于 2018-8-7 08:13 编辑
译者前言:
1.evo检测技术最主要及最初的目的是帮助小a公司自动化分析样本,以及通用检测家族性威胁。
2.文中只讲了evo的发展,以及简略提及evo的技术。未明确标明个人客户端evo检测技术运用于哪些具体的检测模块中。
3.就译者个人的使用来看,目前扫描监控模块当中,evo检测技术主要目的是通用检测;在deepscreen中则更为激进(很可能deppscreen15秒沙盘扫描时链接到云端更大更全的evogen数据集对沙盘内样本进行检测)。
4.evogen就是一个机器学习技术运用下的检测模型,这个技术可以说各家都在运用。小a2011年起就已经建立完善的机器学习技术。eset甚至在1998年就已经将机器学习技术运用于某些检测当中,如脚本检测等。所以对于近几年兴起的各种机器学习,希望理性看待,目前机器学习引擎还不可能完全取代传统技术,且免杀机学方法并没有想象中的困难。而且表层静态机学还有一堆问题(例如:加壳加混淆后究竟学的是样本本身还是学的是噪声文件。。。相对来说eset先用虚拟机跑展开部分代码段在进行静态匹配就很好的解决了表层静态机学缺陷。小a目前将部分evo检测放入dp中,可能也是基于这样的原因。(未找到这方面文章,仅仅是译者自己的理解,如有错误,欢迎打脸。。。)
致谢:
感谢@B100D1E55 大佬关于小a和eset技术方面的帮助,及翻译上的指导。
翻译主体:
Avast Evo-Gen的发展变化:使用机器学习来保护成千上万的小a使用者
介绍: 作为一家电脑安全领域的领导企业,我们每天都努力给我们的使用者带来高等级的安全保护。这就需要我们不断地去探索新方法来击败威胁,经常试验前沿技术以及之前从未在我们技术环境中使用的方法-利用一些例如生物学物理学领域所带来的想法。许多试验从未发表任何实质性结论但有时结果甚至超出了我们最乐观的预期。这里,我很乐意去谈论其中的一项试验成果。我们大约在六年前开始这项试验(译者注:按时间推算应该是2010-2011年开始)并且它很快的发展成我们在Avast当中所使用的最强的恶意软件检测引擎系统之一。这个系统就叫做Evo-Gen并且如果你最近读过我们的blog你就会在我们的CTO Ondřej Vlček的blog文章中听说过这一点。回溯到2012,我们第一次为所有客户部署了这一新系统。虽然我们还没有真正的在我们blog中写过有关它的任何方面信息,然而我们在过去的五年半里不断地努力去监控和改进这一技术。如果这是你第一次听说有关于Evo-Gen亦或者你仅仅只是不记得了,没关系,让我简略地向你描述它。 Evo-Gen是一个被使用来实时分类未知样本的机器学习系统。对于被识别为恶意的样本,它会迅速创建一个能够流式更新到所有小a客户端的定义来保护使用者抵御新威胁。它所创建的定义(叫做evogen)本质上是非常小且简单的,这意味着它们非常易于评估威胁情况。此外每个evogen通常都能用来保护我们抵御不仅仅某一种威胁---这些定义作为通用基因,因此他们涵盖了一个特定威胁的多种变种。 Evo-Gen定义数量: 自从这一技术在2013年前发展为成熟产品以来,Evo-Gen已经创建了超过120万这样的定义鉴定出了将近5亿种不同的威胁样本。如果你简单的算一下就会发现,平均来说每天有超过600条evogens定义被创建且每个定义可以鉴定超过400个样本(译者注:这儿小a官方的语气是强烈的赞美自己的,但我觉得这个广谱性也就这样吧)。用于研究每个定义的数据集也有了很大的增长—从数百万到如今的一亿个独特样本,这还没算上我们用于离线分析和威胁情报分析的数亿样本。Evo-Gen检测技术能得到飞跃式的发展还得谢谢收购了的AVG公司,它给我们提供了数以千万计的新样本来丰富我们的数据集(译者注:哈哈哈哈哈哈哈哈哈哈哈哈哈额嗝^.^)。 这个系统是完全自动化的—无需人去交互操作。它不间断地努力去分析输入的样本并且与多年来收集的样本集合进行比较。所有的定义在他们产生的时候就会通过流式更新技术发送给所有小a用户来给用法提供及时的高质量保护。 在极少数的情况下,这一系统也可能会发生错误,所以就必须禁用已发布的定义。但当错误发生后,系统会从这一错误当中自我学习并使自己不会再犯相同错误。在迄今为止创建的所有evogen定义中有超过40%依然活跃且每天都在被使用。其中有一些定义是真正的记录保持者--某些定义不是仅检出数百样本而是检出数以百万计的独一无二的威胁。 Evo-Gen的发展: 正如我在文章一开始提及的一样,自从2013年早期部署这个检测以来,整个系统经历了很多变化。这个技术从一开始的仅有短效定义的微小概念性设想进化成了一个具有高质量且稳定的威胁侦测引擎技术。在下面的发展图表中最明显地表明了这一点,在这幅图中你可以看出,与现在相比过去我们不得不抛弃更多的EvoGens定义:(译者注:这里表明的意思是,过去小a公司evo技术还不完善,所以会产生更多的无效或错误evo定义,现在技术提升了,evo定义变得更有效且错误更少。) 你也许会注意到,在2013年夏季创建的定义数量大幅增长。那时候我们想让Evo-Gen系统产生更多的通用定义来覆盖更广泛的威胁。因此,我们增加了定义生成器随机生成的数目(在我们允许范围内)。然而几个月后这个改变就被“回炉重造”了,因为它太过于激进了,所以我们回头走一个更加确定性的方法。其中有趣的是,在我们的内部测试中当我们(给特征)增加更多随机性因素时,我们没有遇到任何问题;而来自外界的数目惊人的样本是我们系统产生了太多的定义,某些定义可能呈现假阳性(即某些定义产生了误报)。实验室环境下是不可能发现这个问题的,所以我们不得不用更困难的方法去复现并吸取教训。 在2014年,我们的着重点是稳定这一系统----修复bugs和照顾边角旮旯里面各种各样的特殊情况。然后,在2015年,我们开始讨论完全重写生成器算法。目前为止,我们的新方法叫做相似性搜索,一种被用于特定领域限制内和专业知识规则的k-nn搜索技术,这一技术目前为止依然没有充分利用底层数据库的全部能力。通过一些研究我们得出这样的结论:使用HDBSCAN(译者注:一种机器学习方法,相关文献链接:DBSCAN机学文献)是最适合的方法并且我们的初步测试表明其是有前途的。然而想要开发一个在恶意软件时效期内表现良好的变量(译者注:即机学生成的特征)是一个巨大的挑战,所以我们花了一年多的时间才将其部署到产品中。2016年我们成功部署这一新模型,并且证明这是绝对成功的。在部署的几个月后我们看到了一个激动人心的现象:有缺陷的Evo-Gen定义(由于内或外假样本因素生成的缺陷)数量开始减少。2017年,我们对算法做了一些微小的改变,将底层数据库性能进行提高,因而使得系统性能变得更好。 下面的图表很好的比较了新旧定义生成器生成的定义的样本覆盖率(每个定义所能识别的特定样本数量)。你可以看到旧版本生成的evogens定义相比于新版本,其覆盖面更小。再结合(由于新生成器算法优良)低比例的缺陷evogens定义,我们可以看到检测到的样本数有了很大的增加。Evo-Gen已经在质量和速度方面都击败了老系统成为了最优秀的检测引擎之一。
进一步的改进措施: 但是我们不会在这停下脚步。让我们先来看看什么使得Evo-Gen技术变得如此强大。 ①Evogens十分迅捷:其只需要数秒就可以给一个新威胁生成定义并能将其分发给我们的用户。 ②Evogens很便宜:由于极度的优化措施,运行Evo-Gen系统只需要很少的几个服务器并且在系统运行进程的任何阶段都无需人员进行交互。 ③Evogens很安全:多亏这一系统的运行方式(以及系统所使用的海量数据集),发生大的误报事故是基本不可能的(在我们Evo-Gen系统的历史进程中仅有2-3次较大的且零容忍的误报事件)。 以上的三个特点就是机器学习如此有用的原因。运用机器学习技术比用一个团队去分析处理来干这件事更容易形成规模,因为买很多的服务器很容易,然而雇佣几个熟练的恶意软件分析人员就非常困难了。 然而,此处有一个缺点。由于威胁必须在他们被人们所熟知和面临前被中和,因而个别的evogens定义可能不能被调教到完美,因为这些定义需要尽可能快的被发送到用户端。这就可能导致我们的系统为一个恶意软件家族创建多个evogens,甚至某些情况下多达上百个。下面的图表说明了这些冗余的evogens定义是如何产生的: 在第一幅图上,我们可以看到三个黄色圆圈,这代表了一个恶意软件家族的三个变种。这三个变种包含在一个灰色的环中,这个环代表能够识别出他们的一个定义(evogen A)。然而,后来有更多的变种出现(图2红色圈圈),且其中一些依然由evogen A定义,而另一些则不能。因此evogen B被创建来识别这些新变种。在第三幅图中我们可以看到这种情况依然重演(新的蓝色圈圈变种,因而需要evogen C来应对)。最后一幅图展示了理想的情况:由一个定义(evogen D)就有能力应对所有的变种。 如果一个人事先就拥有了所有的病毒样本,那么我们当然可以创建一个或几个evogens定义来覆盖所有的病毒样本。这种技术会使得扫描变得更加容易—定义数目更少,时间花的就越少,更新文件的大小就越小。然而遗憾的是在实际环境中这是不可能的,因为这一系统需要等待更多的样本被收集来创建定义,因而它被允许有最初的几个被传播对象。这对我们来说是不可接受的。令人高兴的是,这一冗余问题后来被解决了—通过解决一个众所周知的“集合覆盖问题”来应对。在这一问题下,我们拥有有一些元素(此处指恶意软件样本),此外也有一系列覆盖这些元素的集合(evogens),集合的并集包含了所有元素。这是一个NP-complete问题(译者注:译者是工科狗,计算机领域功底小白,如有错误,随便打脸,我也是现学的。NP-complete在这儿指很多的样本特征向量在图灵机里不能够归约为单一的evogen定义,即不能在一个确定型图灵机上以多项式时间求解。也体现了现阶段图灵机的局限性,也反映了目前反病毒实际上是图灵不可判定问题),但幸运的是,对于我们来说我们不需要完美地解决,只需要一个足够好的方案。我们已经研发了一个工具来精确地做到这一点,在用所有的数据(超过一百万的evogens定义和近五亿个样本)“喂养”(训练)它之后,我们得到了如下结果的回报: 从图表中我们可以看出,近60%的evogens被标记为冗余项,这意味着我们可以安全地移除他们,这可以让我们大规模地优化evogen。当然,实际中,我们会更加的保守,这仅仅只是为了使用安全(译者注:防止误报这类),但这也表明了我们可以在不影响保护能力的范畴下(任何方面的保护能力)大大地减少定义数目。更少地定义数目意味着更快地扫描和更小地更新,所以这对我们用户来说也是一个胜利。 你可能会注意到一件事,冗余的evogens最近似乎产生的更多了,但这其实只是部分事实。冗余项目其实一直存在,只不过过去我们有更多坏的evogens定义,所以许多冗余evogens定义被禁用或隐藏(图中红色的部分)。此外,在2016年部署的新的算法使得在预测真实威胁集群方面效果要更好,但因为它会从不同的角度来分析威胁(这取决于它分析的特定样本),这会导致产生重叠的但都是有效且正确的evogens定义(译者注:我理解的就是,小a在实验室部署了新机学算法模型,且不止一种算法,是几种算法同时运用,因而有时会产生重叠的定义)。而旧的算法就没有这个特点,因为旧算法要么过于随机(产生大量误报)要么过于确定(定义广谱性较差,对变种效果差)。 结论: 对于avast,我们致力于保护我们用户的在线安全且我们不断探寻新方法来保护他们。Evo-gen就是一个很好的技术案例,我们花费了很长时间去发展它,但这一人力物力的花费一定会带来回报,它帮助我们提高我们提供给用户的保护等级。我们不断地探求新的机遇来保持avast和我们的用户对不断变化的真实世界恶意软件威胁的应对能力。
|