winpcap开发网络嗅探器毕业设计

上传人:仙*** 文档编号:34093380 上传时间:2021-10-20 格式:DOC 页数:56 大小:458.50KB
收藏 版权申诉 举报 下载
winpcap开发网络嗅探器毕业设计_第1页
第1页 / 共56页
winpcap开发网络嗅探器毕业设计_第2页
第2页 / 共56页
winpcap开发网络嗅探器毕业设计_第3页
第3页 / 共56页
资源描述:

《winpcap开发网络嗅探器毕业设计》由会员分享,可在线阅读,更多相关《winpcap开发网络嗅探器毕业设计(56页珍藏版)》请在装配图网上搜索。

1、西 南 交 通 大 学 本科毕业设计(论文)网络嗅探器开发年 级:2005 级学 号:20059306姓 名:;李飞专 业:计算机科学与技术指导老师:刘捷 2009 年 6 月西南交通大学本科毕业设计(论文) 第 I 页院 系 计算机与通信工程系 专 业 计算机科学与技术 年 级 2005 姓 名 李飞 题 目 网络嗅探器开发 指导教师评 语 指导教师 (签章)评 阅 人评 语 评阅人 (签章)成绩 答辩委员会主任 (签章)年 月 日毕业设计(论文)任务书毕业设计(论文)任务书班级 2005 级计算机网络工程 1 班 学生姓名 李飞 学号 20059306 发题日期: 2009 年 2 月 2

2、6 日 完成日期:2009 年 6 月 8 日 题题 目目 网络嗅探器开发 1、本论文的目的、意义 当前嗅探产业已成为 IT 产业的重要领域,作为业余休闲娱乐的方式之一,盗号受到人们的喜爱,而嗅探器的开发开发也成为一个重要的专业计算机领域。 在该设计中将把重点放在基于网络 IP 探测创作开发,学习和熟悉网络技术嗅探制作的路径,以及熟悉开发中常见的技术、物理等相关技术,了解开发的原理。 计算机专业本科学生虽然都系统的学习了相关的计算机专业课程,但对相关专业认识的认识还停留在理论层次,对计算机专业知识的应用还不够熟悉。在他们的毕业设计中给出这样一个设计题目去做,确是很有意义,通过做设计既可从温所学

3、理论;又能理论联系实际,培养学生分析解决问题的能力,增长才干,把知识转化为智力;同时也有利于学生科研作风和能力的培养。 2、学生应完成的任务 独立完成网络嗅探器的开发与设计。 (1)了解网络嗅探器开发的原理和方法; (2)熟悉网络嗅探器开发工具; (3)完成嗅探器的分析和架构; (4)要求所编制的软件在答辩时演示; (5)应完成不少于一万英文字符的翻译及将毕业设计的中文摘要翻译成英文。 第 1 页 共 56 页3、论文各部分内容及时间分配:(共 17 周)第一部分 资料搜集、文献检索、阅读、消化; ( 3 周)第二部分 开发原理、开发方法的学习和研究; ( 5 周)第三部分 嗅探器系统分析和架

4、构; ( 3 周)第四部分 开发嗅探器程序; ( 3 周)第五部分 毕业论文撰写、装订; ( 2 周)评阅及答辩 ( 1 周)备 注 答辩前应向指导老师交毕业设计说明书(书面文档应不少于 2 万8 千个汉字)和电子文档(含毕业设计(论文)说明书及应用软件) 。 指导教师: 2008 年 2 月 26 日审 批 人: 年 月 日第 1 页 共 27 页第第 1 1 章章 绪论绪论.31.1网络数据安全问题.31.2 网络数据安全相关理论与技术 .41.2.1 网络攻击的技术前提.41.2.2 数据包捕获.51.2.3 数据包过滤与分解.71.2.4 网络协议分析.81.3 本课题研究意义 .81

5、.4 国内外研究有关现状 .91.4.1 当今网络安全的研究.91.4.2 现有的网络测试分析系统.101.5 本文所做的工作 .11第第 2 章章 捕获基础及捕获基础及 LIBPCAP 介绍介绍.112.1 网络的数据捕获的原理 .11致致 谢谢.47摘 要随着计算机技术的发展,网络的应用迅速普及,网络已日益成为生活中不可或缺的工具。同时,网络的安全性与可靠性日益受到人们的重视,安全性指的是网络上的信息不被泄露、更改和破坏,可靠性指的是网络系统能够连续、可靠地运行,网络服务不被中断。网络数据包捕获、监听与分析技术是网络安全维护的一个基础技术同时也是网络入侵的核心手段。所以研究有关数据包捕获和

6、分析技术对保证网络的健康、安全运行是很有意义的。本课题针对网络数据包的捕获和分析技术做了比较深入的阐述。首先,概括介绍了当今网络数据安全的相关现状、理论及技术,并着重介绍了网络数据捕获和分析的有关基本实现机理、方法和手段,还列举了当前正在应用的网络分析系统。其次,重点介绍了伯克利 (Berkeley)数据包过滤器 BPF 用于数据包捕获、过滤的原理和优势,并讲解了网络安全开发函数库的概念。在介绍了基于 BPF 的网络数据包捕获函数库 Libpcap 之后,又对比了在 BPF 基础上发展出来的 NPF 捕获和过滤引擎,藉此不但追溯了 Winpcap 和 Libpcap 的渊源,还列举了基于 Wi

7、npcap 的捕包技术在 windows 下的多种实现并说明了它们各自的特点。接下去,详细地阐述了 Winpcap 网络数据捕获函数库的工作机理和内部架构,对其内部的功能函数做了介绍,并对它们在数据包捕获和分析上的实现过程做了总结和概括。最后,具体分析了目的在于网络数据包捕获和分析的程序的层次结构,给出了具体的通过调用 Winpcap 来捕获和分析数据包的程序的设计与实现方法,并通过编程实现了基于 winpcap 的网络数据捕获和分析系统。对于今后网络数据的监测和分析方案(比如对无线网络和交换环境捕获和分析),第 2 页 共 27 页本文也在最后部分做了相应的阐述和预测。目前,以 winpca

8、p(Libpcap)为代表的网络数据包的捕获和分析系统的研究由于其技术的开放性还在不断地进行着。而且随着网络技术的不断革新,对这个应用最广泛的系统进行跟进性的研究,不但有利于对其本身的完善还为持续发展和变化的网络安全问题提供了最新的解决方案。关键词关键词: :数据包,捕获,函数库,过滤第 3 页 共 27 页AbstractThe application of networks popularize rapidly along with the development of computer technology,networks become a necessary toll in peop

9、les daily。Life,At same time,people pay more attention to the security and dependability of networks,Security means that the information in networks is not been worked,revealed and changed。Dependability menas that the network clould run continuously and stably。The technology of capturing,monitoring a

10、nd analyzing of network data is the basic of networks maintenance and the main means of network in break as well。So it is significative to research the technology of capturing monitoring and analyzing of network data.This paper is focus on the technology capturing and analyzing of network data。First

11、ly,illuminate the actuality,theoretics and technology of security of network data and the real system today briefly,and emphasize the elements and advantage of Berkeley package filter(BPF) that aimed to capture and filter the data in network。Explain the developer library of network security。After th

12、e presentation of Libpcap that based on BPF,this article make a comparison between the NPF capture and filter engine and the BPF,and enumerate the variedly application of Winpcap in Windows system and show each advantage of these Subsequently,expatiate the principle and construction of Winpcap and t

13、he inside function of it as well。Summarize the layout and the configuration programs that aimed for the capturing and analyzing of network data。Bring out the method of design and realization of capturing and analyzing of network data and realize function by means of Winpcap programming。Finally,this

14、paper forecast the technology of network data monitoring and analyzing in the future (e.g.in WLAN and switching net).Nowadays,the research of technology of capturing and analyzing of network data that based on Winpcap is keep for its open source,it is benefit not only evolution of this library but a

15、lso to the affording of lastest solution for the network security problem.Key Words: package,capture,Library,Winpcap,Filter第 4 页 共 27 页第 1 章 绪论1.1 网络数据安全问题随着网络技术的飞速发展和网络时代的到来,互联网的影响己经渗透到国民经济的各个领域和人民生活的各个方面,全社会对网络的依赖程度越来越大,整个世界通过网络正在迅速地融为一体,但由于计算机网络具有联结形式多样性、终端分布不均匀性和网络的开放性、互联性等特征,致使网络易受黑客、恶意软件和其他不轨的

16、攻击。广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全所要研究的领域。网络安全涉及的内容既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。技术方面主要侧重于防范外部非法用户的攻击,管理方面则侧重于内部人为因素的管理。如何更有效地保护重要的信息数据、提高计算机网络系统的安全性已经成为所有计算机网络应用必须考虑和必须解决的一个重要问题。可以这样来定义网络数据安全:所谓网络数据安全,指的是网络系统的硬件、软件和数据信息能够、受到保护,不会因为偶然或恶意的原因而遭到破坏、更改、泄露,同时系统能够连续、可靠地运行,网络服务不被中断。但在现

17、实中,绝对安全的网络是没有的。据 IT 界企业团体 ITAA 的调查显示,美国 90%的 IT企业对黑客攻击准备不足。目前美国 75%一 85%的网站都抵挡不住黑客的攻击,约有 75%的企业网上信息失窃,其中 25%的企业损失在 25 万美元以上。因此了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全己经成了网络发展中最重要的事情。1.2 网络数据安全相关理论与技术1.2.1 网络攻击的技术前提计算机网络的核心是网络协议,所以研究协议与网络安全的关系就是至关重要的。现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基第 5 页 共 27 页于一种非常友好的、通信的双方充分信

18、任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,只要将网络接口设置成监听模式,便可以源源不断地将网上传输的信息截获,因此进行网络监听从而获得用户信息并不是一件困难的事情。例如,目前使用最广泛的 TCP/IP 协议就存在很多安全缺陷,而 FTP、POP 和 Telnet 协议在本质上也是不安全的,从而很多网络的攻击就是针对这些不安全协议进行的。1994 年一个最大的嗅探器(Sniffer,网络数据监听器)攻击被发现,这次攻击被人们普遍认为是记载中最为严重的一次,攻击者处于 Rahul.Net,使许多以 FTP、Telnet 或远程登陆的主机系统都受到了危害。在这件

19、事故中,嗅探器只运行了 18 个小时。在这段时间里,有几百台主机被泄密。受攻击者包括 268 个站点,如 MIT、美国海军和空军、Sun 微系统公司、IBM、NASA、CERFNet 和加拿大、以色列、荷兰、比利时的一些大学的机器。另外,这些协议的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转发并做了手脚之后,就会出现很严重的问题。据统计,目前网络攻击手段有数千种之多;美国商业杂志信息周刊公布的一项调查报告

20、称,黑客攻击和病毒等安全问题在 2000 年就造成了上万亿美元的经济损失,在全球范围内每数秒钟就发生一起针对网络的不同形式的攻击事件。为了保证网络的安全,防止网络攻击,除了对信息采用加密技术之外,还有就是与网络协议相关的网络安全手段,例如防火墙技术、入侵监测技术、安全扫描技术、协议分析技术和数据包生成技术等。这些技术中,数据包的捕获和分析是最首要的手段,它是诸多网络安全技术实现的基础。1.2.2 数据包捕获1.2.2.1 网络数据捕获原理由于目前用的最多的网络形式是以太网,在以太网上,数据是以被称为帧第 6 页 共 27 页的数据结构为单位进行交换的,而帧(数据包)是用被称为带碰撞检测的载波侦

21、听多址访,CSMA/CD(carrier sense multiple access with collision detection)的方式发送的,在这种方法中,发送到指定地址的帧实际上是发送到所有计算机的,只是如果网卡检测到经过的数据不是发往自身的,简单忽略过去而已。正是这种基于 CSM/CD 的广播机制,这就给连接在网络上的计算机捕获来自于其他主机的数据带来了可能,即通过对网络接口的设置可以使网卡能够接收到所有经过该机器的数据,然后将这些数据做相应处理并实时分析这些数据的内容,进而分析网络当前状态和整体布局。这里,通过设置硬路由器的监听端口来捕获数据包的方式不再本文讨论范围内。从广义的角

22、度上看,一个包捕获机制包含三个主要部分:首先是最底层针对特定操作系统的包捕获机制,然后是最高层针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP 层、传输层、最后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定

23、操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。1.2.2.2 数据包捕获常用的方法 (1)UNIX 类操作系统所提供的分组捕获机制主要有以下三种:l)数据链路提供者接口(DLPI)数据链路提供者接口(DLPI,Data LinkProvider Interfaee)定义了数据链路层向网络层的服务,网络层的高层协议,如 TCP/IP 协议就可以使用这个标准接口服务。2)Linux 的 SOCK-PACKET 类型套接口:第 7 页 共 27 页3)伯克利数据包过滤器 BPF(Berke

24、ley Paeket Filter)。对于 windows 系统(要求在window2000/xp 以上)。要实现数据链路层上的数据捕获需要使用驱动程序。网络驱动程序接口规范函数库(NDIS 函数库)为了方便用户对网络底层的操作,提供了许多相关函数。(2)基于 windows 的数据包捕获方案有以下几种:l)使用原始套接字 (rawsocket)机制。方法简单,但功能有限,只能捕获较高层的数据包。在创建了原始套接字后,需要通过 setsockopt()函数来设置 IP 头操作选项,然后再通过 bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过 ioctis

25、ocket()来进行设置,而且还可以指定是否亲自处理 IP 头。至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍象流式套接字或数据报套接字那样通过 recvo函数来完成.但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP 头、TCP 头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析;2)直接连接调用 NDIS 库函数,这种方法功能非常强大,但是比较危险,很可能导致系统崩溃和

26、网络瘫痪;3)使用或者自行编写中间层驱动程序,这是微软公司推荐使用的一种方法,微软提供的 win2000DDK 中也提供了几个这样的驱动程序。在具体的实现方式上可分为用户级和内核级两类。其中内核级主要是 TDI 捕获过滤驱动程序,NDIS 中间层捕获过滤驱动程序,NDIS 捕获过滤钩子(Hook)驱动程序等,它们都是利用网络驱动来实现的;而用户级的包括 SPI 接口,Windows2000 包捕获过滤接口等;(4)使用第三方捕获组件或者库,比如 Winpcap。表 1.1 是包括了上述的捕包机制的常用包捕获机制表表 1.1 常用的包捕获机制 包捕获机制系统平台备注第 8 页 共 27 页BPF

27、BSD 系列Berkeley Packet FilterDLPISolaris,HP-UX SCO Open severData Link Provider InterfaceNITSunOS 3Network Interface TapSNOOPIRIXNoneSNITSunOS 4Streams Network Interface TapSOCK-PACKETLinuxNoneLSF=Linux 2.1.75Linux Socket FilterDrainIRIX用于窃听系统丢弃的包实际的应用中,Libpcap(the Paeket eapture Library)是网络数据包捕获的代表,

28、它是专门的跨平台的数据捕捉函数库,其捕获机制就是 BPF。Libpcap 是应用于Linux 系统的,而对于 windows 系统有相应的可兼容的 Winpcap 函数库。开发Winpcap 的目的在于为 win32 应用程序提供访问网络底层的能力。Libpcap/Winpcap 提供了以下的各项功能:(1)捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;(2)在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉:(3)在网络上发送原始的数据包;(4)收集网络通信过程中的统计信息。Winpcap 的主要功能在于独立于主机协议(如 TCP/IP)而发送和

29、接收原始数据包。也就是说,Winpcap 不能阻塞、过滤或控制其他应用程序数据的发收,它仅仅只是监听共享网络上传送的数据,本文后面的章节会对这种技术作详细的讨论。1.2.3 数据包过滤与分解捕获数据包后要进行的工作是对其进行包过滤与分解,用通俗的语言表达就是在海量的数据里面找感兴趣的内容。不合理的过滤规则和程序会导致数据包丢失、来不及分析,严重的影响系统的工作效率,甚至导致系统崩溃一些基础的过滤规则如下:第 9 页 共 27 页(1)站过滤:专门筛选出来自一台主机或者服务器的数据;(2)协议过滤:根据不同的协议来筛选数据,例如:选择 TCP 数据而非 UDP 数据;(3)服务过滤:根据端口号来

30、选择特定数据包;(4)通用过滤:通过数据包中某一特定位置开始,选择具有某些共同数据特征的数据包;大部分情况下,过滤规则是上面基本规则的组合。有时,为了保证用户设置的缓冲区被一些莫名其妙的无效数据溢出,必须在捕获前进行粗过滤,然后在捕获后再进行一次过滤。过滤完成后,为了使得缓冲区能处理的包更多,必须进行包分解(Slice),因为数据包最关键的部分在数据包的头部。包分解时还要记住包的原始长度,包分解的原则是对捕获的包按照相应协议规定的数据结构来提取结构中每个字段的数据。BPF 机制在这方面做的非常成功。1.2.4 网络协议分析每一个网络数据包都是基于某一个网络协议产生的,所以分析网络数据包必定要分

31、析其协议的内容。由于网络数据通信是要在相互公开协议的前提下对等进行的,所以对数据包进行协议的分析在原理上是可行的。一般地,协议的分析过程是这样的:首先捕获数据包,再进行相应的过滤和分解,最后进行具体的协议分析。本文要研究的 Libpcap 和 Winpcap 不但能够捕获网络上的数据包,还由于其本身就是基于 BPF 包过滤机制的,所以它们同样具有数据包的过滤功能。具体地,由于网络具有 051 的 7 层协议模型,协议数据是从上到下封装后发送的,反过来,对于协议分析需要从下至上进行,首先对链路层的协议识别后进行组包还原,再脱去链路层协议头,接下去将里面的数据交给网络层分析,这样一直进行下经过传输

32、层直到应用层。网络协议分析技术除了应用到对捕获的网络数据进行分析得到数据包的协议内容外,还可以应用到网络流量统计、网络监视、网络入侵检测、网络安全扫描等,可见网络协议分析是网络数据捕获技术之后的各种网络安全策略的基础。第 10 页 共 27 页1.3 本课题研究意义有两类人对于流动在网络上的数据是非常感兴趣的:网络管理员和黑客,他们都要对网络上的以包为单位的数据流进行监测。事实上,一个好的数据包监测软件通常可以在网络管理和黑客技术的工具包中同时找到。黑客可以用数据包监测软件监听互联网,并且追踪一些敏感数据的交换如登录对话和财经交易;网络管理员可以用数据包监测软件监视网络的状态、查找网络漏洞,检

33、测网络性能和修复网络的故障等。所以,研究网络数据的捕获和网络协议的分析不但能够有利于管理网络和维护网络的健康运转,更重要的还可以得知黑客对网络攻击的机理,有针对地进行入侵检测,进而避免黑客的攻击破坏和对资料的窃取。1.4 国内外研究有关现状1.4.1 当今网络安全的研究从广义的网络安全角度来讲,近来国内外的研究主要集中在密码理论与技术、安全协议理论与技术、安全体系结构理论与技术等方面。密码理论与技术是现代信息安全的核心问题,其基础是可信信息系统的构建与评估主要包括两部分,即基于数学的密码理论与技术和非数学的密码理论与技术。自从 1976 年公钥密码的思想提出以来,国际上己经提出了许多种公钥密码

34、体制,近年来又提出了许多新的密码体系,如基于数学的分组密码、序列密码、认证码、数字签名、Hash 函数、身份识别、密钥管理、PKI 技术等和基于非数学的信息隐形,量子密码,基于生物特征的识别理论与技术等。数据捕获和协议分析只是网络安全中协议部分的一个分支,而且由于还不能完全抛开现有的正在广泛使用的不安全协议(如 TCP/IP 等),所以对于当今网络的协议分析在一段时间内还是研究的课题。但是,现在已经部分使用和今后发展方向的是采用安全的协议。安全协议的研究主要包括两方面内容,即安全协议的安全性分析方法研究和各种实用安全协议的设计与分析研究。安全协议的安全性分析方法主要有两类,一类是攻击检验方法,

35、一类是形式化分析方法,其中安全协议的形式化分析方法是安全协议研究中最关键的研究问题之一,它的研究始于 80 年代初,目前正处于百花齐放,充满活力的状态之中。许多一流大学和公司的介入,使这一领域成为研究热点。随着各种有效方法及思想的不断涌现,这一领域在理论第 11 页 共 27 页上正在走向成熟。目前,在这一领域中比较活跃的群体包括:以 Meadows 及Syverson 为代表的美国空军研究实验室;以 Roscoe 为代表的英国 Oxford 学院;以Bolignano 为代表的美国 IBM 公司;以 J.Mitehell 及 M.Mitehell 为代表的美国Stanford 大学;以 St

36、ubblebine 为代表的美国 AT&T 实验室;以 Paulson 为代表的英国 cambridge 学院;以 Abadi 为代表的美国数据设备公司系统研究中心等等。除了这些群体外,许多较有实力的计算机科学系及公司都有专业人员从事这一领域的研究。目前,已经提出了大量的实用安全协议,代表的有:电子商务协议,IPSec协议,TLS 协议,简单网络管理协议(SNMP),PGP 协议,PEM 协议,S 一HTTP 协议,S/MIME 协议等。实用安全协议的安全性分析特别是电子商务协议,IPSec 协议,TLS 协议是当前协议研究中的另一个热点。1.4.2 现有的网络测试分析系统基于网络数据捕获和协

37、议分析技术,可以应用成为广义上的协议分析仪(ProtocofAnalyzer),之所以这样定义是因为有一些纯软件的,目的更侧重于网络数据捕获和侦听的协议分析系统又叫做嗅探器(Sniffer),而基于硬件或软硬件结合的网络数据捕获和分析系统才叫协议分析仪。但在某些场合他们的分界是模糊的,因为它们在功能上都能捕获并分析报文。实际上一些网管软件,和一些网络测试仪都使用了嗅探器技术。纯软件的嗅探器很多,有Tcpdump、Nmap、linuxsniffer、Dsniff、Ngrep、snifferpro/NetXray、甚至有专用于捕获用户名和密码的 linsniffer、winsniffer。所以 s

38、niffer 技术本身就是一把双刃剑,它们同时被网络管理员和黑客在熟练地使用,既可以作为网络故障的诊断工具,也可以作为黑客嗅探和监听的工具。大多数的纯软件协议分析仪是可以使用普通的网卡来完成进行简单的数据采集工作的,即协议分析软件+PC 网卡。其典型的功能是数据包的捕捉、协议的解码、统计分析和数据流量的产生。用协议分析仪可以捕捉网上的实际流量、提取流量的特征,据此对网络系统的流量进行模型化和特征化。此外,网络协议分析仪还可以主动地产生大量的数据包施加到网络上,分析网络的响应或对网络系统进行加重测试。目前典型的协议分析仪有 HP 公司的 Intemet Advisor(网络专家系统)、Fluke

39、(福禄克公司)的 optiview 一 PE、WG 公司的Domino 系列协议分析仪,NAI 公司出品的 Network Associates Sniffer Portable等。但这类协议分析软件无论在协议的解码能力、解码和数据分析的实时性以及数据流量的产生能力上与用专门硬件实现的协议分析仪相比仍有差距。另一第 12 页 共 27 页种就是采用专用的数据采集硬件的协议分析仪,应用于复杂和高速的网络链路上,采用专用的数据采集箱有利于全线速地捕捉或更有效地进行实时数据过滤。还有一些比协议分析仪更高层次的网络性能测试工具,站在应用层的角度使用一些基准流量对网络系统的性能进行分析,代表性的软件是

40、Ganymede software 公司的 Chariot 软件。另外还有一类软件值得介绍,就是用于网络系统规划验证的网络系统模拟环境,国外己有一些这样的软件能对用典型的网络技术或它们的组合构建的较大型的网络系统进行模拟,但往往价格十分昂贵。从协议分析仪发展的角度来说,网络维护人员越来越需要使用功能强大并能将多种网络测试手段集于一身的综合式测试分析手段,典型的协议分析仪上的功能延展就是加入网管功能、自动网络信息搜集功能、智能的专家故障诊断功能,并且移动性能要有效。这种综合的协议分析仪或者说是综合的网络分析仪成为了当今网络维护和测试仪的主要发展趋势,像 Fluke 的 Opt View INA

41、手持式综合协议分析仪自上市来在网络现场分析、故障诊断、网络维护方法得到了相当广泛的应用和发展随着网络维护规模的加大,网络技术的变化,网络关键数据的采集也越来越困难。有时为了分析和采集数据,必须能在异地同时地进行采集,于是将协议分析仪的数据采集系统独立开来,能安置在网络的不同地方,由能控制多个采集器的协议分析仪平台进行管理和数据处理,这种应用模式就诞生了分布式协议分析仪。通常这种方式的造价会非常高的。1.5 本文所做的工作本课题针对网络数据包的捕获和分析技术做了比较深入的阐述。在对当今网络数据捕获和分析的有关基本实现机理、方法和手段进行分析的基础上,通过详细地分析基于 BPF 的网络数据包捕获函

42、数库 Libpcap 和 winpcap 的工作机理和内部架构,描述了网络数据包捕获和分析程序的层次结构,给出了具体的通过调用 Winpcap 来捕获和分析数据包的程序的设计与实现方法。对于今后网络数据的监测和分析方案(比如对无线网络和交换环境捕获和分析),本文也在最后部分做了相应的阐述和预测。第 13 页 共 27 页第第 2 2 章章 捕获基础及捕获基础及 LibpcapLibpcap 介绍介绍2.1 网络的数据捕获的原理2.1.1 网卡的工作模式以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的节点所组成,各个节点采用上面提到的 CSM/CD 议进行信道的争用和共享。

43、每个节点通过网卡来实现这种功能。每一个在局域网(LAN)节点上的主机都有其硬件地址(MAC 地址),这些地址唯一地表示了网络上的主机。当用户发送一个数据包时,这些数据包就会发送到 LAN 上所有可用的机器。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本机地址,如果不匹配,则说明不是发送到本机的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给 LLC 子层。网卡具有如下的几种工作模式:(1)广播模式(Broad Cast Model)一它的物理地址(MAC)地址是以 oxffffff 的帧为广播帧,工作

44、在广播模式的网卡接收广播帧。(2)多播传送(Multi Cast Model)一多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。(3)直接模式(Direct Model)一工作在直接模式下的网卡只接收目地址是自己Mac 地址的帧。(4)混杂模式(Promiscuous Model)一工作在混杂模式下的网卡接收所有的流过网卡的帧,数据包捕获程序就是在这种模式下运行的。2.1.2 共享环境下的网络数据捕获网卡的缺省工作模式包含广播模式和直接模式。因为在通常情况下,网络通信的套

45、接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的的数据包,它只接收广播帧和发给自己的帧。如果将网卡设置为混杂模式,它对遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包(绝大多数的网卡具备置成混杂模式的能力)。共享网络也称为集线器网络,数据报到达集线器以后,集线器会把数据报第 14 页 共 27 页转发到每个集线器的端口,换句话说,集线器连接的每个网络节点都有权利收到所有的数据报。这样,将一台

46、主机的网卡设置成混杂模式,它将接受同一网络内所有主机所发送的数据包,该主机就可以捕获到所有流经其网卡的数据包和帧,这样就可以到达对于网络信息监视捕获的目的。前面讲到的 Sniffer 就是一种能将本地网卡状态设成“混杂”状态的网络数据监听软件,要使 Sniffe:能接收并处理这种方式的信息,系统需要支持 BPF,Linux 下需要支持SOCKETPACKET。但一般情况下,网络硬件和 TCP/IP 堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的 TCP/IP 堆栈,网卡就必须设置为刚开始讲的混杂模式。同样道理,Libpcap 和 Winpcap 由于都是基于BPF 的数据

47、包捕获系统,它们在进行捕包前也要对网卡设置,即以混杂模式打开网络接口设备。2.1.3 交换环境下的网络数据捕获交换环境的网络使用交换机(Switch)连接各个网络节点。交换环境,通过使用交换机代替共享环境下的集线器,能够解决集线器的几个安全问题,交换机通过自己的 ARP 缓存列表来决定把数据报发送到某个端口,这样就不是把一个数据报转发到各个端口了,这样的做法一方面大大提高了网络的性能,另一方面也提高了安全性,在交换环境下,即使网卡设置为混杂模式,也只能监听本机的数据包,因为交换机不会把其他节点的数据报转发给嗅探主机了。所以,在交换环境下必须想办法让被嗅探主机的数据报发到嗅探主机来,能够实现这种

48、目的方法叫做 ARP 欺骗(ARP Spoofing),这种方式通过伪造 A 即数据包欺骗交换机使交换机更新 ARP 缓存列表达到欺骗的目的,这样发送到被嗅探的主机的数据报完全转发到嗅探主机来,而被嗅探主机收不到任何的数据包,为了使得能够正常的截获数据报,嗅探主机除了充当嗅探的身份之外,还要充当中间人的身份。交换环境下在不使用 ARP 欺骗的情况下,如何能够进行整网的数据分析呢?这里提供两种方法进行参考:(1)在根节点使用带有镜像功能的交换机,这种功能的交换机可以设置为把所有的数据报都转发到某一指定端口上,在该端口上可以连接运行 Sniffer 的主第 15 页 共 27 页机。(2)如果根节

49、点交换机没有这种功能,那么可以在根节点上方添加一台集线器,集线器一个端口连接交换机,另外一个端口就可以连接运行 Sniffer 的主机。2.2 网络开发工具2.2.1 网络开发函数库目前的网络安全程序、工具和软件大部分是基于 socket 设计和开发的。由于在安全程序中通常需要对网络通讯的细节(如连接双方地址/端口、服务类型、传输控制等)进行检查、处理或控制,象数据包截获、数据包头分析、数据包重写、甚至截断连接等,都几乎在每个网络安全程序中必须实现。为了简化网络安全程序的编写过程,提高网络安全程序的性能和健壮性,同时使代码更易重用与移植,最好的方法就是将最常用和最繁复的过程函数,如监听套接口的

50、打开/关闭、数据包截获、数据包构造/发送/接收等,封装起来,以 API library的方式提供给开发人员使用。在众多的 API library 中,对于类 Unix 系统平台上的网络安全工具开发而言,目前最为流行的 C 语言 API library 理有 libnet、libpcap、libnids 和libiemp 等。它们分别从不同层次和角度提供了不同的功能函数库。例如,使用数据包捕获函数库就可以实现网络监视系统的最基本功能;用网络数据包生成函数库就可以构造网络安全扫描系统的基本功能。这就使网络开发人员能够忽略网络底层细节的实现,从而专注于程序本身具体功能的设计与开发。利用这些 C 函数

51、库的接口,网络安全工具开发人员可以很方便地编写出具有结构化强、健壮性好、可移植性高等特点的程序。现在这些基本的功能函数库几乎己经成了标准的编程接口,编程时直接调用就可以,为开发者节省了时间和精力。在系统安全扫描、网络监测、防火墙、IDS 等领域都获得了极其广泛的应用。一些著名的网络安全系统使用了这些函数库作为底层功能的驱动和实现。一般来说,这些基本开发函数库是免费的甚至是开放源代码的,这更有利于通过诸多开发者的不断的测试和完善日趋成熟,进而有更加广泛的应用。常用的网络数据开发函数库有:(1)网络数据包捕获函数库 Libpcap:(2)Windows 平台下数据包捕获函数库 WinPcap;(3

52、)网络数据包构造和发送函数库 Libnet;(4)网络入侵检测函数库 Libnids;(5)通用网络安全函数库 Libdnet第 16 页 共 27 页2.2.2 数据包捕获工具前面己经表述了网络数据包捕获的基本原理,从广义的角度上看,一个包捕获机制包含三个主要部分:最底层是针对特定操作系统的包捕获机制,最高层是针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP 层、传输层、最后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等

53、相关处理,最后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。Libpcap 和 winPcap 网络数据包捕获函数库就是按照这样的原则设计的,其中 winPcap 函数库是为了将 Libpc 叩移植到 Windows 平台下而编写的,设计时参照了 Libpcap,所以在深入研究 w

54、inpcap 之前,先要讨论一下 Libpcap。2.3 Libpcap 函数库2.3.1 Libpcap 概述Libpcap 是由 Berkeiey 大学的 Van Jacobson,Craig Leres 和 Steven McCanne 用 C 语言编写的,是一个著名的、专门用来捕获网络数据的跨平台编程 API 接口。Libpcap 支持 Linux,Solaris 和 BSD 系统平台。它工作在高层并隐藏了操作系统的细节,是一个独立于系统的用户层包捕获的接口,为低层网络监测提供了一个可移植的框架网络数据捕获函数库,它在很多网络安全领域得到了广泛的应用,已经成为网络数据包捕获的标准接口。

55、很多著名的网络安全系统都是基于 Libpcap 而开发的,如数据包捕获和分析工具 Tcpdump,网络入侵检测系统 snort,以及网络协议分析工具 Ethereal 等。Libpcap 的开发一直非常活跃,版本不断更新,其官方网址为:www.tcpdump.org。最新的稳定版本号是 0.8.3,可以在其主页上下载。2.3.2Libpcap 的功能简单地说,Libpcap 的最主要功能就是捕捉为了数据网络包。它封装了网络数据包捕获功能所以使用起来非常方便。在捕捉数据包的过程中,可以对捕捉的模式进行设定,例如可以过滤特定的数据包,或者对捕捉对象进行限制。利用 LibPcap 的数据包捕获功能,

56、可以扩展出很多功能,例如,可以对数第 17 页 共 27 页据包进行分析,读出其内部的详细信息;或者进行网络流量分析、网络入侵检测、网络安全监测等,这些都是在数据包的捕获基础上进行操作的,所以都可以使用 Libpcap 来实现。具体的,Libpcap 的功能如下所述:(1)捕获各种数据包。它是个专业的数据包捕获函数库,效率很高操作也很简单。(2)过滤网络数据包。Libpcap 使用了 BPF(BerkeleypaeketFilter)捕获机制,可以对数据包进行定制的过滤,由于它工作在操作系统的内核层面并且在内核中使用了缓存机制,所以效率非常高。(3)分析网络数据包。Libpcap 捕获到数据包

57、后,可以提供数据包的基本信息,如捕获时间、包长度等,开发者可以在此基础上进一步分析有关的内容。(4)存储网络数据包。Libpcap 可以把捕获到的数据包存储到文件中,之后能够利用Libpcap 从文件中读取数据包进行再分析。2.3.3 Libpcap 功能结构及主要函数Libpcap 的内部原理和工作架构如图 2.1 所示。基于 BPF 的 libpcap 包捕获技术首先将网卡设置为混杂模式,然后将网卡驱动程序处截获的数据流复制后,不经过系统的协议栈,于内核先进行过滤,过滤器决定某一数据包是被接受或者拒绝以及如果被接受,数据包的哪些部分会被复制给应用程序;接下来过滤后的数据经过内核级的缓冲传递

58、给正在截获数据包的应用程序,这种先过滤再于内核缓冲的机制在高速高负载网络中可获得较好的性能。第 18 页 共 27 页 内存缓冲区 1 内存缓冲区 2过滤器 1 过滤器 2使用者调用Libpcap 使用者调用Libpcap通过 NetworkIinterfaceCardDriver(网卡驱动)网络截获的数据流系统自身协议栈 图 2.1 Libpcap 原理图 Fig.2.1 principle of Libpcap对开放源代码的 Libpcap 程序进行分析,可以得到它的功能执行过程及相关的分类结构如下:(l)初始化:这部分的功能包括打开设备、读取设备,设置过滤器部分。主要的函数如下:pcap

59、_read(),pcap_open_live(),pcap_setfilter()。在源代码中是以 peap-*.e 方式出现;(2)过滤规则表达式的处理:这部分的功能包括对过滤规则表达式进行编译、优化、调试(该部分过滤机制采用的是伪主机技术),如果熟悉 BPF 程序的编码规则,甚至可以修改其中代码,创建自己的过滤规则。这部分代码在:gencode.c,grammar.c,scanner.c,optimize.c 中。这一部分代码的工作方式是通过将输入的过滤规则表达式编译成 BPF 代码,然后存在一个名为bpf_Program 的结构中,最后利用 pcap_setfilter()来加载;(3)

60、本机网络设置部分:这部分是通过获取 socket 的状态,来检测TCP/IP 层网络设置。主要函数有:pcap_lookupdev()、peap_lookupnet()等,这部分代码在 inet.c 中:(4)其他部分:在 pcap.c 中定义了读数据的对外统一接口 pcap_next()来获取下一个数据包,获取当前错误信息的 pcap_geterr()等函数。另外,Libpcap 还支持脱机方式监听,在 savefile.c,有两个函数:pcap_open_offiine()和 pcap_offiine_read()。第 19 页 共 27 页Libpcap 的主要函数和 libcap 库的

61、基本使用流程如下:(l)Pcap_t*Pcap_open_live(); 用于打开一个网络接口进行数据包捕获。(2)char*peap_lookupdev(): 功能是获得本机的网络接口(3)int pcap_lookupnet(): 功能是获取的网络地址和掩码。(4)int pcap_dispateh()或 int pcap_loop(); 功能是(循环)获取网络数据包。(5)void pcap_dump(): 用于将包内容输出到由 pcap_dump_open()打开的文件中。(6)int pcap_compile(); 用于将过滤规则字符串编译成一个 BPF 内核过滤程序。(7)int

62、pcap_setfilter(); 功能是设置 BPF 过滤规则。(8)int pcap 一 datalink(); 功能是获取数据链路层类型,如 10M 以太网、SLIP、PPP、FDDI、ATM、IEEE802.3 等。(9)void pcap_close(); 功能是关闭 Libpcap 关联文件操作并回收资源。3 Winpcap 研究3.1 W1nPcap 介绍3.1.1Winpcap 和 Lipcapwinpcap(windows Packet Capture)是 windows 平台下一个免费、公共的网络访问系统,是为 Linux 下的 libpcap 移植到 windows 平台

63、下实现数据包捕获而设计的函数库,在设计 Winpcap 时参照了 libpcap,使用方法也与libpcap 相似,基于 libpcap 的程序可以很容易的移植到 Windows 平台下。这个数据包捕获架构是由加州大学和 Lawrence Berkeley 实验室及其投稿者联合开发的。他们在 1999 年 3 月 31 日推出了 1.0 版,提供了用户级 BPF 过滤;1999 年 8 月 21 日推出了 2.0 版,将 BPF 过滤增加到内核中并增加了内核缓存;2001 年 3 月巧日推出了 2.1 版,该版对 libpcapo.5.2 进行了升级,并可支持更多的网络类型;2001 年 l

64、月 30 日推出了 2.2 版;2002 年 3 月 28 日推出了 2.3 版;2003 年 l 月 10 日推出了 3.0 版,增加了 NPF 设备驱动的一些新的特性及优化方案、在 wpcap.dll 中增加了一些函数等等功能。winpcap的最新版本是 3.1。winpcap 的官方主页是 www.winpcap.org,可以在其主页上下载这个软件及其源代码,更重要的是,网站上还有很多开发文档,对于利用 Winpcap 作为工具开发网络安全软件的编程人员有很大帮助。3.1.2 Winpcap 的功能和应用(1)开发 Winpcap 这个项目的目的在于为 win32 应用程序提供访问网络第

65、 20 页 共 27 页底层的能力。Winpcap 为程序员提供了一套标准的网络数据包捕获接口,并且与 Libpcap 兼容,使得原来许多 Linux 平台下的网络安全程序可以很快地移植到 windows 平台下:winpcap 的效率很高,它充分考虑了各种性能和效率的优化,在内核层次实现了数据包的捕获和过滤。这是由 NPF(Netgroup Packet Filter)来实现的,NPF 是 winpcap 的核心部分,它还实现了内核层次的统计功能,有利于设计网络流量的程序。Winpcap 提供了以下的各项功能:1)捕获原始数据包,包括在共享网络上各主机发送/接收的数据包以及相互之间换的数据包

66、;2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉:3)在网络上发送原始的数据报;4)收集网络通信过程中的统计信息。(2)Winpcap 的应用非常广泛,很多不同的工具软件使用 Winpcap 作为开发工具,它特别适用于下面这几个经典领域:l)网络及协议分析;2)网络监控;3)通信日志记录;4)流量发生(traffic generators);5)用户级别的桥路和路由;6)网络入侵检测系统(NIDS);7)网络扫描;8)安全工具。(3)特别地,大部分 windows 平台下有数据包捕获功能的软件都使用了Winpcap 作为编程接口,比较著名的有:Windump 一网络协议分析软件,与 Linux 下的 Tcpdump 功能几乎一致,可以用规则表达式,可以显示符合规则的数据包的包头部,还可以识别 PPP,sLIP 及FDDI 数据包。Sniffit 一 windows 平台下的嗅探器。sniffit 是由 Lawrence Berkeley Laboratory 开发的,可以在 Linux、Solaris、SGI、Windows 等各种平台运行,提供了不少商业版 S

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!