搜索
您的当前位置:首页一种IPv6网络环境下的入侵检测系统[发明专利]

一种IPv6网络环境下的入侵检测系统[发明专利]

来源:乌哈旅游
(19)中华人民共和国国家知识产权局

*CN102970306A*

(10)申请公布号 CN 102970306 A(43)申请公布日 2013.03.13

(12)发明专利申请

(21)申请号 201210549125.0(22)申请日 2012.12.18

(71)申请人中国科学院计算机网络信息中心

地址100190 北京市海淀区中关村南四街四

号中国科学院计算机网络信息中心(72)发明人张宏 葛敬国 龙春 彭培栋

赵静 赵方垒 荆涛 万巍 高鹏(51)Int.Cl.

H04L 29/06(2006.01)

权利要求书 4 页 说明书 10 页 附图 7 页权利要求书4页 说明书10页 附图7页

(54)发明名称

一种IPv6网络环境下的入侵检测系统(57)摘要

本发明的提出主要是为了研究和构建一套面向IPv6网络环境的网络安全检测系统,解决IPv6新特性给入侵检测系统带来的新问题,大幅度提高网络中IPv6攻击行为的检测能力和网络安全预警能力,为用户提供一个良好的网络环境。本发明提供的方案中,数据采集模块、预处理模块和检测模块都能用于入侵行为的探测,初始化模块和响应模块为系统提供辅助支持。采用本发明提供的预处理插件和主动探测的方法,扩展了入侵检测系统的检测思路和检测手段,也提高了入侵检测系统的检测率。

CN 102970306 ACN 102970306 A

权 利 要 求 书

1/4页

1.一种IPv6网络环境下的入侵检测系统,使得网络获得IPv6攻击行为的检测能力,所述系统包括初始化模块、数据采集模块、预处理模块、检测模块以及响应模块,其中:

初始化模块首先获取用户输入的命令行参数、配置文件、系统设置的协议集和预处理配置项,初始化匹配算法和各种插件,将检测规则从规则库中导入内存,在内存中建立一个高效的规则树,为之后数据包的规则匹配做准备;

数据采集模块采用Libpcap的网络接口库循环捕获原始以太网数据包,将捕获的非IPv6数据包丢弃,并根据丢弃的包生成相应的记录发送并存储在响应模块的告警日志中;

预处理模块对数据包进行预处理,包括数据分片重组、对TCP协议进行流重组、对某些协议(例如HTTP)传输的特殊编码数据进行代码转换、发现攻击行为并进行报警;

特别地,借助预处理模块实现对无法用规则描述的一类攻击行为进行检测,扩充系统的攻击识别能力;

检测模块根据系统设置的规则检测预处理模块传来的数据包的各个方面,包括数据包的大小、协议类型、IPv6/ICMPv6/TCP/UDP等选项,根据规则匹配完成检测功能;

如果数据包的特征和某条规则相匹配,则认为该包是入侵包,将该包送至响应模块进行处理,否则认为该包是网络上的正常流量,不做进一步的处理;

响应模块在检测到攻击后执行各种输出和反应的功能,把各种类型的报文记录到各种类型的日志中,以方便管理员进行查询、分析和处理。

2.根据权利要求1所述的方法,其特征在于,预处理模块检测数据包的攻击行为包括以下步骤:

C1. 预处理模块按照关键字名称组织成预处理关键字链表并指定初始化函数,然后根据系统配置的预处理插件关键字,将这些插件的处理函数组织成一条预处理函数链表,将所需的处理函数加入到该链表中;

C2. 预处理模块接收到数据包时,沿着预处理函数链表对应的功能执行函数对数据包进行处理,如果确定数据包具备攻击特征或者攻击可能后,则生成相应记录并将检测结果发送并存储在响应模块,发布警报和攻击的相关信息。

3.根据权利要求1所述的方法,其特征在于,响应模块的输出格式有database、syslog、tcpdump、file等,检测结果的记录包括:数据包的IPv6源地址、IPv6目的地址、版本、业务流类别、流标签、载荷长度、下一包头、跳数限制和数据包载荷。

4.根据权利要求1所述的方法,其特征在于,对IPv6网络扫描攻击的检测方法G,包括如下步骤:

G1. 预处理模块当捕获到一个数据包P时,首先判断该数据包P是否为ICMPv6回送请求报文,如果是则转入步骤G2,如果不是,则转入步骤G3;

G2. 以该数据包的IPv6源地址作为关键字搜索可疑主机链表,如果该数据包已被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据包P)存储至可疑主机链表;

G3. 预处理模块继续对接收的数据包进行类型判断,如果数据包为带有逐跳选项报头的ICMPv6回送请求报文,且逐跳选项报头中包含无法识别的选项时,则转入步骤G4, 如果不是,则转入步骤G5;

G4. 以该数据包的IPv6源地址作为关键字搜索可以可疑主机链表,如果该数据包已

2

CN 102970306 A

权 利 要 求 书

2/4页

被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据包P)存储至可疑主机链表;

G5. 预处理模块继续对接收的数据包进行类型判断,如果数据包不是ICMPv6请求应答数据包,则转入步骤G6,如果是,则转入步骤G7;

G6. 预处理模块继续对接收的数据包进行类型判断,如果数据包是ICMPv6参数问题报文,则转入步骤G7,如果不是,则将数据包传送至检测模块进行后续处理;

G7. 获取数据包的源地址和目的地址,并检查报文的目的地址是否是可疑主机链表中的地址,如果是则表示该数据包是一个受害主机曝光自己存在的数据包,其源地址代表的主机是受害主机,将受害主机的IP地址及数据报记录在受害主机链表中;如果数据包的目的地址没有在可疑主机链表中,说明此数据包是一个正常的数据包,无需对该数据包进行记录。

5. 根据权利要求1所述的方法,其特征在于,对IPv6网络扫描攻击的预警方法D,包括如下步骤:

D1. 定时检查可疑主机链表,当发现一个可疑主机后,对其进行状态检查;D2. 如果此主机发送过两种攻击报文:ICMPv6回送请求报文和带有错误选项的逐跳选项报头的回送请求报文,且此时与可疑主机发送最后一个攻击包之间的时间差超过预定的时间值,则生成相应记录并将检测结果发送并存储在响应模块,发布警告和攻击的相关信息,如果检查未发现符合条件的可疑主机,转入步骤D4;

D3. 对与可疑主机相关联的受害主机链表进行遍历,预警每个受害主机的IPv6地址和数据包相关信息,如果遍历完毕,转入步骤D5;

D4. 直接进入睡眠状态,再重新进行可疑主机的检查;

D5. 如果系统时间与攻击主机发送最后一个攻击包之间的时间差超过预定的时间差,则清空可疑主机链表和受害主机链表,直接进入睡眠状态,否则系统时间与攻击主机发送最后一个攻击包之间的时间差未超过时间值,则重新检查可疑主机的状态。

6. 根据权利要求1所述的方法,其特征在于,对IPv6网络扫描攻击的检测方法G采用预处理插件单独对该类攻击进行检测,弥补检测模块无法捕获攻击数据报的特征不明显这类攻击的缺陷。

7.根据权利要求1所述的方法,其特征在于,对中间人攻击的检测方法H,包括如下步骤:

H1. 在数据采集模块中判断数据包的类型,如果捕获到路由器公告报文RA,则判断该报文是否为请求类型的路由器公告报文;

如果是,则转入步骤H2,如果不是,则转入步骤H6;

H2. 用链表结构记录该请求类型的路由器公告报文中的路由器IPv6地址和MAC地址,标记为可疑的请求类型路由器信息链表;

H3. 发送路由器请求探测报文RS,获取本地网络中活跃的路由器信息,即为路由器IPv6地址和MAC地址;

如果收到广播形式的路由器公告报文,则对此类的路由器公告报文进行缓存,记录至广播的非请求类型路由器信息链表;

H4. 比较可疑的请求类型路由器信息链表和广播的非请求类型路由器链表中的

3

CN 102970306 A

权 利 要 求 书

3/4页

IP-MAC数据对,如果发现两个链表中的数据有IPv6地址相同但MAC地址不一致的情况,则说明发生了路由器欺骗攻击行为,生成相应记录并把检测结果发送至响应模块,如果两者一致,说明为正常的数据包,转入步骤H5;

H5. 清除之前存储的可疑请求类型路由器信息链表和广播的非请求类型路由器信息链表中的信息;

H6. 根据这个非请求的路由器公告报文,更新路由器信息(路由器IPv6地址和MAC地址)至非请求类型路由器链表;

H7. 在数据采集模块中判断数据包的类型,如果捕获到的是路由器请求报文RS,则判断该报文是否为有源IPv6地址的路由器请求报文,如果是,则转入步骤H8,如果不是,则转入步骤H10;

H8. 根据路由器请求报文RS中声称的IPv6地址和MAC地址,记录至可疑的主机信息链表;

H9. 发送邻居请求报文NS来验证声称的IPv6地址和MAC地址的主机的可达性;H10. 在数据采集模块中判断数据包的类型,如果捕获到的是邻居公告报文NA,则判断此报文是否是单播的邻居公告报文NA,如果是,则转入步骤H11,如果不是,则结束此次检测;

H11. 如果收到的单播邻居公告报文中的目的地址与可疑主机信息链表中的IPv6地址一致,则记录IPv6地址和MAC地址至邻居信息缓存链表,如果两者地址不一致,则不缓存IPv6地址和MAC地址,直接丢弃;

H12. 逐一比较可疑主机信息链表和邻居信息缓存链表中的记录,如果发现两个链表中的记录有IPv6地址相同但MAC地址不一致的情况,则说明发生了邻居欺骗攻击行为,生成相应记录并把检测结果发送至响应模块;

H13. 清除之前存储的可疑主机信息链表和邻居信息缓存链表中的信息;H14. 如果路由器欺骗行为和邻居欺骗攻击行为同时发生,说明发生了中间人攻击,生成相应记录并把检测结果发送至响应模块,进行告警。

8.根据权利要求1所述的方法,其特征在于,对中间人攻击的检测方法H借助探测主机主动发送检测报文的方式,捕获对检测报文的应答情况来判断是否发生攻击行为。

9.根据权利要求1所述的方法,其特征在于,对重定向攻击的检测方法I,包括如下步骤:

I1. 在数据采集模块对接收到的数据包进行类型判断,如果为合法的重定向报文,则转入步骤I2,如果不是,则继续捕获数据包;

I2. 获取重定向报文中宣称的默认路由器的IPv6地址(即目标地址)和MAC地址(即目标链接层地址),并进行存储;

I3. 发送路由器请求探测报文RS;

I4. 获取路由器请求探测报文RS的回复报文RA,从RA中获取本地网络中默认路由器的IPv6地址和MAC地址,并进行存储;

I5. 比较重定向报文中声称的默认路由器IPv6地址和MAC地址与存储的默认路由器IPv6地址和MAC地址,如果发现两者的IPv6地址相同而MAC地址不同,则说明本地网络中存在重定向攻击行为,生成相应记录并将检测结果发送并存储在响应模块,如果两者相同,

4

CN 102970306 A

权 利 要 求 书

4/4页

则说明此数据包为正常的数据包,继续捕获下一个数据包。

5

CN 102970306 A

说 明 书

一种IPv6网络环境下的入侵检测系统

1/10页

技术领域

[0001]

本发明属于计算机网络信息安全领域,涉及一种IPv6网络环境下的入侵检测系

统及方法。背景技术

随着信息时代的来临,网络和通信技术飞速发展,网络安全问题日益突出。IPv6协

议作为下一代互联网的核心,对原有IPv4做了大量的改进,包括增加了安全性、自动配置、移动性以及性能提高等,并能有效地解决地址短缺问题。

[0003] 入侵检测技术作为网络与信息安全领域的一项重要技术,在IPv4网络中得到了比较成熟而广泛的应用,入侵检测与多种学科的科研方法相结合。基于协议分析技术,可以克服传统入侵检测采用的模式匹配方法的低效,大幅提高检测的速度与检测的正确性。基于数据挖掘技术,可以针对已编码特征的入侵检测概率达到100%,但如何提取出可以有效反映系统特性的特征属性,并应用合适的算法进行数据挖掘是一个难点问题。基于神经网络的检测技术由于具有自适应、自组织和自学习能力,可以处理一些环境信息十分复杂、背景知识不清楚的问题,但神经网络的学习速度问题和网络结构问题也影响其在IDS中的应用。

[0004] 随着IPv6网络日益广泛的应用、地址空间和协议实现的安全机制等的变化,越来越多针对IPv6的攻击手段和方法也不断地出现。入侵检测系统向IPv6过渡存在很多需要解决的问题,如对于软件的移植、入侵特征库的变化等。目前,针对IPv6环境下的入侵检测系统的研究主要集中在IPv6协议本身的安全性讨论及现有IDS的相应改变上,Arrigo Triulzi在发表的“Intrusion detection System and IPv6”论文中提到了IPv6对IDS提出的新的挑战,但没有提供具体的解决方案。2004年,印度坎普尔大学的Yogesh Chauhan提出,IPv6将强制使用安全措施,进而分析了它们对IPv6下的入侵带来的变化,提出了IPv6本身的协议安全性、入侵检测和防火墙的结合是未来网络有效的防护手段。适用于IPv4协议的入侵检测系统并不能直接应用于IPv6网络中。近几年,国内IPv6的入侵检测技术的理论研究有了较快发展。由于能够防护内部网络攻击以及分布式网络拒绝服务攻击,具有智能专家系统的IPv6入侵检测系统成了研究热点。半轮询驱动零拷贝数据包捕获机制和基于改进遗传算法的模糊检测方法被用于改进IPv6漏洞。在模式匹配算法Boyer-More算法、Aho-Corasick算法等基础上,学者纷纷提出新的模式匹配算法,并将其应用在网络入侵检测系统。国内一些高校对IPv6入侵检测系统的研究和设计做出了有益尝试。总而言之,研究IPv6入侵检测系统已经具有一定的理论基础,但仍然缺乏成熟的支持IPv6网络的入侵检测产品。

[0002]

目前国内外对IPv6入侵检测系统的研究仍处于起步阶段,还没有成熟的能用于

实际的支持IPv6网络的入侵检测系统,IPv6网络环境下的入侵检测系统的研究属于国际前沿领域,具有十分重要的理论意义和应用价值。随着网络的发展,特别是IPv6的普及,IPv6网络环境下的入侵检测系统将成为下一代互联网研发的热点。所以对于IPv6网络的

[0005]

6

CN 102970306 A

说 明 书

2/10页

入侵检测系统的研究和实现变得十分迫切和必要。发明内容

本发明为解决现有技术的缺点和不足,提供了一种IPv6网络环境下的入侵检测

系统,实现了对常见IPv6攻击行为的检测和分析,大幅度提高了网络中IPv6攻击行为的检测能力和网络安全预警能力。

[0007] 本发明提供的方法在于通过一套IPv6网络环境下的入侵检测系统实现,该系统包括:

系统初始化模块,用于获取用户输入的命令行参数、配置文件、系统设置的协议集和预处理配置项,初始化匹配算法和各种插件,将检测规则从规则库中导入内存,在内存中建立一个高效的规则树,为之后数据包的规则匹配做准备。[0008] 数据采集模块,利用Libpcap库函数循环捕获原始以太网数据包,将捕获的非IPv6数据包丢弃,为入侵检测系统提供分析所需的网络数据信息。[0009] 预处理模块检查并修改数据包,完成IPv6数据包分片重组、对TCP协议进行流重组、对某些协议(例如HTTP)传输的特殊编码数据进行代码转换和发现攻击行为并进行报警,预处理模块在数据包被送到检测模块之前提供了一个报警、丢弃数据包、修改数据包的框架,基于规则检测不能满足某个特殊的需求时,预处理模块可以用一种特殊的方式对报文进行分析和修改。

[0010] 检测模块的主要作用就是检测入侵攻击事件,根据检测规则来检查数据包的各个方面,包括数据协议字段、数据包大小、协议类型、TCP/UDP选项等,发现入侵攻击行为。[0011] 响应模块根据检测结果进行报警,并将检测为入侵攻击的IPv6数据包及其相关信息存储在数据库和日志文件中,以方便查询和统计分析。[0012] IPv6网络环境下的入侵检测系统,包括下述步骤:

A. 系统启动时,初始化模块首先获取并解释命令行参数,读入配置文件,初始化Libpcap和网络接口设备,初始化入侵检测系统的检测插件和输出插件链表,初始化预处理插件,读取规则文件,将规则解析为三维链表结构导入内存;

B. 数据采集模块打开网络接口设备,确定链路类型,确定数据包解析器,系统调用Libpcap库开始循环捕获网络数据包,利用BPF数据包过滤机制,从大量的网络数据中过滤非IPv6的数据包。

[0013] C. 预处理模块对数据包进行预处理,包括数据分片重组、对TCP协议进行流重组、对某些协议(例如HTTP)传输的特殊编码数据进行代码转换、发现攻击行为并进行报警。特别地,借助预处理模块实现对无法用规则描述的一类攻击行为进行检测,可扩充系统的攻击识别能力。

[0014] D. 检测模块根据系统设置的规则检测预处理模块传来的数据包的各个方面,包括数据包的大小、协议类型、IPv6/ICMPv6/TCP/UDP等选项,根据规则匹配完成检测功能。如果数据包的特征和某条规则相匹配,则认为该包是入侵包,将该包送至响应模块进行处理,否则认为该包是网络上的正常流量,不做进一步的处理。

[0015] E. 响应模块在检测到攻击后执行各种输出和反应的功能,把各种类型的报文记录到各种类型的日志中,以方便管理员进行查询、分析和处理。

[0006]

7

CN 102970306 A[0016]

说 明 书

3/10页

上述方法中,步骤C预处理模块检测数据包的攻击行为包括以下步骤:C1. 预处理模块按照关键字名称组织成预处理关键字链表并指定初始化函数,然后根据系统配置的预处理插件关键字,将这些插件的处理函数组织成一条预处理函数链表,将所需的处理函数加入到该链表中;

C2. 预处理模块接收到数据包时,沿着预处理函数链表对应的功能执行函数对数据包进行处理,如果确定数据包具备攻击特征或者攻击可能后,则生成相应记录并将检测结果发送并存储在响应模块,发布警报和攻击的相关信息。[0017] 上述方法中,步骤D检测模块将捕获的数据报文与内存中的规则树进行匹配,如果发现存在一条规则匹配这个报文,就表示检测到一个攻击,然后按照规则指定的行为进行处理,如发送告警信息等,如果搜索完规则树都没有找到匹配的规则,就表示报文是正常的报文。

[0018] 上述方法中,步骤E响应模块把检测IPv6数据包时产生的日志和报警以database、syslog、tcpdump、xml、csv等各种格式进行记录,以方便管理员进行查询、分析和处理。检测结果的记录包括:数据包的IPv6源地址、IPv6目的地址、版本、业务流类别、流标签、载荷长度、下一包头、跳数限制和数据包载荷。响应输出插件在解析规则文件时初始化,初始化时解析输出处理的配置参数,并设定相关的数据结构同时指定对应输出插件的处理函数。在检测模块检测到攻击时就调用响应输出函数来将报警信息写入输出文件中,以便管理员通过控制台处理报警数据包。

[0019] 本发明对于那些无法单纯从报文进行特征匹配的攻击行为采用主动探询的检测方法,以提高入侵检测系统的检测率。即监控主机主动发出检测报文,通过捕获对检测报文的应答情况来判断攻击行为是否发生。远比仅从模式匹配的方法检测攻击,更为精准有效。[0020] 对IPv6网络进行扫描是网络攻击中最常见的一种攻击方式,由于该类攻击数据报的特征不明显,无法用规则完全表达攻击特征,因此采用预处理模块对该类攻击进行检测。根据本发明,提供了一种对IPv6网络扫描攻击进行检测和预警的方法,具体如下:

H1. 预处理模块对接收到的数据包进行类型判断,如果为ICMPv6回送请求报文,则转入步骤H2,如果不是,则转入步骤H3;

H2. 以该数据包的IPv6源地址作为关键字搜索可疑主机链表,如果该数据包已被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据报)存储至可疑主机链表;

H3. 预处理模块继续对接收到的数据包进行类型判断,如果数据包为带有逐跳选项报头的ICMPv6回送请求报文,且逐跳选项报头中包含无法识别的选项时,则转入步骤H4,如果不是,则转入步骤H5;

H4. 以该数据包的IPv6源地址作为关键字搜索可疑主机链表,如果该数据包已被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据报)存储至可疑主机链表;

H5. 如果预处理模块捕获的数据报是一个ICMPv6请求应答数据报,或者是一个ICMPv6参数错误数据报,并且报文的目的地址是可疑主机链表中的地址,则说明此数据报是一个受害主机曝光自己存在的数据报,其源地址代表的主机就是受害主机,将受害主机的IP地址及数据报记录在受害主机链表中,且将其与相应的可疑主机进行关联。如果数据

8

CN 102970306 A

说 明 书

4/10页

报的目的地址没有在可疑主机链表中,说明此数据包是一个正常的数据报,无需对该数据报进行记录;

H6. 定时检查可疑主机链表,如果此主机依次发送过ICMPv6回送请求报文和带有逐跳选项报头的ICMPv6回送请求报文,且逐跳选项报头中包含无法识别的选项,则对该可疑主机进行告警。

[0021] H7. 对与可疑主机所关联的受害主机链表进行遍历,预警每个受害主机的IPv6信息。如果检查可疑主机链表未发现符合条件的主机,则直接进入睡眠状态,再重新进行可疑主机的检查。

[0022] H8. 如果系统时间与攻击主机发送最后一个攻击包之间的时间差超过设定的攻击时间差,则清空可疑主机链表和受害主机链表。[0023] 中间人攻击介入网络通信双方,以达到窃取、篡改通信报文的目的,危害较大。由于中间人攻击的实施过程比较复杂,无法单纯以报文特征匹配的方式探测攻击行为,因此需要借助探测主机主动发送检测报文的方式,捕获对检测报文的应答情况来判断是否发生攻击行为。本发明在数据采集时完成中间人攻击的检测,中间人攻击的检测方法流程具体包括如下步骤:

I1. 在数据采集模块中,如果捕获到的路由器公告报文RA,则判断该报文是否为请求类型的路由器公告报文,如果是,转入步骤I2,如果不是,转入步骤I6;

I2. 用链表结构记录该请求类型的路由器公告报文中的路由器IPv6地址和MAC地址,标记为可疑的请求类型路由器信息链表;

I3. 发送路由器请求信息,获取本地网络中活跃的路由器信息,即为路由器IPv6地址和MAC地址,如果收到广播形式的路由器公告报文,则对此类的路由器公告报文进行缓存,记录至广播的非请求类型路由器信息链表;

I4. 比较可疑的请求类型路由器信息链表和广播的非请求类型路由器链表中的IP-MAC数据对,如果发现两个链表中的数据有IPv6地址相同但是MAC地址不一致的情况,则说明发生了路由器欺骗攻击行为,生成相应记录并把检测结果发送至响应模块,如果两者一致,说明为正常的数据包,转入步骤I5;

I5. 清除之前存储的可疑请求类型路由器信息链表和广播的非请求类型路由器信息链表中的信息;

I6. 根据这个非请求的路由器公告报文,更新路由器信息,即路由器IPv6地址和MAC地址;

I7. 在数据采集模块中,如果捕获到的是路由器请求报文RS,则判断报文是否为有源IPv6地址的路由器请求报文,如果是则转入步骤I8,如果不是,则转入步骤I10;

I8. 根据路由器请求报文中声称的IPv6地址和MAC地址,记录至可疑的主机信息链表;

I9. 发送邻居请求报文NS来验证声称的IPv6地址和MAC地址的主机的可达性;I10. 在数据采集模块中,如果捕获到的是邻居公告报文,则判断此报文是否是单播的邻居公告报文,如果是,则转入步骤I11,如果不是,则结束此次检测;

I11. 如果收到的单播邻居公告报文中的目的地址与可疑主机信息链表中的IPv6地址一致,则记录IPv6地址和MAC地址至邻居信息缓存链表,如果两者地址不一致,则不缓存

9

CN 102970306 A

说 明 书

5/10页

IPv6地址和MAC地址,直接丢弃;

I12. 一一比较可疑主机信息链表和邻居信息缓存链表中的记录,如果发现两个链表中的记录有IPv6地址相同但MAC地址不一致的情况,则说明发生了邻居欺骗攻击行为,生成相应记录并把检测结果发送至响应模块;

I13. 清除之前存储的可疑主机信息链表和邻居信息缓存链表中的信息;I14. 如果路由器公告欺骗行为和邻居欺骗攻击行为同时发生,说明发生了中间人攻击,生成相应记录并把检测结果发送至响应模块,进行告警。[0024] 本发明在数据采集时完成重定向攻击的检测,其检测方法流程具体包括如下步骤:

J1. 数据采集模块对接收到的数据包进行类型判断,如果为合法的重定向报文,则转入步骤J2,如果不是,则继续捕获下一个数据包;

J2. 从重定向报文获取声称的默认路由器信息,即路由器的IPv6地址(目标地址)和MAC地址(目标链路层地址),并进行存储;

J3. 发送路由器请求探测报文RS;

J4. 获取路由器请求探测报文RS的回复报文RA,从RA中获取本地网络中默认路由器的IPv6地址和MAC地址,并进行存储;

J5. 比较重定向报文声称的默认路由器IPv6地址和MAC地址与存储的默认路由器IPv6地址和MAC地址,如果发现两者的IPv6地址相同而MAC地址不同,则说明本地网络中存在重定向攻击行为,生成相应记录并将检测结果发送并存储至响应模块;如果两者的IP-MAC相同,说明本地网络没有发生重定向入侵行为。[0025] 采用本发明提供的方法,可以大幅度提高网络中IPv6攻击行为的检测能力和网络安全预警能力,为用户提供一个良好的网络工作环境。附图说明

[0026]

下面结合附图对本发明进行详细描述:

图1网络拓扑图图2系统结构图

图3详细的总体流程图

图4为本发明对IPv6网络扫描攻击的捕获分析流程图5为本发明对IPv6网络扫描攻击的预警流程图6为本发明对中间人攻击检测的状态变迁示意图图7为本发明对中间人攻击的检测流程图

图8为本发明对重定向攻击的检测流程图

具体实施方式

[0027] 本发明提供了一个对IPv6攻击行为进行检测的系统和方法,本发明的一个关键点是利用IPv6协议自身的特性,尤其是邻居发现协议的特性来完成攻击行为的探测,提高系统的检测率。

[0028] 为了更好地描述本发明,先简单介绍一下邻居发现协议以及邻居发现过程。

10

CN 102970306 A[0029]

说 明 书

6/10页

邻居发现(Neighbor Discovery)是一种新的协议,简称ND协议。节点(主机和路

由器)使用它来确定相同网络和附加链路上邻居的链路层地址。ND协议组合了IPv4协议ARP、ICMP路由器发现和ICMP重定向等。ND协议用来查找转发数据报的邻居路由器,跟踪邻居的可达性状态,并检测新的和更改的链路层地址。当邻居失效时,还可以使用邻居发现来快速的确定是否存在可替换的路径。[0030] ND协议定义在RFC 2461,它被用来解决关于相同物理链路上的节点之间的交互问题。RFC 2461定义了所有的ND交互操作,包括:路由器发现、前缀发现、地址自动配置、重复地址检测、邻居不可达性检测、链路层地址解析、下一跳确定以及重定向。

[0031] 邻居发现过程使用五个不同的ICMPv6数据报类型来确定和维护IPv6路由器之间的邻居关系,分别为路由器请求、路由器公告、邻居请求、邻居发现和重定向。所有这些消息都承载在ICMPv6消息中。[0032] 路由器请求数据报(Router Solicitation,RS):在启用IPv6接口来请求来自邻接路由器的中间路由器公告时,RS将被发送到所有路由器组播地址。RS使得邻接IPv6路由器可以用一个路由器公告消息来响应,使得主机能够立即自动配置接口。[0033] 路由器公告数据报(Router Advertisement,RA):RA被定期发送到所有节点组播地址来通告它们的存在,或者被发送来响应路由器请求消息。这种公告通常包含本地链路节点用来自动配置其IPv6地址的前缀、每个公告前缀的生存期消息、表示无状态或有状态自动配置的标志、发送该公告的路由器是否应该被用作默认路由器,以及一些其它主机信息(比如跳数限制和MTU等)。邻居请求数据报(Neighbor Solicitation,NS): NS将被发送到请求节点的组播地址,并确定相同链路上邻居的链路层地址。邻居请求还可以被发送到邻居的单播地址,用来验证邻居的可达性,或者用于重复地址检测,NS消息使得邻接IPv6节点可以用一个邻居公告消息来响应。

[0035] 邻居公告数据报(Neighbor Advertisement,NA):NA被发送来响应邻居请求消息。邻居公告消息和发送它的IPv6接口源地址一起被发送。邻居请求的发送者收到邻居公告之后,两个节点皆可以通信。节点还可以发送未请求的邻居公告来宣告链路层地址的更改。[0036] 重定向数据报(Redirect):用来通知主机对于指定的目的地有一个更好的第一跳地址。主机可以重定向到一个更好的第一跳路由器,也可能被重定向报文告知它的目的地就是它的邻居。

[0037] 下面结合附图来详细描述本发明所述系统。

[0038] 图1为根据本发明的一个具体实施IPv6网络的入侵检测系统的网络拓扑示意图。图中所示网络包括因特网、路由器、防火墙、两套入侵检测系统、交换机和内网。在本实施例子中,为了检测来自内部和外部的攻击,无须猜测是否有攻击渗透过防火墙,帮助系统管理员检测到由于设置有问题而无法通过防火墙的内部系统,将入侵检测系统放置在防火墙的内外。

[0039] 如图2所示,本发明的一种IPv6网络环境下的入侵检测系统包括:

初始化模块解析命令行参数和配置文件,初始化预处理插件、处理插件和输出插件,解析规则文件并在内存中将其组织成规则树。

[0034] [0040]

数据采集模块采用Libpcap循环捕获原始以太网数据包,利用BPF数据包过滤机

11

CN 102970306 A

说 明 书

7/10页

制,将捕获的非IPv6数据包丢弃,并根据丢弃的包生成相应的记录,调用输出插件输出告警信息,

如果在采集过程中发现了入侵行为,则生成相应记录并将检测结果发送并存储在响应模块。

[0041] 预处理模块对解析后的数据包进行预处理,包括数据分片重组、对TCP协议进行流重组、对某些协议(例如HTTP)传输的特殊编码数据进行代码转换等。同时,借助于预处理模块可以实现对无法用规则描述的这一类攻击行为进行检测,提升系统的攻击识别能力。[0042] 检测模块将捕获的数据包根据协议字段、数据包大小和TCP/UDP等选项与内存中的规则树进行匹配,如果存在规则匹配这个数据包,就表示检测到一个攻击,然后按照规则指定的行为进行响应,如果搜索完规则树都没有找到匹配的规则,就表示该数据包是正常的报文,不做任何处理。

[0043] 响应模块实现在检测到攻击后按照输出插件执行各种输出和响应,以方便管理员进行查询、分析和处理。

[0044] 上述入侵检测系统如图3所示包括如下步骤:

3-1. 系统启动时,首先对全局变量进行初始化,然后解析命令行参数。如果命令行没有提供足够的变量,则获取默认的参数。如果没有提供足够的命令行参数而且无法获得默认配置参数,则显示简单的使用说明,然后退出。3-2. 读入配置文件,打开网络接口设备,确定链路类型。[0046] 3-3. 初始化插件,包括预处理插件、检测插件和输出插件以及Tag等的初始化。[0047] 3-4. 读取规则文件,依次读取每一条规则对其进行解析,在内存中对规则进行组织,建立规则语法树。所有规则按照规则头排成主链,然后根据规则选项把规则插入到这个链中。每个选项节点对应一条规则。[0048] 3-5. 设置输出函数。如果命令行和配置文件指定了输出,就把相应的输出插件放入输出列表中;如果在命令行和配置文件中都没有指定输出,则使用默认的输出插件。[0049] 3-6. 数据采集模块采用Libpcap循环捕获原始以太网数据包,检测入侵行为。[0050] 为了完成规则匹配、检测入侵的工作,步骤3-6需要按照包括如下步骤进行:

3-6(1). 数据采集模块采用数据包过滤器判断所捕获的数据包是否为IPv6数据包,如果不是则执行步骤3-6(2),如果是则执行步骤3-6(3);

3-6(2). 将捕获的非IPv6数据包丢弃,并根据丢弃的包生成相应的记录,调用所有输出插件,输出告警信息;

3-6(3). 依次调用所有的预处理器对报文进行处理,如果在处理过程中发现了入侵行为,则生成相应记录并检测结果发送至所有输出插件,输出告警信息;

3-6(4). 将捕获的数据报文与内存中的规则树进行匹配,如果发现存在一条规则匹配这个报文,就表示检测到一个攻击,然后按照规则指定的行为进行处理(如发送警告等);如果搜索完规则树都没有找到匹配的规则,就表示报文是正常的报文,不做任何处理。[0051] IPv6网络扫描、中间人攻击及其重定向攻击是IPv6网络中最常见的几种攻击方式,本发明提供了对这几种攻击的检测分析方法。

[0045] [0052]

IPv6网络扫描通常用于探测IPv6局域网内部存在的主机。该攻击会发送一个带有无法识别的选项报头的ICMPv6回送请求报文,目的主机发现报文中包含不能识别的选

12

CN 102970306 A

说 明 书

8/10页

项类型时将向发送方发送一个ICMPv6参数问题报文以作回应,攻击者捕获这些ICMPv6 参数问题报文,即可获取所有当前在线主机的信息。由于该攻击数据报的特征不明显,无法用规则完全表达攻击特征,需要采用预处理插件单独对该类攻击进行检测。对IPv6扫描攻击的捕获分析流程如图4所示,具体包括如下步骤:

4-1. 预处理模块当捕获到一个数据包P时,首先判断该数据包P是否为ICMPv6回送请求报文,如果是则转入步骤4-2,如果不是,则转入步骤4-3;

4-2. 以该数据包的IPv6源地址作为关键字搜索可疑主机链表,如果该数据包已被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据包P)存储至可疑主机链表;

4-3. 预处理模块继续对接收的数据包进行类型判断,如果数据包为带有逐跳选项报头的ICMPv6回送请求报文,且逐跳选项报头中包含无法识别的选项时,则转入步骤4-4, 如果不是,则转入步骤4-5;

4-4. 以该数据包的IPv6源地址作为关键字搜索可以主机链表,如果该数据包已被记录,则对该记录进行标志位的修改,否则生成一个新的记录(包含IPv6地址及其数据包P)存储至可疑主机链表;

4-5. 预处理模块继续对接收的数据包进行类型判断,如果数据包不是ICMPv6请求应答数据包,则转入步骤4-6,如果是,则转入步骤4-7;

4-6. 预处理模块继续对接收的数据包进行类型判断,如果数据包是ICMPv6参数问题报文,则转入步骤4-7,如果不是,则将数据包传送至检测模块进行后续处理;

4-7. 获取数据包的源地址和目的地址,并检查报文的目的地址是否是可疑主机链表中的地址,如果是则表示该数据包是一个受害主机曝光自己存在的数据包,其源地址代表的主机是受害主机,将受害主机的IP地址及数据报记录在受害主机链表中。如果数据包的目的地址没有在可疑主机链表中,说明此数据包是一个正常的数据包,无需对该数据包进行记录。

[0053] 对IPv6网络扫描攻击的预警流程如图5所示,具体包括如下步骤:

5-1. 定时检查可疑主机链表,当发现一个可疑主机后,对其进行状态检查;5-2. 如果此主机发送过两种攻击报文:ICMPv6回送请求报文和带有错误选项的逐跳选项报头的回送请求报文,且此时与可疑主机发送最后一个攻击包之间的时间差超过预定的时间值,则生成相应记录并将检测结果发送并存储在响应模块,发布警告和攻击的相关信息,如果检查未发现符合条件的可疑主机,转入步骤5-4;

5-3. 对与可疑主机相关联的受害主机链表进行遍历,预警每个受害主机的IPv6地址和数据包相关信息,如果遍历完毕,转入步骤5-5;

5-4. 直接进入睡眠状态,再重新进行可疑主机的检查;

5-5. 如果系统时间与攻击主机发送最后一个攻击包之间的时间差超过预定的时间差,则清空可疑主机链表和受害主机链表,直接进入睡眠状态,否则系统时间与攻击主机发送最后一个攻击包之间的时间差未超过时间值,则重新检查可疑主机的状态。中间人攻击通常发送特殊构造的IPv6邻居发现报文,实施路由器欺骗行为和邻居欺骗行为,攻击者伪造身份,介入网络通信双方,窃取篡改通信报文,是一种危害极大的攻击方式。由于中间人攻击的实施过程比较复杂,无法单纯以报文特征匹配的方式探测攻

[0054]

13

CN 102970306 A

说 明 书

9/10页

击行为,因此需要借助探测主机主动发送检测报文的方式,捕获对检测报文的应答情况来判断是否发生攻击行为。图6为中间人攻击的状态变迁示意图,如果同时发生路由器欺骗行为和邻居欺骗攻击行为,则说明发生了中间人攻击。本发明在数据采集时完成中间人攻击的检测,其检测流程如图7所示,包含如下步骤:

7-1. 在数据采集模块中判断数据包的类型,如果捕获到路由器公告报文RA,则判断该报文是否为请求类型的路由器公告报文。如果是,则转入步骤6-2,如果不是,则转入步骤6-6;

7-2. 用链表结构记录该请求类型的路由器公告报文中的路由器IPv6地址和MAC地址,标记为可疑的请求类型路由器信息链表;

7-3. 发送路由器请求探测报文RS,获取本地网络中活跃的路由器信息,即为路由器IPv6地址和MAC地址。如果收到广播形式的路由器公告报文,则对此类的路由器公告报文进行缓存,记录至广播的非请求类型路由器信息链表;

7-4. 比较可疑的请求类型路由器信息链表和广播的非请求类型路由器链表中的IP-MAC数据对,如果发现两个链表中的数据有IPv6地址相同但MAC地址不一致的情况,则说明发生了路由器欺骗攻击行为,生成相应记录并把检测结果发送至响应模块,如果两者一致,说明为正常的数据包,转入步骤6-5;

7-5. 清除之前存储的可疑请求类型路由器信息链表和广播的非请求类型路由器信息链表中的信息;

7-6. 根据这个非请求的路由器公告报文,更新路由器信息(路由器IPv6地址和MAC地址)至非请求类型路由器链表;

7-7. 在数据采集模块中判断数据包的类型,如果捕获到的是路由器请求报文RS,则判断该报文是否为有源IPv6地址的路由器请求报文,如果是,则转入步骤6-8,如果不是,则转入步骤6-10;

7-8. 根据路由器请求报文RS中声称的IPv6地址和MAC地址,记录至可疑的主机信息链表;

7-9. 发送邻居请求报文NS来验证声称的IPv6地址和MAC地址的主机的可达性;7-10. 在数据采集模块中判断数据包的类型,如果捕获到的是邻居公告报文NA,则判断此报文是否是单播的邻居公告报文NA,如果是,则转入步骤6-11,如果不是,则结束此次检测;

7-11. 如果收到的单播邻居公告报文中的目的地址与可疑主机信息链表中的IPv6地址一致,则记录IPv6地址和MAC地址至邻居信息缓存链表,如果两者地址不一致,则不缓存IPv6地址和MAC地址,直接丢弃;

7-12. 逐一比较可疑主机信息链表和邻居信息缓存链表中的记录,如果发现两个链表中的记录有IPv6地址相同但MAC地址不一致的情况,则说明发生了邻居欺骗攻击行为,生成相应记录并把检测结果发送至响应模块;

7-13. 清除之前存储的可疑主机信息链表和邻居信息缓存链表中的信息;7-14. 如果路由器欺骗行为和邻居欺骗攻击行为同时发生,说明发生了中间人攻击,生成相应记录并把检测结果发送至响应模块,进行告警。

[0055]

路由重定向一般是由路由器发起的,用来指示主机选择更优的路径。本发明在数

14

CN 102970306 A

说 明 书

10/10页

据采集时完成重定向攻击的检测,对重定向攻击的检测流程如图8所示,包括如下步骤:

8-1. 在数据采集模块对接收到的数据包进行类型判断,如果为合法的重定向报文,则转入步骤7-2,如果不是,则继续捕获数据包;

8-2. 获取重定向报文中宣称的默认路由器的IPv6地址(即目标地址)和MAC地址(即目标链接层地址),并进行存储;8-3. 发送路由器请求探测报文RS;

8-4. 获取路由器请求探测报文RS的回复报文RA,从RA中获取本地网络中默认路由器的IPv6地址和MAC地址,并进行存储;

8-5. 比较重定向报文中声称的默认路由器IPv6地址和MAC地址与存储的默认路由器IPv6地址和MAC地址,如果发现两者的IPv6地址相同而MAC地址不同,则说明本地网络中存在重定向攻击行为,生成相应记录并将检测结果发送并存储在响应模块,如果两者相同,则说明此数据包为正常的数据包,继续捕获下一个数据包。[0056] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

15

CN 102970306 A

说 明 书 附 图

1/7页

图1

16

CN 102970306 A

说 明 书 附 图

2/7页

图2

17

CN 102970306 A

说 明 书 附 图

3/7页

图3

18

CN 102970306 A

说 明 书 附 图

4/7页

4

19

图CN 102970306 A

说 明 书 附 图

5/7页

图5

20

CN 102970306 A

说 明 书 附 图

6/7页

图6

图7

21

CN 102970306 A

说 明 书 附 图

7/7页

图8

22

因篇幅问题不能全部显示,请点此查看更多更全内容

Top