L2003214047_文程_基于Windows入侵检测系统的研究与设计——检测模块设计_第1页
L2003214047_文程_基于Windows入侵检测系统的研究与设计——检测模块设计_第2页
L2003214047_文程_基于Windows入侵检测系统的研究与设计——检测模块设计_第3页
L2003214047_文程_基于Windows入侵检测系统的研究与设计——检测模块设计_第4页
L2003214047_文程_基于Windows入侵检测系统的研究与设计——检测模块设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号:TP309 U D C:D10621-408-(2007)5965-0密 级:公 开 编 号:2003214047成都信息工程学院学位论文基于Windows入侵检测系统的研究与设计-检测模块设计论文作者姓名:文 程申请学位专业:计算机科学与技术申请学位类别:工学学士指导教师姓名(职称):李文涛(工程师)论文提交日期:2007年06月08日基于windows入侵检测系统的研究与设计-检测模块设计摘 要当今是信息时代,互联网正在给全球带来翻天覆地的变化。随着Internet在全球的飞速发展,网络技术的日益普及,网络安全问题也显得越来越突出。计算机网络安全是一个国际化的问题,每年全球因计算机网络的安全系统被破坏而造成的经济损失高达数百亿美元。传统的防火墙技术固然重要,但是,发展网络入侵检测及预警技术也同样重要,它是防火墙的合理补充,帮助系统对付网络攻击,从而提供对内部攻击、外部攻击和误操作的实时保护。本文首先介绍入侵检测系统的原理,并在此基础上利用Winpcap开发包,在Windows操作系统下实现了基于数据包分析的网络入侵检测系统的检测模块。该模块完成了对共享网段中的数据包的捕获和分析等功能。它是整个网络入侵检测系统的重要组成部分,是响应模块设计的基础,为响应模块提供需要的数据。关键词: 入侵检测系统;数据包捕获;数据包分析The Research and Design of Intrusion Detection System Based on WindowsDesign of Detective ModuleAbstractNowadays, it is information age, and Internet brings the great change to the whole world. With Internet development at full speed, in the global, the popularization day by day of the network technology, the network security question becomes more and more outstanding too.The security of computer network is a internationalize problem, the whole world lose up to tens of billion dollars every year caused by that the security system of the computer network is destroyed. Traditional fire wall technology is no doubt important, however, it is also important to develop the network intrusion detection and early warning technology. It is the rational supplement of the fire wall , and is helpful to deal with network attacks for system, thus offer protect to the attacks from inside, the attacks from outside and operations by mistake in real time.At first, the paper introduces the principle of intrusion detection system (IDS), and then gives the implementation of a network intrusion detective module based on packet of Winpcap of Windows. The module has the function of capture and analysis on data Packets in Share Network Segment and so on. It is an important part of the whole network intrusion detection system, which is the base of response module and is designed in order to supply the necessary data to the responsible module.Key words: Intrusion detection system; Data packet capture; Data packet analysis目 录论文总页数:24页1引 言11.1课题背景及意义11.1.1 网络安全面临的威胁11.1.2 网络安全隐患的来源21.1.3 网络安全技术21.2 本文研究内容32. 入侵检测基础42.1 入侵检测的定义42.2 入侵检测与P2DR模型52.3 入侵检测的原理52.4 入侵检测的分类72.5 入侵检测的发展趋势83. 基于Windows入侵检测系统的设计93.1概述93.2系统总体结构93.3开发环境104. 检测模块的设计与实现104.1设计思想104.2 Winpcap软件开发包简介114.3 BPF过滤机制简介114.4网络数据包捕获模块的实现124.4.1 网络数据包捕获机制124.4.2 数据包捕获的具体实现124.5 网络数据包分析模块的实现164.6 系统集成185. 系统测试与分析195.1 测试目的195.2 测试结果19结 论21参考文献21致 谢22声 明241引 言1.1课题背景及意义当今网络技术的迅速发展,网络成为人们生活的重要组成部分,与此同时,黑客频频入侵网络,网络安全问题成为人们关注的焦点。传统安全方法是采用尽可能多地禁止策略进行防御,例如各种杀毒软件、防火墙、身份认证、访问控制等,这些对防止非法入侵都起到了一定的作用,从系统安全管理的角度来说,仅有防御是不够好的,还应采取主动策略。入侵检测技术是动态安全技术的最核心技术之一。传统的操作系统加固技术和防火墙隔离技术等都是静态安全防御技术,对网络环境下日新月异的攻击手段缺乏主动的反应。 入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集信息、分析信息,查看是否有违反安全策略的行为和遭到袭击的迹象。入侵检测被认为是防火墙之后的第二道安全防线,提供对内部攻击、外部攻击和误操作的实时保护。 本文首先介绍了网络入侵检测的基本原理和实现入侵检测的技术。随后重点介绍了基于Windows入侵检测系统中检测模块的设计与实现。即网络数据包的捕获与分析过程的设计与实现。1.1.1 网络安全面临的威胁入侵的来源可能是多种多样的,比如说,它可能是企业心怀不满的员工、网络黑客、甚至是竞争对手。攻击者可能窃听网络上的信息,窃取用户口令、数据库信息,还可以篡改数据库内容,伪造用户身份,否认自己的签名。更为严重的是攻击者可以删除数据库内容,摧毁网络节点,释放计算机病毒,直到整个网络陷入瘫痪。用密码编码学和网络安全的观点,我们把计算机网络面临的威胁归纳为以下四种:截获(interception):攻击者从网络上窃听他人的通信内容。中断(interruption):攻击者有意中断他人在网络上的通信。篡改(modification):攻击者故意篡改网络上传播的报文。伪造(fabrication):攻击者伪造信息在网络上传送。这四种威胁可以划分为两大类,即被动攻击和主动攻击。在上述情况中,截获信息的攻击称为被动攻击,而更改信息和拒绝客户使用资源的攻击称为主动攻击。在被动攻击中攻击者只是观察和窃取数据而不干扰信息流,攻击不会导致对系统中所含信息的任何改动,而且系统的操作和状态也不会被改变,因此被动攻击主要威胁信息的保密性。主动攻击则意在篡改系统中所含信息或者改变系统的状态及操作。因此主动攻击主要威胁信息的完整性、可用性和真实性。1.1.2 网络安全隐患的来源网络安全隐患主要来自于四个方面:(1)网络的复杂性。网络是一个有众多环节构成的复杂系统。由于市场利润、技术投入、产品成本、技术规范等等问题,不同供应商提供的环节在安全性上不尽相同,使得整个网络系统的安全成度被限制在安全等级最低的那个环节上。(2)网络的飞速发展。由于网络的发展,提供新的网络服务,增加网络的开放性和互联性,必然将更多环节纳入系统中,新加入的环节又增加了系统的复杂性,引发了网络的不安定性。(3)软件质量问题。软件质量难以评估是软件的一个特性。现实中,即使是正常运行了很长时间的软件,也会在特定的情况下出现漏洞。现代网络已经是软件驱动的发展模式,对软件的更多依赖性加大了软件质量对网络安全的负面影响。同时,市场的激烈竞争,促使商家需要更快地推出产品,软件的快速开发也增大了遗留更多隐患的可能性。(4)其他非技术因素。包括技术人员在网络配置管理上的疏忽或错误,网络实际运行效益和安全投入成本间的平衡抉择,网络用户的安全管理缺陷等等。由于存在更多的安全威胁和安全隐患,能否成功的阻止网络黑客的入侵、保证计算机和网络系统的安全和正常的运行便成为网络管理员所面临的一个重要问题。1.1.3 网络安全技术如今已有大量的研究机构、社会团体、商业公司和政府部门投入到网络安全的研究中,并将此纳入到一个被称为信息安全的研究领域。网络安全技术主要包括基于密码学的安全措施和非密码体制的安全措施,前者包括:数据加密技术、身份鉴别技术等。后者则有:防火墙、路由选择、反病毒技术等。(1)数据加密技术数据加密是网络安全中采用的最基本的安全技术,目的是保护数据、文件、口令以及其他信息在网络上的安全传输,防止窃听。网络中的数据加密,除了选择加密算法和密钥外,主要问题是加密的方式以及实现加密的网络协议层次和密钥的分配管理。按照收发双方密钥是否相同,可分为对称密码算法和非对称密码算法即公钥密码算法两种。对称密码算法有保密度高,加密速度快的优点,但其密钥的分发则是一个比较复杂的问题。比较著名的对称密码算法有:美国的DES和欧洲的IDEA等。在公钥密码中,收发双方使用的密钥各不相同,密钥的管理比较方便。比较著名的公钥密码算法有:ECC、RSA等,其中RSA算法应用最为广泛。(2)鉴别技术鉴别技术可以验证消息的完整性,有效的对抗冒充、非法访问、重演等威胁。按照鉴别对象的不同,鉴别技术可分为消息源鉴别和通信双方互相鉴别,按照鉴别内容的不同,鉴别技术可分为用户身份鉴别和消息内容鉴别,鉴别的方法有很多种,主要有通过用户标识和口令、报文鉴别、数字签名等方式。(3)访问控制技术访问控制是从计算机系统的处理能力方面对信息提供保护机制,它按照事先确定的规则决定主体对客体的访问是否合法。当一个主体试图非法使用一个未经授权的资源时,访问机制将拒绝这一企图,并将这一时间记录到系统日志中。访问控制技术的主要任务是保证网络资源不被非法使用和访问,它是保证网络安全的重要策略之一。(4)防火墙技术防火墙是一个或一组网络设备,其工作方式是将内联网络与因特网之间或者与其他外联网络间互相隔离,通过加强访问控制,阻止区域外的用户对区域内的资源的非法访问,使用防火墙可以进行安全检查、记录网上安全事件等,在维护网络安全作用中起着重要的作用。(5)反病毒技术计算机病毒是一段具有极强破坏性的恶意代码,它可以将自身纳入其他程序中,以此来进行隐藏,复制和传播,从而破坏用户文件,数据甚至硬件。从广义上讲,它还包括逻辑炸弹、特洛伊木马和系统陷阱等。计算机病毒的主要传播途径有:文件传输、软盘拷贝、电子邮件等。网络反病毒技术主要包括检查病毒和杀出病毒。虽然网络安全已经超越了纯技术领域,但网络安全技术仍然是解决网络安全最重要的基础和研究方向。1.2 本文研究内容本文共分为五个部分,各部分内容如下:第一部分,主要介绍了课题提出的背景、意义、安全隐患、现有的安全技术等,强调了入侵检测的重要性。第二部分,主要介绍了入侵检测相关的基础知识、发展趋势等与本文相关的理论。第三部分,对整个系统的设计做了概述,介绍了系统的整体框架、开发及运行环境等。第四部分,详细介绍了检测模块的设计与实现以及系统集成后的运行结果。其中包括检测模块的设计思想、工作原理以及核心代码的分析等。第五部分,是对整个系统的测试与分析的总结。主要测试了检测模块实现的各种功能。2. 入侵检测基础当我们无法完全防止入侵时,那么只能希望系统在受到攻击时,能尽快检测出入侵,而且最好是实时的,以便可以采取相应的措施来对付入侵,这就是入侵检测系统要做的,它从计算机网络中的若干关键点收集信息,并分析这些信息,检查网络中是否有违反安全策略的行为和遭到袭击的迹象。入侵检测系统(IDS,Intrusion Detection System)正是一种采取主动策略的网络安全防护措施,它从系统内部和各种网络资源中主动采集信息,从中分析可能的网络入侵或攻击,同时还对入侵行为做出紧急响应。入侵检测被认为是防火墙之后的第二道安全闸门。2.1 入侵检测的定义可以看到入侵检测的作用就在于及时地发现各种攻击以及攻击企图并作出反应。我们可以给入侵检测做一个简单的定义,入侵检测就是对(网络)系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性与可用性。即入侵检测(Intrusion Detection)是检测和识别系统中未授权或异常现象,利用审计记录,入侵检测系统应能识别出任何不希望有的活动,这就要求对不希望的活动加以限定,一旦当它们出现就能自动地检测。一个完整的入侵检测系统必须具备下列特点:经济性:为了保证系统安全策略的实施而引入的入侵检测系统必须不能妨碍系统的正常运行(如系统性能)。时效性:必须及时的发现各种入侵行为,理想情况是在事前发现攻击企图,比较现实的情况则是在攻击行为发生的过程中检测到。安全性:入侵检测系统自身必须安全,如果入侵检测系统自身的安全性得不到保障,首先意味着信息的无效,而更严重的是入侵者控制了入侵检测系统即获得了对系统的控制权。可扩展性:可扩展性有两方面的意义。第一是机制与数据的分离,在现有机制不变的前提下能够对新的攻击进行检测。第二是体系结构的可扩展性,在必要的时候可以在不对系统的整体结构进行修改的前提下对检测手段进行加强,以保证能检测到新的攻击。2.2 入侵检测与P2DR模型P2DR模型是一个动态的计算机系统安全理论模型。它的指导实现比传统静态安全方案有突破性提高。PDR是Policy(策略)、Protection(防护)、Detection(检测)和Response(响应)的缩写,特点是动态性和基于时间的特性。P2DR模型阐述了这样一个结论:安全的目标实际上就是尽可能地增大保护时间,尽量减少检测时间和响应时间。入侵检测技术就是实现P2DR模型中”Detection”部分的主要技术手段。在P2DR模型中,安全策略处于中心地位,但是从另一个角度来看,安全策略也是制定入侵检测中检测策略的一个重要信息来源,入侵检测系统需要根据现有的安全策略信息来更好地配置系统模块参数信息。当发现入侵行为后,入侵检测系统会通过响应模块改变系统的防护措施,改善系统的防护能力,从而实现动态的系统安全模型。因此,从技术手段上分析,入侵检测可以看作是实现P2DR模型的承前启后的关键环节。PolicyProtectionResponseDetectionon图2-1 P2DR安全模型2.3 入侵检测的原理入侵检测系统(IDS,Intrusion Detetion System)是通过对网络系统的运行状态进行监视,从而发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性和可用性。在P2DR安全模型中、入侵检测位于检测环节,它的作用在于承接防护和响应过程,也就是通过对计算机网络或计算机系统中的若干个关键点收集信息并进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。它通过对采集到的网络数据在线或离线进行分析,当发现有入侵企图或入侵行为时,能依据响应规则做出发送入侵警报、记录入侵事件、引诱转发、中断入侵连接甚至发动入侵等响应行为,同时还能提醒管理员采取进一步防护措施。它能在不影响网络性能或轻负载的情况下,检测网络并实现对内部攻击、外部攻击和误操作的实时保护。入侵检测和其他的检测技术有相同原理:从一组数据中,检测出符合某一特点的数据。入侵者进行攻击时会留下痕迹,这些痕迹和系统正常运行产生的数据混合在一起。入侵检测的任务之一就是从这些混合数据中找出是否有入侵的痕迹。可见,入侵检测系统有两个主要部分:数据获取和检测。接下来看一下入侵检测系统的检测流程,如图2-2中给出了一个通用的入侵检测系统流程。下图的模块划分是非常粗略的,而且省略了诸如界面处理、配置管理等模块。数据 数据提取 数据 事件事件 数据分析结果处理图2-2 入侵检测流程图数据提取模块的作用在于为系统提供数据,数据的来源可以是主机上的日志信息、变动信息,也可以是网络上的数据信息,甚至是流量变化等,这些都可以作为数据源。数据提取模块在获得数据后,需要对数据进行简单的处理,如简单的过滤、数据格式标准化等,然后将经过处理后的数据提交给数据分析模块。数据分析模块的作用在于对数据进行深入的分析,发现攻击并根据分析的结果产生事件,传递给结果处理模块。数据分析的方法多种多样,可以简单到对某种行为的计数,也可以是一个复杂的专家系统。结果处理模块的作用在于告警与反应,也就是在发现攻击企图或者攻击之后需要系统及时的进行反应,包括报告、记录、反映和恢复。2.4 入侵检测的分类通过对现有的入侵检测系统和技术的研究,可以从下面几个方面对入侵检测系统进行分类:(1) 根据数据来源或监视的对象分类l 基于主机(Host-Based)的入侵检测系统数据来源于主机系统。主机系统中最经典的数据源就是审计日志,也有的入侵检测系统将数据源扩展到系统日志、应用程序日志、系统状态、系统调用信息等。显然,它所监视和保护的对象是主机。l 基于网络(network-based)的入侵检测系统数据来源于整个网络,它建立在线路侦听的基础上。实际实现时,一般是把入侵检测系统所在的主机的网卡设为混杂模式,从而捕获经过它的所有网络数据包。它监视的对象是整个共享子网,能够为整个共享子网提供保护。基于主机的入侵检测系统与主机结合较为紧密,能发现一些基于网络的入侵检测系统发现不了的入侵。不过基于主机的入侵检测系统缺乏跨平台性,而且会在服务器上产生额外的负载。基于网络的入侵检测系统的优势在于秘密性、平台无关性、易于实现。它将涉及多个主机的入侵信息进行关联分析、保护范围大。它对现有的系统或基础设施不会有什么影响,被检测到的用户很难发现;绝大多数基于网络IDS都是独立的:已部署的基本网络的入侵检测传感器将监视所有的攻击,而不管目标系统使用什么样的操作系统平台。(2) 根据入侵检测方法分类l 基于异常(anomaly-based)的入侵检测基于异常的入侵检测,简称异常检测。它的基本假设是入侵活动具有不同于正常用户活动的特征,即入侵活动表现为异常。首先根据主题的历史活动记录,为每个主体建立正常活动的“活动简档”;将当前的主体活动与“活动简档”进行比较,如果差异大于某个预定义的值,就认为这是一次入侵。l 基于特征(signature-based)的入侵检测基于特征的入侵检测,简称特征检测。首先将已知的每种入侵方法都表示成一条入侵规则;将当前发生的活动与入侵规则集进行匹配,如果当前的活动与某条入侵规则匹配就认为是采用该种入侵方法发起的一次进攻。基于异常的入侵检测系统的优势在于:能够发现未知的攻击;通过采用适当的自学习算法,基于异常的入侵检测系统一旦建立,可以不必修改和更新。它的缺点是建立系统主体正常活动的“活动简档”和设置合适的临界值都比较困难、误报警率高。基于特征的入侵检测系统的优点是准确率高;它的不足在于难以发现未知攻击、攻击模式库需要不断更新。因为异常检测方法难以实现,所以很少被采用;所有的商业入侵检测系统都采用了某种形式的特征检测方法。但是,异常检测方法的优点让研究人员向往不已,大部分的研究工作都集中在异常检测方面,人们提出了各种各样的新方法企图使异常检测实用化。除此以外,入侵检测系统还可以按数据分析发生的时间、入侵攻击的响应方式等方法分类。各种分类方法体现了对入侵检测系统理解的不同侧面。2.5 入侵检测的发展趋势入侵检测从最初实验室里的研究课题到目前的商业IDS产品,已经有20多年的发展历史。随着入侵检测系统研究和应用的不断深入,近年对入侵检测技术有以下几个主要的发展方向。l 体系结构的新发展进一步研究分布式入侵检测与通用的入侵检测构架。IDS体系结构的研究主要包括具有多系统的互操作性和重用性的通用入侵检测框架,总体结构和各部件的相互关系,IDS管理,具有可伸缩性、重用性的系统框架,安全、健壮和可扩展的安全策略。l 应用层入侵检测许多入侵的语言只有在应用层才能理解,而目前的IDS仅能检测诸如Web之类的通用协议,而不能处理诸如Lotus Notes、数据库系统等其他的应用系统。许多基于客户、服务器结构与中间件技术及对象技术的大型应用,需要应用层的入侵检测保护。l 智能的入侵检测入侵方法的越来越多样化和复杂化,传统的入侵检测方法还存在着不少不足,尽管已经有智能代理、神经网络与遗传算法在入侵检测领域应用研究,但这只是一些尝试性的研究工作,需要对智能代理的IDS加以进一步的研究以解决其自学习与自适应能力。l 响应策略与恢复研究IDS是识别出入侵后的响应策略维护系统安全性、完整性的关键。IDS的目标是实现实时响应和恢复。实现IDS的响应包括向管理员和其他实体发出报警,进行紧急处理;对攻击的追踪、诱导和反击,对于攻击源数据的聚集以及ID部件的自学习和改进。IDS的恢复研究包括系统状态一致性检测,系统数据备分,系统恢复策略和恢复机制。l 与其他网络安全部件的协作、与其他安全技术的结合随着黑客入侵手段的提高,尤其是分布式、协同式、复杂模式攻击的出现和发展,传统的单一、缺乏协作的入侵检测技术已经不能满足需求,需要有充分的协作机制。此外,单一的入侵检测系统并非万能,因此需要结合身份认证、访问控制、数据加密、防火墙、安全扫描、PKI技术、病毒防护等众多网络安全技术,来提供完整的网络安全保障。3 基于Windows入侵检测系统的设计3.1概述本系统的全称为基于Windows入侵检测系统的设计与实现,系统的开发环境为Windows操作系统。本系统实际上是一个小型的基于Windows的网络入侵检测系统,虽然只需要安装在整个共享网段的某台机器上,但能够对整个网段提供入侵检测的保护。整个系统分主要分为两个模块,即检测模块和响应模块。检测模块主要是通过监听共享网段,捕获该网段上的数据包并对其进行分析,从而剥离出一些与入侵特征相关的标志。响应模块则负责将检测模块剥离出的标志与现有的入侵特征进行模式匹配,从而侦测出存在于网络中的入侵活动,并且利用一些响应手段向网络管理员发出告警信息并采取相应的行动。除了这两大模块以外,本系统还有一个中央控制台模块,该模块主要是给系统的使用者提供方便的操作界面,以及显示系统输出的各项数据。本论文将重点讨论检测模块的设计与实现。3.2系统总体结构系统总体结构如图3-1所示:基于Windows入侵检测系统检测模块响应模块数据捕获数据分析规则库规则匹配引擎响应单元日志库图3-1 系统总体结构图3.3开发环境本系统所采用的开发语言是C/C+,下表3-1为系统开发所用到的相关部件:表3-1 系统开发软体环境部件名称软体系统平台Microsoft Windows开发工具VC+ 6.0编译环境VC+ 6.0运行环境Microsoft Windows数据库MYSQL开发包winpcap、libnids4. 检测模块的设计与实现4.1设计思想检测模块是任何一个网络入侵检测系统都必须具备的模块之一,它主要实现了数据提取的功能,和对提取到的数据进行简单的分析,从而提取一些与入侵特征相关的标志。简单的说,可以将其分为两个部分,即数据包的捕获和数据包的分析。由于本系统是基于Windows操作系统的,所以数据包捕获功能是在Winpcap软件开发包的基础上实现的。4.2 Winpcap软件开发包简介Winpcap(windows packet capture)是windows平台下一个网络数据包捕获开发包,是为Libpcap在Windows平台下实现数据包的捕获而设计的。在设计Winpcap时参照了Libpcap,使用方法与Libpcap相似。它的使用非常广泛,几乎所有在Windows平台下要使用数据包捕获功能的软件都可以使用Winpcap开发包。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力,其核心功能是捕获网络数据包,其他功能包括数据包过滤、数据包发送、流量统计和数据包存储等。使用Winpcap有很多好处,主要体现在以下几个方面。1Winpcap给程序员提供了一套标准的网络数据包捕获的编程接口,并且与Libpcap兼容,使得原来许多Linux平台下的网络安全程序可很快地移植到Windows平台下。2使用Winpcap可以提供很高的应用效率。它充分考虑了各种性能和效率的优化,在内核层实现了数据包的捕获和过滤。3Winpcap还提供了发送数据包的能力。4.3 BPF过滤机制简介BPF(Berkeley Packet Filter)是由洛仑兹伯克利实验室的研究人员Stevern McCanne和VanJacobson于1993年提出,背景是当时在UNIX网络功能使用中出现了对网络监控工具的强烈需求,用来分析和排除网络故障。而网络监控程序都运行在用户态空间,数据包必须从内核中复制到用户空间后再进行处理,这种重复的复制工作对实质的功能实现毫无意义。BPF在内核态对数据包进行预处理,因而大大提高了运行性能。当一个数据包到达网络接口设备时,链路层设备驱动器通常把它传送给系统协议栈进行处理。但是,当BPF也在该网络接口上截获时,驱动器将会首先调用BPF。BPF负责将数据包传递给每个监控进程的过滤器。这些用户自定义的过滤器将决定一个数据包是否被接受以及数据包中的那些内容应该被保存下来。对于每一个用于接受数据包的过滤器,BPF将所需的数据复制到与之相连的缓存中,然后设备驱动程序重新获得控制权。4.4网络数据包捕获模块的实现4.4.1 网络数据包捕获机制网络数据包捕获机制是网络入侵检测系统的基础。一般指通过截获整个网络的所有信息流量,根据信息源主机、目标主机、服务协议端口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更上层的应用程序进行分析。其工作流程图如4-1所示:网络信息数据截获数据过滤应用程序(响应模块)图4-1 数据包捕获流程图网络数据包捕获可以通过两种机制实现,一种是利用以太网的广播特性,另一种方式是通过设置路由器的监听端口实现。两种方式分别适用于不同的情况。本系统是利用以太网络的广播特性进行捕获数据包的。4.4.2 数据包捕获的具体实现网卡有以下几个工作模式;广播模式(broad-cast module)、多播模式(multicast module)、直接模式(direct module)和混杂模式(promisc module)。网卡在设置为广播模式时,它将会接受所有目的地址为广播地址的数据包,一般所有的网卡都会设置为这个模式;网卡在设置为多播模式时,当数据包的目的地址为多播地址,而且网卡地址是属于那个多播地址说代表的多播组时,网卡将接纳此数据包;网卡在设置为直接模式时,只有当数据包的目的地址为网卡自己的地址时,网卡才接受它;网卡在设置为混杂模式时,它将接受所有经过的数据包。由于基于网络的入侵检测系统的数据源是整个共享网段上的数据包,因此只要将该网段内某一台主机的网卡设置为混杂模式,就可以监听本网段内所有的数据包进行分析和判断。具体的数据包捕获流程图如下:查找有效的网络设备(eth)pcap_lookupdev()获得网络地址及网络掩码(IP&MASK)pcap_lookupnet()打开网络设备pcap_open_live()用户编译过滤规则pcap_compile()设置过滤规则pcap_setfilter()循环捕获网络数据包pcap_loop()显示分析捕获的数据display()缓冲满?结束开始图4-2 数据包捕获流程图数据包捕获核心代码及主要函数说明如下:void DecodeProcess_callback(u_char *argument,const struct pcap_pkthdr *packet_header,const u_char *pkt);pcap_t * pcap_handle; /*Libpcap句柄*/char error_contentPCAP_ERRBUF_SIZE; /*存储错误内容 */char *net_interface; /*网络接口*/ struct bpf_program bpf_filter; /*BPF过滤规则*/char bpf_filter_string=; /*过滤规则字符串,此时为空,表示捕获所有的网络数据包,而不是捕获特定的网络数据包*/unsigned int net_mask; /*网络掩码*/unsigned int net_ip; /*网络地址*/net_interface=pcap_lookupdev(error_content);/*获得可用的网络接口*/pcap_lookupnet(net_interface,&net_ip,&net_mask,error_content);/*获得地址*/pcap_handle=pcap_open_live(net_interface,BUFSIZ,1,1,error_content);/*打开网络接口*/pcap_compile(pcap_handle,&bpf_filter,bpf_filter_string,0,net_ip);/*编译BPF过滤规则*/pcap_setfilter(pcap_handle,&bpf_filter); /*设置过滤规则*/if(pcap_datalink(pcap_handle)!=DLT_EN10MB)return;/*由于在解码的代码中只有以太网,所以这里检测链路是否为以太网,否,则退出*/pcap_loop(pcap_handle,-1,DecodeProcess_callback,NULL); /*注册回调函数,循环捕获网络数据包,然后调用回调函数对捕获的网络数据包进行分析*/pcap_close (pcap_handle);本段代码的功能是循环捕获以太网数据包,其中调用了网络接口函数、规则函数和数据包捕获函数。主要的函数功能说明如下:(1)选择监听网络接口函数原型:Char * pcap_lookupdev (char*errbuf)功能:用于寻找本机可用的网络接口,调用成功就返回指向网络接口的指针。其中errbuf为调用失败时返回的错误信息字符串。(2)建立监听会话函数原型: pcap_open_live (char*device,int snaplen,int promis,int to_ms,char*ebuf)功能:用于获取一个捕获器描述符,调用成功就返回监听会话句柄。其中device为指向网络接口的指针,snaplen定义了监听程序所所捕获的最大字节数,promisc定义了是否将网卡设置为混杂模式,to_ms表示度操作等待的毫秒时间,ebuf为函数调用失败返回的错误信息字符串。(3)编译过滤器函数原型:int pcap_compile(pcap_t * p,struct bpf_progrm * fp,char*str,int optimize,bpf_u_int32 netmask)功能:将字符串形式的过滤要求编译成二进制形式存储在bpf_program结构中。从而实现通过设置过滤器来捕获感兴趣的数据包。其中,p为监听会话句柄指针,fp为指向结构bpf_program的指针,用于存放编译后的BPF程序,str为tcpdump表达式字符串指针,optimize为优化标志,netmask为子网掩码。(4)设置过滤器:函数原型:char * pcap_setfilter(pcap_t*p,struct bpf_program*fp)功能:通过调用本函数,设置内核过滤器使得编译了的过滤生效。其中,p为指向监听会话句柄的指针,fp为指向结构bpf_program的指针,一般为函数pcap_comple编译后的结果,也可以用手工编BPF代码。(5)捕获并处理数据包:函数原型:int pcap_loop(pcap_t*,int cnt,pcap_handler callback,u_char*user)功能:捕获并处理数据包。其中p为指向监听会话句柄的指针,cnt为指向函数返回前所处理数据包的最大值,值为负时表示处理缓冲区所有的数据包,为0时处理所有的数据包,直到产生读取到EOF错误为止,callback参数指定带有3个参数的回调函数,user为用户传递给回调函数的指针,通常设置为NULL。(6)用户自定义的回调函数函数原型:void callback(u_char* args,const struct pcap_pkthdr* header,chonst u_char* packet)功能:在pcao_loop函数没捕获到一个数据包后被自动调用,用于对捕获到的数据包进行用户自定义的处理。其中,args为从pcap_loop函数传递过来的u_char指针,pheader为指向pcap_pkthdr结构指针,packet是指向所有捕获的数据包的指针。(7)关闭监听会话句柄函数原型:void pcap_close(pcap_* p)功能:关闭监听会话句柄,并释放资源。通过Winpcap函数库,我们得到了网络中传输的原始网络数据包,为了从中得到有用的数据信息,接下来就要对原始数据包进行分析,也就是进行网络协议的解析工作。4.5 网络数据包分析模块的实现当完成对数据包的捕获之后,接下来要完成的是数据包的分析过程。对所有网络数据包的分析,必须从链路层开始分析,然后分析网络层,再分析传输层,最后分析应用层。这是由于捕获到的数据包是一个数据帧,其中最外层的协议是链路层协议,然后从里到外分别额是网络层、传输层和应用层。本系统目前上未实现对应用层协议的分析,所以数据包的分析流程图如图4-3所示:捕获网络上的一个数据包分析以太网协议分析TCP协议分析IP协议传入响应模块分析RARP协议分析ARP协议判断以太网类型字段判断IP协议类型字段分析UDTCP协议分析ICMP协议图4-3 数据包分析流程图从流程图可以看到,在捕获了数据包之后,就对网络数据包进行分析,本系统对链路层只分析了以太网协议。根据以太网协议内容的分析结果,判断以太网类型的值:如果是0X0806,表示协议为ARP协议,则分析ARP协议;如果是0X0800,表示协议为IP协议,则分析IP协议;如果是0X8035,表示协议是RARP协议,则分析RARP协议。在分析IP协议时,根据协议类型的值判断传输层协议类型:如果IP协议类型字段的值是6,表示协议为TCP协议,则分析TCP协议;如果IP协议类型字段的值是17,表示协议为UDP协议,则分析UDP协议;如果IP协议类型字段的值是1,表示协议为ICMP协议,则分析ICMP协议。在具体的实现过程中,当数据包分析完成后,将分析的结果保存到Data Packet数据结构中。Data Packet的结构如下:typedef struct Data_Packetstruct pcap_pkthdr *pkth; u_char *pkt; EtherHdr *eh;ARPHdr *ah;IPHdr *iph;TCPHdr *tcph;UDPHdr *udph;ICMPHdr *icmph;u_char *data;u_int16_t datasize;u_int8_t frag_flag;u_int16_t frag_offset;u_char mf;u_char df;u_char rf;u_int16_t sp;u_int16_t dp;u_int32_t sip;u_int32_t dip;int caplen;Options ip_options40;int ip_option_count;Options tcp_options40;int tcp_option_count;Packet;协议的解析是围绕核心数据结构Data Packet展开的,其中定义有进行协议解析所需的数据结构和保存结果信息的数据结构。通过把解码后的协议按其协议放入Data Packet结构对应的数据成员中,提供给之后的响应模块的使用。其他重要的数据结构还有以太网首部数据结构、IP数据包首部数据结构等,核心代码如下:1.以太网首部数据结构Typedef struct Ether_Headeru_int8_t ether_dhost 6; u_int8_t ether_shost 6; u_int16_t ether_type; EtherHdr;2.IP数据报首部数据结构typedef struct IP_Header#if defined (WORDS_BIGENDIAN)u_int8_t ip_ver:4; u_int8_t ip_hlen:4; #elseu_int8_t ip_hlen:4, ip_ver:4;#endifu_int8_t ip_tos; u_int16_t ip_len; u_int16_t ip_id; u_int16_t ip_off; u_int8_t ip_ttl; u_int8_t ip_proto; u_int16_t ip_checksum; struct in_addr ip_src; struct in_addr ip_dst; IPHdr;4.6 系统集成本系统除了由检测模块和响应模块两个重要部分以外,还有一个必不可少的部分就是系统的集成部分即中央控制器模块。此模块将检测模块与响应模块集成在一起,构成了一个完整的网络入侵检测系统。它的主要功能就是为用户提供了系统的控制界面,并且能够详细的显示出系统运行的结果。用户可以通过中央控制器实时的监控整个网段的运行情况,检查当前是否有攻击产生或者有攻击的企图。具体实现效果如图4-4所示:图4-4 检测模块效果图图4-4主要显示了检测模块在中央控制器中运行的效果图。图上所显示的是检测模块捕获的数据包在通过协议分析后所输出的信息。5. 系统测试与分析网络数据包的捕获和分析是整个网络入侵检测系统实现的基础,只有获得了数据源之后,系统的响应模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论