基于Winpcap的网络嗅探器设计与实现Word文档格式.docx
《基于Winpcap的网络嗅探器设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于Winpcap的网络嗅探器设计与实现Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
1.1设计背景
当前,网络技术发展突飞猛进,网络已经渗透到生产、生活学习的各个方面,并且,人们开始越来越依赖网络技术,计算机网络具有以下特性:
形式多样性,网络开放性,终端不均匀性,网络互联性等。
于是,网络特别容易受到黑客等不法分子的攻击。
总体上说,网络安全所要研究的领域包括网络的中数据信息的完整性,保密性,真实性等多个方面的内容。
可见网络安全所涉及的不仅仅是技术方面的内容,还有网络管理相关的问题。
两者之间是密切相关的,技术方面可能强调如何有效地防御黑客以避免非法的外部攻击,而在管理方面则需要更加注重内部人员管理的因素。
所以,如何较好地保护计算机中的重要数据信息不受不法分子的侵害,保护用户的计算机系统是当前网络安全方向的研究的重要问题。
通常,对网络中流通的数据特别感兴趣的通常有两类人,一类就是网络管理员,另外一类就是网络黑客,他们不断地对网络中的数据进行检测,以保证实时地跟踪网络数据。
他们存在一个共同点,就是都要用到一个好的数据包监控软件。
如黑客常常用数据包监控软件检测互联网,监测网络信息的内容,并对一些敏感信息作出分析,如财经交易等活动中出现的密码,用户名等内容。
网络管理员则用该数据包软件检测网络流量,查找网络中的漏洞,发现故障并做出解决等。
所以,学习网络中数据检测和数据分析过程,不仅有助于网络管理员排除网络中的漏洞和故障,主要是能有效地认识网络攻击的原理,常采用的技术,这样就可以有针对性的破坏网络黑客的侵入和对资料的窃取。
可见,网络探测器可以检测网路的流量,实现网络数据的检测和捕获,已经逐渐成为网络分析过程中的重要工具,对于维护网络安全和网络信息管理有着重要的意义。
1.2国内外研究状况
基于网络协议分析和网络数据捕获的技术,从广义上来讲,通常被叫作协议分析仪(ProtocofAnalyzer)。
这样定义的原因在于我们常常将一些纯软件的,并且更侧重于捕获网络数据和进行协议分析的系统叫做嗅探器(Sniffer)。
而在实际用中,基于硬件或者软硬件结合的网络数据捕获和分析系统我们称之为协议分析仪。
当然,我们并不是在所有的场合都对两者之间的概念进行区分,因为他们在功能上都能完成类似的工作。
举例子来说,一些网络管理软件及一些网络协议分析仪都使用了嗅探器技术。
目前,已经存在了许多纯软件的网络嗅探器,如:
Linuxsniffer、Dsniff、Tcpdump等,其中,不乏一些专门用于捕获用户名字和用户密码的软件,如insniffer、winsniffer。
于是,我们知道,网络嗅探技术就是一把双刃剑,在被网络管理员熟练使用的同时也会被不法外部黑客利用,既可以作为一种诊断网络故障,排除网络存在问题的工具,也为不法分子提供了窃取信息的工具。
大多数的纯软件协议分析仪都是采用pc机上的网卡来辅助实现的,即该过程可以描述为:
pc网卡+协议分析仪。
该软件实现的主要功能就是数据的捕获,信息编码,信息分析处理。
使用该软件可以实现网络流量的捕获,并作出相应的模拟。
并且,网络协议分析仪还可以产生大量的网络数据包,以此来测试网络的负载能力。
当前,已经存在了几款较典型的协议分析仪,如:
HP公司的IntemetAdvisor(网络专家系统)、WG公司的Domino系列协议分析仪,相类似的还包括SnifferPortable协议分析工具等。
但是无论是从针对协议的解码能力,还是从数据分析的实时性角度来讲,该协议的数据分析处理能力、数据包产生能力等方面都与采用硬件实现的协议分析仪存在着较大的差距。
一种典型的硬件协议分析仪式通过专用的数据采集硬件实现网络数据的获取,采用专门的采集箱完成一些全线速捕获和实时性更好的网络数据操作中。
还有一些软件粘在应用层的角度对网络的性能进行测试,该类软件通常使用一些基准的流量对网络数据进行分析,是比网络协议分析仪更高层次的测试工具。
代表软件是Chariot,该软件是由Ganymedesoftware公司开发的,还有一些别的软件在当前也是挺流行的,比如用于网络规划验证的模拟环境,过外已经有一些部门对他们自己的网络协议和它们的组合构建较大的网络系统来模拟,虽然执行的效果很好,但是价格却很昂贵。
从传统的观念上讲,网络维护人员常常需要一种功能强大的集各种网络技术于一体的测试软件。
所以,相对典型的协议分析仪常加入网络管理,自动网络信息搜索,智能专家等功能,并且通常要具有一定的移动性能。
当前网络分析和测试的发展趋势是具有综合性能的协议分析仪或者网络分析仪,它们在现场分析,故障诊断,网络数据维护等方面常常发挥着至关重要的作用,像Fluke的
OptViewINA手持综合功能协议分析仪就是一个典型的例子。
1.3研究意义
计算机网络技术的飞速发展,极大的改变了人们传统的生活和工作模式,越来越多的社会经济活动开始依赖网络来完成,可以说计算机网络的发展已经成为现代社会进步的一个重要标志。
但与此同时,计算机犯罪、黑客攻击、病毒入侵等恶性事件也频频发生。
因此,信息安全已越来越受到世界各国的重视。
嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。
但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。
而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。
显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。
嗅探器是一柄双刃剑,具有正反两个方面的作用。
作为正面用途,嗅探器主要分析网络流量,作为发现和修补网络故障的重要手段。
例如,当网络某个部分运行出现异常,报文发送速度下降时,网络管理员无法确切找出问题的关键所在时,嗅探器即可做出精确的判断。
此外,网络管理员还可以利用嗅探器诊断出网络内大量不可见的模糊问题,比如,哪个网络协议传输了多少流量,占主要通讯协议的主机,大多数通讯的目的地址,报文发送的时间和主机间报文传送的时间间隔等。
另一方面,嗅探器也可以被别有用心的人用于非法行为。
被嗅探器所截取的数据经过处理可以向用户还原显示数据包中所封装的信息,该信息包括用户标识符和口令以及机密的或者专用的信息,用于危害邻居网络的安全或获取更高级别的访问权限。
本次课程设计通过基于Winpcap的网络嗅探器设计与实现,网络嗅探器对网络上传输的数据包的捕获与分析功能的进一步了解,做到知己知彼。
通过网络嗅探器对网络上传输的数据包进行捕获和分析,获取所需要的信息,利用对这些信息进行网络安全分析。
因此,网络嗅探器的研究具有重要意义。
第2章需求分析
2.1用户需求
网络嗅探(网络抓包)时一种利用计算机的网络接口截获其它计算机数据报文的工具。
使用网络嗅探(网络抓包)工具的主要人群是黑客或网络安全技术人员,从攻击的角度,黑客可以使用网络嗅探(网络抓包)程序非法获取网络中传输的大量敏感信息,如账号和口令等,对网路安全极具威胁;
从防守的角度,网络嗅探(网络抓包)技术是居于网络的入侵检测系统的最底层环节,是整个系统的数据来源,为技术人员提供重要的依据。
无论是黑客还是安全人员,他们对抓包技术的利用途径都是一样的,即对网络上传输的数据包进行捕获与分析,获取不要的信息,但是他们的目的是不一样的,前者是专门利用计算机网络搞破坏或恶作剧,而后者是通过对这些信息的分析利用。
维护网络安全与稳定。
因此用户提出了以下要求:
◆友好的图形化界面,不需要复杂的命令,大部分功能通过鼠标点击就可达到,操作简单、方便;
◆能够捕获网络数据包,并能对数据包进行简单的分析;
◆精确的设置捕捉规则和灵活的过滤策略,能使用户方便、准确地捕获所需要的信息;
◆能够对网络中捕捉的数据包解码,用于故障分析;
◆用户能够自定义过滤规则,使数据包的捕获更加精准和具有灵活性,增强了软件功能以及与用户的交互能力;
2.2功能需求
对于基于Winpcap的网络嗅探器设计与实现,网络嗅探(网络抓包)作为网络安全方面最常见的工具被广泛使用,本次设计实现的功能有:
◆能够抓取IP数据包。
◆能够抓取TCP数据包。
◆能够抓取UDP数据包。
◆对抓取的数据包进行解码。
2.3性能需求
一个程序除了能正常运行并且达到相应的功能外,对程序性能也有严格的要求,性能需求决定了整个系统的性能档次、所采用的技术和设备档次,本程序除了达到常用软件对响应时间以及差错控制的要求外,还提出以下要求:
(1)数据精确性。
捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌,为分析网络信息提供了重要资料。
(2)适应范围。
优秀的抓包工具能够分析几百种协议。
一般情况下,大多数的抓包工具至少能够分析下面的协议:
IP、TCP、UDP等。
第3章Winpcap及相关协议介绍
3.1Winpcap的组成结构
Winpcap由内核级的数据包监听设备驱动程序(NPF)、低级动态链接库(packet.dll)和高层、用户级、不依赖于操作系统的动态链接库(wpcap.dll)三部分构成。
Winpcap的组成结构如图3.1所示。
图4.1Winpcap的组成结构
……………………………………………………………………………………………
………
图3.1Wpcap体系结构
核心层
网络层
用户层
核心态
缓冲区
转储引擎
应用程序
过滤器
统计引擎
包截获
网络监测
数据转储
wpcap.dll
用户态
packet.dll
其他应用程序:
1、直接访问NPF
2、调用
packet.dll
3、调用
wpcap.dll
其
它协
议
栈
数据链路驱动程序
数据包
(1)数据包监听设备驱动程序
在技术实现方面,为绕过操作系统的协议栈来访问网络上的原始数据包(rawpacket)。
这就要求Winpcap的一部分运行在操作系统核心内部,直接与网络接口驱动交互。
由于这个部分是系统依赖(SystemDependent)的,在Winpcap的解决方案中它被视为是一个设备驱动,称作NPF(NetgroupPacketFilter)。
Winpcap开发小组针对Windows95,Windows98,WindowsME,WindowsNT4,Windows2000和WindowsXP提供了不同版本的驱动(在Windows95/98/ME中是VXD文件,在WindowsNT/2000中是SYS文件)。
这些驱动不仅提供了基本的特性(例如抓包、发送原始数据包——注入数据包),还有更高级的特性(例如可编程的过滤器系统和监视引擎)。
前者可以被用来约束一个抓包会话只针对网络通信中的一个子集(例如,只捕获特殊主机产生的ftp通信数据包),后者提供了一个强大而简单的统计网络通信量的机制(例如,获得网络负载或两个主机间的数据交换量)。
概括地讲,NPF可直接从数据链路层抓取网络数据包并过滤,可将数据包不加修改地传递给运行在用户层的应用程序。
NPF在不同的WINDOWS系统下是不同的(在NT/2000/XP中是npf.sys文件,一般位于C:
\WINDOWS\system32\drivers中),其主要功能是过滤数据包,并在数据包上附加时间戳、数据包长度等信息。
(2)低级动态链接库(packet.dll)和用户级动态链接库(wpcap.dll)
为方便编程,Winpcap提供的编程接口函数都封装在低级的packet.dll(一般位于c:
\windows\system32\)和用户级动态连接库wpcap.dll(一般位于c:
\windows\system32\)中。
底层packet.dll提供的编程接口独立于WindowsAPI,packet.dll的API是可以直接用来访问驱动的函数;
packet.dll运行在用户层它将应用程序和数据包监听设备驱动程序隔离开来,使得应用程序可以不加修改地在不同的WINDOWS系统上运行。
高层的wpcap.dll导出了一组更强大且与LibPcap一致的高层抓包函数库(CapturePrimitives),这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。
wpcap.dll使用packet.dll提供的服务,并向应用程序提供完善的监听接口。
3.2Winpcap简介
Winpcap是Win32平台下强大的、有较好扩展性的底层网络分析体系结构,是UNIX下的Lipbcap移植到Windows下的产物,是Win32环境下数据包捕获的开放代码函数库。
Winpcap是第一个Win32开放式的捕获包的体系结构,能够支持大多数应用程序的需要。
Winpcap包含了一个内核级的数据包过滤器NPF(NetgroupPacketFilter)、一个底层动态链接库(packet.dll)和一个高层的独立于系统的库(wpcap.dll)。
NPF模块过滤数据包,将数据包不做任何改动的传递给用户。
packet.dll模块提供了Win32平台下的捕获包的驱动接口,基于pack-e.tdll编写的程序可以不经过重新编译就在各种Win32平台下实现捕获数据包。
wpcap.dll库不依赖于操作系统,且它包含了一些其他高层的函数,如过滤器生成器,用户定义的缓冲区和高层特性。
Winpcap的主要功能在于独立于主机协议(如TCP、IP)而发送和接收原始数据包。
Winpcap可用于实现如下功能:
①捕获原始数据包,不管这个包是发往本地机,还是其他机器之间的交换包。
②在数据包被发送到应用程序之前,通过用户定义的规则过滤。
③向网络发送原始数据包。
④对网络通信量做出统计。
这些功能依赖于Win32系统内核中的设备驱动以及一些动态链接库。
Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。
很多不同的工具软件使用Winpcap于网络分析,故障排除,网络安全监控等方面。
Winpcap特别适用于下面这几个经典领域:
◆网络及协议分析。
◆网络监控。
◆通信日志记录。
◆trafficgenerators。
◆用户级别的桥路和
3.3以太网简介
IEEE802.3所支持的局域网标准最早是由Xerox开发的,后来通过DIGITAL公司,Intel公司和Xerox联合扩展为以太网标准,符合以太网标准的局域网成为以太网。
以太网上的每一个主机为了标示自己的唯一“身份”都有自己的网口接口卡(NIC)。
网络接口卡通常安装在主机内并能为主机提供一个6字节的物理地址。
在遵循IEEE802标准的以太网中,这个物理地址称为MAC地址,MAC地址是唯一的,任意两个不同的网络接口卡都具有不同的MAC地址。
以太网MAC地址可以分为三类:
单播地址,广播地址和多播地址。
以太网MAC帧格式具有7个域,分别为:
前导码,帧首定界符,目的MAC地址,源MAC地址,协议类型或数据长度,数据帧校验序列,如表3-1所示。
前导码
(7字节)
帧首定界符
(1字节)
目的MAC地址
(6字节)
源MAC地址
协议类型
(2字节)
数据
帧校验序列
(4字节)
表3-1以太网的MAC帧格式
3.3.1网际协议IP
IP(网际协议)是TCP/IP协议族中的核心协议,它负责数据包从源点交付到终点的传输。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据包格式传输。
该协议提供不可靠,无连接数据报传送服务,但只能保证数据包被发送发送到目的主机,而不管传输是否正确,具体的纠错重传过程是交由传输层完成的。
3.3.2用户数据报协议UDP
UDP协议的位置是处在IP协议所在层的上层。
有OSI模型知,传输层协议。
包括了UDP和TCP协议。
但是,UDP协议有个缺点,它不提供端点之间的确认和重传功能,因此就不能保证数据安全准确地到达目的端点,所以该协议是一种不可靠地传输协议。
3.3.3传输控制协议TCP
TCP(传输控制协议)协议时TCP/IP协议族种面向连接的、可靠的传输层协议。
TCP与UDP不同,他允许发送和接收字节流形式的数据。
为了使服务器和客户端以不同速度发送和接收数据,TCP提供了发送和接收两个缓冲区,可以双向发送数据。
TCP在报文中加上一个递增的确认序列号来告诉发送端,接收端期望收到的下一个报文,如果在规定的时间内,没有收到关于这个包的确认相应,则重新发送此包,这确保了TCP是一种可靠地传输层协议。
TCP所提供服务的主要特点:
◆面向连接的传输;
◆端到端的通信;
◆高可靠性,确保传输数据的正确性,不出现丢失或乱序;
◆全双工方式传输;
◆采用字节流方式,即以字节为单位传输字节序列;
◆紧急数据传送功能。
第4章程序设计与实现
4.1程序运行环境
本系统运正常行的硬件环境需求如下:
◆CPU:
PIII800MHZ及其以上;
◆内存:
128MB及其以上;
◆本系统运正常行的软件环境需求如下:
◆操作系统:
Windows8;
◆动态链接库和驱动程序:
Winpcap4_1_2.exe;
4.2程序设计
4.2.1程序设计流程图
开始
查看设备列表
Pcap_findalldevs()
打开网络设备
Pcap_open_live()
编译过滤规则
Pcap_compile()
设置过滤规则
Pcap_setfilter()
捕包并处理
Pcap_loop()
关闭并返回Pcap_close()
结束
图4.1流程图
4.2.2程序具体设计
(1)新建工程并把需要的文件导入工程。
导入include文件如图4.2所示。
同时用同样的方法在“链接器—>
常规”中添加lib文件。
图4.2导入文件
(2)设计主题对话框,如图4.3所示。
图4.3主题对话框
(3)设置选择网卡对话框,如图4.4所示。
图4.4选择网卡对话框
(4)创建protocoInfo.h文件,定义协议格式和协议中使用的宏。
协议结构体的定义:
typedefstruct_ETHeader//14字节的以太头
typedefstruct_IPHeader//20字节的IP头
typedefstruct_TCPHeader//20字节的TCP头
typedefstruct_UDPHeader
宏定义:
#defineETHERTYPE_IP0x0800//MAC帧中的协议类型字段的取值
#defineETHERTYPE_ARP0x0806
//协议,IP首部中的ipProtocol字段,标明上层协议
#definePROTO_ICMP1
#definePROTO_IGMP2
#definePROTO_TCP6
#definePROTO_UDP17
//定义TCP标志
#defineTCP_FIN0x01
#defineTCP_SYN0x02
#define