文章阅读:机器学习检测HTTP恶意外连流量

2020/03/21 -
阅读文章[1]的总结。
[1]这篇文章是,利用层次聚类的方法来聚类恶意外联流量。


  1. 恶意外联流量,就是受控主机向控制者发送请求,或者传递信息的流量;针对这种流量的检测方案有两种:1)利用黑名单过滤恶意域名2)利用规则匹配来匹配恶意流量。黑名单的方式无法防止域名变化,规则匹配需要专业人员的分析,难以检测变种的恶意连接。第一个原因,我能理解,但是第二个总感觉他说的不是非常明白。他说需要从业人员逐一分析样本,无法应对变种的。
    (我觉得,这个规则匹配的意思,那种直接利用某个字符串来匹配的)

  2. 利用机器学习来检测恶意流量,通过发现恶意流量之间的共性,以此作为检测的依据。本篇文章采用的算法是聚类,通过聚类来标记恶意样本,

  3. 文章的后面,具体记录了利用HTTP流量作为数据源的研究。而HTTP进行参数化的形式,就是将他的协议部分的各个内容给提取出来。之前的时候,我对这种方法是不理解的,因为我之前做流量分类的时候,采用的特征都是那种比较低级的TCP层次的特征。所以,这里算是一个不一样的地方。

  4. 最后利用已积累的威胁情报信息将恶意流量打上恶意家族信息。也就说,他这个最后一个多分类问题。不仅仅是,把这个东西分类成恶意流量,同时,还能区分出他是什么类别。(关键词:威胁情报信息、恶意家族)

  5. 同一家族的流量具有相似性,采用的url类型(字符集),长度等,都很相似。

由于同一家族的恶意外连流量具有上述的相似性,因此可以使用聚类算法将同一家族的恶意流量聚为一类,提取它们的共性模板,最后利用模板检测新的恶意外连流量。
其实上面的话,传达的意思很简单,就是说,这种东西是相似的,我提取出他的模板,然后利用模板匹配的形式去匹配新的流量,就可以发现这个流量。说起来简单。但是,这个说法还是没有在我脑海里形成一个比较具体的概念。
其实有这种想法的原因很简单,平时也没弄过这种东西。
由此来引发了两个问题,1)这个模板是什么,这里说是模板,和我平时用的特征有没有区别,毕竟特征相似度比较,就是直接量化以后比较就好了。2)比较的话,怎么比较;数字能直接比较,文字怎么比较。

  1. 检测步骤
    1)模板生成 2)检测未知流量
    而模板生成流程包括一下几个步骤:请求头字段提取,泛化,相似度计算,层次聚类,生成恶意流量模板。
    你看他这里这个说法, 生成恶意流量模板,我个人不是很赞同,你最后生成的应该是一个模型吧。
    同时,泛化这个词,也不是非常容易理解,什么叫泛化,一般都是强调模型的泛化能力,这里为什么是参数的泛化。所以他这里的泛化按照他的解释,是将各个部分的字符,进行替换,取消他们的差异性。如图:

    泛化效果

    我觉得这种做法挺有意思的,这样就很像是一个模板的概念了。(当然,我觉得,他后面并不是这么使用的)同时,我觉得,如果是这种方式的话,其实都可以自己定义一个距离函数了。可以涵盖很多方面(我暂时也没想好能用什么)

  2. 相似度计算
    虽然提到了这个应该特征的特异度来当作权重计算相似度,但他文章中还是没有给出最后的相似度是怎么计算的。
    具备区分性的特征权重自然也高。

  3. 生成恶意流量模板

对聚类后的每一类,都是结构和内容相似的恶意流量。对其中的每一个请求头字段,获取聚类中该字段内容的并集作为该字段在模板中的值。相当于把训练集中重复的部分做了去重处理。

这部分我觉得,他就是吧这个比对得样本集给缩小了,当然我不是很确定,这个需要后面再分析,就是这个比较过程,如果是两两比较的话,肯定他这种做法把这个模板生成出来会比较快。


整体上,大致就是这些内容。我这里来总结一下几个比较不错得点。

  1. 利用聚类的方法,跟传统的分类不太一样
  2. 特征工程部分的创新点,我觉得他的这个点挺不错的。但是没有看到他进一步相似度计算的过程
  3. 生成模板,其实这个过程,最后就能给人看的时候,有一定的可读性。

最后还有几篇僵尸网络引用文献,如果有机会的话,可以看看。

参考文献

[1]利用机器学习检测HTTP恶意外连流量