一种DNS恶意攻击流量的发现方法及系统与流程

文档序号:11410965阅读:705来源:国知局
一种DNS恶意攻击流量的发现方法及系统与流程

本发明涉及计算机领域,具体为一种dns恶意攻击流量的发现方法及系统。



背景技术:

作为互联网的重要基础设施,域名系统(domainnamesystem,dns)一直为全球互联网的运行提供关键性的基础服务,它的安全和稳定对于互联网是很重要的。

由于dns请求和响应主要基于不可靠传输层协议udp,而udp很容易遭受ddos攻击、反射攻击。黑客利用掌握的肉鸡向域名服务器发送大流量的dns包,导致dns服务器不能正常提供服务,不能正常响应合法用户的正常请求,如导致它们的丢包或时延变大。对于ddos攻击,需要及时发现其攻击行为和尽快分析出其攻击的目的域名和来源地址等攻击模式,才能为下一步的抵制举措采取及时的响应。

现阶段,有的人专注于全局流量的分析和研究,虽然能够及时发现dns服务器流量情况发生变化,但是不能确定是否是恶意变化,即使有的方法能够确定是恶意变化,也不能及时发现攻击域名和攻击的来源地址等攻击模式。有的人就是对dns服务器的总体流量、总体请求率或者为每个来源ip地址设置静态的或者动态的阈值。dns请求流量是一个动态变化的过程,静态的阀值方法不灵活,易错报。虽然有的发明采用了动态阀值方法,但是因为孤立地分析和研究域名和来源地址的请求情况,所以即使一定程度上能够分析出攻击源地址、攻击目标域名和域名服务器,也不能全面清晰地分析出攻击源地址和攻击目标。



技术实现要素:

为克服上述不足,本发明提供一种dns恶意攻击流量的发现方法及系统,通过实时分析dns服务器的流量或者请求日志,从域名和ip地址两个维度来分析以判断ddos攻击发生。

为解决上述技术问题,本发明所采用的技术方案是:

一种dns恶意攻击流量的发现方法,适用于对已知规模的dns流量进行检测,从中找出恶意流量,步骤包括:

1)找出首批恶意流量

1-1)判断发送给dns服务器的数据报流量对于所述dns服务器是非法还是合法,如果非法,则所述数据报流量为非法流量,提取恶意域名和恶意ip地址;

1-2)如果所述数据报流量合法,则判断所述数据报流量包含的dns请求域名是非法还是合法,如果非法,则判定所述数据报流量的ip地址为恶意ip地址,所述dns请求域名为恶意域名;

1-3)如果所述dns请求域名合法,从所述数据报流量中提取dns流量指标,当所述dns流量指标中的一项或几项异常时,所述dns请求域名判定为恶意域名,所述数据报流量的ip地址判定为恶意ip地址;

2)递归查找恶意流量

2-1)查找访问所述恶意域名的ip地址和所述恶意ip地址访问的域名,并判断是否为恶意ip地址和恶意域名,如果是,继续查找所述判定的恶意ip地址访问的域名和访问所述判定的恶意域名的ip地址并做出判断,直到满足退出条件时停止。

进一步地,所述发送给dns服务器的数据报对于所述dns服务器非法是指,所述数据报使用的协议不是基于tcp或udp运输层协议报文;或者使用的端口不是tcp53端口或udp53端口;或者运输层包体部分不符合dns协议,包括没有合适的dns包头或dns包体;或者dns请求包里设置有qr字段。

进一步地,所述dns请求域名非法是指所述dns请求域名不属于所述dns服务器的服务范围或不符合dns国际标准;合法是指所述dns请求域名属于所述dns服务器的服务范围且符合dns国际标准。

进一步地,所述dns流量指标包括dns请求率、dns服务器响应时间、dns响应包大小。

进一步地,所述dns流量指标异常包括:

所述dns请求率超过平时平均值的至少2倍,或者比其他域名或者ip地址的请求率大至少10倍;

所述dns服务器响应时间超过平时平均值的至少2倍,或者比其他域名请求的响应时间大至少一个数量级;

所述dns响应包大小超过平时平均值的至少3倍,或者比其他域名请求响应包大至少1倍。

进一步地,所述退出条件包括:找不到更多的恶意域名、恶意ip地址,或者查找时间超过平均查找时间的3倍,或者查找到的恶意域名、恶意ip地址的被查询次数、查询次数小于平时平均值的1/2。

进一步地,所述步骤2-1)中恶意域名的判断方法包括:

历史访问量,在过去一定时间内,如果域名的请求率因太大而属于小概率事件,或者超过平时平均请求率的3倍,则认为所述域名正遭受恶意攻击,可判定所述域名为恶意域名;

历史域名空间,在当前所有域名的请求中,如果所述域名的请求率因太大而属于小概率事件,或者超过平时平均请求率的3倍,则认为所述域名正遭受恶意攻击,可判定所述域名为恶意域名;

子域名数量,在所有域名中,如果所述域名的子域名数量因太大而属于小概率事件,或者超过平时平均值的3倍,则认为所述域名正遭受恶意攻击,可判定所述域名为恶意域名;

请求域名的否定应答情况,如果所述域名的否定应答的子域名数量占子域名总数的比例因太大而属于小概率事件,或超过平时平均值的3倍,则认为所述域名正遭受恶意攻击,可判定所述域名为恶意域名;如果所述域名的所有否定应答子域名的总访问次数占总访问数的比例因太大而属于小概率事件,或者超过平时平均值的3倍,则认为所述域名正遭受恶意攻击,可判定所述域名为恶意域名。

进一步地,所述步骤2-1)中恶意ip地址的判断方法包括:

地址真实性验证,通过第三方收集的bgp路由数据查看某ip地址所属as号和运营商信息,如果所述bgp路由数据足够全而从中没有查找到对应的as号和运营商信息,可判定所述ip地址为恶意ip地址;通过第三方ip地址地理位置定位服务商提供的服务获取所述ip地址的地理位置,如果没有查找到所述ip地址的地理位置,可判定所述ip地址为恶意ip地址;

ip地址新鲜度,如果所述ip地址在过去的某一长度时间段内没有访问记录,当这段时间长度超过6个月时,可判定所述ip地址为恶意ip地址;

历史访问量,在过去的一段时间里,如果ip地址访问某一域名的次数因太多而属于小概率事件,可判定所述ip地址为恶意ip地址;

一种dns恶意攻击流量的发现系统,包括:

数据报流量获取模块,用于获取发送给dns服务器的数据报流量;

危险发现模块,用于判断数据报以及所述判断数据报所包含的dns请求域名是否合法;

流量指标计算模块,从数据报流量中提取dns流量指标;

恶意分析模块,从所述数据报流量获取模块、所述流量指标计算模块及所述危险发现模块获取全部dns流量数据、dns流量指标及数据报并判断是否异常,如果是,则递归查找出全部的恶意域名和恶意ip地址。

进一步地,还包括流量指标存储模块和dns流量存储模块,所述流量指标存储模块用于存储所述流量指标计算模块提取的dns流量指标,所述dns流量存储模块用于储存从数据报流量中提取来的全部dns流量数据。

进一步地,所述dns流量指标包括dns请求率、dns服务器响应时间、dns响应包大小。

本发明方法通过对已知规模的dns流量进行检测,依次分析其数据报流量及所含的dns请求域名是否合法,更进一步提取并分析各dns流量指标,能够快速准确地判断是否为恶意域名和恶意ip地址;通过分析dns流量的ip地址和域名的关联关系,递归发现更多的恶意域名和恶意ip地址,从而对攻击dns服务器的恶意流量实现更加精确的定位。

附图说明

图1为实施例的一种dns恶意攻击流量的发现方法流程图。

图2为递归查找恶意流量的过程示意图。

图3为实施例一种dns恶意攻击流量的发现系统的模块图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。

对于dns恶意攻击而言,黑客即使掌握了再多的肉鸡,也不太会将目标太过于分散,他们会集中攻击流量攻击少量的域名和域名服务器,也就是说被攻击域名的请求率会猛增,而单个肉鸡的攻击率却可能并不大。如果域名管理者实时分析和关注域名请求率排名表和ip地址请求率排名表,那么被攻击域名可能在域名请求率排名表里已经很扎眼,而在ip地址请求率排名表却不显眼。因此,通过分别关注域名请求率排名表和ip地址请求率排名表容易发现被攻击域名,但不容易发现攻击源。现阶段的发明之所以不能全面清晰地发现攻击源和攻击域名,就是因为没有充分考虑域名和来源地址之间的关系。

如果只考虑排名靠前的域名或者ip地址,那么就不能发现全部(尽可能的)被攻击域名和攻击源。攻击源可能不仅仅攻击排名靠前的域名,同时还在攻击其他域名,只是攻击量相对较小,如果只看排名靠前的域名,那么这样的攻击域名是注意不到而已。被攻击域名可能不仅仅由排名靠前的ip地址攻击,还同时被其他地址攻击,只是攻击量相对较小,如果只看排名靠前的ip地址,那么这样的攻击源(地址)是注意不到而已。这些被攻击域名除了遭受到这些ip地址攻击外,还可能遭受其他ip地址的攻击,通过这些被攻击域名还可以找到另外的攻击ip地址。攻击源除了遭受到这些域名外,还可能攻击其他域名,通过这些被攻击域名还可以找到另外的攻击ip地址。这个过程可以不断的进行下去,直到找不到更多的攻击源和被攻击域名。由上可见,通过攻击源和被攻击域名的(多对多关系上)交替发现方法能够发现尽可能多的攻击源和被攻击域名。

注意,恶意域名(或恶意ip地址)不是说访问它的ip地址(或访问的域名)的所有流量都是恶意的,而是说被访问(或访问)的部分流量是恶意的。

为此,本实施例提供一种dns恶意攻击流量的发现方法,适用于对已知规模的dns流量进行检测,从中找出恶意流量,如图1所示,包括:

(1)找出首批恶意流量:

1)判断发送给dns服务器的数据报流量对于所述dns服务器是非法还是合法,如果非法,则所述数据报流量为非法流量,提取恶意域名和恶意ip地址;

2)如果所述数据报流量合法,则判断所述数据报流量包含的dns请求域名是非法还是合法,如果非法,则发送所述数据报流量的ip地址为恶意ip地址,所述dns请求域名为恶意域名;

3)如果所述dns请求域名合法,从所述数据报流量中提取dns流量指标,所述dns流量指标包括dns请求率、dns服务器响应时间、dns响应包大小,当所述dns流量指标中的一项或几项异常时,所述dns请求域名判定为恶意域名,所述数据报流量的ip地址判定为恶意ip地址。

以上3步依次进行,只要上一步判定为非法就无需进行下一步。

(2)递归查找恶意流量,如图2所示:

4)查找访问所述恶意域名的ip地址和所述恶意ip地址访问的域名,并判断是否为恶意ip地址和恶意域名,如果是,继续查找所述判定的恶意ip地址访问的域名和访问所述判定的恶意域名的ip地址并判断,直到满足退出条件时停止。

所述发送给dns服务器的数据报对于所述dns服务器非法是指,所述数据报使用的协议不是基于tcp或udp运输层协议报文;即使使用的是基于tcp或udp运输层协议报文,但使用的端口不是53端口,即tcp53端口或udp53端口;即使端口是53端口,运输层包体部分不符合dns协议,如没有合适的dns包头或dns包体;即使运输层有合适的包头或dns包体,但里面的字段是不合适的,如dns请求包里设置有qr字段(是应答包)。以上几种情况,只要有一种情况发生就可判定所述数据报为非法。

所述dns请求域名非法是指所述dns请求域名不属于所述dns服务器的服务范围,或不符合dns国际标准;合法是指所述dns请求域名属于所述dns服务器的服务范围,且符合dns国际标准。

所述dns流量指标异常包括:

所述dns请求率(即对某个域名或者来自某个ip地址的请求率)超过一定的经验数值,如dns请求率超过平时平均值的2倍,或者相对于其他域名或者ip地址的请求率大得明显,如10倍;

所述dns服务器响应时间超过一定的经验数值,如平时平均值的2倍,或者相对于其他域名请求的响应时间大得明显,如高一个数量级;

所述dns响应包大小超过一定的经验数值,如平时平均值的3倍,或者相对于其他域名请求响应包的大小大得明显,如大1倍。

所述退出条件包括:找不到更多的恶意域名、恶意ip地址,或者查找时间超过一定的时间阈值,如平时平均值的3倍,或者找到的恶意域名数量或者恶意ip地址数量超过一定的阈值,如平时平均值的3倍,或者查找到的恶意域名、恶意ip地址的被查询次数、查询次数小于一定的阈值,如平时平均值的1/2,这些阈值可根据需要人为设定,只要有一个条件满足,就可退出。

1递归查找恶意流量中的判断方法

1.1恶意域名的判断方法

多种因素可以作为衡量域名被攻击可能性,作为恶意域名的判断标准,包括:

(1)历史访问量

一般来说,如果所述域名在过去一定时间内被请求了足够多的次数,那么被请求率服从正态分布,如果请求率足够大,以至于落到了3%或5%以内的都是小概率事件,那么所述域名正遭受恶意攻击的可能性要大很多。因此,分别判断排名表中各个域名的请求率在过去一定的历史时间内是否是小概率事件,或者超过一个指定的阈值,如果某个(些)域名如此,那么这(些)域名被攻击的可能性急剧上升,可判定为恶意域名。

(2)历史域名空间

当前所有域名的请求服从正态分布,在当前所有域名的请求中,如果所述域名的请求率因太大而属于小概率事件(3%或5%以内),或者超过一个指定的阈值,如平时平均请求率的3倍,那么所述域名正遭受恶意攻击,可判定为恶意域名。

(3)子域名数量

在历史统计中,统计所有域名的子域名数量,数据量符合正态分布,并估算出均值和标准差。统计所述域名的子域名个数,如果在所有域名中所述域名的子域名个数超过设定的阈值,如平时平均值的3倍,或者由于太大而相对于分布是一个小概率事件,那么就认为所述域名正遭受恶意攻击,可判定为恶意域名。

(4)请求域名的否定应答情况

否定应答是说域名没有指定类型的域名数据,在历史统计中,统计所有域名的否定应答子域名数量,数据量符合正态分布,并估算出均值和标准差。分别统计否定应答的子域名数量,并计算它占子域名总数的比例,如果比例超过设定的阈值,如平时平均值的3倍,或者太大而是一个小概率事件,那么就认为所述域名可能遭受恶意攻击,可判定为恶意域名。分别统计所述域名的所有否定应答子域名的总访问次数,并计算它占总访问数的比例,如果前者超过设定的阈值,如平时平均值的3倍,或者太大而是一个小概率事件,那么就认为所述域名正遭受恶意攻击,可判定为恶意域名。

总之,以上只要有一项或者几项判断域名有恶意性,那么就认为它是恶意域名。

1.2恶意ip地址的判断方法

多种因素可以作为衡量域名被攻击可能性,作为恶意ip地址的判断标准,包括:

(1)地址真实性验证

由于isp对ip包的ip地址过滤不严格,有些恶意攻击(如ddos)是发送大量ip地址伪造的ip包,验证地址的真实性是必要的,验证所述ip地址是否为伪造的来ip地址。

可以通过第三方收集的bgp路由数据,查看所述ip地址所属as号和运营商信息,如果所述bgp路由数据足够全而从中没有查找到对应的as号和运营商信息,那么所述ip地址是伪造的可能性就较大,可判定为恶意ip地址。

可以通过第三方ip地址地理位置定位服务商提供的服务,获取所述ip地址的地理位置,如果没有查找到所述ip地址的地理位置,那么是ddos攻击的可能性就很大,可判定为恶意ip地址。

(2)ip地址新鲜度

如果所述ip地址在过去较长的一时间段内都有稳定的访问记录,那么所述ip地址发动恶意攻击的可能性小;如果在过去的某一长度时间段内没有访问记录,当这段时间长度超过一设定阈值时,如6个月,可判定所述ip地址为恶意ip地址。如果是递归服务器,有可能被黑客利用。

(3)历史访问量

过去一段时间里所述ip地址访问某一域名的访问次数作为一个变量,这个变量符合正态分布,如果访问次数太大,是一个小概率事件,就认为是恶意攻击的可能性就越大,可判定所述ip地址为恶意ip地址。

总之,以上只要有一项或者几项判断ip地址有恶意性,那么就认为它是恶意ip地址。

3系统实现

如图3所示,一种dns恶意流量攻击的发现系统,包括:数据报流量获取模块、危险发现模块、恶意分析模块、流量指标计算模块以及dns流量存储模块和流量指标存储模块。

(1)数据报流量获取模块

所述数据报流量获取模块实时获取发送给所述dns服务器的数据报,获取的方式有:通过在所述dns服务器前端的中间路由器或者防火墙上抓取或截留发送给所述dns服务器的数据报,或者在所述dns服务器上抓取数据报,或者实时读取所述dns服务器程序的日志文件,并将获取的数据报发送给危险发现模块。

(2)危险发现模块

所述危险发现模块用于判断发送给所述dns服务器的数据报对于所述dns服务器是否合法,并判断包含的dns请求域名是否合法,如果合法,则通知恶意分析模块做进一步分析判断;如非法,则提取恶意域名和恶意ip地址。

(3)流量指标计算模块

所述流量指标计算模块从数据报流量中计算、提取dns流量指标,包括dns请求率、dns服务器响应时间、dns响应包大小。

(4)dns流量存储模块

所述dns流量存储模块保存了过去一段时间和当前的全部dns流量数据,所述dns流量数据由数据报流量获取模块获取的数据报流量中提取而来,以供恶意分析模块使用。

(5)流量指标存储模块

所述流量指标存储模块保存了所述流量指标计算模块提取的各dns流量指标。

(6)恶意分析模块

所述恶意分析模块根据所述dns流量存储模块、所述流量指标存储模块以及所述危险发现模块里的全部流量数据、dns流量指标以及合法数据报并判断是否异常,如果发现有异常情况,如数据报对于dns服务器不合法,或者dns请求域名不合法,或者请求率突增超过一定阈值(如2倍),或者dns服务器的响应时间徒增超过一定阈值(如2倍),或者dns响应消息的大小徒增超过一定阈值(如3倍)等,就判断为恶意流量,进而递归找出全部的恶意流量,即全部的恶意域名和恶意ip地址。

本发明方法通过对已知规模的dns流量进行检测,依次分析其数据报流量及所含的dns请求域名是否合法,更进一步提取并分析各dns流量指标,能够快速准确地判断是否为恶意域名和恶意ip地址;通过分析dns流量的ip地址和域名的关联关系,递归发现更多的恶意域名和恶意ip地址,从而对攻击dns服务器的恶意流量实现更加精确的定位。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1