1、网络数据包分析工具的设计与开发摘 要当前,随着信息化发展,网络安全问题日渐突出,网络攻击日益泛滥,所以网络信息安全就变的非常重要。网络主机必须有足够的安全措施,否则网络的价值就会贬值。本系统的开发就是为了给网络使用者提供一个有用的网络数据包分析工具。本系统有四个主要功能:数据包的捕获、数据包解析、数据包信息分析和数据包信息的显示。为了实现系统功能,本系统选择在ubuntu(Linux)、libpcap、apache、mysql 和 php 的平台上开发,操作系统和软件开发包全部为开源免费的软件,这也是本系统的一个重要特点。本系统首先用 libpcap 捕获数据包,然后用 C 语言,并以 TCP
2、/IP 协议为理论基础解析数据包,解析得到的信息存储到 mysql 数据库中。数据包信息分析模块从 mysql数据库中读取数据,对信息进行统计分析,并对网络信息状况进行安全描述。最后通过 apache 和 php 技术来显示数据库信息。通过测试本系统实现了数据包捕获、解析、信息分析、信息显示,为使用者了解当前的网络数据包状况提供了很好的参考。关键词:网络数据包;TCP/IP;数据包解析;数据包信息分析;攻击特征The Design and Development of Tool about Network Packets AnalysisAbstractNowadays, with the d
3、evelopment of information, the issue of network security is becoming prominent and the network attack is proliferation. Therefore, the security of network information is becoming very important. Network hosts must have adequate safety, or the value of the network would be devalued. The development o
4、f the system was to provide the users with a useful tool that analysis the network packets. The system has four main functions: capture the network packets, analysis the packet, analysis the information of packet and display packet information. To achieve the goal, I choose the system of ubuntu (Lin
5、ux), libpcap. apache, mysql and php platform to develop the system. The operating systems and software development kits are free, this is one of the systems features. The system used libpcap to capture data packets firstly, and then use the C language, and TCP / IP protocol as the basis theoretical
6、to analytic packets, the database of mysql stored the result of Analysising information. Module of packet analysis reads the information from the database of mysql, statistic and analysis the information, and then describes security conditions. Finally, use the apache and php technology to display d
7、atabase information. Through the test of the system to achieve the goal that capture and analysis data packet, information analysis, display information, it is a good reference for users to keep up on the current state of network.Key words: Network packets; TCP/IP; Packet analysis; Packet informatio
8、n analysis; Attack characteristic目 录论文总页数:26 页1 引言 .11.1 课题背景 .11.2 国内外研究现状 .11.3 本课题研究的意义 .11.4 本课题的理论基础 .12 网络数据包分析系统概述 .22.1 网络数据包分析的意义 .22.2 网络数据包分析的核心技术基础 .22.3 网络数据包分析系统的主要功能 .23 网络数据包分析系统的设计 .33.1 系统模块划分 .33.2 数据包捕获模块设计 .43.3 数据包解析存储模块设计 .43.4 数据包信息分析模块设计 .53.5 数据包信息显示模块设计 .64 网络数据包分析系统的解决方案
9、.64.1 数据包捕获模块的解决方案 .74.2 数据包解析及存储模块解决方案 .74.3 数据包信息分析模块解决方案 .84.4 数据显示模块解决方案 .85 网络数据包分析系统的实现 .85.1 系统控制模块实现 .95.2 数据包捕获模块实现 .105.3 数据包解析及存储模块实现 .125.4 数据包信息分析模块实现 .145.5 数据包信息显示模块实现 .156 网络数据包分析系统的测试分析 .176.1 测试方案与测试环境 .176.2 测试结果 .176.2.1 数据包捕获 .176.2.2 数据包解析及存储 .176.2.3 数据包信息简单分析 .186.2.4 数据包信息显示
10、 .19结 论 .20参考文献 .21致 谢 .22声 明 .23附 录 .24第 1 页 共 26 页1 引言1.1 课题背景如今,网络的飞速发展是有目共睹的,但是在这个飞速发展的过程中,也出现不安全的因素。网络攻击、病毒传播等迅速增长,利用网络进行盗窃、诈骗、敲诈勒索、窃密等案件逐年上升,严重影响了网络的正常秩序,严重损害了网络使用者的利益;面对网络安全的严峻形势,如何判断连入网络的主机是否安全就变的十分重要。选题的目的是积极认识当前网络安全的形式,对常见网络协议数据包进行解析,设计一个可以对网络数据包进行捕获、解析,并可查看数据包信息和进行数据统计分析的工具,深入理解网络协议及安全知识!
11、1.2 国内外研究现状典型的网络数据包分析器能捕获数据包,解码各种不同协议,并提供人们易读的结果格式。大多数比较完善的分析器还包括一些统计报告功能。通过查看网络信息分布,了解网络利用以及接收连接动态等一系列行为,管理员可以很容易地判断引起故障的工作站点及其产生原因。1.3 本课题研究的意义网络安全问题已经不再是一个新鲜的课题了,也已不再是一个高深的课题了,对于网络数据包的分析,也已经有了比较成熟的结构设计,例如数据包的捕获,解析,提供易于查看的格式和简单的统计报告。但是网络的发展日新月异,安全要求也不断发展,论文主要进行个模块的紧密联系,并使用 MySQL 数据库加强了统计报告模块的功能。1.
12、4 本课题的理论基础数据包的分析工具是在 ubuntu+libpcap+apach+mysql+php 的平台上进行设计。运用 libpcap 开发包进行网络设备的设置并进行数据包的抓捕,在解析模块中把获得的数据包按协议包头格式进行解析,并进行简单的解释,最后放到mysql 数据库中等待后面统计分析模块的使用。统计分析模块中对数据库中的信息进行分类统计,获取所需要的数据信息,并与设定好的各种攻击特征进行比对,来对当前的主机安全状况进行简单的统计分析,另外,如果用户要进行手工分析,工具提供了可方便查询捕获数据包的包头信息页面。用户可通过这些数据进行手工分析来判断主机的状况。整个系统的基础是建立在
13、 TCP/IP 协议的基础上的。TCP/IP 协议并不完全符合 OSI 的七层参考模型。OSI 一种通信协议的 7 层抽象的参考模型,其中每一层执行某一特定任务。TCP/IP 通讯协议采用了 4 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 3网际协议 IP 是 TCP/IP 的心脏,也是网络层中最重要的协议。另外还有 TCP 有连接协议,UDP,ICMP 等协议。第 2 页 共 26 页2 网络数据包分析系统概述2.1 网络数据包分析的意义凡是看过经典电影黑客帝国并且使用过网络数据包分析工具的人,应该都会有像电影中那个坐在一大堆的控制面板前解码像水流一样从屏幕上连续滑落
14、的信号的“操作者”一样的感觉。电影中的操作者处理的是生死的问题,而在现实中,数据包分析工具的使用者们处理的也是同样重要的问题。其对数据包进行检修及侦测的能力,对网络及依托于网络的行业都是至关重要。数据包分析工具的生存期还很长,这主要是因为对于那些需要有目的地进行 724 小时网络管理的行业来说,数据包分析工具可以提供令企业更容易接受和消化的网络分析数据。2.2 网络数据包分析的核心技术基础数据包分析是一 TCP/IP 协议为基础的。说到 TCP/IP 就不能不提OSI,TCP/IP 协议并不完全符合 OSI 的七层参考模型。OSI 是一种通信协议的 7层抽象的参考模型,其中每一层执行某一特定任
15、务。该模型的目的是使各种硬件在相同的层次上相互通信。这 7 层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而 TCP/IP 通讯协议采用了 4 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。 3这 4 层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP) 、文件传输协议(FTP) 、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP) 、用户数据报协议(UDP)等,TCP 和 UDP 给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层
16、:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收) ,如网际协议(IP) 。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line 等)来传送数据。2.3 网络数据包分析系统的主要功能软件都是为应用才设计的,所以软件能提供什么样的功能就很重要了。网络数据包分析工具要实现四个功能,数据包的捕获,数据包的解析,数据包信息分析,数据包的信息显示。数据包的捕获和解析是系统的基础部分,数据包信息的分析和显示是对数据的处理部分。四个模块相互协调共同对当前主机的网络数据包进行分析。在网络数据包分析工具的设计过程中,网络速
17、度是不可不考虑的。网络和第 3 页 共 26 页网络速度的发展给网络监测带来了新的挑战。在普通 PC 上基于 Linux 实现的数据包分析相关的系统,在面临高速链路的情况下越显力不从心。所以如何快速的捕获数据包就十分重要。数据包解析技术是数据包分析的基础。对数据包进行解析,是基于数据包分析的工具要解决的核心问题,构造数据包的协议有很多种,要根据构造数据包的协议对该包进行处理,要正确理解在网络中传输的单元,进而才能很好地控制网络单元的传输,实现数据包的分析。网络数据包的分析是对捕获解码的数据包信息进行统计分析,是输出结果的部分。数据包信息的显示是提供的是人性化的辅助作用。3 网络数据包分析系统的
18、设计整个网络数据报分析工具采用模块化的设计思想,原因是许多程序太长或太复杂,很难写在单一单元中。如果把代码分为较小的功能单元,将大大简化编程过程。模块化程序一般比单块程序容易编写、调试和修改。所以本系统采用模块化的设计思想。模块化编程的优点如下:(1)有效率的程序开发: 使用模块化方法可以更快地开发程序,因为较小的子程序比大程序更容易理解、设计和测试。定义好模块的输入和输出之后,程序员可以给模块提供需要的输入,通 过检测输出来判断模块的正确性。然后由连接器把分立的模块连接、定位,生成一个单一的绝对地址的可执行的程序模块。最后,测试整个模块。(2)子程序可以重用:为一个程序编写的代码经常可以用于
19、其它的程序。在模块化编程中,可以把这些部分保存起来,以备将来使用。因为代码可以被重定位,所以保存的模块可以连接到满足其输入和输出要求的任意程序中。而在单块程序编程中,这样的部分深埋在整个程序中,不易被其它的程序使用。(3)便于调试和修改: 模块化程序一般比单块程序易于调试。因为精心定义了程序的模块接口,很容易把问题定位到特定的模块。一旦找到了有问题的模块,更正问题就相当容易了。3.1 系统模块划分网络数据包分析工具有四个模块组成:一是 数据包的捕获,实现从网卡获取数据包。二是 数据包的解析,这两个模块是整个分析工具的基础部分,在整个系统中有着重要的作用,三是 捕获信息的分析,此模块主要是对捕获
20、的信息进行统计,并与设定的特征值进行比较,得出简单的分析结论,四是 显示捕获数据包的信息,目的是为使用者提供一个方便进行手工分析的方式。四个模块之间的调用关系如图 1。第 4 页 共 26 页3.2 数据包捕获模块设计此模块是先从网卡获取各种数据包信息并复制到缓存,等待解析模块的调用。这个模块的关键部分是快速的捕获数据包,减少丢包的比率。数据包捕获是以以太网为基础的。以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这
21、一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。 1以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据 的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给 LLC 子层。 13.3 数据包解析存储模块设计在上一模块实现了数据包的捕获,并复制到
22、缓存。解析模块主要是实现根据数据包的协议包头进行数据信息的解析,并做出适当的解释,最后把数据放入数据库中。等待分析模块读取数据。目前解析的协议有 etnernet, LLC, arp/rarp, ip, tcp, udp, icmp, dns, dhcp 协议包头进行了解析并把数据包信息存储到数据库中。数据包头的解析主要是根据数据包协议的格式进行有意义字段的读取。下面以 ARP 协议报头来说明整个解析的过程。首先,必须了解 ARP/RARP 协议的报头格式,格式如图 2。数据包捕获数据包信息显示 数据包解析及存储 数据包信息分析图 1 系统模块及关系第 5 页 共 26 页字段含义硬件类型字段
23、:指明了发送方想知道的硬件接口类型,以太网的值为 1;协议类型字段:指明了发送方提供的高层协议类型,IP 为 0800(16 进制) ;硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样 ARP 报文就可以在任意硬件和任意协议的网络中使用;操作字段:用来表示这个报文的类型,ARP 请求为 1,ARP 响应为 2,RARP 请求为 3,RARP 响应为 4;发送方的硬件地址(0-3 字节):源主机硬件地址的前 3 个字节;发送方的硬件地址(4-5 字节):源主机硬件地址的后 3 个字节;发送方 IP(0-1 字节):源主机硬件地址的前 2 个字节;发送方 IP(2-3 字节):源主
24、机硬件地址的后 2 个字节;目的硬件地址(0-1 字节):目的主机硬件地址的前 2 个字节;目的硬件地址(2-5 字节):目的主机硬件地址的后 4 个字节;目的 IP(0-3 字节):目的主机的 IP 地址。 3根据协议的格式定义,报头数据结构体(具体定义在后面给出) 。进行类型的转化后对数据进行读取,并进行必要的解释。在这里最重要的是数据包的协议格式的定义。如果定义的结构有问题,后面的数据提取将是无意义的。数据包信息的存储,是把提取的数据包头信息存储到一个地方,等待后面数据包信息分析模块的查询。存储信息要求,存入和提取信息都必须迅速,同时,要提供强大的查询功能来满足分析模块对数据的需求。3.
25、4 数据包信息分析模块设计本模块的功能是通过对捕获到的数据包信息,进行简单的统计分析,对当前的网络安全情况做出合理的评价。通过对数据包的分析,我们可以判断数据包的大小,数据包的包头信息,协议信息,以及数据包的内容等等。对于研究网络安全的人来说,掌握这方面的知识是相当重要的。现在的网络通信中,大部分数据都没有加密,我们可以轻易地从数据包中提取账号,密码之类我们关心的数据。另外,对数据包整体0图 2 ARP 包头格式16 32第 6 页 共 26 页的信息统计也是数据包分析的一个方面。在前面的模块中我们获得了大量的数据包信息,在这个模块中我们要利用这些信息进行分析。把从数据库中查询得到的数据与入侵
26、特征数据进行比较得到现在的网络安全分析结果。数据包信息分析流程如图 3。3.5 数据包信息显示模块设计数据包信息显示模块的目的是给使用者提供一个可以查看数据包信息的窗口,原则是尽力合理的显示数据包的有用信息。数据包信息将采用多种不同排列的信息显示方式,比如按 IP 归类,按端口归类等等。同时信息分析模块的分析结果将生成一个网页类型的文档,可以通过网页的形式来查看最后的分析结果,还应该具备安全特征的输入窗口。信息的显示并不一定是数据库里的所有信息,主要是提供给使用者最想看的信息。信息的显示方式是表格形式,有利于使用者对数据包的信息有比较直观的了解,以便做出正确合理的判断。4 网络数据包分析系统的
27、解决方案整个系统的开发平台是 Ubuntu+Libpcap+Apache+Mysql+Php 每一个组件都是 Free or Open Source Software(免费或者开源软件) 。选择这个开发平台是整个系统的一大特色,首先免费软件降低了开发成本,减少不必要的消耗。再次正版软件的使用是系统更加的稳定,具有更好的可靠性,同时也避免了侵权的问题。这种免费和开源的方式对于用户都具有很强的吸引力,无论企业和个人开发者,尤其是对想得到较好的技术支持但又没有足够的经济支持的开发人员。在互联网方面,不需要为软件的发布支付任何许可证费就可以开发和应用。同时开源社区的潜力更在于资源共享,上百万的志愿开发 者为开源软件贡献自己的力量,保证了技术的不断进步和升级。开源的特性也使企业和开发人员可以随意的修改源程序为我所用,提升专有软件或者商业软 件的限制中所没从数据库查询信息与特征信息进行对比文件输出分析结果图 3 数据包信息分析