《信息管理与信息系统:网络协议仿真软件设计与实现分析研究.doc》由会员分享,可在线阅读,更多相关《信息管理与信息系统:网络协议仿真软件设计与实现分析研究.doc(61页珍藏版)》请在三一办公上搜索。
1、信息科学与技术学院毕业论文课题名称:网络协议仿真软件设计与实现分析研究学生姓名:xxxxxxxxxxxxxxxxxxxxxxxxxx学 院:信息科学与技术学院专业年级:信息管理与信息系统2009级指导教师:xxxxxx 讲师完成日期:二一三年四月 摘 要由于网络模型和协议的抽象性,即使专业人员对其理解也有很大困难。为了将抽象的难以理解的网络模型框架、协议原理、网络应用等专业知识,用易于理解的通俗易懂的形式将其理解。非专业的人员在使用网络协议仿真软件的同时可以对网络协议有基本的理解,有一定专业知识的人员更好的理解网络协议原理、掌握学习要领。本课题通过对网络抓包软件的实现,来详细深入的了解网络协议
2、如何工作,文中首先分析了抓包的原理和技术,并介绍了几种常见的抓包软件,然后研究了入侵检测系统中使用的包捕获技术,利用winpcap接字在windows平台下实现了一个网络抓包软件程序,具有对数据包进行拆包、解包等功能,最后通过动画演示生动形象的描述网络协议如何运行。关键词 网络抓包软件 数据包捕获 数据包分析 Winpcap27Network protocol emulation software design and implementationStudents:xxxxxxxxxxxInstructor:xxxxxxxxxAbstract As the network model and
3、agreement of the abstract, even to the professional understanding will have great difficulty. In order to bring the abstract to understand the network model of the framework agreement, principle, network application and other professional knowledge, in an understandable easy-to-read formats will be
4、the understanding. Casual personnel to use network protocol emulation software on the network at the same time can be a basic understanding of the agreement, have certain professional knowledge workers better understanding of network protocol principle, learning will bring.This topic through network
5、 caught software to realize, to a detailed understanding of how the network protocol, this paper first analyzes the principle and technology of caught, and introduces several common caught software, and then studied the intrusion detection system used in the packet capture technology, using winpcap
6、meet word in Windows the workbench implements a network caught a software program, has for packet for unpacking, solution package, and other functions, the last through the animation of vivid description network protocol how to run.Key words network sniffe ; capture data packet ; analyze data captur
7、e ; Winpcap目录第一章绪论11.1 课题背景11.2 课题研究的目的及意义11.3 任务书11.3.1 设计时间11.3.2 课题分工21.3.3 设计成果21.3.4 论文组织2第二章网络协议及协议仿真技术32.1 网络协议32.1.1 OSI七层参考模型32.1.2 TCP/IP参考模型32.1.3 OSI模型与TCP/IP模型的比较42.1.4 主要协议52.1.5 数据包在TCP/IP网络中的封装解封过程102.2 仿真技术简介112.3 反嗅探措施132.3.1 嗅探的检测132.3.2 嗅探的防御132.4 Windows下的网络嗅探及WinPcap研究132.4.1 W
8、inPcap简介132.4.2 WinPcap体系结构162.4.3 Windows下的网络嗅探192.4.4 基于WinPcap的包捕获过程21第三章需求分析与动画演示设计233.1 功能需求233.2 性能需求233.3 可行性分析243.4 动画演示设计24第四章详细设计284.1 开发环境284.2 系统功能模块图294.3 系统流程图304.4 详细设计314.4.1 界面实现314.4.2 选择网卡344.4.3 过滤规则344.4.4 数据包捕获364.4.5 数据包分析37第五章系统测试465.1编写目的465.2测试概要465.3对软件功能的评价49第六章开发总结51致谢53
9、石河子大学学士学位论文 第一章 绪论第一章 绪论1.1 课题背景近年来,数据通信网络无论就其物理的规模还是应用范围来讲,都获得了巨大的发展。Internet上不断地有新的需求出现,人们开发新的协议和算法来满足这些变化的需求。这种需求的例子包括服务质量支持、组播传输、安全性、移动组网和策略管理。对这些领域的协议和算法的开发和评价要求人们回答很多设计上的问题。由于网络协议是抽象的,很多学生不易理解,所以用仿真软件的设计与实现来了解网络协议。本论文采用了WinPcap驱动对链路层数据帧进行高效捕获,并针对四种具体协议ARP、IP、TCP、UDP进行协议分析。借助WinPcap来研究Windows平台
10、下的网络协议仿真技术是具有现实意义的,这不仅能促进网络嗅探系统的改进和发展,还能促进WinPcap本身的发展。在本论文的程序开发过程中涉及到较多方面,如协议分析,MFC编程,及对WinPcap驱动框架的理解,这些工作在很大程度上加深了自己对网络协议应用的理解。本课题主要通过对数据包的抓捕与分析机制进行研究, 参考了大量有关抓捕数据包的专业文献,由此了解国内以及国际上主要的抓捕分析数据包的技术方法,并通过制作一个共享环境下的的数据抓包软件的具体实现以对该机制进行深一步的了解。1.2 课题研究的目的及意义网络协议具有抽象、难以理解等特点,学生在学习计算机网络相关课程时总感到协议难懂、不具体。设计一
11、个网络协议仿真软件可形象的将网络协议的运行原理和过程演示出来,学生对网络原理理解就会更深、学习的进度也会加快。由于网络模型和协议的抽象性,即使专业人员对其理解也有很大困难。为了将抽象的难以理解的网络模型框架、协议原理、网络应用等专业知识,用易于理解的通俗易懂的形式将其理解。非专业的人员在使用网络协议仿真软件的同时可以对网络协议有基本的理解,有一定专业知识的人员更好的理解网络协议原理、掌握学习要领。1.3 任务书1.3.1 设计时间(1)第1-3周 搜集相关文献文档(2)第4周 系统功能模块分析(3)第5周 系统技术实现分析 (4)第6-13周 程序编写,系统调试,相关文档的撰写(5)第14周
12、完善系统和对论文的撰写(6)第15周 准备预审和相关毕业答辩文档(7)第16周 终期答辩 总计16周1.3.2 课题分工徐婷:开题报告、文献综述、论文初稿搜集整理相关文献资料、需求分析、系统测试饶冬冬:功能模块的分析和设计、动画演示制作、系统调试修改共同合作:结构设计、整体模块设计、系统编写实现1.3.3 设计成果毕业设计相关文献及成果清单包括:可执行软件一份开题报告文献综述用户手册石河子大学信息科学与技术学院2012毕业设计论文1.3.4 论文组织下面是本论文的章节组织:第一章:绪论,概括介绍了论文的研究背景、研究目的及意义。第二章:网络协议及协议仿真技术,系统介绍网络协议框架结构,每层的相
13、关的协议,以及协议仿真技术的知识,包括嗅探的原理,以及一些反嗅探的方法。研究分析网络TCP/IP协议,并对本嗅探器基于的 WinPcap的框架体系进行深入地研究。第三章:需求分析与可行性分析,动画演示设计。 第四章:主要是网络数据包捕获工具实现的详细步骤及设计,主要分为界面,网卡选择模块、数据包过滤模块、数据包捕获模块和数据包分析模块。第五章:对本文所构建的数据包嗅探器进行测试,实验证明系统达到了预期的设计目标。第六章:总结了本论文的主要工作。石河子大学学士学位论文 第二章 网络协议及协议仿真技术第二章 网络协议及协议仿真技术 2.1 网络协议2.1.1 OSI七层参考模型要使两台计算机进行通
14、信,必须让它们使用同一种“语言”,通信协议就是两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的规则,精确地定义了计算机在相互通信过程中的所有细节。我们利用一个共同遵守的通信协议,从而使Intemet成为一个允许连接不同类型的计算机和不同操作系统的网络。例如,协议规定了每台计算机发送报文的格式和每个字段的含义,还规定了在各种情况下计算机应该做出什么反应,以避免差错从而达到最好的通信效果。在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型6,它是一种抽象的包含七层通信协议的参考模型,其中每一层执行某一规定的
15、任务,每层之间都有相应的接口,除了第一层和第七层外,每一层即使用下层提供的服务,又给上层提供服务,也就是说它即是服务的享有者,又是服务的提供者。这种设计模型可以简化协议开发过程中的难度,每一层只需做好该层的工作并提供好向上的接口即可,在保证每一层实现效率的前提下,具体怎么实现要根据具体情况来确定。该模型的目的是使各种硬件在相同的层次上相互通信,表21表示了OSI七层参考模型。表2-1 OSI七层参考模型应用层表示层会话层传输层网络层数据链路层物理层按照OSI开放系统互联参考模型的观点,可将网络系统划分为7层结构,每一个层次上运行着不同的协议和服务,并且上下层之间互相配合,完成网络数据交换的功能
16、。然而,OSI模型仅仅是一个参考模型,并不是实际网络中应用的模型。实际上应用最广泛的商用网络模型是TCP/IP网络参考模型,将网络划分为四层,每一个层次上运行着不同的协议和服务4。2.1.2 TCP/IP参考模型TCP/IP参考模型被称作因特网分层模型、因特网参考模型(Intemet Reference Model),表2-2表示了TCP/IP分层模型的四层。TCP/IP协议被设计成四个层次,其中应用层对应于OSI模型中的应用层、会话层、表示层,传输层和网络层分别对应OSI中的相应层,网络接口层对应于OSI中的数据链路层和物理层。TCP/IP分层模型的四个协议层分别完成以下的功能5:第一层网络
17、接口层:网络接口层包括用于协作IP数据在已有网络介质上传输的协议。它对实际的网络媒体进行管理,定义了将资料组成正确帧的规则和在网络中传输帧的规则,定义如何使用实际网络如以太网Ethemet等来传送数据。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(ARP-Address Resolution Protocol)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。表2-2 TCP/IP参考模型应用层DINS、FTP、HTTP、TELNET、SMTP、USENET、FINGER、WHOIS、GOPHER、IRC、其他传输层 TCP
18、 UDP网络层ICMP IP网络接口层ARP/RARP 其他协议第二层网络层:负责提供基本的数据封包路由功能,让每一个数据包都能够到达目的主机,但不检查是否被正确接收,如网际协议IP。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网问控制报文协议(ICMP Intemet Control Message Protocol)用来提供网络诊断信息。第三层传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接,提供两种端到端的通信服务。其中TCP协议(Transmission Control
19、Protocol)提供可靠的数据流传输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。第四层应用层:因特网的应用层协议包括FTP(文件传输协议)、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。2.1.3 OSI模型与TCP/IP模型的比较与OSI参考模型不同,TCP/IP协议并不完全符合OSI的七层参考模型,如表2-3所示。TCP/IP参考模型更侧重于互联设备间的数据传送,更注重实用性,而不是严格的功能层次划分。OSI参考模型在解释互联网络通信原理上比较
20、适合,TCP/IP在实用性上面比较好,因而成为了互联网络协议的市场标准。TCP/IP参考模型是在它所解释的协议出现很久以后才发展起来的,并吸取了OSI模型的经验和教训,比OSI模型更灵活,这也是TCP/IP协议之所以流行的原因。表2-3 OSI模型与TCP/IP模型的比较OSI参考模型OSI层号TCP/IP参考模型应用层7应用层表示层6会话层5传输层4传输层网络层3网络层数据链路层2网络接口层物理层12.1.4 主要协议1) IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UD
21、P层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的
22、,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。IP数据报格式,如图2-1所示:图2-1 IP数据报格式版本:4位,标识IP版本号。目前有IPv4、IPv6。我们目前所用的IP协议基本都是IPv4版本。首部长度:4位,度指的是首部占32bit字的数目,包括任何选项。由图3-1可知首部所占字节数为(4+4+8+16+16+3+13+8+8+16+32+32+0)160bit,正好是32bit的5倍,所以首部长度最小为5。如果选项字段有其它数据,则这个值会大于5。由上面也可知
23、IP首部最小长度为20字节,最大长度为(2的4次方-1)*32/860字节。服务类型:8位,其中:优先权:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)-7(网络控制)。TOS:4位,分别表示最小延时、最大吞吐量、最高可靠性、最小费用。如果4位TOS子字段均为0,那么就意味着是一般服务。未使用:1位,必须置0。总长度:16位,总长度指首部和数据之和的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。标识:16位,唯一地标识主机发送的每一份数据报。通常每发送一份报
24、文它的值就会加1。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。在分片和重组技术中将会用到。标志:3位,但目前只有2位有意义。标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报;MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为DF(Dont Fra
25、gment),意思是“不能分片”。只有当DF=0时才允许分片,具体定义如下:保留位: 1位 ;DF字段:1位,取值:0(允许数据报分段)、1(数据报不能分段);MF字段:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)。片偏移:13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置,也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位,这就是说,每个分片的长度一定是8字节(64位)的整数倍。生存时间:8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段,
26、其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。一般可以理解为经过路由器的最大数目。协议:8位。协议字段指出此数据报携带的数据是使用何种协议(上层协议),以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。协议可包括TCP、UDP、TELNET等,1=ICMP,6=TCP,17=UDP。首部校验和:16位,首部检验和字段是根据IP首部计算的检验和码,它不对首部后面的数据进行
27、计算。ICMP,UDP,TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。为了计算一份数据报的IP检验和,首先把检验和字段置为0,然后对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1,如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报,但是不生成差错报文,由上层去发现丢失的数据报并进行重传。源IP地址:32位,发送IP
28、的主机地址。目的IP地址:32位,数据发往的IP主机地址。2) TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS
29、在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。TCP数据被封装在一个IP数据报中,如图2-2所示:图2-2 TCP数据在IP数据报中的封装图2-3显示TCP首部的数据格式。如果不计任选字段,它通常是20个字节。图2-3 TCP包首部3) UDPUDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗T
30、CP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。UDP是一个简单的面向数据报的运输层协议,进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP数据报格式有首部和数据两个部分,如图2-4:图2-4 UDP数据报格式首部很简单,共8字节,如图2-5:图2-5 UDP首部包括:源端口(Source Port):2字节,源端口号。目的端口(Destination Port ):2字节,目的端口号。长度(Length):2字节,UDP用户数据报的总长度,以字节为单位。检验和(Chec
31、ksum):2字节,用于校验UDP数据报的数字段和包含UDP数据报首部的“伪首部”。尽管UDP校验和的基本计算方法与IP首部校验和的计算方法类似(16bit字的二进制反码和),但是它们之间存在不同的地方,UDP数据报长度可以为奇数字节,但是校验和的算法是把若干个16bit字相加。解决方法是必要时在最后增加填充字节0,这只是为了校验和的计算(也就是说,可能增加的填充字节不被传送)。UDP数据报和TCP段都包含一个12字节长的伪首部,它是为了计算校验和而设置的。伪首部包含IP首部一些字段,其目的是让UDP两次检查数据是否已经正确到达目的地(例如,IP有没有接受地址不是本主机的数据报,以及IP有没有
32、把应传给另一高层的数据报传送给UDP)。UDP数据报中的伪首部格式如图2-6所示:图2-6 UDP数据报的伪首部格式4) ICMPICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。IP协议提供的是面向无连接的服务,不存在关于网络连接的建立和维护过程,也不包括流量控制与差错控制功能,但需要对网络的状态有一些了解,因此在网际层提供了因特网控制消息协议(Internet control message protocol,简称ICMP)来检测网络,包括路由、拥塞、服务质量等问题。在网络中,ICMP报文将作为IP层数据报的数据,封装在IP数据报中进行传输
33、,如图2-7所示,但ICMP并不是高层协议,而仍被视为网络层协议。图2-7 ICMP数据在IP数据报中的封装ICMP报文的类型很多,且各自又有各自的代码,因此,ICMP并没有一个统一的报文格式,不同的ICMP类别分别有不同的报文字段。ICMP报文只是在前4个字节有统一的格式,共有类型、代码和校验和3个字段。如图2-8所示。图2-8 ICMP报文的格式其中类型字段表示ICMP报文的类型;代码字段是为了进一步区分某种类型的几种不同情况;校验和字段用来检验整个ICMP报文,接着的4个字节的内容与ICMP的类型有关,再后面是数据字段,其长度取决于ICMP的类型。5) TCP和UDP的端口结构TCP和U
34、DP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。2.1.5 数据包在TCP/IP网络中的封装解封过程数据在网络中传输时要经过封装和解封的过程,这是两个正好相反的过程,一个组包,一个解包,下面是数据包在网络中封装的过程:首先,计算机生成用户数据,数据经过应用层后,被加上应用层协议的首部,然后传递到传输层变成了传输层的数据单元,传输层把收到的大的报文分割成小的包,
35、再给每一个包加上这一层的报文头,如TCP头或者UDP头,形成新的数据单元然后再交给网络层,网络层又在各个数据包上加上自己的IP头部,包括源IP及目的IP,以方便路由,这样就到了网络接口层,这一层给到来的数据加上链路层的头部和尾部,此处是以太网头部和尾部,最后形成比特流传输到线路上。包的封装过程如图2-9所示:当数据到达网络另一端的计算机时,又经过相反的解包过程:首先,数据链路层接收到从另一端计算机发过来的数据帧,并由链路层的协议来读取数据帧的内容,对于以太网的数据链路层帧其中有一个字段是标志上层协议的,此处我们假设是IP协议,链路层协议会把以太网首部和尾部都去掉,然后把数据交给上层的网络层,数
36、据经过网络层的处理去掉IP首部后交给相应的上层协议TCP或UDP去处理,同样道理,TCP或UDP协议经过对数据的处理后去掉TCP或UDP头部,又把数据交给应用层去处理,最终还原成用户数据,这就是数据进入协议栈时的解封过程,如图2-10所示:图 2-9 数据进入协议栈时的封装过程图 2-10 数据进入协议栈时的解封过程数据在协议栈里面的封装与解封的原理是网络数据包捕获和进行协议分析的基础,本论文所构建的数据包嗅探器就运用了上述的封装解封原理,并对所捕获的数据包以协议树的形式来显示包内所包含的协议层次结构,另外,本论文最高只是涉及到传输层的TCP和UDP协议的解析,考虑到因特网应用层协议的繁多,并
37、且有可能涉及到加密与解密等一系列的问题,如果要对应用层协议进行支持,必须首先去了解掌握这种协议,然后加入相应的应用层协议解析模块,由于涉及到众多问题,所以本论文目前并不支持应用层协议的解析,将留待下一步继续研究。2.2 仿真技术简介本课题做的网络协议仿真软件实际是嗅探器,嗅探器是指运行在TCP/IP协议、以太网协议、IPX协议或者其他协议的网络上,可以获取网络信息流的软件或硬件,硬件形式的Sniffer称为网络分析仪,一般都是商业性的,价格也比较贵。软件形式的Sniffer有很多,其优点是价格便宜,易于学习使用,缺点是无法抓取网络上所有的传输,某些情况下也就无法真正了解网络的运行情况23。现在
38、的嗅探器一般都是指软件意义上的,而不是硬件意义上的,软件嗅探器成本要比硬件嗅探器低得多,并且使用方便,但是在性能方面会比硬件嗅探器差,后者一般是用在要求比较高的地方。通过对国内外的文献调研发现,网络嗅探中的数据包捕获主要可以分两种方式1,一种是基于操作系统内核的,如Unix、Linux系统,它们系统内核本身就提供包捕获机制;第二种就是基于外界提供的驱动程序库,如Unix下的Libpcap和Windows下的WinPcap。由操作系统内核提供的捕获机制主要有以下四种:BPF(Berkeley Packet Filter),DLPI(Data Link Provider Interface),NI
39、T(Network Interface Tap),SOCK_PACKET套接口。其中BPF由基于BSD的Unix系统内核所实现,而DLPI是Solaris系统的子系统,对于NIT则是SunOS 4系统的一部分,但在Solaris系统中已经被DLPI取代,Linux系统内核则实现了SOCK_PACKET的包捕获机制。从性能上看,BPF比DLPI及NIT效率要高的多,而SOCK_PACKET最差。嗅探器是网络管理员用来管理网络的一种工具,通过嗅探器可监视网络的状态、数据流动情况以及网络上传输的信息等。但是黑客们也常通过嗅探器对网络进行攻击,网络嗅探技术在给管理员带来方便的同时,对网络信息安全也构成
40、了潜在的威胁。一台计算机和其他计算机进行通讯,一般都需要安装一块网卡,嗅探器要想工作,首先要有网卡的支持,由网卡来负责接收和发送网络数据。每块网卡在出厂时都有一个全球唯一的48bit长的MAC地址,这样就保证了网卡地址的唯一性。在以太网上,数据是以很小的称为帧(Frame)的单位传输的,一个数据帧有以下几部分组成,如表2-4。(1)目的MAC地址(2)源MAC地址(3)0800(表示承载的IPv4)(4)IP头(5)TCP头或UDP头(6)数据(7)校验和。表2-4 数据链路层帧格式目的MAC地址源MAC地址0800(表示承载的IPv4)IP头TCP头或UDP头数据校验和计算机所直接传送的数据
41、是大量的二进制数据即比特流,在数据链路层被称为帧。数据发送和接收的过程是:计算机发送数据时,数据从应用层向物理层向下传递,此过程不断加上每一层的头部,逐步包装成链路层数据帧,然后通过网卡发送到线路上,到达目的计算机后,再执行相反的解包过程,最终把数据交给应用层协议处理,还原成真实数据。对于一个嗅探器来说,也必须使用特定的网络协议如TCP协议来分解嗅探到的数据,这就要求嗅探器本身提供对这种协议的解码支持,只有这样才能够进行正确的解码看到数据包里面的数据。另外,嗅探器一般是部署到网络系统的关键位置如路由器和服务器上面的。网络嗅探在局域网中的应用比较广泛,按照嗅探环境的不同,可以分为共享式网络嗅探和
42、交换式网络嗅探。前者相对发展较早,只要将网卡设置为混杂模式,并辅以相应的捕获程序即可达到嗅探的目的。随着交换机的普及,交换式网络嗅探也有了一定的发展。交换式网络嗅探区别于共享式网络嗅探的地方是它主要利用交换网工作机制中的漏洞来实现。知道了嗅探器的工作原理,我们应该认识到嗅探器并不是专为网络攻击入侵而开发的,其实一些网络诊断命令就属于嗅探器的范畴,利用嗅探器可以帮助我们检查底层传输数据封包的能力,对网络进行诊断。2.3 反嗅探措施2.3.1 嗅探的检测嗅探作为一种重要的网络安全技术手段,应得到网络安全人员的充分认识。由于共享式以太网中的监听原理非常简单,而且又不干扰正常的网络通信,所以发生在其中
43、的嗅探行为很难被发现。同时,随着交换式局域网的流行,网络监听也已经出现在交换式局域网中,因此,如何有效地检测和发现局域网中的嗅探行为并进行相应的防范己成为维护局域网安全非常重要的环节。尽管网络嗅探比较隐蔽不易被发觉,但仍然可以采用以下几种方法加以防范。(1)采用加密手段对传输的数据进行加密,以密文形式传输,即使入侵者监听到了传输的数据包信息,也不能立刻理解其中的含义,还需要再进一步的破解,自然增加了监听的难度。例如Telnet、FTP等采用SSH2进行传输数据,它是提供端到端的验证与加密的应用层安全通信协议,是目前国际互联网上最好的安全通信协议之一。(2)在重要的终端机器上使用静态的ARP表,
44、把本局域网内所有网卡的IPMAC地址记录下来,建立IPMAC数据库,以便以后使用。(3)对网络进行分割。网络广播数据的时候,数据包只能被同一网络地址段内的嗅探器捕获,所以可以利用网络分割的技术把网络进一步划分为小的局域网,缩小嗅探器的嗅探范围,这样就能保证网络其他部分的安全。2.3.2 嗅探的防御虽然绝对安静的嗅探器在理论上无法发现,但是根据嗅探器在工作中对主机系统或网络通讯的影响,也可从中判断其是否存在。具体可从以下几个方面入手:(1)网卡工作模式(2)网络流量分析(3)系统资源分析(4)引诱策略网络嗅探的防御相对网络嗅探的实现难度要大得多,目前大多数反监听工具主要采用DNS检测、ARP检测
45、等方法,而这些方法本身都存在不少缺陷,它们都依赖于目标主机发出DNS反向查询、ARP应答包,而很多优秀的嗅探器在运行时会阻止本机发出以上所说的数据包,从而使基于以上原理检测的反嗅探工具都会失效。对于一些恶意嗅探,目前还没有一个一劳永逸的方法,在综合应用上述方法的同时,还应不断提高网络管理人员的安全意识,做到多注意、勤检查。2.4 Windows下的网络嗅探及WinPcap研究2.4.1 WinPcap简介本章作为论文的关键部分之一将会做以下几方面的研究:首先是WinPcap框架的组成部分、WinPcap的新特性与优势,接下来会重点分析WinPcap的体系结构,然后对比Windows与Unix下
46、的网络嗅探和数据包捕获机制,研究WindOWS下的嗅探的底层基础NDIS网络驱动器接口规范,最后总结了基于Windows的数据包捕获方案,得出了基于WinPcap数据包捕获的一般过程。通过本章对WinPcap驱动的研究分析,深刻理解了WinPcap本身的运行机制,为更合理和高效的运用WinPcap编程奠定了基础。WinPcap是由意大利的Fulvio Risso和Loris Degioanni等人实现的应用于Win32平台数据包捕获与分析的一种驱动软件包,并提供了在Windows操作系统下的开放源代码,是一套高性能API封装库,有一套标准的抓包接口专门用于网络数据包的截获,并在其基础上增加了自
47、定义数据包的发送能力以及针对Win32平台的扩展函数,独立于Windows操作系统的协议栈。不同版本的Windows系统都有自己的内核模块和用户层模块,所以使用Windows SDK开发的嗅探程序在不同的Windows操作系统版本下需重新进行编译。WinPcap为Win32平台提供了一个公共的接口Packet.dll,使得程序可以运行在不同版本的Windows 平台上,而无需重新编译。另外,WinPcap的标准抓包接口与Libpcap兼容,使系统便于向Unix/Linux平台移植。WinPcap的主要功能在于独立于主机协议如TCP-IP协议发送和接收原始数据包,也就是说,WinPcap不能阻塞、过滤或控制其他应用程序对数据报的收发,它只是绕过系统原有的协议栈监听网络上传送的数据包。因此,它不能用于QoS(Quality o