[计算机硬件及网络]基于协议分析的网络监测系统研究与实现论文.doc_第1页
[计算机硬件及网络]基于协议分析的网络监测系统研究与实现论文.doc_第2页
[计算机硬件及网络]基于协议分析的网络监测系统研究与实现论文.doc_第3页
[计算机硬件及网络]基于协议分析的网络监测系统研究与实现论文.doc_第4页
[计算机硬件及网络]基于协议分析的网络监测系统研究与实现论文.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

XXXX大学2012届毕业论文(设计)XXXXX大学本科生毕业论文论文题目:基于协议分析的网络监测系统研究与实现学生姓名: XXXX 学 号: 20085548 学 院: 理工学院 专业方向: 计算机科学与技术 指导教师: XXXX 论文完成日期: 2012年6月5日 毕业论文声明书本人声明:本人所提交的毕业论文基于协议分析的网络监测系统研究与实现是本人独立研究、写作的成果,如有剽窃、抄袭他人成果,责任自负。论文作者: XXX (签字) 时间:2012年 06月 05日毕业论文版权使用授权书本毕业论文基于协议分析的网络监测系统研究与实现是本人在校期间所完成学业的组成部分,是在指导教师的指导下独立完成的,因此,本人特授权山东中医药大学将本毕业论文的全部或部分内容编入山东中医药大学本科生优秀毕业论文集(非正式出版)。论文作者: XXX (签字) 时间:2012年 06月 05日指导教师: (签字) 时间: 年 月 日基于协议分析的网络监测系统的设计与实现作者:XXXXXXXX大学理工学院2008级计算机科学与技术专业指导教师:XXX摘 要网络抓包和分析技术是很多网络安全软件实现的基础,也是设计网络分析软件的基础,现有的一些技术如防火墙、协议分析等软件的实现都是以数据包的嗅探捕获为前提的,所以研究相关的数据包捕获和分析技术对保证网络的安全运行是很有现实意义的。本文对Windows下基于WinPcap的网络监测与协议分析技术进行了深入的研究,详细的研究了WinPcap的框架,得出了基于WinPcap驱动开发的一般过程,最后实现了一个数据包捕获解析器CapturePacket。程序中网络监听的目标是TCP/IP协议中的ARP、IP、TCP、UDP甲种协议,以Windows XP操作系统为平台,在Visual C+环境下使用WinPcap驱动从TCP/IP协议栈的数据链路层捕获原始数据包,并从中提取出以上四种协议及数据包的数据。通过在实际环境中测试,证明了本系统可以比较高效地监听到和所设定的过滤条件一致的数据包,并显示每个包的协议、源IP地址、目的IP地址、数据包长和包内的数据等内容,可以帮助网络管理员分析网络数据,具有一定的实用价值,主要表现在以下几个方面:(1)首先实现了对本机上所有网卡的自由选择。(2)实现了自定义包过滤规则,可以同时绑定主机、协议和端口,能有针对性地监听某些类型的数据包,并且能以协议树的形式显示协议的层次。(3)以太网链路层帧的截获和分析,并实现对ARP、IP、TCP、UDP四种协议的支持。(4)实现对捕获数据的十六进制及ASCII码显示。关键词:数据包捕获;WinPcap;协议分析;TCP/IP协议; VC+6.0ABSTRACTThe technology of network Sniffer and Analysis is the base of many network safety softwares, and it is also the base of network Analysis. Some of the existing technologies such as firewall, protocol analysis software packet sniffer to capture the premise, so relevant to the study packet capture and analysis techniques to ensure the safe operation of the network is of great significance.On Windows, the WinPcap-based network monitor and protocol analyzer technology in-depth study, a detailed study of the WinPcap framework, come to a general process of development based on the WinPcap driver, and finally to achieve a packet capture parser CapturePacket. Program network listeners goal is to ARP in TCP / IP protocol, the IP, the TCP, the UDP Type A agreement, the Windows XP operating system platform, the Visual C + + environment using the WinPcap driver from the TCP / IP protocol stack, the data link layer to capture the original packet, and extracted from the above four protocols and packet data.Proved by testing in a real environment, This system can be efficiently monitored and set the filter conditions of the packet, and displays the protocol of each packet, the source IP address, destination IP address, packet length and packet data and other content that can help network administrators to analyze network data has a certain practical value, mainly in the following areas: (1) First, to achieve freedom of choice on all NICs on the machine. (2) to achieve a custom packet filtering rules, you can also bind to the host, protocol and port can monitor certain types of packets and can show the level of agreement in the form of a protocol tree. (3) of the Ethernet link layer frames interception and analysis, and support of the four protocols ARP, IP, TCP, UDP, (4) to achieve the capture of data in hexadecimal and ASCII code display.Key words:The capture of packets; WinPcap; protocol; TCP/IP protocols目 录摘 要3ABSTRACT3一、前言61.1研究背景61.2国内外现状71.3研究目的与意义7二、设计理论依据82.1网络协议TCP/IP82.1.1OSI模型简介82.1.2TCP/IP参考模型92.1.3数据包在TCP/IP网络中的封装与解封过程112.2网络监听(嗅探)技术132.2.1在局域网实现网络监听的基本原理142.2.2监听的实施152.3数据捕获技术152.3.1网络数据捕获原理152.3.2网络数据捕获程序结构162.3.3网卡的工作模式172.3.4基于Windows的数据包捕获方案182.4协议分析技术182.4.1网络协议分析182.4.2协议的数据段格式19三、系统设计与实现213.1WinPcap213.1.1WinPcap简介213.1.2WinPcap基本原理223.2系统开发环境243.3系统实现界面243.3.1网卡选择界面243.3.2系统主界面253.4系统数据包捕获流程设计263.5系统详细设计273.5.1网卡捕获模块273.5.2数据包过滤模块303.5.3数据包捕获模块313.5.4协议分析32四、系统测试与结果显示394.1测试环境394.2程序运行测试394.2.1界面运行394.2.2包过滤规则测试394.2.3数据管理测试40五、总结与展望425.1总结425.2展望43参考文献43一、前言本章概要性的介绍了论文的研究背景、国内外发展现状以及当前所遇到的一些问题并简要的介绍了网络数据包嗅探技术,综述了本论文的研究目的、方法和意义。1.1研究背景随着计算机网络技术的快速发展,网络己成为人们生活中的必备工具,计算机网络在政治、经济、军事、社会生活等各个领域正发挥着日益重要的作用,人们对计算机网络的依赖也大增强,一些网络新业务如电子商务、移动支付等,这些都对网络安全提出了较高的要求。但是由于计算机网络具有连接形式多样性、开放性、互联性等特点,而且多数都采用TCP/IP协议,而TCP/IP在设计上力求运行效率,并建立在相互信任的基础上,其本身就是造成网络不安全的主要因素,这也是TCP/IP协议在设计上的缺陷,从而导致针对网络系统的攻击事件频繁发生,所以网络安全已成为网络建设的一个非常重要的方面。据统计,截至2012年1月份,我国网民总数已突破5亿人,居世界第一位,由此带来的网络安全问题日益突出,安全形势不容乐观。所以当我们在享受网络所带来的方便和快捷的同时,也要认识到网络安全所面临的严峻考验。对于网络安全来说,网络监听(嗅探)是一把双刃剑,它原本是提供给网络管理员的一种网络安全工具,用来网络状态、查看网络上的数据流动情况、分析网络上传输的信息以及定位网络故障等。但是,随着网络技术的快速发展与逐渐普及,网络监听更多的被一些怀有恶意的人作为截获网络数据、非法获取用户账号和密码等机密信息的手段。网络监听和数据包捕获技术在给管理员带来方便的同时,对网络信息安全也潜在地构成了威胁。1.2国内外现状通过对国内外文献的研读发现,网络嗅探中的数据包捕获主要有两种方式,一种是基于操作系统内核的,如Unix、Linux系统,它们系统内核本身就提供包捕获机制;第二种就是基于外界提供的驱动程序库,如Unix系统下的Libpcap和Windows下的WinPcap。由操作系统内核提供的捕获机制主要有以下四种:BPF(Berkeley Packet Filter),DLPI(Data Link Provider Interface),NIT(Network Interface Tap),SOCK_PACKET套接口。其中BPF由基于BSD的Unix系统内核所实现,Linux系统内核则实现了SOCK_PACKET的包捕获机制。从性能上看,BPF比DLPI及NIT效率要高的多,而SOCK_PACKET最差。WinPcap是一个基于Win32的开源的包捕获驱动架构,它弥补了Windows系统内核提供很少包捕获接口的劣势,可以直接捕获到链路层的数据帧。基于WinPcap开发的监听程序具有很好的移植性,可以很容易的移植到Unix系统上,所以在Windows系统上基于WinPcap来开发网络监测软件的一种很选择。网络监听(嗅探)技术的出现已经有较长一段时间了,因为Unix类系统内核提供了对网络嗅探很好的支持,而Windows内核却没有,导致Unix类系统下的网络嗅探产品比Windows下的多。现在已经有一些Unix下的嗅探器被移植到了Windows下,目前比较流行的网络嗅探器有:Tcpdump、Windump、Sniffit、Dsniff、Sniffer Pro、Ettercp、LinSniffer,Ngrep、ESniffer、Ethereal(WireShark)等网络监听工具。以上所列举的嗅探器都各有侧重点并且有些Windows下的嗅探器是基于命令行方式的,没有比较方便的图形用户界面,相对来说也比较专业,不适合一般用户使用。而现在有了WinPcap驱动开发工具包的支持,使在Windows下开发网络监测程序方便了很多,并且网络监听分析工具对于网络安全也起到越来越大的作用,所以开发Windows下适用于普通用户及企业用户的基于图形用户界面的网络监测工具是很有现实意义的,基于以上原因提出了选择了本课题。1.3研究目的与意义计算机网络的飞速发展,在其上开展了多种Internet服务和应用,并且新的Internet应用和技术不断产生。在这种情况下,对校园网或企业网用户上网行为的监测变得越来越重要。网络监听和分析技术是很多网络安全技术实现的基础,也是实现网络入侵的核心手段,同时是设计网络分析软件的基础,现有的一些技术如防火墙、入侵监测、安全扫描、协议分析等的实现都是以数据包的嗅探捕获为前提的,通过深入的分析捕获的数据包,可以得到网络中的数据流量,观察网络的状态及网络上传输的信息等,这样就可以分析网络的性能及排除网络故障。所以研究相关的网络监听、数据包捕获技术和协议分析技术对保证网络的安全运行是很有现实意义的。网络监听(嗅探)技术是一种在对方未察觉的情况下,捕获其通信报文的技术。因为以太网采用广播方式,所以在某个以太网中可以监听到所有的数据包。对于在网络上流动的数据包黑客和网络管理员都非常感兴趣,因为他们都要对这些数据包进行监测。虽然这些监听(嗅探)软件可能被黑客利用,但是我们不能因为这个原因就不去研究网络监测和分析技术,我们可以利用这些技术对黑客入侵活动及其它网络犯罪行为进行调查取证。本论文采用了WinPcap驱动对链路层数据帧进行捕获,并针对TCP、UDP、ARP、IP进行协议分析。借助WinPcap来研究Windows平台下的网络监听技术是具有现实意义,这不仅能促进网络监测系统的改进和发展,还能促进WinPcap本身的发展。在本论文的程序开发过程中涉及到较多方面,如协议分析,MFC编程,对WinPcap驱动框架的理解,这些工作在很大程序上加深了自己对网络安全的理解。二、设计理论依据2.1网络协议TCP/IPTCP/IP协议是整个因特网运行的基础,本节首先会介绍一下OSI七层模型和TCP/IP四层模型,然后将着重分析研究数据包在TCP/IP网络传输过程中封装与解封的过程,这也是网络数据包捕获和分析的基础。2.1.1OSI模型简介OSI(Open System Interconnect)七层模型即开放式系统互联参考模型,是一种框架性的设计方法通过七个层次的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输。虽然目前没有按照这种模型实现的网络协议,但是这种模型对于理解网络协议内部的架构很有帮助,为学习网络协议及功能提供了很好的参考模型。七层模型图如图1所示: 图1OSI七层模型示范图2.1.2TCP/IP参考模型TCP/IP参考模型被称作因特网参考模型(Internet Reference Model),TCP/IP四层模型如图2所示: 图2TCP/IP四层参考模型示范图如上图所示,TCP/IP协议被分成四个层次,其中应用层对应于OSI模型中的应用层、会话层、表示层,传输层和网际层分析对应OSI中的相应层,网络接口层对应于OSI中的数据链路层的物理层。TCP/IP各层协议关系图如图3所示: 图3TCP/IP参考模型各层协议关系示范图TCP/IP四层模型的四个协议层分别完成以下的功能:(1)网络接口层:在TCP/IP参考模型中,网络接口层是参考模型的最底层,它负责通过网络发送和接收IP数据报。TCP/IP参考模型允许主机连入网络时使用多种现成的与流行的协议,例如局域网协议或其他一些协议。在TCP/IP的主机-网络层中,它包括各种物理网协议,例如局域网的Ethernet、局域网的Token Ring、分组交换网的X.25等。当这种物理网被用作传送IP数据包的通道时,我们就可以认为是这一层的内容。这体现了TCP/IP协议的兼容性与适应性,它也为TCP/IP的成功奠定了基础。(2)网际层:在TCP/IP参考模型中,互联网络层是参考模型的第二层,它相当于OSI参考模型网络层的无连接网络服务。互联网络层负责将源主机的报文分组发送到目的主机,源主机与目的主机可以在一个网上,也可以在不同的网上。互联网络层的主要功能包括以下几点。处理来自传输层的分组发送请求。在收到分组发送请求之后,将分组装入IP数据报,填充抱头,选择发送路径,然后将数据报发送到相应的网络输出线。处理接收的数据报。在接收到其他主机发送的数据报之后,检查目的地址,如需要转发,则选择发送路径,转发出去;如目的地址为本结点IP地址,则除去抱头,将分组交送传输层处理。处理互联的路径、流程与拥塞问题。TCP/IP参考模型中网络层协议是IP(Internet Protrol)协议。IP协议是一种不可靠、无连接的数据报传送服务的协议,它提供的是一种“尽力而为(besteffort)”的服务,IP协议的协议数据单元是IP分组。(3)传输层:在TCP/IP参考模型中,传输层是参考模型的第3层,它负责在应用进程之间的端到端通信。传输层的主要目的是在互联网中源主机与目的主机的对等实体间建立用于会话的端到端连接。从这点上来说,TCP/IP参考模型与OSI参考模型的传输层功能是相似的。在TCP/IP参考模型中的传输层,定义了以下这两种协议。传输控制协议(transmission control protocol,TCP)TCP协议是一种可靠的面向连接的协议,它允许将一台主机的字节流(byte stream)无差错的传送到目的主机。TCP协议将应用层的字节流分成多个字节段(byte segment),然后将一个个的字节段传送到互联网络层,发送到目的主机。当互联网络层将接收到的字节段传送给传输段传送给传输 时,传输层再将多个字节段还原成字节流传送到应用层。TCP协议同时要完成流量控制功能,协调收发双方的发送与接收速度,达到正确传输的目的。用户数据协议(user datagram protocol,UDP)UDP协议是一种不可靠的无连接协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序检查与排序由应用层完成。(4)应用层:在TCP/IP参考模型中,应用层是参考模型的最高层。应用层包括了所有的高层协议,并且总是不断有新的协议加入。目前,应用层协议主要有以下几种: 远程登录协议(Telnet); 文件传送协议(file transfer protocol,FTP); 简单邮件传送协议(simple mail transfer protocol,SMTP); 域名系统(domain name system,DNS); 简单网络管理协议(simple network management protocol,SNMP); 超文本传送协议(hyper text transfer protocol,HTTP). 2.1.3数据包在TCP/IP网络中的封装与解封过程数据在网络中传输时要经过封装和解封的过程,这是两个正好相反的过程,一个组包, 一个解包,下面是数据包在网络中封装的过程:首先,计算机生成用户数据,数据经过应用层后,被加上应用层协议的首部,然后传递到传输层变成了传输层的数据单元,传输层把收到的大的报文分割成小的数据包,再给每一个包加上这一层的报文头,如TCP头或者UDP头,形成新的数据单元然后再交给网络层,网络层又在各个数据包上加上自己的IP头部,包括源IP及目的IP,以方便路由,这样就到了网络接口层,这一层给到来的数据加上链路层的头部和尾部,此处是以太网头部和尾部,最后形成比特流传输到线路上。包的封装过程如图4所示: 图4数据进入协议栈时的封装过程示范图当数据到达网络另一端的计算机时,又经过相反的解包过程:首先,数据链路层接收到从另一端计算机发过来的数据帧,并由链路层的协议来读取数据帧的见容,对于以太网的数据链路层帧其中有一个字段是标志上层协议的,此处我们假设是IP协议,链路层协议会把以太网首部和尾部都去掉,然后把数据交给上层的网络层,数据经过网络层处理去掉IP首部后交给相应的上层协议TCP或UDP去处理,同样道理,TCP或UDP协议经过对数据的处理后去年TCP或UDP头部,又把数据交给应用层去处理,最终还原成用户数据,这就是数据进入协议时的解封过程,如图5所示: 图5数据进入协议时的解封过程示范图数据在协议栈里面的封装与解封的原理是网络数据包捕获和进行协议分析的基础,本文所研究的基于协议分析的网络监测系统就是运用了上述的封装解封原理,并对所捕获的数据包以协议树的形式来显示包内所包含的协议层次结构,另外,本文最高只涉及到传输层的TCP和UDP协议的解析,考虑到因特网应用层协议繁多,并且可能涉及到加密与解密等问题,如果要对应用层协议进行支持,必须首先掌握这些协议,然后加入相应的应用层协议解析模块,所以本系统并不支持应用层协议的解析,将待下一步研究。2.2网络监听(嗅探)技术局域网具有设备共享、信息共享、可进行高速数据通讯和多媒体信息通信、分布式处理、具有较高的兼容性和安全性等基本功能和特点。目前局域网主要用于办公室自动化和校园教学及管理,一般可根据具体情况采用总线形、环形、树形及星形的拓扑结构。网络监听技术本来是提供给网络安全管理人员进行管理的工具,可以用来监视网络的状态、数据流动情况以及网络上传输的信息等。当信息以明文的形式在网络上传输时,使用监听技术进行攻击并不是一件难事,只要将网络接口设置成监听模式,便可以源源不断地将网上传输的信息截获。网络监听可以在网上的任何一个位置实施,如局域网中的一台主机、网关上或远程网的调制解调器之间等。2.2.1在局域网实现网络监听的基本原理对于目前很流行的以太网,其工作方式是:将要发送的数据包广播到局域网所有主机,数据包中包含着应该接收数据包主机的正确地址,只有与数据包中目标地址一致的那台主机才能接收。但是,当主机工作监听模式下,无论数据包中的目标地址是什么,主机都将接收(当然只能监听经过自己网络接口的那些包)。在因特网上有很多使用以太网协议的局域网,许多主机通过电缆、集线器连在一起。当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机。但这种数据包不能在IP层直接发送,必须从TCP/IP协议的IP层交给网络接口,也就是数据链路层,而网络接口是不会识别IP地址的,因此在网络接口数据包又增加了一部分以太帧头的信息。在帧头中有两个域,分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个与IP地址相对应的48位的地址。传输数据时,包含物理地址的帧从网络接口(网卡)发送到物理的线路上,如果局域网是由一条粗缆或细缆连接而成,则数字信号在电缆上传输,能够到达线路上的每一台主机。当使用集线器时,由集线器再发向连接在集线器上的每一条线路,数字信号也能到达连接在集线器上的每一台主机。当数字信号到达一台主机的网络接口时,正常情况下,网络接口读入数据帧,进行检查,如果数据帧中携带的物理地址是自己的或者是广播地址,则将数据帧交给上层协议软件,也就是IP层软件,否则就将这个帧丢弃。对于每一个到达网络接口的数据帧,都要进行这个过程。然而,当主机工作在监听模式下,所有的数据帧都将被交给上层协议软件处理。而且,当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网时,如果一台主机处于监听模式下,它还能接收到发向与自己不在同一子网(使用了不同的掩码、IP地址和网关)的主机的数据包。也就是说,在同一条物理信道上传输的所有信息都可以被接收到。另外,现在网络中使用的大部分协议都是很早设计的,许多协议的实现都是基于一种非常友好的、通信的双方充分信任的基础之上,许多信息以明文发送。因此,如果用户的账户名和口令等信息也以明文的方式在网上传输,而此时一个黑客或网络攻击者正在进行网络监听,只要具有初步的网络和TCP/IP协议知识,便能轻易地从监听到的信息中提取出感兴趣的部分。同理,正确的使用网络监听技术也可以发现入侵并对入侵者进行追踪定位,在对网络犯罪进行侦查取证时获取有关犯罪行为的重要信息,成为打击网络犯罪的有力手段。2.2.2监听的实施1.广播式以太网:使用共享介质的以太网,实施监听仅需在监听主机直接运行监听程序即可。2.交换式以太网:由于交换式以太网采用了交换机,以太网中的数据帧并不经过每台主机,所以无法直接实施监听,但可采用以下方案:a.MAC地址溢出:迫使交换机接受大量含有错误的MAC地址的数据帧,造成其溢出。这样交换机就会退化式作在HUB的广播方式下。b.MAC伪装:通过伪装其他主机的MAC地址,从而获取发往其他主机的数据包。2.3数据捕获技术2.3.1网络数据捕获原理由于目前用的最多的局域网形式是以太网,在以太网上数据是以帧为单位进行交换的,而数据帧是用被称为带碰撞检测的载波侦听多址访问即CSMA/CD(carrier sense multiple access with collision detection)的方式发送的,在这种方法中,发送到指定地址的帧实际上是发送到所有计算机的,只是如果网卡检测到经过的数据不是发往自身的,简单忽略过去而已。正是这种基于CSMA/CD的广播机制,这就给连接在网络上的计算机捕获来自于其他主机的数据带来了可能,即通过对网络接口的设置可以使网卡能够接收到所有经过该机器的数据,然后将这些数据做相应处理并实时分析这些数据的内容,进而分析网络当前状态和整体布局。从广义的角度上看,一个包捕获机制包含三个主要部分:首先是最底层针对特定操作系统的包捕获机制,然后是最高层针对程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层,最后到达应用层。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序,值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一业,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机抽是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过条件的数据包传递给用户程序。2.3.2网络数据捕获程序结构 图6数据包捕获程序示范图其中NDIS是Network Driver Interface Specification,即网络驱动接口规范。NDIS的主要目的就 是为NIC(网络接口卡,Netwok Interface Cards)制定出标准的API接口。MAC(介质访问控制,Media Access Controller)设备驱动封装了所有的NIC硬件 实现,这样一来所有的使用相同介质的NIC就可以通过通用的编程接口被访问。 NDIS同时也提供一个函数库(又时也称作wrapper),这个库中的函数可以被MAC驱动调用,也可以被高层的协议(例如TCP/IP)驱动调用。这些wrapper函数使得MAC驱动和协议驱动的开发变得更加容易。 图7NDIS驱动程序结构图示范图2.3.3网卡的工作模式以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的节点所组成,各个节点采用上面提到的CSMA/CD协议进行信息的争用和共享。每个节点通过网卡来实现这种功能。每一个在局域网(LAN)节点上的主机都有其硬件地址(MAC地址),这些地址唯一地表示了网络上的主机。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器,网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本机地址,如果不匹配,则说明不是发送到本机的包而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的CRC检验,然后将数据帧提交给LLC孜孜以求。网卡具有如下的几种工作模式:(1)广播模式(BroadCastModel):它的物理地址(MAC)地址是以0xffffff的帧为广播帧,工作在广播模式的网卡接收广播帧.(2)多播传送(MultiCastModel):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到.但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员.(3)直接模式(DirectModel):工作在直接模式下的网卡只接收目地址是自己Mac地址的帧.(4)混杂模式(PromiscuouSModel):工作在混杂模式下的网卡接收所有的流过网卡的帧,数据包捕获程序就是在这种模式下运行的.2.3.4基于Windows的数据包捕获方案1)使用原始套接字(raw socket)机制.方法简单,但功能有限,只能捕获较高层的数据包.在创建了原始套,需要通过setsockopt()函数来设置IP头后任选项,然后再通过bind()函数将原始套接字绑定到本地网卡.为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头.至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍像流式套接字或数据报套接字那样通过recv()函数来完成.但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头/TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌.通过对这些在低层传输的原始信息的分析可以得到 有关网络的一些信息.由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析.2)直接连接调用NDIS库函数,这种方法功能非常强大,但是比较危险,很可能导致系统崩溃和网络瘫痪.3)使用或者自行编写中间层驱动程序,这是微软公司推荐使用的一种方法,微软提供的win2000 DDK中也提供了几个这样的驱动程序.在具体的实现方式上可分析用户级和内核级两类.其中内核级主要是TDI捕获过滤驱动程序,NDIS中间层捕获过滤驱动程序,NDIS捕获过滤钩子(Hook)驱动程序等,它们都是利用网络驱动来实现的.而用户级的包括SPI接口,Windows2000包捕获过滤接口等.4)使用第三方捕获组件或者库比如WinPcap.此设计就是利用WinPcap自带的库函数实现网络数据的捕获,从而为数据包协议的分析打下基础.2.4协议分析技术2.4.1网络协议分析每一个网络数据包都是基于一个网络协议产生的,所以分析网络数据包必定要分析其协议的内容。由于网络数据通信上要在相互公开协议的前提下对等进行的,所以对数据包进行协议的分析在原理上是可行的。一般的,协议的分析过程是这样的:首先捕获数据包,再进行相应的过滤和分解,最后进行具体的协议分析。本论文在研究的WinPcap不但能够捕获网络上的数据包,还由于其本身就是基于BPF包过滤机制的,所以它们同样具有数据包的过滤功能。具体地,由于网络应用TCP/IP参考模型,协议数据是从上到下封装后发送的,反过来,对于协议分析需要从下到上进行,首先对链路层的协议识别后进行组包还原,再脱去链路层协议头,接下去将里面的数据交给网络层分析,这样进行下去经过传输层直到应用层。网络协议分析技术除了应用到对捕获的网络数据进行分析得到数据包的协议内容外,还可以应用到网络流量统计、网络监视、网络入侵检测、网络安全扫描等,可见网络协议分析是网络数据捕获技术之后的各种网络安全策略的基础。2.4.2协议的数据段格式捕获后的数据帧经过解析才能得到想要的信息,如作为网络监听所需要的数据帧的源地址,目的地址,协议类型等信息。需要关注的是帧的格式,解析的过程是将数据帧中的数据按不同协议进行分析提取。常用的以太网帧的格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。现在最常用的MAC帧是V2格式,这也是本课题所要研究的格式。1.IP数据报格式: 图8IP数据段头示范图2.TCP数据报格式: 图9TCP数据段头示范图3.UDP数据报格式: 图10UDP数据段头示范图4.ICMP数据报格式: 图11ICMP数据段头示范图三、系统设计与实现在上一章详细介绍了网络嗅探、数据包捕获、协议分析技术的原理,在此基础上我们将运用WinPcap具体地实现一个网络监测系统,从数据链路层捕获原始数据包,并从中提取出ARP、IP、TCP、UDP包。在系统开发的过程中涉及到不少技术,如WinPcap、VC+编程、MFC编程。下面将详细讲述:3.1WinPcap3.1.1WinPcap简介WinPcap是由意大利人Fulvio Risso和Loris Degioanni等人提出并实现的1,在Windows平台上实现对底层数据包的捕获和过滤。WinPcap能访问网络中的原始数据包,即没有被操作系统利用网络协议处理过后数据包.它的主要思想来自于UNIX系统中著名的BSD包捕获结构,具有良好的结构和性能。总的来说,WinPcap提供了以下4个功能:1捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的;2在数据包发送给某应用程序前,根据用户的规则过滤数据包;3将原始数据包通过网络发送出动4收集并统计网络流量信息.这些功能需要借助安装在win32内核中的网络设备驱动程序和若干动态链接库才能实现.然而,WinPcap有其应用的局限性:它不能阻止/过滤或操纵同一机器上的其他应用程序的通讯,它仅仅能简单的监视在网络上传输的数据包.所以,它不能提供类似网络流量控制、服务质量高度和个人防火墙之类的支持。WinPcap的整体结构分为三个相对独立的部分:网络组包过滤器(Netgroup Packet Filter,NPF)、低级动态链接库(Packet.dll)和高级动态链接库(Wpcap.dll)。NPF是一个虚拟设备驱动程序,是WinPcap的核心部分,它从网卡驱动程序收集到网络数据包转发给过滤器进行过滤,也可以发送给统计器进行网络统计,还要吧发送轾转储器,直接将网络数据包存储到磁盘。packet.dll是内核级、低层次的包过滤动态链接库, 通过它直接映射到Windows系统内核的调用,使应用程序可以运行在不同的Windows系统中,通过调用可直接访问NPF驱动程序的API,接收或发送网络数据包。Wpcap.dll是高级的与系统无关的动态链接库,它与应用程序链接在一起,使用packet.dll提供的服务,向应用程序提供更完善的监听接口和更多功能的函数调用。WinPcap体系结构如图12: 图12WinPcap体系结构示范图3.1.2WinPcap基本原理抓包是WinPcap的基本功能,也是NPF最重要的操作.在抓包的时候,驱动(例如NIC Driver)使用一个网络接口监视着数据包,并将这些数据包完整无缺的投递给用户级应用程序.主要依靠两个组件:1)数据包过滤器(filter).数据包过滤器决定是否接收进来的数据包并把数据包拷贝给监听程序.数据包过滤器是一个有布尔输出的函数.如果函数值是true,抓包驱动拷贝数据包给应用程序;如果是false,数据包将被丢弃.NPF数据包过滤器更复杂一些,因为它不仅决定数据包是否应该被保存,而且还决定要保存的字节数.被NPF驱动采用的过滤系统来源于BSD Packet Filter(BPF),一个虚拟处理器可以执行伪汇编写的用户级过滤程序.应用程序采用用户自定义的过滤器并使用wpcap.dll将它们编译进BPF程序.然后,应用程序使用BIOCSETF IOCTL 写入核心态的过滤器.这样,对于每一个到来的数据包该程序都将被执行,而满足条件的数据包将被接收.与传统解决方案不同,NPF不解释(interpret)过滤器,而是执行(execute)它.由于性能的原因,在使用过滤器前,NPF提供一个JIT编译器将它转化成本地的80x86函数.当一个数据包被捕获,NPF调用这个本地函数而不是调用过滤器解释器,这使得处理过程相当快.2)循环缓冲区(Buffer).NPF的循环缓冲区用来保存数据包以免丢失(如果一个包符合过滤器的要求,就被复制到循环缓冲区).一个保存在缓冲区中的数据包有一个头,它包含了一些主要的信息,例如时间戳和数据包的大小,注意:它不是协议头.另外,循环缓冲区以队列插入的方式来保存数据包,提高数据的存储效率.程序员可以以组的方式将数据包从NPF缓冲和贝到应用程序,这样就提高了性能,因为它降低了读的次数.如果一个数据包到来的时候缓冲区已经满了,那么该数据包将被丢弃,这时就发生了丢包现象.3)Network Tap是一个用于探听网络中所有数据流的函数.4)数据统计为了提高数据处理的速度,WinPcap将统计和监听功能移到内核中,这样避免了将任何数据都传递给用户.WinPcap通过使用从NPF中得到的过滤器来执行一个内核级的可编统计模块,这使其变成一个强大的分级引擎,而不只是个简单的包过滤器.应用程序可以构造这个模块来监听网络活动的任意方面(例如:网络负荷/两台主机间的流量/每秒web请求的次数等),并在预定的时间间隔内接收内核传来的数据.统计模式避免了负值数据包并且执行0-copy机制(当包仍存放在NIC(网络接口卡)驱动的内在中时开始进行统计,随后丢弃这个包).而且,环境转换的次数可以保持最低,这是因为结果通过一次系统调用就可以返回给用户.它不需要缓冲区(内核或用户),因此当监听开始时不用为它分配内存.可见,统计模式是一种很有效的网络监听方式,在高速网络中利用lipcap来工作也没任何问题.WinPcap为程序员提供了一套系统调用和高层函数来进行网络监听,这使得已经知道libcap API的程序员能很容易使用.5)构造数据包BPF和NPF都提供了构造包的函数,使用户可以将原始数据包发送到网络中,然而,Unix程序员一般不用libpcap提供的这些函数,因为在Unix平台上,应用程序可以使用原始套接字来发送伪造的数据包.在Windows环境下,只有Windows2000提供了原始套接字,而且非常有限.因此在Windows环境下,WinPcap就成为首选的构造数据包的函数库,它提供了一套标准稳定的函数.另外,NPF增加了一些新的函数,这些函数可以使数据包通过一次用户和内核模式之间的转换就发送几次.数据复制到内核中,然后通过调用一次NDIS将包发送到网络中.尽管WinPcap提供了一套新的函数来开发这些特性,但它没有提供那些强大的创建数据包的抽象函数,这需要通过其它现有的工具来实现.程序员可以利用著名的Libnet Packet Assembly Library的Windows版本实现,这个函数库增加了数据包结构层并在WinPcap上构造数据包.3.2系统开发环境本系统开发和运行环境为Windows XP操作系统,开发过程中使用的工具是Visual C+6.0,驱动和驱动开发包为最新版WinPcap_4_1_2,WinPcap驱动在VC+6.0环境中的设置方法如下: 1. 到/devel.htm 下载安装包 和 Developers Pack. 2.安装驱动。 3.开发时,解压Developers Pack,分别找到LIB 和 Include 目录。打开VC+,首先在Tools=Options=Directories,分别配置 lib 和 Include 目录。当中Show Directories for 可以指定相应的文件目录 4.VC+环境配置。Project=Settings=Link=Object/Library Modules 里面添加需要的LIB. (Packet.lib wpcap.lib ws2_32.lib)3.3系统实现界面3.3.1网卡选择界面双击网卡名称显示每个网卡的具体信息,点击确定绑定网卡。如图13所示: 图13网卡绑定示范图3.3.2系统主界面系统主界面分成五部分,如图14所示,分别是数据包列表、协议树显示、数据包内容显示、数据包统计、过滤规则设定模块。其中数据包列表显示捕获到的数据包的基本信息,包括编号、时间戳、源网卡地址、目的网卡地址、长度、协议、源端口、源IP地址、目的地址、目的地址等;协议树显示的是协议树视图,展示了捕获数据包协议解析后的结构;数据包内容显示模块显示数据包的16进制表示及数据的

温馨提示

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

评论

0/150

提交评论