入侵检测技术论文.doc
《入侵检测技术论文.doc》由会员分享,可在线阅读,更多相关《入侵检测技术论文.doc(12页珍藏版)》请在冰点文库上搜索。
目录
第一章绪论
1.1入侵检测技术的背景
1.2程序设计的目的
第二章入侵检测系统
2.1网络入侵概述
2.2网络存在的安全隐患
2.3网络入侵与攻击的常用手段
2.4入侵检测技术
2.4.1误用入侵检测技术2.4.2异常入侵检测技术
第三章协议分析3.1协议分析简介
3.2协议分析的优势
第四章PANIDS系统的设计及实现
4.1PANIDS系统总体结构设计
4.2系统基本信息读取模块的设计及实现4.3网络数据包捕获模块的设计及实现4.4基于协议分析的入侵检测模块的设计及实现
4.4.1数据包的分解
4.4.2入侵检测的实现
4.5实验结果及结论
第五章总结与参考文献
摘要
网络技术高速发展的今天,人们越来越依赖于网络进行信息的处理。
因此,网络安全就显得相当重要,随之产生的各种网络安全技术也得到了不断地发展。
防火墙、加密等技术,总的来说均属于静态的防御技术。
如果单纯依靠这些技术,仍然难以保证网络的安全性。
入侵检测技术是一种主动的防御技术,它不仅能检测未经授权的对象入侵,而且也能监视授权对象对系统资源的非法使用。
传统的入侵检测系统一般都采用模式匹配技术,但由于技术本身的特点,使其具有计算量大、检测效率低等缺点,而基于协议分析的检测技术较好的解决了这些问题,其运用协议的规则性及整个会话过程的上下文相关性,不仅提高了入侵检测系统的速度,而且减少了漏报和误报率。
本文提出了一种基于协议分析的网络入侵检测系统PANIDS的模型,在该模型中通过Winpcap捕获数据包,并对数据包进行协议分析,判断其是否符合某种入侵模式,从而达到入侵检测的目的。
关键词:
入侵检测,协议分析,PANIDS
第一章绪论
1.1入侵检测技术的背景
随着计算机网络的飞速发展,网络通信已经渗透到社会经济、文化和科学的各个领域;对人类社会的进步和发展起着举足轻重的作用,它正影响和改变着人们工作、学习和生活的方式。
另外,Internet的发展和应用水平也已经成为衡量一个国家政治、经济、军事、技术实力的标志;发展网络技术是国民经济现代化建设不可缺少的必要条件。
网络使得信息的获取、传递、存储、处理和利用变得更加有效、迅速,网络带给人们的便利比比皆是。
然而,网络在给人们的学习、生活和工作带来巨大便利的同时也带来了各种安全问题。
网络黑客可以轻松的取走你的机密文件,窃取你的银行存款,破坏你的企业帐目,公布你的隐私信函,篡改、干扰和毁坏你的数据库,甚至直接破坏你的磁盘或计算机,使你的网络瘫痪或者崩溃。
因此,研究各种切实有效的安全技术来保障计算机系统和网络系统的安全,已经成为刻不容缓的课题。
伴随着网络的发展,各种网络安全技术也随之发展起来。
常用的网络安全技术有:
数据加密、虚拟专用网络(VPN,VirtualPrivateNetwork)、防火墙、杀毒软件、数字签名和身份认证等技术。
这些传统的网络安全技术,对保护网络的安全起到非常重要的作用,然而它们也存在不少缺陷。
例如,防火墙技术虽然为网络服务提供了较好的身份认证和访问控制,但是它不能防止来自防火墙内部的攻击、不能防备最新出现的威胁、不能防止绕过防火墙的攻击,入侵者可以利用脆弱性程序或系统漏洞绕过防火墙的访问控制来进行非法攻击。
传统的身份认证技术,很难抵抗脆弱性口令、字典攻击、特洛伊木马、网络窥探器以及电磁辐射等攻击手段。
虚拟专用网技术只能保证传输过程中的安全,并不能防御诸如拒绝服务攻击、缓冲区溢出等常见的攻击。
另外,这些技术都属于静态安全技术的范畴;静态安全技术的缺点是只能静态和消极地防御入侵,而不能主动检测和跟踪入侵。
而入侵检测技术是一种动态安全技术,它主动地收集包括系统审计数据,网络数据包以及用户活动状态等多方面的信息;然后进行安全性分析,从而及时发现各种入侵并产生响应。
1.2程序设计的目的
在目前的计算机安全状态下,基于防火墙、加密技术等的安全防护固然重要;但是要根本改善系统的安全现状,必须要发展入侵检测技术。
它已经成为计算机安全策略中的核心技术之一。
IntrusionDetectionSystem(简称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、Nessus等。
2.网络监听
将网卡设置为混杂模式,对已流经某个以太网段的所有数据包进行监听,以获取敏感信息,如包含了”usename”或”password”等信息的数据包。
常见的网络监听工具有:
NetRay、Sniffer、Etherfind、Snoop、Tcpdump等。
3.解码类攻击
通过各种方法获取password文件,然后用口令猜测程序来破译用户帐号和密码。
常见的解码工具有:
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对应0X0806、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(FragmentID)标识了每个IP数据包的唯一性。
数据包分片后,它的每个分片具有相同的标识。
其次,通过每个分片的片偏移量可以确定每个分片的位置,再结合MF可以判断该分片是否为最后一个分片。
综合上述信息,就可以顺利的重组一个数据包。
分片重组对网络入侵检测系统具有重要意义。
首先,有一些攻击方法利用了操作系统协议栈中分片合并实现上的漏洞,例如著名的TearDrop攻击就是在短时间内发送若干偏移量有重叠的分片,目标机接收到这样的分片的时候就会合并分片,由于其偏移量的重叠而发生内存错误,甚至会导致协议栈的崩溃。
这种攻击手段单从一个数据包上是无法辨认的,需要在协议分析中模拟操作系统的分片合并,以发现不合法的分片。
另外,TinyFragment(极小分片)等攻击方法,将攻击信息隐藏在多个微小分片内来绕过入侵检测系统或防火墙的检测从而达到攻击的目的。
对付这种攻击也需要在检测的过程中合并碎片,恢复数据包的真实面目。
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(SimpleNetworkManagementProtocol),那就不用再寻找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.1PANIDS系统总体结构设计
PANIDS系统主要由系统基本信息读取模块、网络数据包捕获模块、基于协议分析的入侵检测模块、响应模块和控制管理中心等几部分组成。
4.2系统基本信息读取模块的设计及实现
为了更好的显示出本机的特性,在此PANIDS系统中特别增加系统基本信息读取模块。
通过此模块能显示出主机名和本机的IP地址和所使用的Winsock的版本
在此模块中主要用到函数gethostname()和gethostbyname()。
gethostname()函数作用是获取本地主机的主机名,其定义如下:
intPASCALFARgethostname(charFAR*name,intnamelen);
name:
用于指向所获取的主机名的缓冲区的指针。
Namelen:
缓冲区的大小,以字节为单位。
gethostbyname()在此模块中是一个主要函数,该函数可以从主机名数据库中得到对应的”主机”。
其定义如下:
#include
structhostentFAR*PASCALFARgethostbyname(constcharFAR*addr)
name:
指向主机名的指针。
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。
结构的声明与gethostaddr()中一致。
如果没有错误发生,gethostbyname()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。
hostent结构的数据结构如下:
structhostent{
char*h_name;//地址的正式名称
char**h_aliases;//空字节-地址的预备名称的指针
inth_addrtype;//地址类型,通常是AF_INET
inth_length;//地址的比特长度
char**h_addr_list;//零字节-主机网络地址指针,网络字节顺序
};
返回的指针指向一个由WindowsSockets实现分配的结构。
应用程序不应该试图修改这个结构或者释放它的任何部分。
此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他WindowsScoketsAPI调用前,把自己所需的信息拷贝下来。
gethostbyname()实现没有必要识别传送给它的I