计算机毕业论文-网络嗅探器的设计与实现_第1页
计算机毕业论文-网络嗅探器的设计与实现_第2页
计算机毕业论文-网络嗅探器的设计与实现_第3页
计算机毕业论文-网络嗅探器的设计与实现_第4页
计算机毕业论文-网络嗅探器的设计与实现_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计论文网络嗅探器的设计与实现论文作者姓名申请学位专业申请学位类别指导教师姓名(职称)论文提交日期网络嗅探器的设计与实现摘要随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,网络的安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络,测试网络性能与安全性的工具软件的需求也越来越迫切。网络嗅探器具有两面性,攻击者可以用它来监听网络中数据,达到非法获得信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,如WINPCAP、原始套接字。文中首先分析了嗅探的原理和危害,并介绍了几种常见的嗅探器,然后研究了入侵检测系统中使用的包捕获技术。本文利用原始套接字在WINDOWS平台下实现了一个网络嗅探器程序,完成了对数据包进行解包、分析数据包的功能。关键词网络嗅探器;数据包捕获;数据包分析;原始套接字DESIGNANDREALIZATIONOFNETWORKSNIFFERABSTRACTALONGWITHTHEDEVELOPMENTOFNETWORKTECHNOLOGIESANDTHEPOPULARIZATIONOFNETWORKAPPLICATIONS,MOREANDMOREINFORMATIONRESOURCESAREPUTONINTERNETTHENETWORKSECURITYANDRELIABILITYBECOMEIMPORTANTINCREASINGLYTHEREFORE,THEDEMANDOFTHESOFTWARETOOLSWHICHCOULDANALYZE,DIAGNOSISANDTESTNETWORKPERFORMANCEORSECURITYAREMOREANDMOREPRESSINGNETWORKSNIFFERHASTWOSIDESANATTACKERCANUSEITTOMONITORNETWORKDATA,TOACHIEVETHEPURPOSEFOROBTAININGINFORMATIONILLEGALLY,WHILENETWORKMANAGERSCANUSEITTOCAPTUREANDANALYZETHEDATAWHICHTRANSMITTEDONNETWORKTHERESULTOFANALYSISCANBEUSEDTOANALYZETHENETWORKSECURITYTHISTHESISBRIEFLYANALYZEDTHETECHNOLOGYOFNETWORKSNIFFER,ANDRESEARCHEDTHECAPTUREMECHANISMOFNETWORKDATAPACKETSSUCHASWINPCAPANDRAWSOCKETTHISPAPERFIRSTANALYZEDTHETHEORYANDTHEHARMOFSNIFFER,INTRODUCEDSEVERALCOMMONSNIFFERS,ANDTHENRESEARCHEDTHECAPTURETECHNOLOGYWHICHUSEDINTHEINTRUSIONDETECTIONSYSTEMTHETHESISUSESRAWSOCKETSONWINDOWSPLATFORMTOREALIZEONESNIFFERWHICHCANCOMPLETEUNPACKANDANALYZEDATAPACKETKEYWORDSNETWORKSNIFFERCAPTUREDATAPACKETANALYZEDATACAPTURERAWSOCKETS目录论文总页数25页1引言111网络安全的现状1111计算机网络安全的问题1112网络安全机制及技术措施112本课题的研究意义213本文研究的内容32网络嗅探器的基本原理321网络嗅探器概述322嗅探器实现基础323常见的SNIFFER424数据包捕获机制的研究4241WINPCAP包捕获机制5242套接字包捕获机制625嗅探器的两面性8251SINFFER的危害8252通过网络嗅探进行网络管理93入侵检测系统与嗅探器931入侵检测概念932入侵检测的实现与嗅探器10321入侵检测的实现与嗅探器的关系11322数据包嗅探技术在入侵检测系统中的应用114嗅探器的实现与测试1241利用套接字开发网络嗅探程序的步骤1242嗅探器的具体实现原理1343数据包捕获程序设计1544数据包的解析1545数据的显示1946嗅探器的测试22结论23参考文献23致谢24声明251引言11网络安全的现状111计算机网络安全的问题随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。INTERNET的安全已经成为亟待解决的问题。从目前使用的情况来看,对计算机网络的入侵、威胁和攻击,基本上可以归纳为以下几种1外部人员攻击2黑客入侵3信息的泄漏、窃取和破坏4搭线窃听5线路干扰6拒绝服务或注入非法信息7修改或删除关键信息8身份截取或中断攻击9工作疏忽,造成漏洞10人为的破坏网络设备,造成网络瘫痪112网络安全机制及技术措施目前国内外维护网络安全的机制主要有以下几类1访问控制机制访问控制机制是指在信息系统中,为检测和防止未授权访问,以及为使授权访问正确进行所设计的硬件或软件功能、操作规程、管理规程和它们的各种组合。2身份鉴别身份鉴别技术是让验证者相信正在与之通信的另一方就是所声称的那个实体,其目的是防止伪装。3加密机制对纯数据的加密,加密机制是对你不愿意让他人看到的这些数据(数据的明文)用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。4病毒防护计算机病毒的防范既是一个技术问题,也是一个管理问题,它采取以“预防为主,治疗为辅”的防范策略将计算机病毒的危害降到最小限度。针对以上机制的网络安全技术措施主要有(1)防火墙技术防火墙是指一种将内部网和公众网络分开的方法,它实际上是一种隔离技术,是在两个网络通信是执行的一种访问控制手段,它能允许用户“同意”的人和数据进入网络,同时将用户“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访自己的网络,防止他们更改、复制和毁坏自己的重要信息。(2)基于主机的安全措施通常利用主机操作系统提供的访问权限,对主机资源进行保护,这种安全措施往往只局限于主机本身的安全,而不能对整个网络提供安全保证。(3)加密技术用于网络安全的加密技术通常有两种形式A面向服务的加密技术。面向服务的加密技术即通常所说的信息加密。它是指利用好的密码算法对有些敏感数据、文件和程序进行加密,并以密文方式存取,以防泄密。其优点在于实现相对简单,不需要对网络数据所经过的网络的安全性提出特殊的要求。B面向网络的加密技术。面向网络的加密技术是指通信协议加密,它是在通信过程中对包中的数据进行加密,包括完整性检测、数字签名等,这些安全协议大多采用了诸如RSA公钥密码算法、DES分组密码、MD系列HASH函数及其它一些序列密码算法实现信息安全功能,用于防止黑客对信息进行伪造、冒充和篡改,从而保证网络的连通性和可用性不受损害。加密技术是网络信息最基本、最核心的技术措施。但加密的有效性完全取决于所采用的密码算法,故一般由中央授权部门研制生产,不能自行采用一些密码算法用于网络中,否则后果不堪设想。(4)其它安全措施包括鉴别技术、数字签名技术、入侵检测技术、审计监控、防病毒技术、备份和恢复技术等。鉴别技术是指只有经过网络系统授权和登记的合法用户才能进入网络。审计监控是指随时监视用户在网络中的活动,记录用户对敏感的数据资源的访问,以便随时调查和分析是否遭到黑客的攻击。这些都是保障网络安全的重要手段。12本课题的研究意义计算机网络技术的飞速发展,极大的改变了人们传统的生活和工作模式,越来越多的社会经济活动开始依赖网络来完成,可以说计算机网络的发展已经成为现代社会进步的一个重要标志。但与此同时,计算机犯罪、黑客攻击、病毒入侵等恶性事件也频频发生。因此,信息安全已越来越受到世界各国的重视。嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(SOCKET)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。本文通过对网络嗅探器对网络上传输的数据包的捕获与分析功能的进一步了解,做到知己知彼。通过网络嗅探器对网络上传输的数据包进行捕获和分析,获取所需要的信息,利用对这些信息进行网络安全分析。因此,对网络嗅探器的研究具有重要意义。13本文研究的内容本文的研究主要围绕以下几个方面进行。1网络嗅探器的概念及技术的研究。主要包括网络嗅探器的概念、网络嗅探器的工作原理及常见网络嗅探器的实现原理等。2入侵检测与嗅探器之间的联系,入侵检测的实现由四部分组成数据包嗅探解析部分、数据行为检测部分、算法部分和扫描检测部分。数据包嗅探技术是实现入侵检测的基础,将数据包从共享网络线路中捕获,并将其提取到应用程序中。3网络嗅探程序的实现。主要工作包括给出了一个网络嗅探程序的系统框架、数据包捕获程序的设计、数据包的解析、数据的显示等。4网络嗅探程序的性能测试与评价,得出结论。2网络嗅探器的基本原理21网络嗅探器概述网络嗅探器又称为网络监听器,简称为SNIFFER子系统,放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,这些数据可以是用户的账号和密码,可以是一些商用机密数据等等。SNIFFER是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。SNIFFER的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。而嗅探器也可作为攻击工具被黑客所利用为其发动进一步的攻击提供有价值的信息。22嗅探器实现基础以太网数据帧是一组数字脉冲,它们在传输介质上进行传输,从而实现信息的传递。以太网帧格式符合IEEE8023标准,帧中包含目的地址和源地址,目的地址最高位为0是普通地址,为1时是组地址。当一个帧送到组地址时,组内的所有站点都会收到该帧。如果将它送到一个普通地址,一般情况下,只有一个站点收到这个帧,但是,以太网是以广播方式发送帧的,也即这个帧会传播到其所在网段内的所有站点,只不过该站点不会接收目的地址不为本机地址的帧。为了捕获网段内的所有帧以后称数据包,可以设置以太网卡的工作方式,以太网卡通常有正常模式NORMALMODE和混杂模式PROMISCUOUSMODE两种工作模式。在正常模式下,网卡每接收到一个到达的数据包,就会检查该数据包的目的地址,如果是本机地址和广播地址,则将接收数据包放入缓冲区,其他目的地址的数据包则直接丢掉。因此,正常模式下主机仅处理以本机为目的的数据包,网卡如果工作在混杂模式,则可以接收本网段内传输的所有数据包。如果要进行数据包捕获,必须利用网卡的混杂模式,获得经过本网段的所有数据信息。23常见的SNIFFERSNIFF网络分析仪有专用硬件和软件的产品,尖端的网络分析仪产品可以找出一般网络接口检测不到的错误中等商业市场的网络分析仪产品往往是带有特定软件的便携计算机而基于各个平台的很多普通的网络监听软件则在网上可以自由下载。比较知名的被广泛用于调试网络故障的免费SNIFF工具有TCPDUMP运行在FREEBSD、LINUX、SUNOS等系统下NFSWATCH运行在HPUX、IRIX、SUNOSETHERFIND,SNOOPER运行在SUNOSIPMAN,THERLOAD,GOBBLER运行在DOS、WINDOWS。在LINUX下监听的基本实现过程是通过SOCKET来实现的。LINUX支持一种特殊的套接字,即SOCKPACKET型套接字。在这种套接字下,应用程序可以读到网卡传递给系统的全部报文,一般情况下,网卡只将那些目的地址是自身的报文传递给系统内核。因此,需要将网卡的工作模式设定为混杂模式,这样系统内核就可以读到网卡监听到的所有报文,从而监听器应用程序也可以读到这些报文。24数据包捕获机制的研究纵观国内外在网络嗅探技术中所使用的包捕获机制的方法,大致可归纳为两类一类是由操作系统内核提供的捕获机制;另一类是由应用软件或系统开发包通过安装包捕获驱动程序提供的捕获机制,该机制主要用于WIN32平台下的开发。操作系统提供的捕获机制主要有四种BPFBERKELEYPACKETFILTER,DLPIDATALINKPROVIDERINTERFACE,NITNETWORKINTERFACETAP,SOCKPACKET类型套接口。BPF由基于BSD的UNIX系统内核所实现。DLPI是SOLARIS和其它SYSTEMVUNIX系统的内嵌子系统。从性能上看,SOCKPACKET最弱。WINDOWS操作系统没有提供内置的包捕获机制。它只提供了数量很少并且功能有限的API调用。WINPCAPWINDOWSPACKETCAPTURE是WIN32上的第一个用来捕获数据包的开放系统软件包,它是一种新提出的强有力并且可扩展的框架结构。WINPCAP包含了一系列以前系统所没有的创新特性。本文将对目前比较流行的WINPCAP软件包提供的捕获机制进行简单介绍。241WINPCAP包捕获机制WINPCAP的体系结构如图21所示图21WINPCAP的体系结构由WINPCAP体系结构图可以看出它采用的是分层化的驱动程序模型,并包含有三个组件1内核级的数据包捕获驱动程序2低级的动态连接库PACKETDLL3高级系统无关库WPCAPDLLWINPCAPWINDOWSPACKETCAPTURE是由微软资助的一个项目,其核心仍是基于NDIS的,但它对NDIS进行封装,它是WINDOWS平台下一个免费、公共的网络NETWORKLEVERAPLICATIONKERNLLEVERPACKETSUSERCODECALLWINPCAPUSERCODECALLWINPCAPUSERCODEMONITORINGWPCAPDLLWPCAPDLLWPCAPDLLWPCAPDLLWPCAPDLLUSERBUFFER1USERBUFFER2USERCODEDIRECTACCESSTOTHENPFPACKETDLLCALLSPACKETDLLSTATISTICALFILTER1FILTER2FILTER3KERNELBUFFER2KERNELBUFFER2NICDRIVERNDIS30ORHIGHEROTHERPROTOCLSTACKSUSERNETGROUPPACKERFILTERNPF访问系统,它为WIN32应用程序提供访问网络底层的能力。它提供了以下的各项功能1捕获原始数据报,包括在共享网络上各主机发送/接收以及相互之间交换的数据报;2在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;3在网络上发送原始的数据报;4收集网络通信过程中的统计信息。在WINDOWSNT下WINPCAP包捕获驱动和网卡设备驱动的交互是通过NDISNETWORKDEVICEINTERFACESPECIFICATION来实现的。而且包捕获驱动既与网络驱动通信又与用户应用程序通信,所以它在NDIS结构中如同一个协议驱动,对WINDOWSNT操作系统中的NDIS结构中的高端驱动进行编程,这样编制的程序与上层应用程序更容易连接,应用程序对驱动设置的工作也更方便。如图22所示应用程序应用程序协议驱动包捕获驱动NIC驱动数据包核心层网络层图22包捕获驱动在NDIS中所处位置242套接字包捕获机制上世纪80年代初,加利福尼亚大学BERKELEY分校在UNIX操作系统下实现了TCP/IP协议,它们为TCP/IP网络通信开发了一个应用程序接口(API),这个API称为SOCKET(套接字)接口。SOCKET给程序员提供了一个高层接口,它的出现使得程序员在编写网络应用程序时只需要调用函数,对网络的底层细节并不需要精通,因此十分方便。SOCKET实质上是提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须拥有各自的电话机一样。在网间和网内部,每一个SOCKET用一个半相关描述协议,本地地址,本地端口一个完整的SOCKET连接则用一个相关描述协议,本地地址,本地端口,远地地址,远地端口每一个SOCKET有一个本地唯一的SOCKET号,由操作系统分配。最重要的是,SOCKET是面向客户服务器模型而设计出来的,针对客户和服务器程序提供不同的SOCKET系统调用。客户随机申请一个SOCKET相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫,系统为之分配一个SOCKET号服务器拥有全局公认的SOCKET在LINUX中,/ETC/SERVICES用于存储全局公认的SOCKET号,任何客户都可以向它发出连接请求和信息请求。下面我们一一给出重要的SOCKET系统调用。函数SOCKET可以创建一个SOCKET对象,SOCKET函数的原型如下SOCKETSOCKETINTAF,INTTYPE,INTPROTOCOL创建一个SOCKET实际上是向系统申请一个属于自己的SOCKET号。AFADDRESSFAMILY俗称套接字地址族,如表21所示。表21LINUX支持的套接字地址族协议族、SOCKET类型和协议常用的组合如表22所示表22系统调用三参数组合关系套接字地址族描述UNIXUNIX域套接字INET通过TCP/IP协议支持的INTERNET地址族AX25AMATERRADIOX25IPXNOVELLIPXAPPLETALKAPPLETALKDDPX25X25协议族(AF)SOCKET类型(TYPE)协议(UNIX表示)实际协议SOCK_DGRAMIPPROC_UDPUDPSOCK_STREAMIPPROC_TCPTCPSOCK_RAMIPPROC_ICMPICMPAF_INETSOCK_RAMIPPROC_RAM某低级协议指定本地地址使用函数BIND一一绑定SOCKET系统调用创建SOCKET时,只指定了相关五元组的协议元,没有指定其余四元本地地址、本地端口、远地地址、远地端口,因此需要别的系统调用加以补充。BIND将本地SOCKET地址包括本地主机地址和本地端口与所创建的SOCKET号联系起来,即将本地SOCKET地址赋予SOCKET,以指定本地半相关。其用于LINUX性能评估的测试工具的设计与实现调用格式为BINDSOCKID,LOCALADDR,ADDRLEN总的来说,各种SOCKET地址数据结构包括两大部分地址类型和协议地址。网络协议地址又包括主机地址和端口号。监听LISTEN对于服务器来说,在它接受客户机的连接之前,首先要监听。只有进入了监听模式,才能接受来自客户机的连接。这一点可以通过LISTEN函数来实现,它的原型如下INTLISTENSOCKETS,INTBACKLOG各参数意义如下S进行监听的套接字。BACKLOG正在等待连接的最大队列的长度。如果BACKLOG的只为3,有4个客户机同时发出连接请求,则前3个会放在等待连接队列中,最后一个将被忽略。如果函数成功,则返回0;否则返回SOCKET_ERROR。当客户机和服务器的连接建立起来后,用函数SEND和RECV来进行数据传输。25嗅探器的两面性从事网络安全的技术人员和相当一部分准黑客(指使用现成的黑客软件进行攻击的人)都知道网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,也可为黑客所利用为其发动进一步的攻击提供有价值的信息。可见,嗅探器实际是一把双刃剑。251SINFFER的危害网络嗅探器作为被黑客所利用的攻击工具其危害性主要表现在以下几个方面1偷窥机密或敏感的数据信息通过拦截数据包,入侵者可以记录网上敏感信息的传送,或者干脆拦截整个会话过程。2窥探低级的协议信息对底层的协议信息记录,如两台主机之间的网络接口地址,远程网络接口IP地址,IP路由信息和TCP连接的字节顺序号码等,这些信息由非法入侵者掌握后将对网络的安全构成极大的危害。一个入侵者攻击网络系统可能步骤大体有信息收集安全弱点探测和分析实施攻击逃避检测。入侵者会利用公开的协议和工具,收集目标网络中各个主机系统的相关信息,入侵者会探测目标网络上的各个主机,以寻找该系统的安全漏洞及安全弱点。他可以自编程序或利用公开的程序进行自动扫描,然后对目标实施攻击,获得系统控制权。入侵者甚至可以利用该主机为基础入侵整个网络并留下后门,掩盖痕迹,完成一次入侵。252通过网络嗅探进行网络管理在合理的网络中,网络嗅探器的存在对系统管理员是致关重要的,系统管理员通过SNIFFER可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于SNIFFER系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。使用嗅探器进行网络管理主要体现在两个方面1使用网络嗅探技术进行网络故障诊断与分析通过网络嗅探技术收集到网络中传送的数据后对这些数据进行分析可以帮助解决在各种网络上的性能问题并排除网络故障,进一步可以产生报表等数据分析结果以更好的支持网络的运行。2使用网络嗅探技术进行安全分析通过对监听结果进行分析,可以及时发现各种危害网络安全的行为,维护网络的安全性。新的网络安全技术的研究方向正集中于网络嗅探技术上,这种方式隐蔽,不会对正常的网络传输造成任何影响,同时数据收集也十分丰富。通过网络嗅探技术实现审计跟踪、攻击检测等在网络安全问题上具有重要意义。3入侵检测系统与嗅探器31入侵检测概念建立入侵检测系统是网络安全的一个重要工作,通过学习,对入侵检测系统有了一定的了解,下面对入侵检测技术做一个总体介绍。入侵检测技术与防火墙、PKI等技术不同,防火墙、PKI只是立足于“防”,而入侵检测是对网络系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性和可用性。为了提高入侵检测系统(IDS)产品、组件及与其他安全产品之间的互操作性,美国国防高级研究计划署(DARPA)和互联网工程任务组(IETF)的入侵检测工作组(IDWG)发起制定了一系列建议草案,从体系结构、API、通信机制、语言格式等方面规范IDS的标准。DARPA提出的建议是公共入侵检测框架(CIDF),最早由加州大学戴维斯分校安全室主持起草工作。CIDF提出了一个通用模型,将入侵检测系统分成了四大模块事件产生器(EVENTGENERATORS),事件分析器(EVENTANALYZERS),响应单元(RESPONSEUNITS)和事件数据库(EVENTDATABASE)。各部分功能是1事件产生器获得数据并向IDS的其它模块提供;2事件分析器针对数据进行入侵分析;3响应单元对分析的结果作出不同的响应;4数据库存储以上三个模块收集及分析的各种数据。在检测的技术上,主要分为三类静态分析、异常检测、误用检测。1静态分析方法通过分析系统配置,检查系统是否已经或可能被人入侵。2异常检测方法通过历史数据定义用户正常活动的模型,当检测到与所建立的正常模型有差异的行为发生时,认为可能有入侵行为的发生。3误用检测方法通过分析已知的入侵模式,用事先定义的规则描述这些入侵模式,再通过这些已知的行为模式来检测当前网络中是否存在入侵行为。上述三种方法均建立在数据包捕获的基础上。32入侵检测的实现与嗅探器入侵检测的实现由四部分组成数据包嗅探解析部分、数据行为检测部分、算法部分和扫描检测部分。在这里以误用检测方法对入侵检测的实现做更详细的介绍。系统编写构架如图31所示显示模块入侵检测模块网络协议分析模块数据包捕获模块存储模块规则解析模块攻击特征图31入侵检测系统的架构由图31可以知道,在编写入侵检测系统时,需要遵循CIDF标准来进行系统的设计,首先通过数据包嗅探技术获得网络上流通的数据包;其次通过攻击特征库对嗅探到的数据包进行入侵行为的检测;再次对入侵数据包做出报警;最后将这些入侵事件纪录到数据库,便于查询和分析。321入侵检测的实现与嗅探器的关系数据包嗅探技术是实现入侵检测的基础,将数据包从共享网络线路中捕获,并将其提取到应用程序中,这个过程要依赖于网络物理层到应用层以及操作系统本身各方面进行协调、设置,下面通过实例来看一下以太网络中数据包的流程1物理层,在一个以太局域网,数据在共享的网络介质(网线、HUB)中以广播的形式到达局域网每一个节点;2数据链路层,节点的网络适配器(网卡NIC)查看到来的数据帧(FRAME),通过一系列的检验,将到来的大量的数据帧中属于自己且正确合法的数据帧重构成数据包(PACKET)送入操作系统的协议栈;3网络层至运输层,操作系统的协议栈通过这两层中的IP、TCP、UDP等协议判断到来的数据包是否属于本操作系统的接收范围(根据IP地址),是否属于本操作系统上的应用程序的接收范围(根据PORT端口号),如果所属范围正确并且数据包合法,操作系统通过端口将数据包重构成报文(SEGMENT)送入应用程序。322数据包嗅探技术在入侵检测系统中的应用为了嗅探到网络中的任意一个数据包,必须对物理线路、网卡、操作系统进行完全的配合,首先从网络构成上讲,嗅探技术并不是适合所有类型的网络,不同传输介质的网络的可监听性是不同的。一般来说,以太网被监听的可能性比较高,因为以太网是一个广播型的网络,在一个标准的以太网子网上,多台计算机通过一条线路互联,且任何时刻,电缆上只有一个数据包存在,为了保证多台计算机能共享同一线路,以太网使用了CSMA/CD(CARRIERSENSEMULTIPLEACCESS/COLLISIONDETECTION载波侦听多路访问/冲突检测,这样一来,共享线路上的所有以太网卡及相关设备总是处于对线路上的信号进行监听的状态中,这使得每一台机器都能够探知并接受线路上的数据流。事实证明嗅探适用于基于广播包的网络,如利用广播技术来分发数据包的连通网络(或者使用令牌的网络,只不过因为令牌不一定经过本机器,所以只能嗅探到网络中部分数据包)。此外如果在一个子网内部进行嗅探,而子网顶部存在着诸如交换机这类设备,由于它能够阻止广播,所以就不能够对子网内其他的机器进行监听,若想要对此子网进行监听,就必须处于与此交换机同级的包交换网络中。例如从路由器到某一子网的共享网络中安装一个HUB,在将监听机器和子网交换机用此HUB连接起来,这样,就能够对此子网进行监听了,另一种办法就是在交换机上给监听机器做端口映射,指明让它接受经过交换机的所有数据包。当数据经过数据链路层后,就要通过操作系统协议栈的审核了,系统协议栈在TCP/IP网络模型跨越的层次非常多,它们直接从位于系统的数据链路层提取数据,通过在这一层的开发环境中设置混杂模式,就可以成功的接收从驱动层来的各种数据包。大多数的操作系统在这一层使用的是SOCKET套接字技术,它们通过函数IOCTLSOCKETSOCKET,SIO_RCVALL,/16位源端口WORDDESTPORT/16位目的端口WORDLEN/16位长度WORDCHKSUM/16位校验和而TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,图44给出TCP数据段头的格式组成16位16位源端口目的端口顺序号确认号TCP头长(保留)7位URGACKPSHRSTSYNFIN窗口大小校验和紧急指针可选项(0或更多的32位字)数据(可选项)图44TCP数据段头格式对于此TCP数据段头的分析在编程实现中可通过数据结构TCPPACKETHEAD来定义STRUCTTCPPACKETHEADWORDSOURPORT/源端口WORDDESTPORT/目的端口DWORDSEQNO/32位序列号DWORDACKNO/32位确认号BYTEHLEN/4位首部长度BYTEFLAG/6位标志位WORDWNDSIZE/16位窗口大小WORDCHKSUM/16位校验和WORDURGPTR/16位紧急数据偏移量在网络层,还要给TCP数据包添加一个IP数据段头以组成IP数据报。IP数据段头格式如图45所示16位16位版本IHL服务类型总长标识标志分段偏移生命期协议头校验和源地址目的地址选项(0或更多)图45IP数据段头格式同样,在实际编程中也需要通过一个数据结构来表示此IP数据段头,下面给出此数据结构的定义TYPEDEFSTRUCT_IPHEADERUNSIGNEDCHARHEADER_LEN4/4位首部长度UNSIGNEDCHARVERSION4/4位版本号UNSIGNEDCHARTOS/8位服务类型UNSIGNEDSHORTTOTAL_LEN/16位总长度UNSIGNEDSHORTIDENT/16位标识符UNSIGNEDSHORTFLAGS/3位标志位UNSIGNEDCHARTTL/8位生存时间UNSIGNEDCHARPROTO/8位协议IP,TCP,UDPETCUNSIGNEDSHORTCHECKSUM/16位IP首部校验和UNSIGNEDINTSOURCEIP/32位源IP地址UNSIGNEDINTDESTIP/32位目的IP地址IPHEADER;43数据包捕获程序设计根据前面的设计思路,本文在WINDOWS平台下实现了一个嗅探器程序,开发工具使用VISUALC。下面就给出本设计的部分程序代码,该设计可以捕获到所有经过本地网卡的数据包,并可从中分析出协议、IP源地址、IP目标地址、TCP源端口号、TCP目标端口号等信息。在捕获数据包前,首先对原始套接字进行设置,代码如下VOIDCIPMONDLGONLOOKUPCHARSZERR50,SZHOSTNAMEMAX_PATHDWORDDWERRSOCKADDR_INSAGETHOSTNAMESZHOSTNAME,SIZEOFSZHOSTNAME/获取主机名M_IPHOSTSOURCEM_IPSOURCEM_IPCHECKEDHOSTNTOHLM_IPHOSTIF0M_THREADIDSETDLGITEMTEXTIDC_LOOKUP,“停止捕获“ELSEIFM_THREADIDPOSTTHREADMESSAGEM_THREADID,WM_CLOSE,0,0SETDLGITEMTEXTIDC_LOOKUP,“开始捕获“M_STARTENABLEWINDOWFALSERETURNDWORDDWBUFFERLEN10DWORDDWBUFFERINLEN1DWORDDWBYTESRETURNED0M_SSOCKETAF_INET,SOCK_RAW,IPPROTO_IP/建立原始套接字IFINVALID_SOCKETM_SDWERRWSAGETLASTERRORSPRINTFSZERR,“ERRORSOCKETLD“,DWERRAFXMESSAGEBOXSZERRCLOSESOCKETM_SRETURNINTRCVTIMEO5000/超时设置IFSETSOCKOPTM_S,SOL_SOCKET,SO_RCVTIMEO,CONSTCHARSPRINTFSZERR,“ERRORWSAIOCTLLD“,DWERRAFXMESSAGEBOXSZERRCLOSESOCKETM_SRETURN/填充SOCKADDR_IN结构的内容/SASIN_FAMILYAF_INET/INTERNET协议簇SASIN_PORTHTONS7000/SOCKET端口号(端口号可以随便改,但与系统不能冲突)SASIN_ADDRS_ADDRM_IPHOSTSOURCE/SOCKET本机地址IFBINDM_S,PSOCKADDRSPRINTFSZERR,“ERRORBINDLD“,DWERRAFXMESSAGEBOXSZERRCLOSESOCKETM_SRETURNIFSOCKET_ERRORWSAIOCTLM_S,SIO_RCVALL,ELSEDWERRWSAGETLASTERRORSPRINTFSZERR,“ERRORWSAIOCTLLD“,DWERRAFXMESSAGEBOXSZERRCLOSESOCKETM_SRETURN对SOCKET的工作模式进行设置,函数格式如下SETSOCKOPTINTNOPTIONNAME,CONSTVOIDLPOPTIONVALUE,INTNOPTIONLEN,INTNLEVELSOL_SOCKET。使用PHOSTGETHOSTBYNAMESZHOSTNAME获取本地IP地址把原始套接字M_S绑定到本地网卡地址上,具体格式如下BINDM_S,PSOCKADDRCHARBUF1000,BUFWORKMSGMSGINTIRETDWORDDWERRCHARPSOURCE,PDESTIPHEADERPIPHEADERIN_ADDRINACHARSZSOURCE16,SZDEST16,SZERR50CHARPLASTBUFNULLINTHDRLEN,TOTALLENWORDSOURPORT,DESTPORTSTRUCTTCPPACKETHEADPTCPHEADSTRUCTICMPPACKETHEADPICMPHEADSTRUCTUDPPACKETHEADPUDPHEADBYTEPDATANULLPEEKMESSAGEPDLGM_THREADIDGETCURRENTTHREADIDWHILETRUEIFPEEKMESSAGE/关闭套接字PDLGM_THREADID0PDLGM_STARTENABLEWINDOWTRUEBREAKMEMSETBUF,0,SIZEOFBUFIRETRECVPDLGM_S,BUF,SIZEOFBUF,0/接收数据44数据包的解析数据包被捕获后然后就可以根据前面对IP数据段头、TCP数据段头的结构描述而对捕获的数据包进行分析。这是嗅探器程序的一个重要的组成部分。如图46所示数据包捕获模块数据包包头分析调用SWITCH函数TCPUDPICMP图46数据包解析的简单流程图46所示为数据包的解析模块,该模块对捕获的数据包进行拆包分析,根据不同的协议类型分析其IP地址,数据包大小,端口号等,具体代码实现如下UINTTHREADFUNCLPVOIDPIRETRECVPDLGM_S,BUF,SIZEOFBUF,0/接收数据IFIRETSOCKET_ERRORDWERRWSAGETLASTERRORSPRINTFSZERR,“ERRORRECVLD“,DWERRCONTINUEELSEIFBUFBUFWORKBUFPIPHEADERIPHEADERBUFWORKWORDILENNTOHSPIPHEADERTOTAL_LENWHILETRUEIFILENSOURCEIPPSOURCEINET_NTOAINASTRCPYSZSOURCE,PSOURCE/得到源IP地址INAS_UNS_ADDRPIPHEADERDESTIPPDESTINET_NTOAINASTRCPYSZDEST,PDEST/得到目的IP地址CSTRINGSTR,STRPROTO,STRSOURPORT,STRDESTPORT,STRDATA,STRSIZESTRPROTOGET_PROTO_NAMEPIPHEADERPROTOHDRLENPIPHEADERHEADER_LENHDRLEN4TOTALLENNTOHSPIPHEADERTOTAL_LENTOTALLENHDRLENSWITCHPIPHEADERPROTO/分析包的类型CASEIPPROTO_ICMPPICMPHEADSTRUCTICMPPACKETHEADBUFHDRLENSTRSOURPORT“STRDESTPORT“PDATABYTEPICMPHEADICMP_HEAD_LENTOTALLENICMP_HEAD_LENBREAKCASEIPPROTO_TCPPTCPHEADSTRUCTTCPPACKETHEADBUFHDRLENSOURPORTNTOHSPTCPHEADSOURPORTDESTPORTNTOHSPTCPHEADDESTPORTSTRSOURPORTFORMAT“D“,SOURPORTSTRDESTPORTFORMAT“D“,DESTPORTHDRLENPTCPHEADHLEN4HDRLEN4PDATABYTEPTCPHEADHDRLENTOTALLENHDRLENBREAKCASEIPPROTO_UDPPUDPHEADSTRUCTUDPPACKETHEADBUFHDRLENSOURPORTNTOHSPUDPHEADSOURPORTDESTPORTNTOHSPUDPHEADDESTPORTSTRSOURPORTFORMAT“D“,SOURPORTSTRDESTPORTFORMAT“D“,DESTPORTPDATABYTEPUDPHEADUDP_HEAD_LENTOTALLENUDP_HEAD_LENBREAKIFPIPHEADERPROTOIPPROTO_ICMPSTRDATAFORMAT“TYPEDCODEDDATAS“,PICMPHEADTYPE,PICMPHEADCODE,PDATAELSESTRDATAFORMAT“S“,PDATASTRSIZEFORMAT“D“,TOTALLENPDLGADDDATASTRPROTO,SZSOURCE,STRSOURPORT,SZDEST,STRDESTPORT,STRSIZE,STRDATA45数据的显示在完成了数据包的捕获、分析后,我们使用ADDDATA函数,调用列表控件变量使分析结果显示在界面的列表中,结果输出代码如下VOIDCIPMONDLGADDDATACSTRINGS0,CSTRINGS1,CSTRINGS2,CSTRINGS3,CSTRINGS4,CSTRINGS5,CSTRINGS6INTINDEXINDEXM_CTRLISTINSERTITEM0,S0M_CTRLISTSETITEMINDEX,1,LVIF_TEXT,S1,0,0,0,0M_CTRLISTSETITEMINDEX,2,LVIF_TEXT,S2,0,0,0,0M_CTRLISTSETITEMINDEX,3,LVIF_TEXT,S3,0,0,0,0M_CTRLISTSETITEMINDEX,4,LVIF_TEXT,S4,0,0,0,0M_CTRLISTSETITEMINDEX,5,LVIF_TEXT,S5,0,0,0,0M_CTRLISTSETITEMINDEX,6,LVIF_TEXT,S6,0,0,0,0M_CTRLIST是与列表控件关联的一个变量,列表控件用于显示对数据包的分析结果。46嗅探器的测试网络嗅探器程序设计完成后,在WINDOWS平台下进行运行调试,修改错误,使其能完成捕获数据包和分析数据包的功能,并将解析结果在MFC界面显示出来,如图47所示图47分析结果在界面中的显示情况网络嗅探器能完成预期的要求,进行数据包截获、分析,显示出分析结果。由图47可以观察到捕获模块能够实现将网络接口设置为混杂模式,同时捕获局域网内的数据包,在这里还可以观察到网络状态及网络数据的流动情况,供网络分析之用。结论本次课题的主要研究内容是利用套接字开发网络嗅探器的程序设计,设计要求完成对流经本地网卡的所有数据包的捕获,分析协议类型,并根据不同的协议类型对数据包进行了进一步的分析,包括分析数据包的源IP地址、目的IP地址、源端口号、目的端口号、大小等。设计完成后经测试能实现预期要求的功能。但是仍然存在一些不足之处,例如1由于时间和所学知识有限,只对数据包作了简单分析,分析内容不是很全面;2本论文中的嗅探器适用于基于广播包的网络,而对于诸如交换机这类设备,由于它能够阻止广播,所以就不能够对子网内其他的机器进行监听,若想要对此子网进行监听,就必须处于与此交换机同级的包交换网络中。通过对该课题的研究,让我对嗅探技术有了进一步的了解,对其两面性在网络中产生的影响有了更深的认识,为了打破以上局限性,还需要结合已学知识对网络嗅探技术方面的知识作进一步的学习。参考文献1求是科技,王正军VISUALC60程序设计从入门到精通M北京人民邮电出版社,2006。2郑莉,董渊C语言程序设计(第二版)M北京清华大学出版社,2001。3张仕斌,谭三,易勇,蒋毅网络安全技术M北京清华大学出版社,2004。4刘志祥LINUX系统安全性研究及其新型SNIFFER设计与实现D南昌南昌大学硕士论文,2005。5李渤嗅探技术的研究与应用开发D北京中国地质大学硕士论文,2005。6刘胜斐多AGENT分布式入侵检测系统中通信机制和数据分析方法研究D江苏南开大学硕士论文,2004。7郝坤BP神经网络在网络入侵检测系统中的应用D南京南京理工大学硕士论文,2004。8孙晶艳面向校园网的网络监听技术研究D黑龙江哈尔滨工业大学硕士论文,2004。致谢本文是在赵攀老师和盛志伟老师的热情关心和指导下完成的,他们渊博的知识和严谨的治学态度使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢在论文完成过程中,本人还得到了张仕斌老师和陈伟同学的热心帮助,本人向他们表示深深的谢意最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢作者简介姓名郑莉性别女出生年月1985年1月民族汉EMAILZHENGLI131126COM声明本论文的工作是2007年2月至2007年6月在成都信息工程学院系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明作者签名年月日12VISAFREEPOLICYBRING

温馨提示

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

评论

0/150

提交评论