一种DomainFlux数据流的检测系统和方法

文档序号:7762969阅读:633来源:国知局
专利名称:一种Domain Flux数据流的检测系统和方法
技术领域
本发明涉及网络安全技术领域,更具体地,涉及一种检测Domain Flux(域名流 动)数据流的系统和方法。
背景技术
计算机面临的安全威胁数不胜数,近年来出现的僵尸网络有着更为严重的危害 性,僵尸网络是通过入侵网络上的主机构建的、可被攻击者远程控制的并且用来发起后续 攻击的攻击平台。僵尸网络的组成部分包括僵尸程序(bot)、命令控制通道(Command & Control Channel, C & C)和控制者(botmaster)。控制者通过C & C向僵尸主机发出命 令,运行在僵尸主机上的bot程序负责执行命令。可见,僵尸网络比传统的恶意代码、攻击 行为有着更为严重的危害性。可控性是僵尸网络的本质属性,如果僵尸网络的C & C能够被检测并关闭,僵尸网 络也就土崩瓦解了。传统的僵尸程序采用硬编码C & C server的IP或者域名的方式来寻 找控制者,这种方式的C & C很容易被关闭。近来,一种称为Domain Flux的技术被用作C & C server的寻址,Domain Flux技术在bot程序内硬编码一套与控制者共享的算法,该算 法根据一些动态信息(例如当前时间)生成一个动态域名池。bot程序轮询该域名池来找 到命令集结点,从而能够保证无论以前的集结点是否被关闭,bot程序总是能够找到新的集 结点ο采用Domain Flux技术的botnet通信过程如下1) Domain Flux算法生成当前可 用的域名池;2)控制者从该域名池中随机选择一个域名,用作本次通信的集结点;3)控制 者注册该域名,使用该域名作为服务器域名,并将控制命令发布于此服务器;4)bot程序依 次访问域名池中的域名;5)如果访问域名成功,并且成功获得经过验证的控制命令,本次 通信结束;否则,重复步骤4。Domain Flux技术的优势在于它提供了足够的动态冗余,即使域名生成算法被破 解,也只能得到集结点池,无法得到精确的集结点域名。而生成算法可以引入更多的随机 性,使得域名池的规模很大,变化速度很快,生成的域名与可信的域名几乎没有区别,防御 者无法关闭域名池中的所有域名,那么破解算法对于僵尸网络的防御工作来讲,意义不大。一般地,Domain Flux技术中的动态域名生成算法都采用随机字符串+固定后缀 或者固定前缀+随机字符串或者固定前缀+随机字符串+固定后缀的形式。动态生成算法 主要负责生成随机字符串,而固定词缀都是硬编码在bot程序中。因此,不难得出,Domain Flux技术具有如下特征1)为了控制命令的快速下发,bot程序都会在短时间内发起大量 的DNS查询请求,因此,一个时间窗口内会有大量的DNS查询;2)所查询的域名具有相同的 最大公共子串;3)被注册用作C&C的域名在域名池中所占比例很小,DNS服务器能够解析 出A记录的比例很小,明显相异于正常应用。Domain Flux技术建立在域名解析的基础之 上,域名解析提供了从域名到IP的转换服务,而IP才是真正的网络通信中采用的地址。下 面描述域名解析的过程1)、客户端发起域名解析请求,并将该请求发送给本地的域名服务器;2)、当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的 域名服务器就直接把查询的结果返回;3)、如果本地的缓存中没有该纪录,则本地域名服务 器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查 询域(根的子域)的主域名服务器的地址;4)、本地服务器再向上一步返回的域名服务器发 送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域 名服务器的地址;5)、重复第四步,直到找到正确的纪录;6)、本地域名服务器把返回的结 果保存到缓存,以备下一次使用,同时还将结果返回给客户机。目前,对于采用Domain Flux技术的botnet的防御尚无良好方法,只能采用黑名 单法。黑名单法将确认作为僵尸网络C & C使用的域名加入黑名单(malicious domain list),采取技术手段阻止僵尸主机和这些域名之间的通信,采取非技术手段关闭这些域 名。该方法的主要缺点在于被动性和滞后性。要想将一个很大的域名池中的域名按照这种 方法处理,攻击者完全有可能在域名池中的域名被封锁之前,升级新的算法。从而保证C & C不被切断。该方法严重依赖于malicious domain list,具有较大的滞后性,无法满足实 时需求。

发明内容
为克服上述现有技术的缺陷,本发明提出一种检测Domain Flux数据流的方法, 该方法涉及僵尸网络的防御,涉及一种在网络边界上采用监听数据包的方式来检测Domain Flux数据流的方法。根据本发明的一个方面,提出了一种检测Domain Flux数据流的系统,包括监听模 块、数据库操作模块和计算窗口最大公共子串的模块;其中,监听模块用于监听并分析出入网关的数据流,获取DNS查询请求数据包和 DNS应答包,并提取源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息;数据库操作模块,用于将监听模块提取的源IP地址、待查询的DNS、时间戳、DNS对 应的A记录信息记录在数据库中;计算窗口最大公共子串的模块,用于计算时间窗口内任意两个请求的DNS的最大 公共子串,并对最大公共子串出现的次数计数来确定窗口最大公共子串。根据本发明的另一方面,提出了一种检测Domain Flux数据流的方法,包括步骤10)、监听并分析出入网关的数据流,获取DNS查询请求数据包和DNS应答包, 并提取源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息;步骤20)、将监听模块提取的源IP地址、待查询的DNS、时间戳、DNS对应的A记录 信息记录在数据库中;步骤30)、计算时间窗口内任意两个请求的DNS的最大公共子串,并对最大公共子 串出现的次数计数来确定窗口最大公共子串。本发明可以实时地确定DNS查询数据流是否属于Doma in Flux数据流。一般地, botmaster为了实现控制命令的及时下发,要求Doma in Flux技术能够较快地找到C & C, 因此,本方法中的时间窗口可以很小,从而实时地检测Doma in Flux数据流。本方法无需malicious domain list。本方法是在分析了 Domain Flux技术的行 为特征基础上提出来的,具有很强的针对性。不需要黑名单,而是通过Domain Flux的行为模式来检测Domain Flux数据流。相反地,本方法有助于建立malicious domain list 在 检测到Domain Flux数据流之后,DNS服务器应答的A记录即为malicious IP。对应的DNS 和该IP即构成了 malicious domainlist的一个记录。该方法有助于发现未知的bot程序。如果未知的bot程序采取Domain Flux技术 寻址C & C,该方法在检测到Domain Flux数据流的同时,记录了数据的来源,在该主机上过 滤数据包,即可得到未知bot程序的样本。


图1示出DNS查询过程示意图;图2示出Domain Flux技术的流程图;图3示出检测Domain Flux数据流的系统运行示意图。
具体实施例方式下面结合附图和具体实施例对本发明提供的一种检测Domain Flux数据流的系统 和方法进行详细描述。总的来说,本发明提出了一种在网络边界处检测Domain Flux流量的方法。该方 法针对背景技术中提到的Domain Flux技术的三个特征,侦听并记录局域网内所有的DNS 查询数据流,计算同一个时间窗口内的最大公共子串出现的次数及DNS解析失败的概率, 据此计算当前窗口内数据流是否属于Domain Flux数据流。该方法能够实时检测到Domain Flux流量的存在,并能够确定该数据流的来源,从而推测出局域网内主机感染了 bot程序。在根据本发明的一个实施例中,提供一种在网络边界处检测Domain Flux流量 的系统,其中该系统包括监听模块S、数据库操作模块D和计算窗口最大公共子串的模块 (WLCS)。其中,一个时间窗口内任意两个DNS都包含一个最大公共子串,对这些最大公共子 串出现的次数进行计数,出现次数最多的最大公共子串称为“窗口的最大公共子串”。监听模块用于监听并分析数据流,该模块监听出入网关的数据流,从中分析出DNS 查询请求数据包和DNS应答包,并提取源IP地址、待查询的DNS、时间戳、DNS对应的A记录 fn息ο数据库操作模块,负责将监听模块解析出的源IP地址、待查询的DNS、时间戳、DNS 对应的A记录信息记录在数据库中。同时,负责在时间窗口结束之后清理数据库记录,因 为本方法是状态独立的,几个时间窗口并不存在关联性,删除数据库记录可以避免数据库 记录越来越多。需要指出的是,该实现过程只要能够记录一个时间窗口内的DNS数据即可, 并不一定使用到数据库系统,任何能够按照发明中提到的4个字段记录一个时间窗口内的 DNS数据的技术手段都可采用,都属于本方法的适用范围。用于计算窗口最大公共子串的模块WLCS,采用最大公共子串算法(LCS)计算时间 窗口内任意两个请求的DNS的最大公共子串,并对最大公共子串出现的次数计数,出现次 数最多的即为窗口最大公共子串。需要指出的是,计算窗口最大公共子串的算法有很多,只 要能够得出窗口最大公共子串及其在本时间窗口内出现的次数即可,都属于本发明涵盖的 范围。进一步地,在局域网的网关处监听局域网内所有的DNS查询,记录查询的源IP、要查询的域名、查询时间及DNS服务器的响应,如果在一个时间窗口之内,特定主机发起的 DNS查询具有如下特征1)窗口的最大公共子串出现的次数超过阈值;2)窗口的最大公共 子串对应的DNS查询得到的DNS服务器应答为“未找到域名对应的A记录”的频率超过阈 值;则认为该主机正在采用Domain Flux技术寻址C & C。 由于可以记录发出的DNS查询及DNS服务器的响应,可以得到域名与IP的对应关 系,而Domain Flux寻址的结束条件是找到了经过验证的C & C或者域名池轮询完毕,因此 在网关处可以确定哪个DNS是malicious domain。根据Domain Flux数据流的源IP,可以 确定该主机感染了 bot程序。另外,网内其他主机如果查询同样的域名,网关处可以修改 DNS服务器的返回值,从而阻止其它已感染主机获得控制命令。
具体地,对于监听模块监听数据流并对其分析的一般过程如下1)获取网络适配器列表;2)打开网络适 配器;3)捕获数据;4)根据协议特征,分析数据流并提取信息。其中,对于捕获数据流有几点说明1)监听模块基于winpcap开发。但是,捕获数 据流的方法有很多种,只要能够捕获到所有通过本地网卡的数据包即可,都属于本发明涵 盖的范畴;2)捕获数据包部分不是本发明阐述的重点且资料丰富,故不加以详细叙述,以 下从数据包的处理开始。定义结构体,以存储从DNS数据包中提取的信息。首先判断数据包是否是DNS请求包,若不是,返回FALSE。若是,从数据包中解析出 发起DNS查询的源IP地址、待查询的目的地址以及时间戳,将这些信息返回到结构体DNS Request中。如果上述操作成功,则返回TRUE,否则,返回FALSE。首先判断数据包是否是DNS应答包,若不是,返回FALSE。若是,从数据包中解析出 该包的目的IP地址、DNS及其对应的IP地址,返回到结构体DNSResponse中。成功,则返 回 TRUE。对于数据库操作模块准备工作安装MySql数据库系统(其它数据库系统也可),设计数据库表的格式 如下
Source IPRequested DNSTime StampDNS A Record将监听到的DNS请求记录在数据库中。如果该主机发出的DNS查询已有记录,则 在该主机对应的数据库表中增加新的记录,按字段将主机IP、要查询的DNS、发出查询的时 间戳记录在数据库中。若该主机IP在数据库中尚无记录,则新建记录。操作执行成功,返 回TRUE ;操作失败,返回FALSE。将监听到的DNS服务器的应答记录在数据库中。首先在数据库中按照DNS应答包 中的目的IP、查询的DNS查找相应的记录,然后将查询的DNS对应的A记录记录在该记录的 DNS A Record字段中。操作执行成功,返回TRUE ;操作失败,返回FALSE。查找数据库的Source IP字段,删除该字段对应的数据记录。对于计算窗口最大公共子串的模块处理单个IP —个时间窗口内的DNS查询记录,判定是否是Domain Flux流量。对于同一个时间窗口内的记录,使用LCS算法(其它求最大公共子串的算法也可)计算任意两条记录的最大公共子串。并对所有的最大公共子串出现的次数进行计数,出现 次数做多的最大公共子串即为窗口最大公共子串,记录窗口最大公共子串及其出现次数。如果窗口最大公共子串出现的次数小于预设的阈值,则该时间窗口内的DNS查询 数据流并不是Domain Flux数据流;否则,统计包含有窗口最大公共子串的DNS查询的结 果,计算数据库中A记录为空的概率,若该值超过预设的阈值,则认为该时间窗口内的DNS 查询数据流属于Domain Flux数据流。否则,该数据流不属于Domain Flux数据流图3为系统运行示意图,该方法应工作在网络边界处,即图中所示网关之上。表1 所示为监听和记录所得的数据记录(表中DNS IP处空白表示DNS服务器找不到该域名对 应的A记录),以下从计算窗口最大公共子串开始说明。设定时间窗口为30秒。如果属于正常用户浏览网页或其他合法用途引起的DNS查 询,单个IP发起的查询数量在30秒内不会超过5次。而且正常应用中,DNS查询失败的概 率也是很小的,设定为5%。对一个时间窗口内的数据首先进行窗口最大公共子串的计算, 不难得出,本次实验中的窗口最大公共子串为dyndns.com,且其共计出现8次。其次,包含 有窗口最大公共子串dyndns. com的DNS查询的失败率为100% (DNS查询返回的A记录为 空,认为DNS查询失败),远远大于设定的失败阈值。综上,可以确定该时间窗口内的DNS查询数据流属于Domain Flux数据流。另夕卜, 由Source IP可以推知主机10. 0. 0. 11感染了一种采用domain flux技术作为C & C的 bot程序。进一步地,在主机10. 0. 0. 11上对数据包进行过滤,可以得到bot程序样本;一 旦Domain Flux数据流中某一个查询获得了 DNS对应的A记录,可以把该DNS及其IP加入 到malicious domain list中;如果检测到局域网内其它主机也有着同样的窗口最大公共 子串,可以在网关处修改DNS服务器的返回,从而阻断bot host与master的通信。
权利要求
一种检测Domain Flux数据流的系统,包括监听模块、数据库操作模块和计算窗口最大公共子串的模块;其中,监听模块用于监听并分析出入网关的数据流,获取DNS查询请求数据包和DNS应答包,并提取源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息;数据库操作模块,用于将监听模块提取的源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息记录在数据库中;计算窗口最大公共子串的模块,用于计算时间窗口内任意两个请求的DNS的最大公共子串,并对最大公共子串出现的次数计数来确定窗口最大公共子串。
2.权利要求1的系统,其中,窗口的最大公共子串是一个时间窗口内DNS都包含的、出 现次数最多的最大公共子串。
3.权利要求1的系统,其中,所述数据库操作模块用于在时间窗口结束之后清理数据 库记录,并且仅需记录一个时间窗口内的DNS数据。
4.权利要求1的系统,其中,当特定主机发起的DNS查询获知窗口的最大公共子串出现 的次数超过阈值并且窗口的最大公共子串对应的DNS查询得到的DNS服务器应答为“未找 到域名对应的A记录”的频率超过阈值,则该系统确定该主机正在采用Domain Flux技术寻 址 C & C。
5.权利要求1的系统,其中,所述监听模块还用于获取网络适配器列表,打开网络适配 器,捕获数据并且根据协议特征来分析数据流并提取信息。
6.一种检测Domain Flux数据流的方法,包括步骤10)、监听并分析出入网关的数据流,获取DNS查询请求数据包和DNS应答包,并提 取源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息;步骤20)、将监听模块提取的源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息 记录在数据库中;步骤30)、计算时间窗口内任意两个请求的DNS的最大公共子串,并对最大公共子串出 现的次数计数来确定窗口最大公共子串。
7.权利要求6的方法,其中,步骤30)中,窗口的最大公共子串是一个时间窗口内DNS 都包含的、出现次数最多的最大公共子串。
8.权利要求6的方法,其中,步骤20)中,在时间窗口结束之后清理数据库记录,并且仅 需记录一个时间窗口内的DNS数据。
9.权利要求6的方法,其中,步骤30)还包括当特定主机发起的DNS查询获知窗口 的最大公共子串出现的次数超过阈值并且窗口的最大公共子串对应的DNS查询得到的DNS 服务器应答为“未找到域名对应的A记录”的频率超过阈值,则该系统确定该主机正在采用 Domain Flux 技术寻址 C & C。
10.权利要求6的方法,其中,步骤10)还包括获取网络适配器列表,打开网络适配器,捕获数据,根据协议特征来分析数据流并提取fn息ο
11.权利要求10的方法,其中,步骤10)还包括步骤110)、确定数据包是DNS请求包,从该DNS数据包中解析出发起DNS查询的源IP 地址、待查询的目的地址以及时间戳并返回;步骤120)、确定数据包是DNS应答包,从该DNS数据包中解析出该包的目的IP地址、 DNS及其对应的IP地址并返回。
12.权利要求6的方法,其中,步骤30)还包括步骤310)、对于同一个时间窗口内的记录,使用LCS算法计算任意两条记录的最大公 共子串;步骤320)、对所有的最大公共子串出现的次数进行计数,出现次数做多的最大公共子 串确定为窗口最大公共子串,返回窗口最大公共子串出现的次数;步骤330)、当最大公共子串出现的次数超过阈值并且窗口的最大公共子串对应的DNS 查询得到的DNS服务器应答为“未找到域名对应的A记录”的频率超过阈值时,确定该时间 窗口内的DNS查询数据流属于Domain Flux数据流。
全文摘要
本发明提供一种检测Domain Flux数据流的系统和方法,监听模块用于监听并分析出入网关的数据流,获取DNS查询请求数据包和DNS应答包,并提取源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息;数据库操作模块,用于将监听模块提取的源IP地址、待查询的DNS、时间戳、DNS对应的A记录信息记录在数据库中;计算窗口最大公共子串的模块,用于计算时间窗口内任意两个请求的DNS的最大公共子串,并对最大公共子串出现的次数计数来确定窗口最大公共子串。
文档编号H04L29/06GK101986642SQ20101051777
公开日2011年3月16日 申请日期2010年10月18日 优先权日2010年10月18日
发明者刘潮歌, 崔翔, 廖鹏, 张治起, 郭莉 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1