利用机器学习检测HTTP恶意外连流量
作者:网友投稿 时间:2018-05-06 09:23
攻击者为控制远程的受害主机,必定有一个和被控主机的连接过程,一般是通过在被控主机中植入后门等手段,由受控主机主动发出连接请求。该连接产生的流量就是恶意外连流量,如图1.1所示。目前检测恶意外连流量的主要方式有两种,一种是基于黑名单过滤恶意域名,另一种是使用规则匹配恶意外连流量。这两种方案都有一定的局限性,基于黑名单过滤的方案,只能识别连接已知恶意网站时的恶意外连流量,对于域名变化没有任何感知。而基于特征检测的方案,需要安全从业人员逐一分析样本,会消耗较大的人力,并且难以检测变种的恶意外连流量。
作为已有技术的补充,可以通过机器学习来检测恶意流量。利用机器学习来发现恶意流量间的共性,并以此为依据检测恶意流量,一个好的算法可以大大减少安全从业人员的工作量。
现在已经有不少关于采用机器学习检测恶意流量的文献资料,思路也各有千秋,如有根据流量内容进行检测的,还有根据流量变化来进行检测的。本文主要受ExecScent这篇论文的启发。

图1.1 恶意外连流量示意图
0×01数据收集实验室目前积累了大量的恶意样本,部分如图2.1所示。通过在沙箱中运行恶意样本收集产生的外连HTTP流量。这些外连流量中只有部分是恶意的,中间仍掺杂着不少白流量。通过人工分析确认,将产生的外连流量分为恶意流量和白流量。最后利用已积累的威胁情报信息将恶意流量打上恶意家族信息。最终用于训练的数据如图2.2所示。

图2.1 恶意样本示意图

图2.2 用于训练的数据信息
0×02数据分析通过分析采集到的恶意外连流量信息,发现来自同一家族的恶意外连流量间具有明显的相似性。如图3.1是通过两个不同的恶意样本产生的恶意外连信息,经过人工分析,判定两个恶意流量均是来自LokiBot恶意家族。可以看到两个流量间的相似性极高。图3.2则是两个来自Generic Trojan家族的恶意外连流量,同样有极高的结构相似性。
分析同一家族恶意流量,发现同一家族的恶意流量有以下特点①其url路径结构一致,具体路径信息尽管不同,但是都具有相同的数据类型。比如图3.1中url路径中的bugs和job都是字符串,图3.2url中1b50500dad和106042bd2e都是16进制小写类型;②url的参数相似;③请求头字段基本相同,且内容高度重合。
由于同一家族的恶意外连流量具有上述的相似性,因此可以使用聚类算法将同一家族的恶意流量聚为一类,提取它们的共性模板,最后利用模板检测新的恶意外连流量。

图3.1 LokiBot家族恶意外连流量

图3.2 GenericTrojan家族恶意外连流量
0×03算法实现算法主要包括恶意http外连流量模板生成和未知http流量检测两个部分,两个部分的流程分别见图4.1和图4.6。下面分别介绍这两个部分。
1 模板生成模板生成流程包括请求头字段提取,泛化,相似性计算,层次聚类,生成恶意外连流量模板5个步骤,如图4.1所示。

图4.1模板生成流程
1.1 提取请求头字段将http流量划分为url、url参数,user-agent、host、content-length等结构化字段。方便后续处理。
1.2 泛化



