欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

通过机器学习进行恶意软件分析:Deepviz中的聚类算法基本原理

来源:本站整理 作者:佚名 时间:2016-01-12 TAG: 我要投稿

去年以来,我们发现很多的音像公司开始接触机器学习和人工智能,希望能找到一条快速有效的途径来分析并隔离新型的恶意软件,同时,扩大恶意软件库。然而,事实上这里存在一个很大的问题就是很多人把机器学习当成了无所不能的魔术棒——他们开始用机器学习的时候,只是把尽量多的样例交给算法去计算,就算完成了,而事实上这样做不完全正确。
0×00 简介
Deepviz是一款强大的恶意软件自动分析平台,也是一个强大有效的智能威胁情报平台,除此之外它还能够对所有由恶意软件分析仪中提取的数据进行分析,通过关联算法做出最好的抉择。
机器学习是Deepviz用到的关键技术,它能够识别新型恶意软件,还能找到相似的样品进行关联,并扩大的恶意软件库。但实际上,执行一个有效的机器学习算法并不像大多数人想象的那么简单——并不是“给智能机器尽量多的详细的信息,它就会自己找到诀窍”。
接下来我们一步步的探索机器学习的原理。
0×01.聚类算法
聚类分析是一种统计分析技术,目的在于从给定的数据集合中识别出重要的群组。我们可以通过已有的恶意软件群组发现与之相似的新型恶意软件或者与这个群组具有相同特征的样例。为了给一个数据集合分组,我们需要一个表达式来描述数据集合中每个元素间的相似性。
每一个元素用一个特征集合描述,这个特征集合的属性在某些方面对这个元素非常重要。设计特征集合的时候,有两个要点需要考虑到:
第一,要明白如何选择属性。正如上面所说,很多人以为聚类分析就应该让分析程序提取数百万属性进行计算,却忽略了一点:被考虑进来的属性越多,计算的时间也会越多,而且,有些属性并不能用于准确区分出恶意软件。例如,用PE文件的唯一熵属性做为特征集合将会导致错误的聚类化。不过无论如何,我们需要找到足够多的属性可以让我们将一些具有特殊行为的恶意软件分成几个不同的恶意软件群组。所以我们要提取的属性是对恶意软件分析有意义的属性, 这也是Deepvid恶意软件分析器最大的组成部分。
第二,找到最合适的量度来验证并且对比恶意软件的属性。每个恶意软件都可以被描述成数值性质的属性(例如:信息熵)或者抽象性质的属性。在数学上,相似度度量就是用来描述两个对象的相似程度。欧式距离就是其中一种被广为人知的用于比较数值型属性相似度的方法。那么,抽象型数据的相似性该如何度量呢?Deepviz中给出了两个恶意软件以及与之相关的IPs和URLs,我们该如何比较这两个集合呢?怎样把他们进行聚合?
举个例子说明,如下图片展示的是所有访问过网站complifies.ru的软件的MD5聚合:

我们的聚类算法把样本分成4个不同的群组,上图是整个聚合过程的最后一步截图。
要想得到相似集合,我们需要知道每个元素和其他元素之间在哪些方面相似,或者说哪些方面不同。这些值可以通过距离矩阵表现出来。
基于此,我们需要得到的东西是:
1.选择一个特征集合,该集合由一个或者多个属性组成,通过该集合可以将原始数据集合中的元素进行分类。
2.选择一个计算距离的算法,通过该算法可以计算各个元素间的距离。
然后,我们需要做的步骤是:
3.比较一个元素与该元素本身的距离,以及该元素与数据集合中其他元素的距离
4.用一个聚类算法来把相似的元素聚合。在我们的例子中,我们聚合的是恶意软件群组
元素间的相似度
欧式距离被大量的运用在计算数字型的元素之间的距离。在这里,我将介绍的是另一种计算距离的方法—杰卡德距离(Jaccard distance),作为抽象型数值的度量。
先给一个例子,以下是两个样本以及与他们有关的URLs列表,计算出集合中每个元素与该样本的相似度,具体结果如下
样本
26414a9d627606c4974d8c3f372b0797 和 27f72541c93e206dcd5b2d4171e66f9a:如下:


具体结果页面:
https://intel.deepviz.com/hash/26414a9d627606c4974d8c3f372b0797/
https://intel.deepviz.com/hash/27f72541c93e206dcd5b2d4171e66f9a/
杰卡德相似度用于比较抽象数据点之间的相似程度,是最广泛使用的相似度算法。该算法被定义为两个结合交集的元素个数占并集的比重。如果两个集合没有重复的元素,那么杰卡德相似度就是0。如果两个集合所有元素都一样,杰卡德相似度就是1,杰卡德相似度的计算公式如下:
思考一下下面的题目:
1.集合A由19个元素组成
2.集合B由12个元素组成
3.两个集合相交的元素总共有4个
通过杰卡德公式可以推算出两个集合的相似度是0.15  因此上面的公式同样可以变形用距离计算的公式,如下:
distance = 1 – similarity
如果我们计算所有样本间的杰卡德距离,就能得出以下的距离矩阵:

如图,集合A与B的距离是0.15,A与C的距离是0.8等等。元素和他本身的距离是0,对称的,A与B的之间的距离和B与A之间的距离是一样的,是以对角线对称的。为了优化矩阵的计算时间,我们可以使用这个对称的性质只计算一半的矩阵。
矩阵计算完后,就能把这个距离矩阵输入到聚类算法中进一步计算。从这里我们可以看出,从数据中提取的属性越有效,接下来的聚类算法聚合出的结果也将越准确。
聚类算法(DBSCAN)
聚类算法通过元素间的距离对各个元素进行分类。更简单地说就是一个元素与其所在的集合的距离,这也包括特征集合中的元素。那么,我们如何将这个算法运用到恶意软件分析中呢?

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载