入侵检测技术论文

2020-03-02 16:03:07 来源:范文大全收藏下载本文

目录

第一章 绪论

1.1 入侵检测技术的背景 1.2 程序设计的目的 第二章 入侵检测系统 2.1 网络入侵概述

2.2 网络存在的安全隐患

2.3 网络入侵与攻击的常用手段 2.4 入侵检测技术

2.4.1 误用入侵检测技术 2.4.2 异常入侵检测技术

第三章 协议分析 3.1 协议分析简介 3.2 协议分析的优势

第四章 PANIDS系统的设计及实现 4.1 PANIDS系统总体结构设计

4.2 系统基本信息读取模块的设计及实现 4.3 网络数据包捕获模块的设计及实现 4.4 基于协议分析的入侵检测模块的设计及实现 4.4.1 数据包的分解 4.4.2 入侵检测的实现 4.5 实验结果及结论

第五章 总结与参考文献

摘要

网络技术高速发展的今天,人们越来越依赖于网络进行信息的处理。因此,网络安全就显得相当重要,随之产生的各种网络安全技术也得到了不断地发展。防火墙、加密等技术,总的来说均属于静态的防御技术。如果单纯依靠这些技术,仍然难以保证网络的安全性。入侵检测技术是一种主动的防御技术,它不仅能检测未经授权的对象入侵,而且也能监视授权对象对系统资源的非法使用。传统的入侵检测系统一般都采用模式匹配技术,但由于技术本身的特点,使其具有计算量大、检测效率低等缺点,而基于协议分析的检测技术较好的解决了这些问题,其运用协议的规则性及整个会话过程的上下文相关性,不仅提高了入侵检测系统的速度,而且减少了漏报和误报率。本文提出了一种基于协议分析的网络入侵检测系统PANIDS的模型,在该模型中通过Winpcap捕获数据包,并对数据包进行协议分析,判断其是否符合某种入侵模式,从而达到入侵检测的目的。

关键词: 入侵检测,协议分析, PANIDS

第一章 绪论

1.1 入侵检测技术的背景

随着计算机网络的飞速发展,网络通信已经渗透到社会经济、文化和科学的各个领域;对人类社会的进步和发展起着举足轻重的作用,它正影响和改变着人们工作、学习和生活的方式。另外,Internet的发展和应用水平也已经成为衡量一个国家政治、经济、军事、技术实力的标志;发展网络技术是国民经济现代化建设不可缺少的必要条件。网络使得信息的获取、传递、存储、处理和利用变得更加有效、迅速,网络带给人们的便利比比皆是。然而,网络在给人们的学习、生活和工作带来巨大便利的同时也带来了各种安全问题。网络黑客可以轻松的取走你的机密文件,窃取你的银行存款,破坏你的企业帐目,公布你的隐私信函,篡改、干扰和毁坏你的数据库,甚至直接破坏你的磁盘或计算机,使你的网络瘫痪或者崩溃。因此,研究各种切实有效的安全技术来保障计算机系统和网络系统的安全,已经成为刻不容缓的课题。伴随着网络的发展,各种网络安全技术也随之发展起来。常用的网络安全技术有:数据加密、虚拟专用网络(VPN,Virtual Private Network)、防火墙、杀毒软件、数字签名和身份认证等技术。这些传统的网络安全技术,对保护网络的安全起到非常重要的作用,然而它们也存在不少缺陷。例如,防火墙技术虽然为网络服务提供了较好的身份认证和访问控制,但是它不能防止来自防火墙内部的攻击、不能防备最新出现的威胁、不能防止绕过防火墙的攻击,入侵者可以利用脆弱性程序或系统漏洞绕过防火墙的访问控制来进行非法攻击。传统的身份认证技术,很难抵抗脆弱性口令、字典攻击、特洛伊木马、网络窥探器以及电磁辐射等攻击手段。虚拟专用网技术只能保证传输过程中的安全,并不能防御诸如拒绝服务攻击、缓冲区溢出等常见的攻击。另外,这些技术都属于静态安全技术的范畴;静态安全技术的缺点是只能静态和消极地防御入侵,而不能主动检测和跟踪入侵。而入侵检测技术是一种动态安全技术,它主动地收集包括系统审计数据,网络数据包以及用户活动状态等多方面的信息;然后进行安全性分析,从而及时发现各种入侵并产生响应。 1.2 程序设计的目的

在目前的计算机安全状态下,基于防火墙、加密技术等的安全防护固然重要;但是要根本改善系统的安全现状,必须要发展入侵检测技术。它已经成为计算机安全策略中的核心技术之一。Intrusion Detection System(简称IDS)作为一种主动的安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护。从网络安全立体纵深的多层次防御角度出发,入侵检测理应受到高度重视,这从国外入侵检测产品市场的蓬勃发展就可以看出。在国内,随着上网关键部门、关键业务越来越多,迫切需要具有自主版权的入侵检测产品;但目前我国的入侵检测技术还不够成熟,处于发展和跟踪国外技术的阶段,所以对入侵检测系统的研究非常重要。传统的入侵检测系统中一般采用传统的模式匹配技术,将待分析事件与入侵规则相匹配。从网络数据包的包头开始与攻击特征字符串比较。若比较结果不同,则下移一个字节再进行;若比较结果相同,那么就检测到一个可 能 的攻击。这种逐字节匹配方法具有计算负载大及探测不够灵活两个最根本的缺陷。面对近几年不断出现的ATM、千兆以太网、G比特光纤网等高速网络应用,实现实时入侵检测成为一个现实的问题。适应高速网络的环境,改进检测算法以提高运行速度和效率是解决该问题的一个途径。协议分析能够智能地”理解”协议,利用网络协议的高度规则性快速探测攻击的存在,从而大大减少了模式匹配所需的运算。所以说研究基于协议分析的入侵检测技术具有很强的现实意义。

第二章 入侵检测系统

2.1 网络入侵概述

网络在给人们带来便利的同时也引入了很多安全问题。从防卫者的角度来看,网络安全的目标可以归结为以下几个方面 : (1)网络服务的可用性。在需要时,网络信息服务能为授权用户提供实时有效的服务。

(2)网络信息的保密性。网络服务要求能防止敏感信息泄漏,只有授权用户才能获取服务信息。

(3)网络信息的完整性。网络服务必须保证服务者提供的信息内容不能被非授权篡改。完整性是对信息的准确性和可靠性的评价指标。

(4)网络信息的不可抵赖性。用户不能否认消息或文件的来源地,也不能否认接受了信息或文件。

(5)网络运行的可控性。也就是网络管理的可控性,包括网络运行的物理的可控性和逻辑或配置的可控性,能够有效地控制网络用户的行为及信息的传播范围。

2.2 网络存在的安全隐患

网络入侵从根本上来说,主要是因为网络存在很多安全隐患,这样才使得攻击者有机可乘。导致网络不安全的主要因素可以归结为下面几点:

(1)软件的Bug。众所周知,各种操作系统、协议栈、服务器守护进程、各种应用程序等都存在不少漏洞。可以不夸张的说,几乎每个互联网上的软件都或多或少的存在一些安全漏洞。这些漏洞中,最常见的有缓冲区溢出、竞争条件(多个程序同时访问一段数据)等。

(2)系统配置不当。操作系统的默认配置往往照顾用户的友好性,但是容易使用的同时也就意味着容易遭受攻击。这类常见的漏洞有:系统管理员配置不恰当、系统本身存在后门等。

(3)脆弱性口令。大部分人为了输入口令的时候方便简单,多数都使用自己或家人的名字、生日、门牌号、电话号码等作为口令。攻击者可以通过猜测口令或拿到口令文件后,利用字典攻击等手段来轻易破解口令。

(4)信息泄漏。入侵者常用的方法之一就是窃听。在广播式的局域网上,将网卡配置成”混杂”模式,就可以窃听到该局域网的所有数据包。如果在服务器上安装窃听软件就可以拿到远程用户的帐号和口令。

(5)设计的缺陷。最典型的就是TCP/IP协议,在协议设计时并没有考虑到安全因素。虽然现在已经充分意识到了这一点,但是由于TCP/IP协议已经广泛使用,因此暂时还无法被完全代替。另外,虽然操作系统设计的时候考虑了很多安全因素,但是仍然无法避免地存在一些缺陷。例如,广泛使用的Windows操作系统,几乎每隔几个月都要出一定数量的安全补丁,就是因为系统存在很多安全隐患。 2.3 网络入侵与攻击的常用手段

长期以来,黑客攻击技术没有成为系统安全研究的一个重点,一方面是攻击技术很大程度上依赖于个人的经验以及攻击者之间的交流,这种交流通常都是地下的,黑客有他们自己的交流方式和行为准则,这与传统的学术研究领域不相同;另一方面,研究者还没有充分认识到:只有更多地了解攻击技术,才能更好地保护系统的安全。下面简单介绍几种主要的攻击类型。 1.探测攻击

通过扫描允许连接的服务和开放端口,能迅速发现目标主机端口的分配情况以及所提供的各项服务和服务程序的版本号。另外通过扫描还可以探测到系统的漏洞等信息。黑客找到有机可乘的服务或端口后就可以进行攻击了。常见的探测扫描程序有:SATAN、NTScan、X_Scan、Neus等。 2.网络监听

将网卡设置为混杂模式,对已流经某个以太网段的所有数据包进行监听,以获取敏感信息,如包含了”usename”或”paword”等信息的数据包。常见的网络监听工具有:NetRay、Sniffer、Etherfind、Snoop、Tcpdump等。 3.解码类攻击

通过各种方法获取paword文件,然后用口令猜测程序来破译用户帐号和密码。常见的解码工具有:Crack、LophtCrack等。

2.4 入侵检测技术

入侵检测技术可以分为两大类:异常入侵检测技术和误用入侵检测技术。下面分别介绍这两种入侵检测技术。 2.4.1 误用入侵检测技术

误用入侵检测首先对表示特定入侵的行为模式进行编码,建立误用模式库;然后对实际检测过程中得到的审计事件数据进行过滤,检查是否包含入侵特征串。误用检测的缺陷在于只能检测已知的攻击模式。常见的误用入侵检测技术有以下几种:

1.模式匹配

模式匹配是最常用的误用检测技术,特点是原理简单、扩展性好、检测效率高、可以实时检测;但是只能适用于比较简单的攻击方式。它将收集到的信息与已知的网络入侵和系统误用模式串进行比较,从而发现违背安全策略的行为。著名的轻量级开放源代码入侵检测系统Snort就是采用这种技术。 2.专家系统

该技术根据安全专家对可疑行为的分析经验来形成一套推理规则,然后在此基础上建立相应的专家系统来自动对所涉及的入侵行为进行分析。该系统应当能够随着经验的积累而利用其自学习能力进行规则的扩充和修正。专家系统方法存在一些实际问题:处理海量数据时存在效率问题,这是由于专家系统的推理和决策模块通常使用解释型语言来实现,所以执行速度比编译型语言慢;专家系统的性能完全取决于设计者的知识和技能;规则库维护非常艰巨,更改规则时必须考虑到对知识库中其他规则的影响等等。 3.状态迁移法

状态迁移图可用来描述系统所处的状态和状态之间可能的迁移。状态迁移图用于入侵检测时,表示了入侵者从合法状态迁移到最终的危害状态所采取的一系列行动。

在检测未知的脆弱性时,因为状态迁移法强调的是系统处于易受损的状态而不是未知入侵的审计特征,因此这种方法更具有健壮性。而它潜在的一个弱点是太拘泥于预先定义的状态迁移序列。这种模型运行在原始审计数据的抽象层次上,它利用系统状态的观念和事件的转变流;这就有可能提供了一种既能减少误警率又能检测到新的攻击的途径。另外,因为涉及了比较高层次的抽象,有希望把它的知识库移植到不同的机器、网络和应用的入侵检测上。 2.4.2 异常入侵检测技术

异常检测是通过对系统异常行为的检测来发现入侵。异常检测的关键问题在于正常使用模式的建立,以及如何利用该模式对当前系统或用户行为进行比较,从而判断出与正常模式的偏离程度。”模式”(profiles)通常使用一组系统的度量(metrics)来定义。度量,就是指系统或用户行为在特定方面的衡量标准。每个度量都对应于一个门限值。常用的异常检测技术有: 1.统计分析

最早的异常检测系统采用的是统计分析技术。首先,检测器根据用户对象的动作为每个用户建立一个用户特征表,通过比较当前特征与已存储定型的以前特征,从而判断是否异常行为。统计分析的优点:有成熟的概率统计理论支持、维护方便,不需要象误用检测系统那样不断地对规则库进行更新和维护等。统计分析的缺点:大多数统计分析系统是以批处理的方式对审计记录进行分析的,不能提供对入侵行为的实时检测、统计分析不能反映事件在时间顺序上的前后相关性,而不少入侵行为都有明显的前后相关性、门限值的确定非常棘手等。 2.神经网络

这种方法对用户行为具有学习和自适应功能,能够根据实际检测到的信息有效地加以处理并做出入侵可能性的判断。利用神经网络所具有的识别、分类和归纳能力,可以使入侵检测系统适应用户行为特征的可变性。从模式识别的角度来看,入侵检测系统可以使用神经网络来提取用户行为的模式特征,并以此创建用户的行为特征轮廓。总之,把神经网络引入入侵检测系统,能很好地解决用户行为的动态特征以及搜索数据的不完整性、不确定性所造成的难以精确检测的问题。利用神经网络检测入侵的基本思想是用一系列信息单元(命令)训练神经单元,这样在给定一组输入后,就可能预测输出。将神经网络应用于攻击模式的学习,理论上也是可行的。但目前主要应用于系统行为的学习,包括用户以及系统守护程序的行为。与统计理论相比,神经网络更好地表达了变量间的非线性关系,并且能自动学习并更新。

神经网络也存在一些问题:在不少情况下,系统趋向于形成某种不稳定的网络结构,不能从训练数据中学习特定的知识,这种情况目前尚不能完全确定产生的原因;另外,神经网络对判断为异常的事件不会提供任何解释或说明信息,这导致了用户无法确认入侵的责任人,也无法判断究竟是系统哪方面存在的问题导致了攻击者得以成功入侵。

前面介绍了误用检测和异常检测所使用的一些常用检测手段,在近期入侵检测系统的发展过程中,研究人员提出了一些新的入侵检测技术。这些技术不能简单地归类为误用检测或异常检测,它们提供了一种有别于传统入侵检测视角的技术层次。这些新技术有:免疫系统、基因算法、数据挖掘、基于代理的检测等等,他们提供了更具有普遍意义的分析检测技术,或者提出了新的检测系统构架,因此无论是对误用检测还是对异常检测来说都可以得到很好的应用。

第三章 协议分析

3.1 协议分析简介 1.以太帧协议分析

这是对以太网数据帧头进行协议分析,并把分析的结果记入Packet结构中。分析完以太帧头后把数据包传送到下一级协议分析程序中。数据帧的第13和14两个字节组成的字段是协议类型字段。如果用十六进制表示,那么IP协议对应0X0800、ARP对应0X080

6、RARP对应0X0835。 2.ARP和RARP数据包协议分析

这是对ARP或RARP数据进行协议分析,并把协议分析后的数据送入基于ICMP协议规则集的匹配检测模块进行检测,查看是否存在ARP和RARP相关的攻击。由于基于ARP/RARP协议的攻击较少,所以把他们归入ICMP协议规则集中。 3.IP数据包协议分析

这是对IP 数据包进行协议分析,并把协议分析后的数据送入基于IP协议规则集的匹配检测程序中进行检测。IP数据包首部的第一个字节的后面4个比特组成的字段标识了IP首部的长度。该字段的值乘以4就等于IP首部的长度。没有包含IP选项的普通IP首部长度为20,如果大于20就说明此IP数据包包含IP首部。第5和第6个字节是IP数据包的16位标识,每一IP数据包都有唯一的标识。该标识在IP数据包分片重组时中起到至关重要的作用,每个分片就是通过检查此ID号来判别是否属于同一个IP包。第7个字节开始的前3个比特是重要的标志位:第一个标志位(最高位)为保留位(该位必须为0,否则就是一个错误的IP数据包),第二个标志位DF指示该IP数据包能否分片(该位为0则表示该IP数据包可以分片,为1则不能分片),第三个标志位MF指示该数据包是否为最后一个分片(该位为0表示此数据包是最后一个分片,为1表示不是最后一个分片)。从MF标志位开始的后面13个比特位记录了分片的偏移量。分片的IP数据包,各个分片到目的端才会重组;传输过程中每个分片可以独立选路。如何才能重组一个分片了的IP数据包呢?首先,16位分片ID(Fragment ID)标识了每个IP数据包的唯一性。数据包分片后,它的每个分片具有相同的标识。其次,通过每个分片的片偏移量可以确定每个分片的位置,再结合MF可以判断该分片是否为最后一个分片。综合上述信息,就可以顺利的重组一个数据包。 分片重组对网络入侵检测系统具有重要意义。首先,有一些攻击方法利用了操作系统协议栈中分片合并实现上的漏洞,例如著名的TearDrop攻击就是在短时间内发送若干偏移量有重叠的分片,目标机接收到这样的分片的时候就会合并分片,由于其偏移量的重叠而发生内存错误,甚至会导致协议栈的崩溃。这种攻击手段单从一个数据包上是无法辨认的,需要在协议分析中模拟操作系统的分片合并,以发现不合法的分片。另外,Tiny Fragment(极小分片)等攻击方法,将攻击信息隐藏在多个微小分片内来绕过入侵检测系统或防火墙的检测从而达到攻击的目的。对付这种攻击也需要在检测的过程中合并碎片,恢复数据包的真实面目。

IP包头的第10个字节开始的后面八个比特位表示了协议的类型:其中1表示ICMP协议,2表示IGMP协议,6表示TCP协议,17表示UDP协议。(这些数字是十进制的)。对IP数据包检测完毕后,如果检测到攻击就记录该数据包,然后重新开始检测一个新的原始数据包。如果没有检测到攻击,则在判断上层协议类型之后就把数据包分流到TCP、UDP等协议分析程序中进行进一步协议分析。 4.TCP数据包协议分析

这是对TCP数据包进行协议分析,并把协议分析后的数据送入基于TCP协议规则集的匹配检测程序中进行检测。首先读入TCP数据包,对TCP包头进行协议分析;并检查是否有TCP选项,如果有的话就对TCP选项进行协议分析。然后,判断该TCP数据包是否发生分段,如果发生了分段就进行TCP重组。再把重组后的数据包送入基于TCP协议规则集的匹配检测程序进行检测。如果检测到攻击就记录下该攻击数据包,以备攻击取证等使用。记录数据包后又返回,重新读取一个新的数据包。如果没有检测到攻击,就把该数据包送入下一级协议分析模块中,作进一步的协议分析。

5.ICMP数据包协议分析

这是对ICMP数据包进行协议分析,并把协议分析后的数据送入基于ICMP协议规则集的匹配检测程序中进行检测。ICMP报文有很多类型,根据报文中的类型字段和代码字段就可以区分每一种ICMP报文类型。 6.UDP协议分析

这是对UDP数据包进行协议分析,并把协议分析后的数据送入基于UDP协议规则集的匹配检测程序中进行检测。如果检测到攻击就记录该数据包,然后返回并读取下一个数据包。如果没有检测到攻击,那么就把数据包送入基于应用层协议规则集的检测模块进行进一步的检测分析。 应用层协议很复杂,这里不进行详细讨论。

3.2 协议分析的优势 (1)提高性能:当系统提升协议栈来解析每一层时,它用已获得的知识来消除在数据包结构中不可能出现的攻击。比如4层协议是TCP,那就不用再搜索其他第四层协议如UDP上形成的攻击。如果数据包最高层是简单网络管理协议SNMP(Simple Network Management Protocol),那就不用再寻找Telnet或HTTP攻击。这样检测的范围明显缩小,而且更具有针对性;从而使得IDS系统性能得到明显改善。

(2)能够探测碎片攻击等基于协议漏洞的攻击:在基于协议分析的IDS中,各种协议都被解析。如果出现IP分片,数据包将首先被重装;然后再对整个数据包进行详细分析来检测隐藏在碎片中的潜在攻击行为。这是采用传统模式匹配技术的NIDS所无法做到的。 (3)降低误报和漏报率:协议分析能减少传统模式匹配NIDS系统中常见的误报和漏报现象。在基于协议分析的NIDS系统中误报率会明显减少,因为它们知道和每个协议有关的潜在攻击的确切位置以及该位置每个字节的真正含义。例如,针对基于协议分析的IDS不但能识别简单的路径欺骗:例如把CGI攻击”/cgi-bin/phf”变为”/cgi-bin/./phf”或”/cgi-bin\\phf”;而且也能识别复杂的HEX编码欺骗:例如”/winnt/system32/cmd.exe”,编码后变为”/winnt/system32/%2563md.exe”, 通过协议分析%25 解码后为‘%’,%63解码后为‘c’,这样就解析出了攻击串。又如针对Unicode(UTF-8)的编码欺骗(与ASCII字符相关的HEX编码一直到%7f,Unicode编码值要高于它),攻击串编码后得到”/winnt/system32%c0%afcmd.exe”,通过解码可知%c0%af在Unicode中对应/,所以解码后就能顺利还原出攻击串。 第四章 PANIDS系统的设计及实现

4.1 PANIDS系统总体结构设计

PANIDS系统 主要由系统基本信息读取模块、网络数据包捕获模块、基于协议分析的入侵检测模块、响应模块和控制管理中心等几部分组成。 4.2 系统基本信息读取模块的设计及实现

为了更好的显示出本机的特性,在此PANIDS系统中特别增加系统基本信息读取模块。通过此模块能显示出主机名和本机的IP地址和所使用的Winsock的版本

在此模块中主要用到函数gethostname()和gethostbyname()。gethostname()函数作用是获取本地主机的主机名,其定义如下:

int PASCAL FAR gethostname(char FAR * name, int namelen); name:用于指向所获取的主机名的缓冲区的指针。 Namelen:缓冲区的大小,以字节为单位。

gethostbyname()在此模块中是一个主要函数,该函数可以从主机名数据库中得到对应的”主机”。 其定义如下:

#include struct hostent FAR *PASCAL FAR gethostbyname(const char FAR * addr) name:指向主机名的指针。

gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。如果没有错误发生,gethostbyname()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。hostent结构的数据结构如下: struct hostent { char *h_name; //地址的正式名称

char **h_aliases;//空字节-地址的预备名称的指针 int h_addrtype;//地址类型,通常是AF_INET int h_length;//地址的比特长度

char **h_addr_list;//零字节-主机网络地址指针,网络字节顺序 }; 返回的指针指向一个由Windows Sockets实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。

gethostbyname()实现没有必要识别传送给它的IP地址串。对于这样的请求,应该把IP地址串当作一个未知主机名同样处理。如果应用程序有IP地址串需要处理,它应该使用inet_addr()函数把地址串转换为IP地址,然后调用gethostbyaddr()来得到hostent结构。 4.3 网络数据包捕获模块的设计及实现 网络数据包捕获的方法有很多,比如既可以利用原始套接字来实现,也可以通过Libpcap、Jpcap和WinPcap 提供的接口函数来实现。Libpcap、Jpcap和WinPcap是世界各地的网络专家共同努力的结果,为开发者提供了很多高效且与系统无关的网络数据包截获接口函数;所以在性能上一般比采用普通的套接字方法要好。LibPcap是一个优秀跨平台的网络抓包开发工具,JPcap是它的一个Java版本。WinPcap在某种程度上可以说它是LibPcap的一个Windows版本,因为它们的大部分接口函数以及所采用的数据结构都是一样的。另外,WinPcap在某些方面进行了优化,还提供了发送原始数据包和统计网络通信过程中各种信息的功能(LibPcap没有统计功能),方便进行测试;所以采用WinPcap所提供的库函数来截获网络数据包。

Winpcap捕获数据包的实现

1.网络数据包捕获的主要数据结构 (1)PACKET结构

typedef struct _PACKET { HANDLE hEvent; OVERLAPPED OverLapped; PVOID Buffer; //这个buffer就是指向存放数据包的用户缓冲区 UINT Length; //buffer的长度

DWORD ulBytesReceived;//调用PacketReceivePacket()函数所读 //取的字节数,可能包含多个数据包 BOOLEAN bIoComplete; } PACKET, *LPPACKET; 其他未注释的几个成员,都是过时的成员,他们的存在只是为了与原来的兼容。此结构主要用来存放从内核中读取的数据包。 (2)pcap_file_header 结构 struct pcap_file_header{ bpf_u_int32 magic; //一个标识号,标识特定驱动器产生的dump文件 u_short version_major; //WinPcap的主版本号 u_short version_minor; //WinPcap的次版本号

bpf_int32 thiszone; //GMT时间与本地时间的校正值 bpf_u_int32 sigfigs; //精确的时间戳

bpf_u_int32 snaplen; //每个数据包需要存放到硬盘上的最大长度 bpf_u_int32 linktype; //链路层的数据类型 };//这个头部共24个字节

把截获的数据包以标准的Windump格式存放到硬盘上时,就是以这个结构 作为文件的开头。 (3)bpf_hdr结构 struct bpf_hdr { struct timeval bh_tstamp; //数据包捕获的时间戳信息 UINT bh_caplen; //数据包被捕获部分的长度 UINT bh_datalen;//数据的原始长度 USHORT bh_hdrlen; //此结构的长度 }; 从内核中读取数据包并存放在用户缓冲区中时,采用此结构来封装所截获的 数据包。其中timeval的结构如下 struct timeval { long tv_sec; //以秒为单位的时间 long tv_usec; //以毫秒为单位的时间 }; (4)dump_bpf_hdr结构 struct dump_bpf_hdr{ struct timeval ts; //数据包捕获的时间戳 UINT caplen; //数据包被捕获部分的长度 UINT len; //数据包的原始长度 }; 把数据包存放到硬盘上或者向网络上发送数据包时,都使用此结构来封装每一个数据包。

2.数据包捕获的具体实现

在了解其数据结构的基础上,下面来分析其是如何具体实现网络数据包捕获的。其前期的主要过程应为:首先应找到设备列表,然后显示适配器列表和选择适配器,最后通过pcap_open_live()函数根据网卡名字将所选的网卡打开,并设置为混杂模式。

用Winpacp捕获数据包时,数据包捕获的程序流程图如图4.3所示,其中pcap_loop()是截包的关键环节,它是一个循环截包函数,分析此函数的源码可知,其内部主要处理过程如图4.4所示。在pcap_loop()的每次循环中,首先通过调用PacketReceivePacket()函数,从内核缓冲区中把一组数据包读取到用户缓冲区。然后,根据bpf_hdr结构提供的该数据包的定位信息,把用户缓冲区的多个数据包逐个的提取出来,并依次送入回调函数进行进一步处理。通过这个过程就实现了网络数据包的捕获。

4.4 基于协议分析的入侵检测模块的设计及实现

此模块是基于协议分析入侵检测系统PANIDS的核心部分,下面我们重点讨论此模块的设计及实现。 4.4.1 数据包的分解 当需要发送数据时,就需要进行封装。封装的过程就是把用户数据用协议来进行封装,首先由应用层协议进行封装,如HTTP协议。而HTTP协议是基于TCP协议的。它就被TCP协议进行封装,http包作为TCP数据段的数据部分。而TCP协议是基于IP协议的,所以TCP段就作为IP协议的数据部分,加上IP协议头,就构成了IP数据报,而IP数据报是基于以太网的,所以这个时候就被封装成了以太网帧,这个时候就可以发送数据了。通过物理介质进行传送。在这里我们所用到的是数据包的分解 。分解的过程与封装的过程恰恰相反,这个时候就需要从一个以太网帧中读出用户数据,就需要一层一层地进行分解,首先是去掉以太网头和以太网尾,在把剩下的部分传递给IP层软件进行分解,去掉IP头,然后把剩下的传递给传输层,例如TCP协议,此时就去掉TCP头,剩下应用层协议部分数据包了,例如HTTP协议,此时HTTP协议软件模块就会进一步分解,把用户数据给分解出来,例如是HTML代码。这样应用软件就可以操作用户数据了,如用浏览器来浏览HTML页面。 其具体的数据包分解如下:

ethernet = (struct sniff_ethernet*)(pkt_data); ip = (struct sniff_ip*)(pkt_data + size_ethernet); tcp = (struct sniff_tcp*)(pkt_data + size_ethernet + size_ip); udp = (struct sniff_udp*)(pkt_data + size_ethernet + size_ip); icmp = (struct sniff_icmp*)(pkt_data + size_ethernet + size_ip); 4.4.2 入侵检测的实现

通过Winpcap捕获数据包,数据包分解完以后就对其进行协议分析,判断分组是否符合某种入侵模式,如果符合,则进行入侵告警。在本系统中实现了对多种常见入侵模式的检测,采用的入侵模式包括ICMP分片、常用端口、IGMP分片、WinNuke攻击、应用层攻击。 1.ICMP分片

ICMP报文是TCP/IP协议中一种控制报文,它的长度一般都比较小,如果出现ICMP报文分片,那么说明一定出现了Ping of Death攻击。

在本系统中ip->ip_p == 0×1,这是表示ip首部的协议类型字段,0×1代表ICMP。

string str1 = inet_ntoa(in_addrIP); string str2 = inet_ntoa(ip->ip_src); 当(ip->ip_off > 1) && str1 != str2时,就表认为是Ping of Death攻击。如果都符合,就报警(调用函数将受到攻击的时间、攻击名称以及攻击的IP地址显示出来)。

2.常用端口

一些攻击特洛伊木马、蠕虫病毒等都会采用一些固定端口进行通信,那么如果在分组分析过程中发现出现了某个端口的出现,则可以认为可能出现了某种攻击,这里为了减少误判,应当设置一个阈值,仅当某个端口的分组出现超过阈值后才进行报警。这就意味着检测到发往某个端口的的分组超过阈值后才认为出现了某种攻击,并进行告警。本系统定义了两种端口扫描,Trojan Horse端口扫描和代理服务器端口扫描。Trojan Horse端口扫描实现如下:首先根据if((tcp->th_flags & TH_SYN)==TH_SYN)判断其是否为TCP SYN报文,若是,并且端口为Trojan Horse的常用扫描端口时,最后判断报文数是否超过阈值TrojanThreshold,如果超过的后,就被认定为Trojan Horse端口扫描,然后报警。对代理服务器端口扫描检测的实现方法和Trojan Horse端口扫描实现方法一样,这里不再论述。

3.IGMP分片

IGMP(Internet Group Meage Protocol)是Internet中多播组管理协议,其长度也一般较小。同上ip->ip_p==0×2也是表示首部的协议类型字段,0×2代表IGMP,本系统实现了对其两种攻击模式的检测。

(1)通过if(ntohs(ip->ip_len)>1499)首先判断其是否为分片的IGMP报文,若是,并且收到的报文数超过设定的阈值IGMPThreshold,则就最终判定其为IGMP DoS攻击,然后报警。

(2)通过if(strcmp(mbf,mbuffer)==0||strcmp(mbf,”0.0.0.0″)==0)判断其是否为某种特定的源地址等于目的地址或者目的地址等于0的报文,若是,并且收到的报文数超过设定的阈值LandThreshold则被判定为land DoS攻击,然后报警。

4.WinNuke攻击 通过if((tcp->th_flags & TH_URG)==TH_URG)判断其是否为TCP URG报文,若是,则根据WinNuke的典型特征是使用TCP中的Ugrent指针,并使用1

35、1

37、1

38、139端口,因此可以利用这两个特征加以判断,同样为了减少误判,应当设置一个阈值。当阈值超过设定的WinNukeThreshold时,就被最终判定为WinNuke攻击,然后报警。 5.应用层攻击

其是分析应用层的数据特征,判断是否存在入侵。在本系统中实现了对一种较为简单的应用层攻击的检测。它也是属于TCP SYN报文中的一种。主要思想是监测报文中是否存在system32关键字,如果存在,则报警。

4.5 实验结果及结论

程序编译成功后,执行可执行文件,此时系统已被启动,然后在”设置”菜单中将网卡设为混杂模式,点击”开始”按钮,本系统开始检测。由实验结果可知,本系统能较好的检测出一些典型攻击,并能在界面上显示出攻击日期/时间、攻击的类型、攻击源的IP地址,达到了预期的效果。

第五章 总结与参考文献

入侵检测是一种积极主动的安全防护技术;它既能检测未经授权的对象入侵系统,又能监视授权对象对系统资源的非法操作。入侵检测与防火墙、身份认证、数据加密、数字签名等安全技术共同构筑了一个多层次的动态安全体系。本文主要对基于网络的入侵检测系统的关键技术进行了研究和探讨。首先较全面、系统地分析了入侵检测技术的历史、现状和发展趋势、了解了黑客常用的攻击手段及其原理。然后,系统地阐述了入侵检测的原理。接着讲述了协议分析和模式匹配技术,最后,针对当前典型的网络入侵,设计并实现了一个基于协议分析的网络入侵检测系统PANIDS,实现了多层次的协议分析,包括基本协议的解析、协议上下文的关联分析以及应用层协议的分析,并取得了较为满意的检测效果。

[1] 戴英侠,连一峰,王航.系统安全与入侵检测[M].北京:清华大学出版社 [2] 聂元铭,丘平.网络信息安全技术[M].北京:科学出版社

[3] 董玉格,金海,赵振.攻击与防护-网络安全与实用防护技术[M].北京:人民 邮电出版社 [4] 戴云,范平志.入侵检测系统研究综述[J].计算机工程与应用 [5] 刘文淘.网络入侵检测系统[M].北京:电子工业出版社,

网络安全与入侵检测技术的应用研究

防火墙与入侵检测技术的联动

无线局域网入侵检测协议分析论文

网络信息理入侵检测技术研究论文

网络安全入侵检测系统设计思路论文

入侵检测系统开发总结报告

现代检测技术论文

现代检测技术论文

网络安全混合型入侵检测系统设计研究论文

基于ACBM改进算法的入侵检测技术研究论文

《入侵检测技术论文.doc》
入侵检测技术论文
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文