基于大数据分析的异常检测方法及其思路实例

1 概述

随着人类社会信息化程度的不断深入,信息系统产生的数据也在呈几何级数增长。对这些数据的深入分析可以得到很多有价值的信息。由于数据量太大以及数据属性的多样性,导致经典的统计分析方法已经无法适用,必须采用以机器学习理论为基础的大数据分析方法。目前,大数据分析的方法已经被广泛用于商业智能(BI)领域,并取得了令人非常满意的效果。这种方法同样可以应用在信息安全领域,用于发现信息系统的异常情况(入侵和攻击、数据泄露等)。利用大数据分析的方法发现异常事件,需要满足几个条件:1)行为日志在内容必须足够详细,可以从日志内容上区分正常行为和异常行为。也就是假定异常行为无论在表面上看多么正常,总是在细节上与正常行为有差异。2)针对不同的分析目标,选用恰当的分析算法。3)对行为描述进行合理的建模。

2 基于DNS日志分析的僵尸网络检测

2.1 DNS解析请求日志的格式及说明

不同的DNS系统及配置参数,生成DNS解析请求日志也不尽相同,这里仅用一种日志加以说明。

其中

1 2

其中,标记位各种取值的含义如下:

  • QR是1个bit位:0代表查询报文,1代表相应报文
  • opcode是4个bit位字段:0代表标准查询,1代表反向查询,2代表服务器状态请求
  • AA是1个bit位,是Authoritative Answer的缩写,指明名字服务器是授权于该域的
  • TC是1个bit位,是Truncated的缩写,意为可截断的,指明在UDP中应答报文超过512字节时,只返回512字节
  • RD是1个bit位,是Recursion Desired的缩写,意为期望递归,期望名字服务器必须处理这个查询,而不是给出一个迭代查询服务器的列表
  • RA是1个bit位,是Recursion Available的缩写,意为可用递归,如果名字服务器支持递归查询,这会将此位设置为1
  • zero是3个bit位,设置为0
  • rcode是4个bit位,表示名字差错,0为无差错,3为有差错。当查询中指定的域不存在的时候,就返回3
  • 响应状态
  • “NOERROR” => 0, 无错误条件.
  • “FORMERR” => 1, 因为一个格式错误,域名服务器无法解释这个请求
  • “SERVFAIL” => 2, 在处理这个请求时域名服务器遇到一个内部错误。例如操作系统错或转发超时。
  • “NXDOMAIN” => 3, 某些域名应该存在而没有存在。
  • “NOTIMPL” => 4, 域名服务器不支持这种指定的 Opcode.
  • “REFUSED” => 5, 出于策略和安全原因域名服务器拒绝执行特定的操作。
  • “YXDOMAIN” => 6, 某些域名不应该存在但是存在。
  • “YXRRSET” => 7, 某些RRset不应该存在但是存在。
  • “NXRRSET” => 8, 某些RRset应该存在但是不存在。
  • “NOTAUTH” => 9, 域名服务器对区域名没有被授权
  • “NOTZONE” => 10, 在预查询或更新段中一个域名没有在区域段中记录。

2.2正常与异常DNS解析请求的对比分析

大多数僵尸主机在最初感染的恶意程序,只是一个下载器程序,真正能完成有害操作的恶意程序要从恶意程序分发服务器上下载。因此僵尸主机安装下载器之后,首要的工作就是发起一系列域名解析请求,用来获知恶意程序分发主机的IP地址以便完成恶意程序实体的下载。在完成实体恶意程序之后,僵尸主机还会发送域名查询请求,以便获知控制服务器的IP地址并与之建立联系,等待控制服务器发送指令。为了避免分发服务器和控制服务器被网络监管人员发现并摧毁,僵尸网络的控制者采用了很多技术手段对这两类关键服务器进行保护,诸如动态域名、Fast Flux技术等。还有一类DNS查询请求本身就是僵尸主机发起的攻击,其特征也与正常的查询请求有很大区别。总之,僵尸主机会发送大量的域名查询请求,而且这些请求与正常的域名请求在诸多属性有明显的差异。

表2-1异常查询请求与正常查询请求的差异对比

3

2.3 相似性分析的一般过程

由于正常的域名查询请求占绝大部分,且彼此之间具有明显的相似性,而僵尸主机的域名查询请求日志则有明显的差异,因此非常适合采用相似性分析的方法进行区分。相似性分析的一般步骤是:1)确定被分析对象(源IP地址或域名)。2)确定分析的属性。3)将属性量化成可分析的数值。4)将数据写入描述性矩阵。5)以描述性矩阵为输入数据,代入相似性计算公式,计算被分析对象的相似关系。

相似性分析通常把每个数据对象看作多维空间中的一个点,对象之间的相似性可以用相似性系数或某种距离来表示。相似系数接近1或距离较近的对象性质较相似,相似系数接近0或距离较远的对象则差异较大。不同的数据类型,适用不同的相似系数计算公式。常用的相似系数或距离计算公式有:

4

(2-1)

5

(2-2)

6

 

(2-3)

公式(2-1)是变量Xi和Xj 的空间距离计算公式。

公式(2-2)是相似系数计算公式。

公式(2-3)是Jaccard相似系数计算公式。通常杰卡德相似系数处理的都是非对称二元变量。即假设A和B是两个n 维向量,而且所有维度的取值都是0或1。非对称的意思是指状态的两个输出不是同等重要的,例如,疾病检查的阳性和阴性结果。其中:

M11 表示A 与B 的对应维度都是1 的维度的个数,

M10 表示A与B的对应维度分别是1和0 的维度的个数

M01表示对应维度分别是0和1 的维度的个数。

M00表示A与B的对应维度都是0 的维度的个数。

习惯上将较重要的输出结果也通常是出现几率较小的结果编码为1(例如HIV阳性),而将另一种结果编码为0。在某些领域,认为正匹配(M11)比负匹配(M00)更有意义。负匹配的数量M00 认为是不重要的,可以在计算时忽略。

在分析域名查询日志时,可以把发送查询请求的主机IP地址作为对象,也可以把被查询的域名作为对象。可以针对某个属性进行分析,也可以针对一组属性进行分析。因此不同的对象和属性组合在一起可以得到很多种描述性矩阵。下面以一个具体实例来说明相似性分析的过程。在这个实例中,以域名为对象,以域名被各IP地址查询的次数作为属性,可以得到一个描述性矩阵(如表2-2)。

表2-2域名请求行为描述矩阵

7

为简单起见,将描述矩阵的数值代入公式(2-2),可以计算出各个域名之间的“距离”,从而得到相似性矩阵(如表2-3)。观察发现,域名n与其它域名的相似度最低。基本可以判定查询域名n的主机为僵尸主机。

表2-3域名请求行为的相似性分析结果

8

相似度分析的数据是一种对象-对象结构的矩阵,既可以单纯使用域名或IP地址作为对象,也可以同时使用IP地址和域名来构建矩阵。

2.4聚类分析的一般过程

把每个域名解析请求的属性作为一个变量,则这些属性构成一个多维向量,如表2-4,每一行是一个多维向量。对这些多维向量进行聚类分析,可以发现那些游离于聚合之外的那些向量所对应的域名,就是异常域名。这些域名解析请求很可能就是僵尸程序或WebShell发出的。可以考虑采用的属性包括:域名长度、域名相似性、TTL、域名层级数、请求发送时间间隔、请求源IP地址数、响应状态、域名对应的IP地址数量、域名查询类型。

表2-4域名属性多维向量

9

可以考虑采用分区法或K-均值算法对域名属性多维向量进行聚类分析。由于异常域名的属性值通常都与正常域名的属性有明显的差异,因此采用聚类方法通常可以获得较高的聚类质量,将异常域名从正常域名的聚类中分离开来。

聚类分析的数据是一组对象-属性结构的多维向量,以域名为对象,以其查询请求的属性为属性。

3 基于大数据分析的内部异常行为检测

3.1 内部信息系统行为概述

业内将内部信息系统的行为(以下简称内部行为)分为主机(包括服务器和终端)行为和网络行为两大类:一是主机行为,即主机本地的行为,例如创建帐号、创建文件、修改注册表、内存属性(读写、执行)变化、进程变化(启动、停止)等等。如果物理主机上运行着多个虚拟主机,主机行为还应包括一些虚拟化系统的行为。二是网络行为,即与网络访问相关的行为,例如域名解析请求、HTTP访问请求、ARP广播、收发邮件、即时消息、文件上传和下载、数据库访问等等。

3.2 对内部行为进行大数据分析的原理基础

早期的信息安全措施侧重对外部攻击的防护,而对内部的异常行为往往不够重视也缺少检测手段。大量信息安全实践使得内部异常行为检测的重要性在业内达成了共识。尤其是近年被披露的众多APT攻击事件,主要的攻击过程是发生在内部网络和信息系统上。通常内部异常行为都是非常隐蔽的,攻击者会可以隐藏自己的攻击行为,通常单个行为看上去都是正常的,但是一些行为关联在一起以后,这种关联的组合非常少,且行为主体不具有别的特殊性,则这种行为很可能是异常。或者某些内部行为已经被判定为异常,那么与之关联的行为也是异常的概率就会大大增加。

3.3 关联分析的一般过程

对内部行为的分析也适用相似性分析,但为了避免重复,这里采用关联分析算法对内部行为进行分析,来举例说明该方法的实际运用。关联分析的一般步骤是:1)以行为主体作为被分析对象(通常为IP地址或身份标识)对内部行为日志进行解析,将描述各种行为的异构日志转换成适合分析比较的行为链(如图2-4所示)。2)将行为链数据代入关联分析算法,计算出各种可能的关联关系。3)根据一定的判断规则,从计算出的多个关联关系中找出异常行为的组合。

10

图3-1 行为链的构建

关联分析的目标是从数据中找到关联规则。所谓关联规则是形如 X → Y 的蕴涵式,表示通过 X 可以推导“得到”Y,其中 X 和 Y 分别称为关联规则的前提和结果。在满足最小支持度和最小置信度的条件下才能认为“通过 X 可以推导‘得到’Y”成立。在理解算法之前,首先需要了解几个基本概念:

  • 支持度: 指的是事件X和事件Y同时发生的概率,即支持度=P(XY)
  • 置信度: 指的是发生事件X的基础上发生事件Y的概率,置信度= P(Y|X) = P(XY)/P(X)
  • 项集: B={B1, B2,……, Bm}是项的集合。
  • 行为链记录库: D={t1, t2,……, tn}
  • 行为链: 行为链t由多个项组成,t是B的非空子集
  • TID: 每一个行为链都与一个唯一的标识符对应。
  • 频繁项集:满足最小支持度阈值的项集

为了更好的理解上面的概念,图1-1给出了更形象的描述。圆角矩形表示全部项的集合I,椭圆中蓝圆点表示X事件,菱形中绿三角表示Y事件。

11

图3-2 关联分析的几个基本概念

表3-1内部行为记录库

12

为叙述简单但又不失一般性,这里用9个行为主体和5种行为(记作B1~B5)组成的项集作为实例来说明关联分析算法的原理。如表3-1,行为记录库中有9条行为链记录,涉及了B1~B5等5种行为。有过某种行为,记作1,没有记作0。首先扫描记录库,得当频繁项集C1(表3-2)

表3-2频繁项集C1

13

假设最小支持度要求为2,则所有频繁项集都入选成为一阶最大项集。以B1~B5的排列组合作为二阶频繁项,扫描记录库,得到二阶频繁项集C2(表3-3)

表3-3 二阶频繁项集C2

14

去掉支持度小于2的项集,得到二阶最大项集L2(表3-4)

表3-4 二阶最大项集L2

15

对L2的项集元素排列组合来生成三阶的频繁项集合,由于频繁项集的子集也必须是频繁的,所以要从划去那些子集不频繁的组合,最后只剩下两个支持度大于2的最大频繁项集{B1,B2,B3}和{B1,B2,B5}(表3-5)。

表3-5 满足最小支持度的最大频繁项集

16

对每个频繁项集B生成其所有的非空真子集S(见表3-5),然后对每个非空真子集组合的关联规则计算置信度,即支持度(B)/支持度(S),若比值大于假设的最小置信度值,则输出S(B-S),即认为S 与(B-S)关联。

表3-5 频繁项集的非空子集

18

表3-6关联规则

17

至此我们得到了三个关联规则,即{B1,B5}à{B2}、{B2,B5}à{B1}和{B1}à{B2,B5}。同样对最大频繁项集{B1,B2,B5}也进行类似的计算,还可以得到相应的一组关联规则。

3.4关联分析方法应用举例

一个信息系统中,正常访问行为应该是绝大多数,因此异常行为的占比非常低,所以在关联分析的算法中,我们对支持度的要求不是大于某个数值,而是大于0且小于某个数值。

例如,一个普通的客户端主机对其它IP地址的扫描显然是一种异常行为,如果利用关联分析的方法,发现这些有扫描行为的主机都查询过相同或高度相似的域名,那么这个域名查询请求也是一种异常行为,很可能是终端主机感染木马程序后的回联行为。

再例如,一个普通的客户端主机存在高频并发域名查询的行为,如果利用关联分析的方法,发现这些终端的主机的系统函数调用行为特征非常接近,或者这些终端主机都有访问本地敏感文件(密码文件、配置文件等)的行为。则这些系统函数调用或本地敏感文件访问也是异常行为。

4 结束语

基于互联网的B/S架构的信息系统在运行过程中会产生大量各种类型的日志,如安全设备告警、操作系统日志、数据库日志、终端行为日志、网络流量日志、Web访问日志、DNS请求日志、外网访问日志等等。这些日志具有丰富的信息,只要采用恰当的分析算法,一定可以获得很有价值的分析结果。除了本文描述的两个应用场景以外,大数据分析还可以用于拒绝服务攻击检测、安全情报分析、态势感知、网页篡改发现、应用层攻击检测、恶意文件检测等安全分析的场景。

成功的大数据分析依赖于三个主要因素:数据、思路和算法。面向安全的大数据分析所使用的数据主要是各种系统日志和行为。本文试图用比较接近实际的案例来介绍面向安全的大数据分析思路。可供大数据分析使用的算法有很多,但不是都适用于面向安全的应用场景。原因是系统日志和行为日志都属于低维度数据,面向高维度数据的算法基本不适用。因此只有相似性分析、关联分析、聚类等。分类算法在有足够训练数据的情况下也可以使用,但通常训练数据比较难获得,所以使用分类算法可能会受一定限制。

除了分析算法以外,可视化也是一种非常重要且有效的分析手段。可视化既可以作为分析工具,直接以图形方式呈现数据之间的关系,提高数据可读性,又可以作为分析结果的呈现工具,使分析结果更加直观。受篇幅的限制,本文没有对可视化呈现给出描述,希望后续有机会做出补充。

[via@安恒信息技术专家]