欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 基于DNS数据分析的域名查询与解析异常检测系统及方法独创技术32677字

基于DNS数据分析的域名查询与解析异常检测系统及方法

2021-02-04 09:10:14

基于DNS数据分析的域名查询与解析异常检测系统及方法

  技术领域

  本发明是基于DNS数据分析的域名查询与解析异常检测系统及方法,尤其涉及域名解析协议,属于互联网领域。

  背景技术

  域名解析协议是互联网的重要组成部分,它将难以通信的互联网协议地址映射到易于记忆的域名,从而提供全球性的、分布式的,以及基于关键字的重定向服务。与其他方法相比,通过分析DNS数据来检测恶意域具有许多优点:首先,DNS数据仅构成整个网络流量的一小部分,缓存有助于进一步减少需要分析的数据量,甚至能直接分析进入顶级域名的DNS流量。其次,DNS流量包含大量有意义的特征,可以被用来识别与恶意活动相关的域名。大量的特征和流量数据使得DNS流量成为应用于安全环境的各种机器学习技术的主要候选者。最后,由于恶意攻击行为在DNS数据中遗留了一些痕迹,研究人员能够在早期甚至攻击发生之前就发现恶意活动。

  DNS异常检测是动态监视计算机系统或网络中发生的事件的过程,分析它们是否存在可能或已经导致入侵发生的恶意域。由于大多数传统识别技术都无法应对计算机网络上的网络攻击的动态性和复杂性,DNS异常检测通常需要通过自动从各种系统和网络源收集信息,然后分析信息以找到可能存在的安全问题来完成。域名系统是用于计算机、服务或连接到互联网的任何资源的分层分布式命名系统。通过提供全球性的、分布式的重定向服务,DNS成为了互联网的重要组成部分。随着网络流量和网络拓扑的复杂性不断增加,DNS服务中经常会出现问题。

  关于DNS异常检测研究现状,Jung等人提出了一种通过DNS查询流量检测SMTP客户端异常的新方法。Lshibashi等人提出了一种通过研究ISP DNS来发现垃圾邮件发件人的方法。但在某种情况下,DNS本身可能是互联网攻击的一部分,如DDoS和DNS缓存中毒。

  Wang等人提出了一种数学方法来检测全国范围内对互联网的大规模攻击,通过建立协方差矩阵,记录在不同时间戳处的两个不同省份发生的查询量之间的协方差。平均协方差矩阵表示正常情况,如果当前协方差矩阵显著偏离平均协方差,则可能发生异常事件。此方法适用于全国范围内的攻击,但是未能检测到针对特定域名的攻击。Xu等人改进了RIPPER算法以检测僵尸网络,僵尸网络通常用于恶意活动,例如DDoS、垃圾邮件、网络钓鱼等。该算法在发现访问量较少的域名方面优于传统算法,例如功能匹配或统计方法。

  Ji等人提出了一种基于k均值聚类的算法来聚类IP地址和域名的时间行为,最后将域名分为四个聚簇。该方法并非比较不同域名上产生的流量,而是对一组派生变量进行聚类,例如DNS请求总数、源IP数量,以及两个DNS请求之间的平均时间间隔等,最后也得出了有趣的结果。

  Cui等人探索了各种现有的数据挖掘方法,并提出了两种新方法,从庞大的DNS日志数据中挖掘出有用的模式。首先,提出了一种频繁情节的挖掘算法,通过预测传入的查询量来检测异常。其次,利用DBSCAN聚类算法将查询量时间序列的数据划分为聚类,并对每个聚类进行进一步分析和研究。最后,提出了一种在查询序列数据库中发现一致情节的方法。

  国内外基于DNS的恶意域检测算法非常丰富,不过随着时间的推移,变化的恶意攻击行为迫使研究人员需要寻找更具描述性的特征,即使用从高维数据中自动获取知识的机器学习方法。开发用于检测恶意域的大多数方法都是以数据驱动,其核心是机器学习算法。

  发明内容

  为了解决DNS的恶意域以及变化的恶意攻击行为等问题,本发明提供一种基于DNS数据分析的域名查询与解析异常检测系统及方法,具体方案如下:

  方案一:基于DNS数据分析的域名查询与解析异常检测系统包括DNS数据分析的域名查询异常检测模块和解析异常检测模块两部分;

  域名查询异常检测模块用于收集域名信息、DNS记录批量查询和数据入库分析;

  解析异常检测模块用于域名异常查询检测、数据预处理、聚类分析和结果分析。

  方案二:基于DNS数据分析的域名查询与解析异常检测方法,是基于上述系统实现的,具体方法步骤如下:

  步骤一,搜索引擎查询主域名地址,通过全网DNS反解析、全网IP扫描http端口;

  步骤二,域名解析异常检测包括收集域名信息,然后对DNS记录批量查及数据入库和数据分析;

  步骤三,异常查询检测由于DNS基础结构的分布式特性,考虑多个位置来收集有关DNS查询和回复的信息,通过解析器是访问直接来自客户端计算机的查询的位置,提供有关DNS查询和响应方面的客户端的详细信息;

  步骤四,数据预处理为特征提取,从原始数据中提取出能够准确放映用户访问模式的时间行为特征,依次计算每个IP的时间特征,先从流量日志数据中提取出能够准确反映用户访问模式的时间行为特征,将DNS日志中的所有域名信息进行规约处理

  步骤五,聚类分析,其中的聚类算法包括基于距离的k-means算法和层次聚类算法,通过算法将获得的时间特征进行解析,从而得到判断网络状态的数据;

  步骤六,对上述解析后的数据通过比对分析进行最终的判断。

  进一步地,步骤一中所述的子域名收集的方法,是通过进行手工分析,包括Web子域名猜测与实际访问尝试、反查Whois获得关联域名信息,搜索引擎查询主域名地址,然后进行全网DNS反解析和全网IP扫描http端口。

  进一步地,所述的子域名收集的方法或者借助子域名爆破工具进行分析,向预定的搜索引擎发送子域名搜索请求,在搜索请求中包含相关联的域名关键字;对返回的响应页面进行正则匹配,从页面中提取出该域名所关联的所有子域名,对于一个域名,至少需要获取前100个搜索页面中包含的子域名;子域名爆破工具subDomainsBrute依赖于dnspython插件,其使用小字典递归地发现三级域名、四级域名,使用114DNS、百度DNS、阿里DNS的Public DNS查询,并且自动去重泛解析的域名。

  进一步地,步骤二中域名解析异常检测的中的数据分析包括IP次数分析和泛解析分析,首先准备域名集合keys,针对每一个域名key查询其DNS资源记录,判断查询所得资源记录是否为A类或CNAME类记录,如果是A类或CNAME类记录则资源记录信息保存到数据库中,反之则不做记录,最后针对收集到的所有子域名进行恶意泛解析分析,通过恶意泛解析分析能够找到存在恶意泛解析风险的域,并且能够发现部分受到恶意泛域名解析的网站采取相应的解决方案。

  进一步地,步骤三中,异常查询检测由于DNS基础结构的分布式特性,考虑多个位置来收集有关DNS查询和回复的信息;在所涉及的所有服务器中,通过解析器访问直接来自客户端计算机的查询的位置,提供有关DNS查询和响应方面的客户端的详细信息;

  关于原始DNS流量日志的处理,先从流量日志数据中提取出能够准确反映用户访问模式的时间行为特征,再提前将DNS日志中的所有域名信息进行规约处理。

  进一步地,步骤四中,数据预处理即特征提取,需要从原始数据中提取出能够准确放映用户访问模式的时间行为特征,从日志数据中探寻用户的访问模式,即查询时间、域名、IP地址,每一条DNS查询记录对应一次IP对域名的访问动作,针对每一个IP,需要提取的行为特征为:

  查询的次数为一分钟内IP用户向系统提交域名查询的总次数;

  查询的域名数为一分钟内IP用户向系统查询的不同域名的总次数;

  对同一域名的重复查询最大、最小和平均数值;

  查询时间间隔中最大、最小和平均的时间间隔;

  最后将DNS日志文件中出现的所有域名信息首先进行统一合并处理,规约为二级域名或CN下的41个类别和行政区的三级域名,以达到压缩数据的目的;

  数据预处理中,首先获得IP地址集合,然后对集合中每一个IP地址分别计算其行为特征:获取该IP所对应的原数据集子表,提取子表中的查询时间列,写入文件;获取查询域名列,得到域名列表,去重后的集合大小即为查询域名总数,对域名列表进行统计,即可得到域名重复查询特征,最后统一处理时间查询表,依次计算每个IP的时间查询特征;

  并且查询时间序列需要分文件存储,每个IP对应的文件名为该IP网络字节序的哈希值,将不同文件预处理后的数据进行整合得到一个文件,并合并IP相同的数据记录,除时间间隔外的IP行为特征从细粒度进行统计,时间间隔特征从粗粒度进行统计;

  其中时间特征提取,包括针对每一个IP地址,找到其查询时间序列所在的文件,遍历该文件后得到该IP的查询时间序列;根据查询时间序列,可以计算相邻查询的时间间隔从而得到时间间隔表;最后通过时间间隔表即可统计出最大、最小、平均时间间隔。

  进一步地,步骤五中,所述的聚类分析算法采用k-means算法和层次聚类两种,并设计了两种聚类算法的混合算法;

  所述的k-means算法是基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大,该算法认为簇是由距离相近的对象组成的,因此把得到紧凑且独立的簇作为最终目标,给定样本集D={x1,x2,...,xm},k-means算法针对聚类所得簇划分C={C1,C2,...,Cm}最小化平方误差

  

  其中是簇Ci的均值向量,E值越小,簇内样本相似度越高;

  所述的层次聚类是聚类算法的一种,通过计算不同类别数据点之间的相似度来创建一棵有层次的嵌套聚类树,在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点,创建聚类树有自底向上合并和自顶向下分裂两种方法;层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程,通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高,并将距离最近的两个数据点或类别进行组合,生成聚类树。

  进一步地,聚类算法中计算两个组合数据点间距离的方法有三种,分别为SingleLinkage,Complete Linkage和Average Linkage;

  Single Linkage方法是将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离,计算公式如下:

  

  Complete Linkag的计算方法将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离,计算公式如下:

  

  Average Linkage的计算方法是计算两个组合数据点中的每个数据点与其他所有数据点的距离,将所有距离的均值作为两个组合数据点间的距离,计算公式如下:

  

  层次聚类是一种“贪心算法”,算法的可解释性较好,能够产生高质量的聚类;与k均值聚类的不同之处在于,层次聚类的时间复杂度为O(m3),改进后的算法时间复杂度为O(m2logm),其中m为点的个数;

  先后使用三种算法对数据集进行训练,首先使用k均值聚类,k值的选取由肘部法则确定,得到最终的簇划分,然后使用层次聚类,k值与k均值聚类所选值相同,并使用三种距离度量分别做对照实验,得到最终的簇划分;最后采用k均值聚类与层次聚类的分步结合,得到最终的簇划分,并对划分结果做进一步分析,得到恶意域特征表现;选用Calinski-Harabasz指标和轮廓系数silhouette对聚类结果进行评估;Calinski-Harabasz(CH)指标的公式表示为:

  

  其中,n表示聚类的数目,k表示当前的类,trB(k)表示类间离差矩阵的迹,trW(k)表示类内离差矩阵的迹,CH越大,代表类自身越紧密,类之间越分散,即为更优的聚类结果;

  轮廓系数silhouette衡量一个节点与它所属聚类相较于其他聚类的相似程度,取值范围为-1到1,值越大表明这个节点更加匹配其所属聚类,而非其他相邻聚类;如果大多数节点都有很高的silhouette值,说明聚类结果较优;轮廓系数结合了凝聚度和分离度,scikit-learn中的轮廓系数计算的是所有样本的平均值,要求聚类数大于2,小于样本数-1。

  进一步地,步骤六中,所述的结果分析包括k-means算法聚类选取k值范围为1-9,通过肘部曲线确定k的最佳选择为4或7;由于数据量较小,所以k选择为4,再次进行聚类,并得到4个聚簇中心点;

  当k值选择为4时,CH值为5022,整体轮廓系数为0.59,统计每一个聚簇内点的个数,得到分类数据,对于k-means聚类结果,分析各类特征如下:

  类1中IP访问次数非常大,并且重复访问较多,访问时间间隔较短,频率较高;

  类2中IP访问次数最少,且均为单次查询,时间间隔较长,并且时间间隔的方差较小;

  类3中IP访问次数大于类2,但仍然远小于类1和类4,重复访问较少,时间间隔变化较大;

  类4中IP访问次数较大,重复访问较少,时间间隔介于类1和类2之间。

  本发明的有益效果体现在:

  开发用于检测恶意域的大多数方法都是以数据驱动,其核心是机器学习算法,

  由于域名系统的重要作用,恶意活动在DNS查询和响应的生命周期中的不同阶段所反映的独特行为已经成为恶意域识别的主要依据,为了抵御利用恶意域进行的网络攻击行为,考虑到域名系统的重要性,提供更有效的基于DNS数据分析的恶意域检测方法。

  基于恶意泛解析分析的域名解析异常检测,利用搜索引擎收集子域名信息,完成DNS记录的批量查询及存储。通过泛解析分析,从大量高价值域名中挖掘到了存在泛解析风险的少量可疑恶意域。

  基于聚类分析的域名查询异常检测,针对每一个用户IP,提取其行为特征:查询次数、查询域名数、对同一域名的重复查询数、查询时间间隔。

  单独使用k-means聚类效果较好,不同聚簇所反映的特征区别明显,层次聚类不适用于此数据集,容易出现过拟合现象。聚类组合算法中,先后使用层次聚类与k-means聚类对数据集进行处理,评估结果较好,因其具有用户IP短时间内发出大量连续相同请求等恶意行为特征针对划分结果进一步分析可以精准地发现可疑域。

  附图说明

  图1域名解析异常检测流程图;

  图2是子域名收集流程图;

  图3是域名查询异常检测流程图;

  图4是k-means聚类示例图;

  图5是层次聚类示例图;

  图6是聚类分析流程图;

  图7是肘部曲线k均值聚类图;

  图8是肘部曲线聚类组合图。

  具体实施方式

  具体实施方式一:基于DNS数据分析的域名查询与解析异常检测系统结合图1-图8所述,包括DNS数据分析的域名查询异常检测模块和解析异常检测模块两部分;

  域名查询异常检测模块用于收集域名信息、DNS记录批量查询和数据入库分析;

  解析异常检测模块用于域名异常查询检测、数据预处理、聚类分析和结果分析。

  具体实施方式二:基于DNS数据分析的域名查询与解析异常检测方法结合图1-图8所述,具体实施步骤如下:

  步骤一,搜索引擎查询主域名地址,通过全网DNS反解析、全网IP扫描http端口;

  步骤二,收集域名信息,然后对DNS记录批量查及数据入库和数据分析;

  步骤三,通过解析器是访问直接来自客户端计算机的查询的位置,提供有关DNS查询和响应方面的客户端的详细信息;

  步骤四,从原始数据中提取出能够准确放映用户访问模式的时间行为特征,依次计算每个IP的时间特征;

  步骤五,聚类算法包括基于距离的k-means算法和层次聚类算法,通过算法将获得的时间特征进行解析,从而得到判断网络状态的数据;

  步骤六,对上述解析后的数据通过比对分析进行最终的判断。

  具体实施方式三:根据具体实施方式一的步骤一所述,所述的子域名收集的方法还包括进行手工分析,比如Web子域名猜测与实际访问尝试、反查Whois获得关联域名信息、搜索引擎查询主域名地址、全网DNS反解析、全网IP扫描http端口,或者借助子域名爆破工具进行分析,向预定的搜索引擎发送子域名搜索请求,在搜索请求中包含相关联的域名关键字;对返回的响应页面进行正则匹配,从页面中提取出该域名所关联的所有子域名,对于一个域名,至少需要获取前100个搜索页面中包含的子域名;

  子域名爆破工具subDomainsBrute依赖于dnspython插件,其使用小字典递归地发现三级域名、四级域名,默认使用114DNS、百度DNS、阿里DNS几个快速且可靠的Public DNS查询,并且自动去重泛解析的域名。

  具体实施方式四:根据具体实施方式一的步骤二所述,还包括收集域名信息、DNS记录批量查询及数据入库、数据分析,其中数据分析包括IP次数分析和泛解析分析;

  首先准备域名集合keys,针对每一个域名key查询其DNS资源记录,判断查询所得资源记录是否为A类或CNAME类记录,如果是A类或CNAME类记录则资源记录信息保存到数据库中,最后针对收集到的所有子域名进行恶意泛解析分析。通过恶意泛解析分析能够找到存在恶意泛解析风险的域,并且能够发现部分受到恶意泛域名解析的网站采取了相应的解决方案。

  资源记录是一个包含了下列字段的4元组:(Name,Value,Type,TTL)。TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。Name和Value字段的值取决于Type,其中Type有4种:A、NS、CNAME、MX。

  如果Type=A,则Name是主机名,Value是该主机名对应的IP地址,例如(relay.example.com,145.37.93.123,A);

  如果Type=NS,则Name是个域,而Value是知道如何获得该域中主机IP地址的权威DNS服务器的主机名,例如(example.com,dns.example.com,NS);

  如果Type=CNAME,则Value是别名为Name的主机对应的规范主机名,例如(example.com,relay.example.com,CNAME);

  如果Type=MX,则Value是别名为Name的邮件服务器的规范主机名,例如(example.com,mail.bar.example.com,MX)。

  对于收集到的子域名,进行DNS记录批量查询及数据入库,只需要解析子域名的A类记录和CNAME类记录,忽略无法解析的域名。某些站点被攻击后,域名信息可能被恶意篡改,或被挟持域名。现在很多域名解析平台支持泛解析设置,例如,在添加A类记录时,主机记录若填写“*”就实现了泛解析。一旦域名被挟持,就会快速在域名下生成众多的二级域名、三级域名等。针对开启泛解析的网站,对比正常解析与泛解析结果的差异,从而判断该网站DNS是否被恶意修改。另外,可以根据正常解析与泛解析的地理位置的差异,判断并分析恶意域。较多恶意域解析后的地理位置位于境外。

  具体实施方式五:关于异常查询检测,由于DNS基础结构的分布式特性,可以考虑多个位置来收集有关DNS查询和回复的信息。在所涉及的所有服务器中,解析器是唯一可以访问直接来自客户端计算机的查询的位置,提供有关DNS查询和响应方面的客户端的详细信息。这个实验中,主要的数据来源是信息中心某段连续时间内的DNS流量日志数据。

  原始的DNS日志数据不能直接用于机器学习算法之中,第一步应该先从流量日志数据中提取出能够准确反映用户访问模式的时间行为特征。另外,域名的种类过多,并且有些的域名长度过长,不利于后面进行的数据分析。为了压缩数据,需要提前将DNS日志中的所有域名信息进行规约处理。聚类算法主要采用k均值聚类和层次聚类两种,并设计了两种聚类算法的混合算法。

  具体实施方式六:关于数据预处理,所述的预处理即为特征提取,需要从原始数据中提取出能够准确放映用户访问模式的时间行为特征,特征提取是一项具有挑战性的任务,它对检测方法的质量(准确性和稳健性)有很大的影响。精心设计的特征极大地促进了方法的成功,相反,较差的特征甚至可能会破坏良好的检测算法。因此,成功的检测方法在选择其特征时必须考虑精确性和稳健性之间的平衡。

  原始DNS日志数据中,每一条记录有以下特征:

  从日志数据中探寻用户的访问模式,需要使用的有效特征为(UPDATE_TIME,DOMAIN,SOURCE_IP),即查询时间、域名、IP地址。每一条DNS查询记录对应一次IP对域名的访问动作,针对每一个IP,需要提取的行为特征为:

  查询的次数(一分钟内IP用户向系统提交域名查询的总次数)

  查询的域名数(一分钟内IP用户向系统查询的不同域名的总次数)

  对同一域名的重复查询数(最大/最小/平均)

  查询时间间隔(最大/最小/平均)

  将DNS日志文件中出现的所有域名信息首先进行统一合并处理,规约为二级域名或CN下的41个类别和行政区的三级域名,以达到压缩数据的目的。例如,日志中对门户网站新浪的访问www.sina.com.cn、finance.sina.com.cn、mail.sina.com.cn等都被规约为三级域名sina.com.cn。

  数据预处理中,首先获得IP地址集合,然后对集合中每一个IP地址分别计算其行为特征:获取该IP所对应的原数据集子表,提取子表中的查询时间列,写入文件;获取查询域名列,得到域名列表,去重后的集合大小即为查询域名总数,对域名列表进行统计,即可得到域名重复查询特征。最后统一处理时间查询表,依次计算每个IP的时间查询特征。

  由于总查询次数较大,查询时间序列需要分文件存储。每个IP对应的文件名为该IP网络字节序的哈希值。将不同文件预处理后的数据进行整合得到一个文件,并合并IP相同的数据记录。除时间间隔外的IP行为特征从细粒度进行统计,时间间隔特征从粗粒度进行统计。

  时间特征提取步骤为:针对每一个IP地址,找到其查询时间序列所在的文件,遍历该文件后得到该IP的查询时间序列;根据查询时间序列,可以计算相邻查询的时间间隔从而得到时间间隔表;最后通过时间间隔表即可统计出最大、最小、平均时间间隔。

  具体实施方式七:针对域名查询与解析异常检测,通过聚类分析,在无监督学习中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。此类学习任务中,研究最多、应用最广的是“聚类”。在聚类算法中,根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧氏距离法。

  k-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离相近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。k-means算法是一种“启发式算法”,对于大型数据集具有简单高效、时间复杂度和空间复杂度较低等优点。不过当数据集较大时,结果容易达到局部最优,并且需要预定设置k值,同时对初始的k个点选取很敏感。同时,k-means算法对噪声和离群值非常敏感,不能解决非凸数据。

  给定样本集D={x1,x2,...,xm},k-means算法针对聚类所得簇划C={C1,C2,...,Cm}最小化平方误差:

  

  其中是簇Ci的均值向量;E值越小,簇内样本相似度越高。

  最小化上述公式是一个NP难问题,k均值算法采用了贪心策略,通过迭代优化来近似求解式。该算法是一种“启发式算法”,对于大型数据集具有简单高效、时间复杂度和空间复杂度较低等优点。不过当数据集较大时,结果容易达到局部最优,并且需要预定设置k值,同时对初始的k个点选取很敏感,k-means算法对噪声和离群值非常敏感,不能解决非凸数据。

  层次聚类是聚类算法的一种,通过计算不同类别数据点之间的相似度来创建一棵有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节点。创建聚类树有自底向上合并和自顶向下分裂两种方法。层次聚类算法相比划分聚类算法的优点之一是可以在不同尺度上展示数据集的聚类情况。层次聚类的合并算法通过计算两类数据点间的相似性,对所有数据点中最为相似的两个数据点进行组合,并反复迭代这一过程。简单地说层次聚类的合并算法是通过计算每一个类别的数据点与所有数据点之间的距离来确定它们之间的相似性,距离越小,相似度越高。并将距离最近的两个数据点或类别进行组合,生成聚类树。

  计算两个组合数据点间距离的方法有三种,分别为Single Linkage,CompleteLinkage和Average Linkage。

  Single Linkage方法是将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离。这种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距离较近而组合在一起。计算公式如下:

  

  Complete Linkage的计算方法与Single Linkage相反,将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离。Complete Linkage的问题也与Single Linkage相反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。计算公式如下:

  

  Average Linkage的计算方法是计算两个组合数据点中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两种方法更合理。计算公式如下:

  

  层次聚类是一种“贪心算法”,算法的可解释性较好,能够产生高质量的聚类;与k均值聚类的不同之处在于,层次聚类的时间复杂度为O(m3),改进后的算法时间复杂度为O(m2logm),其中m为点的个数;

  先后使用三种算法对数据集进行训练。首先使用k均值聚类,k值的选取由肘部法则确定,得到最终的簇划分。然后使用层次聚类,k值与k均值聚类所选值相同,并使用三种距离度量分别做对照实验,得到最终的簇划分。最后采用k均值聚类与层次聚类的分步结合,得到最终的簇划分,并对划分结果做进一步分析,得到恶意域特征表现。

  选用Calinski-Harabasz指标和轮廓系数silhouette对聚类结果进行评估。Calinski-Harabasz(CH)指标的公式表示为:

  

  其中,n表示聚类的数目,k表示当前的类,trB(k)表示类间离差矩阵的迹,trW(k)表示类内离差矩阵的迹。CH越大,代表类自身越紧密,类之间越分散,即为更优的聚类结果。

  轮廓系数silhouette衡量一个节点与它所属聚类相较于其他聚类的相似程度,取值范围为-1到1,值越大表明这个节点更加匹配其所属聚类,而非其他相邻聚类。如果大多数节点都有很高的silhouette值,说明聚类结果较优。轮廓系数结合了凝聚度和分离度。scikit-learn中的轮廓系数计算的是所有样本的平均值,要求聚类数大于2,小于(样本数-1)。

  具体实施方式八:最终得到计算后的各类数据进行结果分析,其中k-means聚类选取k值范围为1-9,通过肘部曲线确定k的最佳选择为4或7。由于数据量较小,所以k选择为4,再次进行聚类,并得到4个聚簇中心点;当k值选择为4时,CH值为5022,整体轮廓系数为0.59。统计每一个聚簇内点的个数,得到下表:

  表1聚簇中心点

  

  

  对于k-means聚类结果,分析各类特征如下:

  类1中IP访问次数非常大,并且重复访问较多,访问时间间隔较短,频率较高;

  类2中IP访问次数最少,且均为单次查询,时间间隔较长,并且时间间隔的方差较小;

  类3中IP访问次数大于类2,但仍然远小于类1和类4,重复访问较少,时间间隔变化较大;

  类4中IP访问次数较大,重复访问较少,时间间隔介于类1和类2之间。

  根据聚簇特征的分析,错误数据、病毒或恶意攻击类型的查询位于类1之中,特点是访问次数特别大,重复数量较大,并且是在短时间内连续发出的相同请求。其他类中的查询为正常用户访问记录。

  单独采用“自底向上”的层次聚类算法对数据进行聚类,选择多种不同连接标准的情况下,都不能得到较好的结果,会出现过拟合现象或者聚类特征不明显的现象。层次聚类在三种连接标准下的评估结果如下表所示:

  表2层次聚类在三种标准下的评估结果

  

  将所有IP行为特征的时间粒度都调整到统一的0.5h,首先用层次聚类算法使用时间间隔特征对数据集进行初步划分。对于层次聚类划分结果中的可疑聚簇组成新的数据集,使用k-means算法对查询次数特征进行聚类分析,根据肘部法则,应选择k值为7,分类结果的CH值为227203.47,整体轮廓系数为0.88。

  表3聚簇中心点(聚类组合)

  

  

  根据聚簇中心点所反映的特征,恶意域可能出现在类2/3/4/5/6中,一共26个源IP。查询并分析这26个源IP用户请求的域名的Whois信息,其中大部分为正常域,发现2个无法查询到Whois信息的可疑恶意域。用户对可疑恶意域的查询时间间隔短,查询频率高,在短时间内发出大量连续相同的请求,疑似错误请求或恶意攻击行为所导致。

  以上实施例只是对本专利的示例性说明,并不限定它的保护范围,本领域技术人员还可以对其局部进行改变,只要没有超出本专利的精神实质,都在本专利的保护范围内。

《基于DNS数据分析的域名查询与解析异常检测系统及方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)