基于大数据分析的异常检测方法及其思路实例
转自:http://www.2cto.com/Article/201601/485562.html 1 概述 其中,标记位各种取值的含义如下: 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异常查询请求与正常查询请求的差异对比 2.3 相似性分析的一般过程 由于正常的域名查询请求占绝大部分,且彼此之间具有明显的相似性,而僵尸主机的域名查询请求日志则有明显的差异,因此非常适合采用相似性分析的方法进行区分。相似性分析的一般步骤是:1)确定被分析对象(源IP地址或域名)。2)确定分析的属性。3)将属性量化成可分析的数值。4)将数据写入描述性矩阵。5)以描述性矩阵为输入数据,代入相似性计算公式,计算被分析对象的相似关系。 相似性分析通常把每个数据对象看作多维空间中的一个点,对象之间的相似性可以用相似性系数或某种距离来表示。相似系数接近1或距离较近的对象性质较相似,相似系数接近0或距离较远的对象则差异较大。不同的数据类型,适用不同的相似系数计算公式。常用的相似系数或距离计算公式有: (2-1) (2-2) ? (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域名请求行为描述矩阵 为简单起见,将描述矩阵的数值代入公式(2-2),可以计算出各个域名之间的“距离”,从而得到相似性矩阵(如表2-3)。观察发现,域名n与其它域名的相似度最低。基本可以判定查询域名n的主机为僵尸主机。 表2-3域名请求行为的相似性分析结果 相似度分析的数据是一种对象-对象结构的矩阵,既可以单纯使用域名或IP地址作为对象,也可以同时使用IP地址和域名来构建矩阵。 2.4聚类分析的一般过程 把每个域名解析请求的属性作为一个变量,则这些属性构成一个多维向量,如表2-4,每一行是一个多维向量。对这些多维向量进行聚类分析,可以发现那些游离于聚合之外的那些向量所对应的域名,就是异常域名。这些域名解析请求很可能就是僵尸程序或WebShell发出的。可以考虑采用的属性包括:域名长度、域名相似性、TTL、域名层级数、请求发送时间间隔、请求源IP地址数、响应状态、域名对应的IP地址数量、域名查询类型。 表2-4域名属性多维向量 可以考虑采用分区法或K-均值算法对域名属性多维向量进行聚类分析。由于异常域名的属性值通常都与正常域名的属性有明显的差异,因此采用聚类方法通常可以获得较高的聚类质量,将异常域名从正常域名的聚类中分离开来。 聚类分析的数据是一组对象-属性结构的多维向量,以域名为对象,以其查询请求的属性为属性。 3 基于大数据分析的内部异常行为检测 3.1 内部信息系统行为概述 业内将内部信息系统的行为(以下简称内部行为)分为主机(包括服务器和终端)行为和网络行为两大类:一是主机行为,即主机本地的行为,例如创建帐号、创建文件、修改注册表、内存属性(读写、执行)变化、进程变化(启动、停止)等等。如果物理主机上运行着多个 虚拟主机,主机行为还应包括一些虚拟化系统的行为。二是网络行为,即与网络访问相关的行为,例如域名解析请求、HTTP访问请求、ARP广播、收发邮件、即时消息、文件上传和 下载、 数据库访问等等。 3.2 对内部行为进行大数据分析的原理基础 早期的信息安全措施侧重对外部攻击的防护,而对内部的异常行为往往不够重视也缺少检测手段。大量信息安全实践使得内部异常行为检测的重要性在业内达成了共识。尤其是近年被披露的众多APT攻击事件,主要的攻击过程是发生在内部网络和信息 系统上。通常内部异常行为都是非常隐蔽的,攻击者会可以隐藏自己的攻击行为,通常单个行为看上去都是正常的,但是一些行为关联在一起以后,这种关联的组合非常少,且行为主体不具有别的特殊性,则这种行为很可能是异常。或者某些内部行为已经被判定为异常,那么与之关联的行为也是异常的概率就会大大增加。 3.3 关联分析的一般过程 对内部行为的分析也适用相似性分析,但为了避免重复,这里采用关联分析算法对内部行为进行分析,来举例说明该方法的实际运用。关联分析的一般步骤是:1)以行为主体作为被分析对象(通常为IP地址或身份标识)对内部行为日志进行解析,将描述各种行为的异构日志转换成适合分析比较的行为链(如图2-4所示)。2)将行为链数据代入关联分析算法,计算出各种可能的关联关系。3)根据一定的判断规则,从计算出的多个关联关系中找出异常行为的组合。 图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事件。 图3-2 关联分析的几个基本概念 表3-1内部行为记录库 为叙述简单但又不失一般性,这里用9个行为主体和5种行为(记作B1~B5)组成的项集作为实例来说明关联分析算法的原理。如表3-1,行为记录库中有9条行为链记录,涉及了B1~B5等5种行为。有过某种行为,记作1,没有记作0。首先扫描记录库,得当频繁项集C1(表3-2) 表3-2频繁项集C1 假设最小支持度要求为2,则所有频繁项集都入选成为一阶最大项集。以B1~B5的排列组合作为二阶频繁项,扫描记录库,得到二阶频繁项集C2(表3-3) 表3-3 二阶频繁项集C2 去掉支持度小于2的项集,得到二阶最大项集L2(表3-4) 表3-4 二阶最大项集L2 对L2的项集元素排列组合来生成三阶的频繁项集合,由于频繁项集的子集也必须是频繁的,所以要从划去那些子集不频繁的组合,最后只剩下两个支持度大于2的最大频繁项集{B1,B3}和{B1,B5}(表3-5)。 表3-5 满足最小支持度的最大频繁项集 对每个频繁项集B生成其所有的非空真子集S(见表3-5),然后对每个非空真子集组合的关联规则计算置信度,即支持度(B)/支持度(S),若比值大于假设的最小置信度值,则输出S(B-S),即认为S 与(B-S)关联。 表3-5 频繁项集的非空子集 表3-6关联规则 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |