摘要:

摘要: 针对具有成本低廉、破坏性大、防御困难特性的DNS Query Flood攻击,本文构建UDP请求的知识图谱。基于攻击者通过发送大量伪造源IP地址的小UDP包冲击DNS服务器实施攻击的原理,本文通过计算客户机对服务器的正常访问频率确定发现DNS Query Flood攻击的流量阈值,基于加州大学洛杉矶分校的DNS Query Flood攻击实验数据集,利用Neo4j可视化分析检验通过阈值判定攻击的准确性。结果表明,阈值检测的方法在混合流量中对攻击流量的检测成功率高达95.04%。

1. 引言

网络技术快速发展的同时,各类网络安全问题层出不穷。根据2021年2月公布的第47次《中国互联网络发展状况统计报告》,2020年,国家信息安全漏洞共享平台收集整理信息安全漏洞20,721个,较2019年同期增长28% [1]。在各类漏洞威胁中,DDoS (Distributed Denial of Service,分布式拒绝服务)攻击以容易实施、难以防范、难以追踪等特点成为最难以防范和抵御的网络攻击类型之一,其中DNS反射放大攻击(DNS Amplification Attack)又是其中较为常见的方式。DNS攻击主要是利用UDP及DNS协议的安全漏洞,以DNS服务器作为攻击流量的反射放大器,实现对目标主机的DDoS攻击。如果DNS服务器被攻击,将会导致大量网站无法被正常访问,对网络安全造成严重威胁。由于计算机根区文件是公开可访问的,因此顶级域的权威服务器很容易被用来作为反射放大器。

2016年美国Dyn公司遭到了一次与以往不同的DDoS攻击,此次攻击通过Mirai病毒,将攻陷的物联网设备作为“肉鸡”,使得Dyn服务器一下子收到了成千上万条请求导致瘫痪。经调查发现,这是通过DNS的TCP和UDP数据包发起的一次攻击,据称此次攻击手段还不是很成熟,但已经对Dyn内部造成巨大伤害。DNS反射放大攻击是一种具有巨大攻击力的DDoS攻击方式之一,其危害大、成本低、溯源难,被黑色产业从业者所喜爱。攻击者只需要付出少量的代价,即可对需要攻击的目标产生巨大的流量冲击,对网络带宽资源、连接资源和计算机资源造成巨大的压力。Dyn公司的DNS服务器受到DNS反射放大攻击后,导致美国大范围断网,事后的攻击流量分析显示,DNS反射放大攻击是造成美国大范围断网的DDoS攻击的主力之一。

本文通过构建UDP请求的知识图谱,提出运用客户机与服务器的访问频率阈值的方法来检测、发现DNS Query Flood攻击。

2. 研究现状

2.1. DNS Query Flood攻击研究现状

当前DNS服务器由于其本身缺陷导致安全事故频发,针对DNS Query Flood攻击已有不少研究。严芬等人通过分析一段时间内DNS流量变化情况,得到该时间段内域名解析的成功率,计算出信息熵值,从而判断DNS服务器是否出现异常,进一步利用滑动窗口算法计算源IP地址的信息熵值,与正常情况比较得出结论,并通过实验验证了该检测方法的有效性 [2]。NM SAHRI和Koji OKAMURA提出引入一个服务器控制器,负责向先前请求DNS服务的每个主机发送身份验证包,通过验证请求客户端网络回复的“身份验证包”,来确定DNS查询是否为合法的查询或攻击包。经实验证实,该方法可以有效阻止来自僵尸网络的所有DNS查询 [3]。Roberto Alonso等人提出了一种新的递归抽取DNS流量来检测DNS Query Flood攻击的方法,建立了一种基于异常的检测机制,给定DNS使用的时间窗口,利用DNS攻击特征捕获DNS社群结构,通过观察DNS社群结构的变化来判断是否受到DNS攻击 [4]。

本文通过对客户机与DNS服务器之间的UDP数据包特征的研究,分析DNS Query Flood攻击流量的判定阈值,以尽早发现可能的攻击行为、减少损失。

2.2. 知识图谱简介

知识图谱是结构化的语义知识库,以符号形式描述物理世界中的概念及其相互关系。其基本组成单位是“实体–关系–实体”三元组,以及实体及其相关属性–值对,实体间通过关系相互联结,构成网状的知识结构 [5]。

相对于现有的字符串模糊匹配方式而言,知识图谱一方面能够通过推理实现概念检索从而改变现有的信息检索方式;另一方面能以图形化方式向用户展示经过分类整理的结构化知识,从而更方便人们对知识体系的理解和规律的发现。

实现知识图谱的相关图数据库软件,可将信息数据化、网格化,用可视化的方式呈现大量数据的关系,极大提高数据的可访问性。在图数据库工具中,通过编程可对数据进行多维度的探索,构建数据之间深层次的关系,以提高人工智能的推理能力。知识图谱的方法在金融数据分析中已广泛应用,实现了从简单的量化模型走向更为复杂的价值判断和风险评估的应用,逐步把经验变成可重用、可演化、可验证、可传播的知识模型,实现了数据到智能化决策的提升。

本文将知识图谱方法应用于网络流量分析,以发现DNS Query Flood攻击,这是一种新的应用尝试。

3. 基于流量知识图谱的DNS攻击检测方法

3.1. DNS Query Flood攻击基本原理

DNS服务器进行域名解析时,是通过UDP报文进行通信的,而UDP协议是一种无连接的服务,在DNS Query Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包,通过利用大量UDP小包冲击DNS服务器。

客户端与DNS服务器的UDP交互流程如下:

① 首先服务器会查找是否有对应缓存;

② 当没有缓存信息,且该域名无法由该DNS服务器进行解析时,DNS服务器会向上层DNS服务器递归查询域名信息,直到全球互联网的13台根DNS服务器,若仍然无法解析,则没有回应的报文。

此交互过程如图1所示。

Figure 1. UDP-based domain name resolution process

图1. 基于UDP的域名解析过程

DNS Query Flood攻击的原理如下:根据图1客户端与DNS服务器的UDP交互流程所述,设有用户机A、服务器B、上层服务器C。当攻击发生时,三者之间的通信过程如下:

1) 用户机A对服务器B发动DNS Query Flood攻击;

2) 服务器B向其上层服务器C进行递归查询。

利用知识图谱概念对DNS Query Flood攻击进行图形描述,如图2所示。

Figure 2. Knowledge graph of DNS Query Flood Attack

图2. DNS Query Flood攻击的知识图谱

3.2. 流量检测及确定阈值方法

DNS Query Flood攻击难以应对的主要原因在于这是一种攻击流量和正常流量混合在一起的攻击方式。在对于流量进行检测时,如何区分正常流量和攻击流量成为一个难点。

通过图2可直观地发现:在DNS Query Flood攻击过程中,用户机A与服务器B之间、服务器B与服务器C之间的大部分网络流量都是用户机A对服务器B、服务器B对服务器C的单方面数据查询和关联建立。

因此,本文研究提出通过构建历史正常流量知识图谱,对知识图谱中的正常流量进行分类,抽出每一条流量的时间戳,以此计算出正常的源地址对DNS服务器的访问频率,找出其中的最大值作为阈值。确定阈值之后,在实际网络管理过程中,即可以源地址为基础,对流量进行分类,计算出源地址对DNS服务器的访问频率,并与阈值进行比较,小于阈值的则为正常流量,大于阈值的即作为攻击流量的可疑对象,可进一步跟踪处理。

4. DNS Query Flood检测实验流程

4.1. 实验数据的选取及预处理

本文分析的DDoS攻击流量数据集,来自加州大学洛杉矶分校计算机科学系的网络研究实验室和高级系统研究实验室的数据(https://lasr.cs.ucla.edu/ddos/traces/)。该数据通过在测试机上运行TFN攻击工具并附加在另一台测试机而生成,同时也存在一些合法流量。实验中,分别抽取了两份攻击流量和两份正常流量作为本文研究的对象,将它们记作attacktrace1,attacktrace2,trace1和trace2。因为DNS Query Flood攻击中,攻击者可发送大量伪造源IP地址的小UDP包,通过利用大量UDP小包冲击DNS服务器,所以本文主要研究其中UDP数据包,能更好地对DNS Query Flood攻击流量进行检测、防御。

数据预处理时,首先将获取到的格式为txt文件转化为csv格式。

然后根据官网给出的关于UDP封包的列名信息进行字段处理,生成的数据如表1所示,表中各段含义如下:发送数据包的时间Packet_TIME;掩盖数据包源的IP地址IP_from;掩盖数据包目标的IP地址IP_to;原始源端口PORT_from;原始目标端口PORT_to;数据包的长度LENGTH。

序号

Packet_TIME

IP_from

IP_to

PORT_from

PORT_to

LENGTH

1

0.015674

1.1.139.167

1.1.236.8

9997

3

1001

2

0.01574

1.1.139.92

1.1.236.8

9996

4

1001

3

0.015824

1.1.139.210

1.1.236.8

9995

5

1001

4

0.015945

1.1.139.71

1.1.236.8

9994

6

1001

5

0.016028

1.1.139.142

1.1.236.8

9993

7

1001

6

0.01612

1.1.139.131

1.1.236.8

9992

8

1001

7

0.0162

1.1.139.84

1.1.236.8

9991

9

1001

8

0.016283

1.1.139.80

1.1.236.8

9990

10

1001

……

Table 1. Preprocessed data table

表1. 预处理后的数据表

4.2. 核心代码

本实验中采用Python语言中的py2neo模块和Neo4j可视化数据库进行构造知识图谱。代码整体可分为三个部分,核心部分就是根据正常流量数据计算其阈值。

1) 通过py2neo模块连接Neo4j数据库,并导入数据。

2) 创建函数create_rel,此函数主要功能是以导进来的数据为基础,构建知识图谱。首先以数据中的IP_from (原IP)和IP_to (目的IP)作为图谱中的两个节点,并把Packet_TIME (数据的时间戳)作为IP_from的一个属性,visit作为连接两个节点的联系,依次构建UDP数据包知识图谱。

3) 以第二步构建好的知识图谱为基础,对IP_from和其时间属性进行统计,并计算IP_from对于DNS服务器的访问频率。具体流程为:

① 通过NodeMatcher查询Neo4j中相同的IP_from地址,并统计其个数,并将其时间属性放进已经定义好的列表attr。

② 对IP_from的访问频率进行计算,在创建好的attr列表中寻找最大时间和最小时间并求其差值,结合前面统计的IP_from个数计算出IP_from对服务器的访问频率。

③ 将这部分代码放进一个for循环中,计算每一个IP_from的访问频率,并将每一个频率放进列表Threshod中,找出Threshod中的最大值,作为本实验的阈值。

4.3. 阈值的计算

实验中随机抽取攻击流量5000条和正常流量722条,以及2000条混合流量(其中1000条正常流量,1000条攻击流量)。

第一步:构建知识图谱。运用创建函数create_rel构建出DNS访问图谱,构建的图谱如图3所示。

第二步:计算检测阈值。查找出知识图谱中每个IP_from的个数,并将同一IP_from的时间属性放到列表diff中,计算最大时间差,结合IP_from的个数来计算相应IP每分钟访问的次数,之后将不同IP每分钟访问次数加入到列表Threshod中,找出列表Threshod中的最大值作为检测阈值为28.75721。

第三步:检验阈值的有效性。将5000条攻击流量数据包,按照第一步工作步骤构建攻击流量的知识图谱,之后计算攻击流量每个IP每分钟的访问次数,利用计算出的攻击流量和第二步得出的阈值进行比较,高于阈值为攻击流量,低于阈值的为正常流量。经过实验检验,发现利用阈值28.75721可成功检测出绝大部分攻击流量,正确率高达95.04%。

Figure 3. DNS access map visually constructed by Neo4j

图3. Neo4j可视化构建的DNS访问图谱

4.4. 攻击流量的检测

为了进一步检验本文方法的可靠性,在数据集中另外选取一部分攻击流量和正常流量,将它们混合在一起构成新的数据集合来进行测试。此混合数据集共计2000条数据,包括1000条正常流量和1000条攻击流量,如表2所示。

序号

IP_from

IP_to

数量

类型

1

1.1.139.83

1.1.236.54

315

攻击

2

1.1.139.104

1.1.236.8

215

攻击

3

1.1.139.12

1.1.236.27

225

攻击

4

1.1.139.157

1.1.236.56

246

攻击

5

1.1.139.25

1.1.12.7

196

正常

6

1.1.139.177

1.1.12.20

345

正常

7

1.1.139.202

1.1.12.66

228

正常

8

1.1.139.66

1.1.12.96

231

正常

……

Table 2. Example of mixed traffic data

表2. 混合流量数据示例

利用python编写的程序,2000条混合流量计算出的各IP地址的访问频率检测值如表3所示。

序号

IP_from

IP_to

访问频率

1

1.1.139.83

1.1.236.54

39.80007

2

1.1.139.104

1.1.236.8

29.66331

3

1.1.139.12

1.1.236.27

36.41097

4

1.1.139.157

1.1.236.56

31.05044

5

1.1.139.25

1.1.12.7

24.73938

6

1.1.139.177

1.1.12.20

28.27390

7

1.1.139.202

1.1.12.66

24.06290

8

1.1.139.66

1.1.12.96

24.37952

……

基于知识图谱的DNS Query Flood攻击检测研究相关推荐

  1. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...

    摘自:https://zhuanlan.zhihu.com/p/22953451 首先我们说说ddos攻击方式,记住一句话,这是一个世界级的难题并没有解决办法只能缓解 DDoS(Distributed ...

  2. SYN Flood DNS Query Flood HTTP Flood DDoS CC常见网络功击

    本人从事网络安全行业20年.有15年防ddos攻击防护经验.被骗了很多回(都说能防300G,500G,买完就防不住了),本文当然重点给大家说明,ddos攻击是什么,中小企业如何防护,用到成本等. 20 ...

  3. DDos攻击之DNS Query Flood

    DNS Query Flood 实际上是UDP Flood 攻击的一种变形,由于DNS服务在互联网中具有不可替代的作用,一旦DNS服务器瘫痪,影响很大.     DNS Query Flood攻击采用 ...

  4. CC 攻击检测研究现状

    网络层ddos 是让去往银行的道路交通变得拥堵,无法使正真要去银行的人到达:常利用协议为网络层的, 如tcp(利用三次握手的响应等待及电脑tcp 连接数限制)等 应用层ddos 则是在到达银行后通过增 ...

  5. DDOS--DNS Query Flood

    转载自: http://www.dnsceo.com/help/detail.php?id=71 什么是DNS查询攻击?DNS查询攻击全称UDP DNS Query Flood,攻击采用的方法是向被攻 ...

  6. DDOS攻击检测和防护

    一. 当前DDOS的主要特点 DDOS攻击作为常见的高危害性安全威胁,一直是CIO们的心头大患.和一般的安全风险不同,现阶段的DDOS攻击呈现出了下面3个特点: 攻击门槛低.简单易操作导致攻击很活跃. ...

  7. 应用层(DNS/HTTP/HTTPS)攻击与防御原理

    网络层攻击:TCP.UDP类攻击 网络层攻击可参考:网络层(TCP/UDP)攻击与防御原理 DNS类报文攻击防御 简要笔记: 针对DNS Anti-ddos ,针对缓存服务器 虚假源 (1)源认证 发 ...

  8. DNS Reply Flood防御原理

    介绍DNS Reply flood攻击和防御原理. DNS Reply Flood是指攻击者在一定条件下将大量伪造的DNS应答包发送给某个DNS服务器或主机,从而消耗服务器的处理性能. FW基于目的地 ...

  9. [论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. python3读取excel数据-Python3将爬取的数据存储到Excel
  2. muduo之Atomic
  3. 78折用计算机怎么算,一分钟速算口诀,计算速度秒杀计算器
  4. word中如何对公式插入题注和引用
  5. Java--对象的克隆
  6. 刚刚用上Ubuntu18,Ubuntu20已经出来了
  7. docsify操作和Docker部署流程文档
  8. GNU Radio AM调制解调(一)
  9. CSS z-index与JQ fadeOut()缓动效果无效问题
  10. 手机无线设计的八个原则
  11. 【HTML | 模板】自定义 商品列表 (商品表格)
  12. 2019上海到南京的公积金转移
  13. 小车手app安卓版下载_小车手app安卓版下载
  14. 什么是苹果cms?苹果cms如何安装及使用?
  15. Halide::Generator生成器使用说明
  16. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
  17. 《Adobe Fireworks CS5中文版经典教程》——1.4 配置面板和面板组
  18. 关于香港DHL与大陆DHL有什么不同?
  19. 【windows2008R2问题2】Windows Server® 2008 Enterprise 组件服务 找不到 ”Microsoft Word 97 - 2003 文档“组件...
  20. VueJS 基础之组件

热门文章

  1. ARINC 429总线接收器的输入共模电压
  2. 物联网开发和管理平台 - shifu 了解与学习
  3. ai推理_人工智能推理
  4. 淘宝直播技术干货:高清、低延时的实时视频直播技术解密
  5. docx4j 简介、中文文档、中英对照文档 下载
  6. js在数组的指定位置添加元素
  7. 信息系统项目管理师必背核心考点(三)UML的14种图形工具
  8. python驱动工具: ddt
  9. 图解算法英文版资源,阅读笔记及代码(Python)
  10. linux 下navicat 中文乱码终极解决方案