(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf_第1页
(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf_第2页
(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf_第3页
(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf_第4页
(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(通信与信息系统专业论文)基于定位模板的互联网协议解析还原系统的设计和实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 互联网协议解析还原系统是对互联网络现行的应用层服务进行深度解析的 软件。在当今互联网业务日益增大,互联网安全问题受到了严峻的挑战。目前, 如何能够正确、高效地还原出互联网协议,达到对使用互联网从事违法犯罪活 动、散播虚假欺诈信息的问题监管控制,成为了维护国家网络安全的重大课题。 本文在剖析互联网传输协议的基础上,通过使用开源网络辅助工具,研究了互 联网协议解析还原系统的功能和结构,设计并实现了性能较高、拓展性强的监 控软件。 本论文的编写根据白顶向下的系统软件开发设计思路,按照捕获网络数据 和处理捕获到的网络数据的顺序,主要分成两大部分:第一部分分别探讨了在 局域网、广域网环境下对底层数据包进行捕获和预处理的技术和方案细节;第 二部分主要介绍了一种基于模板的互联网协议解析还原技术。最后将两大模块 有机结合,设计实现了一个立体的,面向局域网内的互联网协议解析还原系统。 本系统是在w i n d o w s 操作系统下,以v c 6 0 为开发工具,使用w i n p c a p 底 层数据库函数进行开发完成的,本系统向用户提供了友好的用户界面,经过测 试运行稳定,能够准确、实时地还原局域网内的互联网应用协议,达到了有效 监控的目的。 关键词:协议还原数据捕获模板w i n p c a p a b s t r a c t a b s t r a c t i n t e r n e tp r o t o c o lr e s o l u t i o nr e s t o r es y s t e mi sak i n do fs o f t w a r ew h i c ha i m st od e e p l y a n a l y z et h ee x i s t i n ga p p l i c a t i o nl e v e ls e r v i c e si nt h ei n t e m e t i nt h ee r ao ft o d a y s r a p i dd e v e l o p m e n to fi n t e m e tb u s i n e s s ,t h e r ea r em a n ys e v e r ec h a l l e n g e so ft h e i n t e r n e ts e c u r i t yi s s u e s a tp r e s e n t ,h o wt o c o r r e c t l ya n de f f i c i e n t l yr e s t o r ei n t e r n e t p r o t o c o l ,t oa c h i e v et h er e g u l a t o r yc o n t r o lo fu s i n gt h ei n t e r n e tt oc o m m i tc r i m i n a l a c t i v i t i e sa n ds p r e a df a l s ef r a u di n f o r m a t i o n ,b e c o m e sa m a j o ri s s u eo fs a f e g u a r d i n g n a t i o n a ln e t w o r ks e c u r i t yt h i sp a p e ri sb a s e do nt h e a n a l y s i so fi n t e r n e tt r a n s p o r t p r o t o c o l st h r o u g hu s i n gt h eo p e ns o u r c en e t w o r kt o o l st os t u d yt h ef u n c t i o na n d s t r u c t u r eo ft h ei n t e r n e tp r o t o c o lr e s o l u t i o nr e s t o r es y s t e mi no r d e rt o d e s i g na n d i m p l e m e n tam o n i t o r i n gs o f t w a r ew h i c hh a sh i g hp e r f o r m a n c ea n ds t r o n ge x p a n s i o n t h i sp a p e ri sw r i t t e na c c o r d i n gt ot h eo r d e ro ft h es y s t e ms o f t w a r ed e s i g na n dd i v i d e d i n t ot w op a r t si na c c o r d a n c ew i t ht h e c a p t u r eo f n e t w o r kd a t aa n dp r o c e s s i n gt h e c a p t u r e dn e t w o r kd a t a t h ef i r s t p a r td i s c u s s e st h eu n d e r l y i n gd a t ap a c k e tc a p t u r e a n d p r e p r o c e s s i n gi nt h el a n a n dw a ne n v i r o n m e n t st e c h n i c a la n dp r o g r a m m a t i c d e t a i l s ;t h es e c o n dp a r ti n t r o d u c e sat e m p l a t e b a s e di n t e m e tp r o t o c o lp a r s i n gr e d u c t i o n t e c h n o l o g yt h el a s tp a r tc o m b i n e st w om o d u l e s d e s i g n s a n d i m p l e m e n t s at h r e e d i m e n s i o n a l ,o r i e n t e dl o c a la r e an e t w o r kw i t h i nt h ei n t e m e tp r o t o c o lr e s 0 1 u t i o nr e s t o r es y s t e m t h i ss y s t e mu s e st h ew i n d o w s o p e r a t i n gs y s t e m ,a n dv c 6 0a si t sd e v e l o p m e n tt o o l s a tt h es a m et i m ei tu s e sw i n p c a p u n d e r l y i n gd a t a b a s ef u n c t i o n sf o rc o m p l e t i o no ft h e d e v e l o p m e n t ,t h es y s t e mp r o v i d e su s e r sw i t haf r i e n d l yu s e ri n t e r f a c e ,l a nt e s t e d s t a b l e o p e r a t i o n ,t ob ea c c u r a t e , r e a l - t i m er e s t o r ew i t h i nt h ei n t e m e ta p p l i c a t i o n p r o t o c o l s ,t oa c h i e v et h ep u r p o s eo fe f f e c t i v em o n i t o r i n g k e yw o r d s :a g r e e m e n tt or e s t o r e t h ed a t ac a p t u r e t e m p l a t e s w i n p c a p 第一章绪论 第一章绪论 科技在进步,互联网技术也在近些年来蓬勃发展。人们的同常生活正在越 来越多的依赖互联网,而越来越多的网站形式也在服务人们生活的方方面面。 人们可以选择通过网络发送邮件、使用聊天工具进行通信,也可以通过在网上 轻松地点击鼠标获取信息,或是进行娱乐、购物。但是随着各种各样的网络互 联方式的为人们广泛使用,人们也要看到,新的网络方面的安全问题也随之而 来。人们在享受互联网带来便利的同时,也需要能够应对各种网络上的安全问 题,从而防范网络犯罪行为。互联网协议的分析软件的实现,是进行网络安全 防范的重要环节。本章首先对协议解析的概念进行深入分析,然后介绍现有的 协议解析还原系统的现状与存在的问题,最后讲述的是整篇论文的结构安排。 第一节互联网协议解析系统简介 所谓的协议,它类似人们沟通的语言。它是沟通双方约定来共同遵守、共 同认同的准则。而人们能对互联网协议进行正确解析,也正因为它是已经被定 义好了的。互联网协议解析系统正是这样一个为获取、解析互联网数据,实行 更好的对互联网安全进行监控的软件。互联网协议解析系统一般由网络数据截 获与协议分析还原两部分模块构成。 网络数据截获模块的主要功能,主要是获取传输在网络中的数据包。网络 数据包的截获,在监测网络安全和黑客进行网络攻击方面都十分重要。如果从 两方面看待截获与分析网络上传输数据包,就会发现好的方面是它可以作为对 网络安全情况分析之用,而另一方面,它也有可能为黑客所利用,在为其发动 网络攻击提供有价值的情报。虽然黑客能够利用数据包截获技术,但是并不能 说数据包截获程序对网络安全构成了威胁这个技术就如同一个工具,是有 益还是有害完全取决于使用者。 数据包截获模块主要负责的是执行捕获工作,另外一个重要的部分是协议 分析还原部分,对截获到的数据包内部协议进行深入地分析和还原。t c p i p 协 议是互联网上各种各样的网络应用建立的基础。在现在的网络应用服务中,新 第一章绪论 兴了许多新的服务形式,越来越多地需要专门的软件对网络数据包进行捕获和 还原处理,所以对互联网的协议的解析还原是非常重要的。然而仅仅解析出互 联网t c p i p 协议,只是监测对分析网络数据流向、查询网络安全漏洞等问题有 所帮助,没有其他意义。对于本系统的实现,更关心的是对h t t p 应用层内数据 的正确还原。网络上的h t t p 协议涵盖了人们日常生活的所有网络操作,如果能 够正确的解析还原,就能对在打击计算机犯罪、防范网络违法活动中占得先机, 例如邮件、b b s 发帖、网络聊天都是需要进行监测的网络行为。 除了监控网络用户行为之外,协议解析还原系统用途也是广泛的。例如, 在一些较大的邮件系统中都安装有对垃圾邮件进行判别和检测的过滤系统。这 个过滤系统的作用就是在对邮件协议内容的解析还原之后,根据固定的格式来 判定邮件是否为需要过滤的、甚至是有害安全的邮件,然后进行过滤。一般的 垃圾邮件过滤系统的拓扑图如图1 1 所示 2 1 。 图1 1 垃圾邮件过滤系统总体结构 局域网城域网 总之,互联网协议解析还原系统,就是采集网络上传输的所有数据包,并 支持从链路层、i p 层、传输层,直到应用层的完整的数据解析和分析,这样根据 用户的需求开发出方便用户使用的协议还原技术。结合数据包捕获机制、协议 解析还原技术,完成对网络数据包的准确解读,达到数据监控、分析等功能的 目的,以及实现数据格式统一和存储的功能。 第二节国内外研究现状与发展趋势 国内外的网络安全产品主要是对网络入侵的防范方面,如防火墙、流量分 第一章绪论 析软件等;而对于报文内容分析的软件更多的是互联网协议学习类的软件,如 s n i f f e r 、w i r e s h a r k 等。近些年来,随着网络技术发展的大繁荣,越来越多的互联 网服务的逐步兴起,也给更多的网络犯罪的不法分子提供了可能,于是互联网 协议解析还原方面的软件也纷纷涌现。对互联网协议解析还原技术的研究,也 是研究的热点问题。 对于互联网协议解析还原系统的研究,目前主要分为两个方向:一个是如 何应对传输速率越来越高的网络,做到快速处理网络数据,另一个就是如何能 对网络协议做到深入的解析还原。 1 2 1 现有协议解析还原系统数据捕获策略 对于协议解析还原系统,如何应对传输速率越来越高的网络,做到快速捕 获和处理网络数据问题是极为关键的,是实现优秀的协议解析还原系统的基础。 针对于不同平台之下的解析还原系统,底层的数据捕获和处理的策略是不同的。 对于在l i n u x 系统平台上设计的协议解析还原系统,最广泛使用的数据捕获 机制是b p f ( b e r k e l e yp a c k e tf i l t e r ) 参考模型。这个参考模型采用了新型的数据过 滤算法,以寄存器为依托,结合独特的缓存机制,很大程度上对整体过滤效率 有明显的提高的作用。 在b p f 模型下,网络数据包在网卡经过时,如果监听接口上网络监视模块已 经开启了工作,那么链路层的驱动会把数据转交给系统的协议内;b p f 会被链路 层驱动程序所调用,然后对网路数据包信息进行判定,如果匹配则将数据提交 给高层服务。链路层驱动会在以上步骤结束后继续正常工作。 对于w i n d o w s 平台下的协议还原系统,捕获网络数据的工具主要是w i n p c a p 捕获接口函数。w i n p c a p 以其强大的功能接口、跨w i n d o w s 版本平台的编译方式 以及免费的开源代码,使得在w i n d o w s 平台下开发协议还原系统中广泛使用,同 时也为协议解析还原系统提供了灵活的数据捕获方式。 1 。2 2 现有数据解析还原策略和存在的问题 在网络技术繁荣的今天,协议的解析能够使用的场合相当广泛:p 2 p 流量识 别、网络攻击防御系统、监控管理系统等方面。网络数据的解析用途如此之多, 但是现有的数据解析机制却不尽完美。 第一章绪论 网路数据包的解析实际上就是对于网络协议的解析。对于互联网网络传输, 目前使用的最广泛的就是t c p i p 协议。t c p i p 协议定义规范,协议标准具有开 放性,为用户提供了可靠高层服务的基础,而且屏蔽了计算机的操作系统和具 体的硬件。但是,对协议的解析还原仅仅分析到i p 层、t c p 层还是不够的,t c p i p 协议上层的应用层协议,包含大量有用且直观的信息。 对于目前的数据解析还原系统,对应用层的解析还只是停留在保存页面截 图,或者保存网页内容等。 保存页面截图,就是监控系统定时地向获取用户主机页面截图图像。这种 方法获取结果的优点是直观,但是缺点很多:第一,图片数据量存储位置较大, 需要很大的存储服务器来进行保存;第二,图片格式信息不利于侦测敏感信息、 并且给信息存入数据库带来麻烦;第三,何时对页面进行截图技术,很有可能 漏掉有用信息。 保存页面内容的方式就是不加选择地存储用户浏览器的网页交互信息,系 统在接收完毕之后对数据进行重组,实现页面还原。这样做虽然能够完全保存 用户的使用信息,但是同样存在着数据量过大的问题。 之所以产生些问题,固然有由于各个网站建站设计、情况不同,导致了应 用层协议多种多样的因素存在,但本质是这些协议解析还原系统还是存在着对 应用层协议还原的深度不够的问题,需要使用一种新型的数据解析方案,来将 应用层协议作归纳和统一描述。 第三节本论文的主要结构和章节安排 本论文首先对传统协议解析还原系统做了分析,然后以侧重分析t c p i p 以 及其上的应用层数据为目标,将目前广泛使用的数据获取和解析还原模型,结 合多种技术,尝试着对应用层数据进行深度还原。论文大致分为四个部分:首 先介绍在局域网、城域网两种环境下数据包截获的机制和处理方法,然后介绍 数据包解封装以及t c p i p 协议解析还原技术;在介绍完两个模块的设计之后, 讲述协议解析还原系统的整体架构以及在此架构上的拓展;最后对程序的测试 结果做分析。根据这些内容将论文分为以下章节。 第一章整体介绍协议解析还原系统的结构和研究现状。介绍了现有的协议 还原机的数据包捕获机制。最后讨论了现有数据还原技术的不足以及需求,提 第一章绪论 出了本文的设计目标。 第二章讲述协议解析还原系统从需求分析到整体结构的设计过程,并将程 序需要实现的主要功能分为几个功能模块,简述各个模块的功能,并分析了整 个系统的流程情况。 第三章讲述系统设计的底层数据捕获模块的设计和实现过程。针对小范围 局域网,提出了一种使用a r p 技术在w i n d o w s 平台下的数据捕获设计方案;然后, 对于大范围内的城域网情况下数据的捕获处理技术也做了详细的论述。 第四章讲述系统设计的另一核心模块:协议还原模块。在本章内介绍一种 新型的、基于模板的数据还原技术,并对整个还原的方式、流程做详细描述。 第五章讲述系统的整体结构,系统的整体流程,以及系统功能拓展时,模 块添加的方法。 第六章介绍系统的测试环境,展示系统的运行结果,并分析系统的功能和 性能。 第七章对本论文的主要工作进行总结和展望。提出不足与日后工作的方 向。 第二章协议还原系统程序整体结构设计 第二章协议还原系统程序整体结构设计 对于一个系统,从设计到研发,需求分析是很有必要的。本章从系统的需 求分析着手,通过对整个系统的功能的分析,将本系统功能的实现划分为几个 功能模块,并对各个功能模块的分工和实现做了简要的分析和设计。在将各个 模块的功能确定之后,设计出系统整体流程图,为后续的实现打下基础。 第一节需求分析和整体功能设计 需求分析是设计实现系统过程中的一个重要的环节,对整个系统有决策性、 方向性的作用。良好的需求分析要求对待解决的问题进行详细而深入的研究, 对已知的内容和所求内容要有充分的了解和把握。 本论文所要设计的互联网协议解析还原系统,需要能够对互联网传输的数 据进行有效捕获和正确协议解析还原。整理这两方面的需求之后,能够对整个 系统的整体需求分析做出如下归纳。 对于传输数据捕获方面需要达到以下目的:对网络内传输的数据能够成功 捕获,而不影响被监控主机的上网情况;而且能够对捕获的数据做预先处理和 解封装。 而对协议解析还原方面,需要本系统能够正确还原i p 、t c p 协议,然后通过 完整整合t c p 流,将应用层h t t p 协议正确还原并过滤出数据流中的有效信息; 在还原过程结束之后,能够正确地对字符进行解码,转换成可以识别的内容之 后,按照一定的格式存储结果文件。 在进行需求分析之后,本系统的需要实现的基本功能也就大体上确定。本 系统主要由数据捕获、协议解析还原两个模块组成。系统整体功能和交互情况 如图2 1 所示: 第二章协议还原系统程序整体结构设计 数据截获系统 弋乡解封装、 协议解析还原系 统 组 图2 1 互联网协议解析系统结构 在对系统整体功能设计之后,能够对系统各模块的功能有大体上的把握 和了解,下面就要深入到各个功能模块之中,对各个模块设计实现作分析。 第二节程序模块化设计 确定程序基本功能之后,将本系统分为数据捕获和协议解析还原两大模块 进行设计。在数据捕获模块中,如何使用软件实现对底层数据包进行提取是最 主要的问题,而是否能够完整将底层网络数据包获取也是后续协议解析部分的 基础。 本系统是在w i n d o w s 平台下开发,所以选用免费开源的w i n p c a p i n 数接口库 进行开发。在数据捕获模块中,将底层数据读取类命名) 勺c r e a d ,该类控制整 个系统的底层监控开启,在得到用户的系统监控开启命令之后,使用w i n p c a p n i 数打开网络设备,选择监听的网卡之后,调用相关函数对经过本网卡的数据进 行捕获,然后将截获所得数据完整地传递到数据解析模块。 另外,由于本系统主要是对互联网数据进行捕获和分析,所以在开启对 w i n p c a p 底层数据捕获的时候也要对数据包进行有条件的过滤,可以将数据包的 过滤条件设置为仅允许获取t c p i p 数据包,这样也能够增加数据捕获模块的效 率。 对于数据解析还原模块中各部分功能之问的关系,如图2 2 所示。 第二章协议还原系统程序整体结构设计 厂 读入厂 网络数据包 卜叫 协议解封装 查询 整合 图2 2 系统各模块之间的关系 协议解析还原模块需要能够对从数据捕获模块中捕获的数据按照t c p i p 协 议定义的格式进行解封装操作,进而得到数据的链路层、i p 层禾i j t c p 层的各字段 信息;还有,由于t c p 流的分段性,还需要对t c p 流进行重组,只有正确将t c p 流重组,一次t c p 流的所有应用层的数据才能完全获取。另外,本文介绍的模板 技定位术作为对应用层数据的获取的方法,需要对重组后得到的应用层有用信 息实现有效的提取。定位模板文件中包含了有用信息的位置情况,通过对定位 模板文件的加载和比对,能够达到把应用层数据提取的目的。关于模板技术的 具体实现,将在本文的后续章节中详细介绍。 第三节程序流程设计 在分析了系统的功能需求和模块化分析之后,系统的整体流程也可以大致 确定下来。系统在设计时将程序划分为四个主要部分来实现:人机界面交互部 分、数据捕获部分、协议解析还原部分和存储部分。本系统的整体流程如图2 3 所示。 第二章协议还原系统程序整体结构设计 。_ - 。1 。 1 人机交互界面i 1一,一 图2 3 系统流程图 图2 3 中显示的是程序执行的整个过程,各个模块的功能在相应的位置得以 体现。程序首先通过人机交互界面执行程序的开启和关闭,在程序开始执行后, 首先从磁盘中读取定位模板文件,将定位模板文件按照规则读取之后,建立模 板文件数据链表,等待与应用层数据进行比对分析。 另方面,主程序开启数据捕获线程,从底层将i n t e m e t 网络数据包完整捕 获并提取出来,提取之后对数据包进行预处理。预处理的内容包括数据包的解 封装和t c p 重组,t c p 重组的过程中,针对数据量大、t c p 数据流多的情况,本 系统使用h a s h 散列的方式,将t c p 流进行散列放置,并根据四元组( 目的i p 地址 字段、源i p 地址字段、目的端口、源端口) 确定是否为同一个t c p 流。 将数据报文重组之后,提取应用层数据,与定位模板文件数据链表作比对 和查找操作,就能够将有用信息获取,从而实现对协议的解析还原。 主进程在完成这些工作之后,将有用信息格式化输出存储,程序结束,以 上就是协议解析还原系统的整体执行流程。在各个模块实现的过程中,具体的 程序细节会在后面的章节中做详尽论述。 第三章数据捕获模块的设计 第三章数据捕获模块的设计 构建数据解析还原系统,首先需要设计实现数据捕获模块。只有成功获取 经过网卡的网络数据包,才能展开深入分析数据包内容的部分。通过对网络数 据的分析,不仅可以深入学习网络数据包和交互方式,而且可以开发一些网络 性能监控、故障排查等方面的工具。所以,正确地获取数据是至关重要的,也 是本系统的核心组成之一。本章主要介绍了一种w i n d o w s 平台下,使用a r p 技术 获取局域网内数据信息的捕获方法,并对该方法的设计和实现做了详细介绍; 在本章的最后,对在城域网环境下对网络数据的捕获和处理方案进行了细致研 究。 第一节w i n p c a p 简介 对于w i n d o w s 平台开发,可供选择的数据捕获接口函数主要有三种:即原始 套接字( s o c k e tr a w ) 、底层网络分析体系结构w i n p c a p ( w i n d o w sp a c k e t c a p t u r e ) ,以及网络驱动程序接口规范函数n d i s ( n e t w o r kd r i v e ri n t e r f a c e s p e c i f i c a t i o n ) 4 1 。在这三种数据捕获函数中,w i n p c a p 以其优异的性能和程序免 费开源得到广泛的使用。 3 1 1win p c a p 结构和功能 w i n p c a p 是在w i n 3 2 平台之上开发的,它提供的网络底层驱动独立于 w i n d o w s 操作系统的协议,它还对数据包捕获接口和发送接口有一套标准的定 义,是优秀的开源网络数据获取接口库。对于不同版本的w i n d o w s 系统,它们的 内核模块和用户层模块并不完全一致,这样就导致了在使用w i n d o w ss d k 开发 的网络程序时,如果要在不同的w i n d o w s 操作系统版本之间运行需重新进行编译 5 0 为了可以跨w i n d o w s 平台下开发程序而避免需要重复编译,w i n p c a p 采用了 公共接i p a c k e t d l l 。该接口能够使程序运行在各种w i n 3 2 平台下,另外,l i b p c a d 是与w i n p c a p 的标准捕获数据包接口相兼容的,这也使得程序向u n i x 平台移植 1 0 第三章数据捕获模块的设计 变得可能。 w i n p c a p 的组成包括:内核级数据过滤器n p f ( n e t g r o u pp a c k e t f i l t e r ) 、 工作于底层的动态链接库( p a c k e t d 1 1 ) 和位于高层的链接库( w p c a p d 1 1 ) 。 w i n p c a p 的结构组成如图3 1 所示,下面对其做简要介绍: a p p l i c a t i o na p p l i c a t i o n t t c p i p n p f n i c d r i v e r f 图3 1w i n p c a p 的组成 网络数据包捕获过滤器( n p f ) 的主要功能是对数据包进行过滤操作。它通 过对随着数据移动位置的头指针和尾指针的控制来随时释放队列缓冲区空间, 提高了处理效率。数据包底层动态链接库( p a c k e t d l1 ) 是与l i b p c a p 兼容的用户 级函数库,通过这个链接库可以使开发出来的w i n p c a p 程序具有很好的跨 w i n d o w s 平台移植能力。数据包高层驱动程序库( w p c a p d 1 1 ) 提供了高级的功能 和很多抽象的函数,以及友好和功能强大的函数方法。 w i n p c a p 的具体功能主要表现在4 个方面:捕获经过网卡的数据包,这些数 据包含在网络上的主机之间交互( 发送、接受) 的数据包;在对应用程序提供 数据包之前,自定义规则对应用程序不关心的数据包进行过滤;构造原始数据 包发送;对网络通信过程中的信息传输流量的获取等。 w i n p c a p 函数库并不能阻止或是阻塞、控制主机对数据包的发送和接收,它 的功能主要在于对网络中数据的获取和监听,所以选取w i n p c a p 作为实现互联网 数据包捕获模块是十分合理的。 第三章数据捕获模块的设计 3 1 2w in p c a p 编程的一般过程及相关函数 基于w i n p c a p 的应用程序一般按照下面几个步骤,如图3 2 所示: 设 获 置 得 网 网卡 卡及 没过 备滤 列条 表件 分 析 结 果 及 输 出 图3 2w i n p c a p 编程的一般步骤 从图中指示的w i n p c a p 编程步骤,可以将编程的过程归纳为获取网络设备列 表函数、打开网络接口函数、捕获网络数据包函数、发送数据包函数、保存数 据包函数、过滤数据包函数等这些步骤。 w i n p c a p 通过提供p c a pf i n d a l l d e v s 接口函数来获得主机网卡的一些详细信 息。然后,通过使厍 p c a p 函数能够打开一个选中的捕获网卡端口,开 始捕获网络中的数据并且输_ o p 出e n 数l 据i v e 的相关信息。 设备接口被打开之后,使用p c a pn e x te x 函数将开始捕捉,该函数产生参数 传入处理网据包的函数p a c k e th a n d l e r ,开始对网络数据包进行处理。 在捕获的过程当中,适当的使用函数库所带的过滤器可以提高系统的处理 性能。通过p c a p _ c o m p i l e 和p c a p - s e t f i l t e r 函数,能够编译包筛选器。在本系统中, 需要将传入p c a p 的参数设置为“ ”。c o m p i l e q hi pa n dt c p w i n p c a p 中的数据结构用来描述网络接口信息,或者作为函数之间的参数传 递。所有具体的数据结构与定义在头文件p c a p h 中都有相关说明,这里介绍使用 较多的网卡接口链表,结构体定义如下。 s t r u c t p c a p _ i f p c a p 木 母指向列表中的下一个元素木i f n e x t ; c h a r 木n a m e ; 水网络接口设备的字符名木 c h a r 木d e s c r i p t i o n ;水网络接口设备的可读描述符宰 p c a pa d d r 冰a d d r e s s e s ;丰网卡接口链表木 引 第三章数据捕获模块的设计 u i n tf l a g s ; ) 另外,w i n p c a p 中也定义了许多其他的网络接口数据结构。这些数据结构大 部分定义在p c a p h 头文件中,在函数之间的参数传递方面有很重要的作用。在此 不一一赘述。 第二节以太网下数据捕获系统的设计 目前,以太网( e t h e m e t ) 技术在局域网环境下得到了广泛的使用。本节将 通过分析以太网下数据传输特点,结合网络适配器的工作方式,介绍一种使用 a r p 欺骗方式获取以太网内数据的方法。 3 2 1e t h e r n e t 下网络适配器的工作方式 i e e e 8 0 2 3 标准定义了e t h e m e t 技术下的c s m a c d 介质访问物理层和控制子 层的协议规范 1 1 。如图3 3 所示,i e e e 8 0 2 3 将物理层细分为物理信号( p l s ) 层、 接入单元接口( a u i ) 与介质接入单元( m a u ) 。正是由于e t h e m e t 的广泛应用, 其他形式的局域网标准已经逐步被替代了,! k 【l f d d i 、a r c n e t f f e i 令牌环等, e t h e r n e t 的协议结构如图3 3 所示。 逻辑链路控制( l l c ) 子层 介质访问控制( m a c ) 子层 物理层 e e e 8 0 23 参考模型 逻辑链路控制( l l c ) 子层 介质访问控制( m a c ) 子层 物理信号( p l s ) 子层 图3 3e t h e m e t 协议结构 接入单元接口( a u ) t 介质接入单元( m l ) 第三章数据捕获模块的设计 在以太网环境中,介质共享,明文是信息传输的主要形式。i e e e 8 0 2 3 标准 规定的以太网,内部传输采用c s m c d 协议,它是载波监听多点接入碰撞检测 的缩写。 一般情况下,网络适配器会工作在如下的一种或几种工作模式之下: 1 1 广播模式( b r o a dc a s tm o d e l ) :数据帧发往网络内所有主机,数据帧的 目的物理地址( m a c ) 地址被设置成为是o x f f f f f f ,由于网段内部所有的主机 都会接收到这个数据帧,所以该数据帧也被称作为广播帧,广播帧由广播模式 的网卡接收。 2 ) 多播传送模式( m u l t i c a s tm o d e l ) :数据帧被发往特定的一组计算机, 多播数据帧把多播传送地址设置为目的物理地址,所以该帧只会被组内的主机 接收,其它组外主机是接收不到多播数据帧的。 3 ) 直接模式( d i r e c tm o d e l ) :数据帧被发往特定物理地址的计算机,当主 机网卡工作在直接模式下,适配器只接收以目的地址与本机m a c 地址一致的数 据帧。 4 ) 混杂模式( p r o m i s c u o u sm o d e l ) :在混杂模式下工作的网络适配器,所 有的经过本机网络适配器的数据帧都会被不经判断地接收。 网络适配器一般以直接模式和广播模式为主要的工作模式,所以正常工作 f 的网络适配器,只选择接收发送给自己的帧和广播帧。这样的工作模式给局 域网内的协议解析还原系统的底层设计带来了麻烦,因为其它主机与外网的数 据交互一般不会流经监控主机的网卡,但是在系统的设计中,可以使用w i n p c a p 的函数接口,配置监控主机的适配器工作于混杂模式之下,当将网络适配器改 为采用混杂模式之后,所有站点所发送的数据包都将被网络适配器所接收。 在实际的程序设计中,通过程序把网络适配器工作方式改为混杂模式,就 能接收到所有经过该监听网卡的网络数据包了。简单而言,混杂模式就是指通 过设置网卡,以便接受所有通过它的数据包,无所谓格式和地址。使用混杂模 式,就可以通过编写程序对网络传输的网路数据包进行捕获和监视。 在传统的以太网结构下,共享式局域网( h u b b a s e dl a n ) 内采用集线器h u b 作为主要的网络连接设备。这个结构内,所有机器共享同一条传输线路,集线 器没有端口的概念,数据发送方式采用广播模式,集线器接收到相应数据时, 把数据往它所连接的每一台设备线路上发送,在对以太网内全部数据包的获取, 所以在共享式局域网中,可以通过使用集线器来辅助完成局域网内数据监听, 1 4 第三章数据捕获模块的设计 如图3 4 所示。 图3 4 共享式局域网下数据监听 随着交换式局域网( s w i t c h e dl a n ) 的逐步发展,网络连接设备从集线器转 变成了交换机和路由器。它们对局域网内的每一台做独立处理,引入了“端口” 的概念。每个网线接口作为一个独立的端口,除了声明为广播或组播的报文, 交换机在一般情况下是不会让其他报文出现类似共享式局域网那样的广播形式 发送行为的,这是因为交换机会判断数据的目标地址,然后有针对性的发往缓 存表中对应地址的端口进行转发,所以即使让网络适配器工作在混杂模式下, 监听主机也收不到发往其他计算机的数据。针对交换式局域网内数据传输特点, 下面介绍一种基于a r p 欺骗技术的数据获取方法。 3 2 2 通过a r p 欺骗技术获取网内数据 a r p 是以太网下的地址解析协议,它的主要功能是当数据帧从路由器等网关 设备下发,寻找网段内主机时,通过该协议内部维护的一张对应表来将数据的 目的i p 地址解析成为对应的m a c 地址,然后将数据报封装成帧进行发送。a r p 协议的基本工作流程为:当要对物理地址进行解析时,首先准备发送a r p 请求帧, 但是在发送请求之前,源主机会在本地a r p 高速缓存表中查询与目的i p 地址相对 应的目的物理地址。若顺利找到对应物理地址则直接进行通信,若没有找到对 应的物理地址,则需要进行物理地址解析工作。 如果的确需要进行物理地址解析工作,工作流程为:将本地网卡的m a c 地 址作为数据包的地址源地址,将广播地址( f f f f f f f f f f f f ) 作为数据包的 第三章数据捕获模块的设计 目的物理地址,通过广播发送的方式来发送a r p 请求报文,这样网段内部的主机 都会收到这个广播帧,但是只有目的i p 一一致的主机才会对这个a r p 请求返回应 答报文。报文的内容包含其m a c 地址,随后纪录下本次的对应关系,添加到到 高速缓存表中 12 1 。可以看出,源主机的a r p 高速缓存表是不断被维护更新的。 a r p 欺骗大致分为两种,一种是通过欺骗路由器的a r p 缓存表达到欺骗的 目的;另一种是通过欺骗局域网内部的主机。伪造局域网网关a r p 欺骗,一台主 机伪造成网关,被伪造网关欺骗的主机如果想与外界数据交互,交互的数据就 必须经过伪造网关的主机。在这种情况下,这样就能够捕获局域网内主机与外 界传输的数据包了。 通过a r p 欺骗技术,的确可以达到捕获网内数据的目的。但在局域网内, 还要保证被监听的主机能够正常的上网,否则就没有实际意义了。所以要想既 能够监听又能允许网内用户上网,就需要对数据包中的i p 地址部分做相关的判 断,正确转发数据包。下面就从由内网发送至外网数据的修改,以及由外网发 送至内网数据的修改两个方面,讲述转发功能的实现。 网络拓扑环境如图3 5 所示。在使用a r p 欺骗之后,监听主机a 就能获取到网 内主机b 、c 、d 与外界的交互数据了。现在,需要考虑的是,主机a 如何将数据 由局域网内部发送到外部,使主机b 、c 与外界沟通。 图3 5a r p 欺骗下数据转发网络拓扑环境 以主机b 为例。在受到a r p 欺骗之后,网内主机会把a 当作网关。当主机b 需要联系外网时,它会把发送数据包中目的m a c 地址填为m a c _ a ,同时数据包 中的源m a c 地址填为m a c 。 当监听主机a 收到源i p 地址为i p b ,源m a c 地址为m a c _ b ,目的地址为 第三章数据捕获模块的设计 m a cd 的数据包,说明这是一个网内主机b 通往外界的数据包。那么就对其源 m a c 字段内值改为m a ca ,目的地址改为网关m a c 地址m a cd ,然后发送给 网关。这样,网关就会当作一个a 发送的正常数据包进行路由处理。 对于监听主机a 自己的数据包,它与网内主机的区别在于源i p 不同。通过判 断这一点,可以区分数据包的真正来源。这样就实现了主机a 对网内向外部的转 发处理。 现在考虑如何将外网发送至内网。网关( 通常是路由器) 肩负着内网与外 网的交互,当数据从路由器的w a n 口进入,准备转发至内网主机时,会根据读 取数据包内目的i p 地址,结合路由器内部的a r p 缓存表,找到对应的m a c 地址。 但是在a r p 欺骗之后,路由器会把本该发送给其他主机数据包发送给主机a 。主 机a 作为监听主机,需要做出一定的判断,就是辨别出通过数据包的i p 地址判断 数据包是要发给局域网内的哪一台主机。然后将网络数据包的目的物理地址 ( m a c ) 地址替换为对应主机的物理地址( m a c ) 地址即可。仍以主机b 的数 据包为例:当主机a 收到来自网关发来的数据包后,如果数据包的目的i p 为i pb , 那么将数据包的目的m a c 修改为m a cb ,源地址修改为m a ca 后发送。 同样,如果主机a 收到网关发来数据包判断,如果数据包的目的i p 为i pa , 那说明这是的确主机a 的数据包,不必做处理。 第三节以太网数据捕获处理模块的实现 在本系统中,数据捕获和数据转发组成底层数据捕获处理模块。基本的功 能,就是要能够获取局域网内部数据,且又能保证受监听用户能够使用互联网, 最后将截获的数据交由上层程序处理。 数据处理模块的设计图3 6 所示,显示为主程序的执行过程。在主函数结束 捕获后,可以调用显示函数,将数据包的内容进行部分显示。 第三章数据捕获模块的设计 打开网络列表l ,- _ r 一】l 一 f 数据包传入卜 开启捕获网卡 l ,_ _ l j ! i 开启发送网卡 图3 6e t h e m e t 下数据捕获模块流程图 捕获模块分为初始化、捕获、转发三个部分。在初始化阶段,首先要获取 网络设备信息列表。随后,选择一个合适的网络适配器,打开捕获网络接口和 发送网络接口,打开成功之后,开始在捕获网卡进行监听,并在发送网卡准备 转发数据包。一般地,捕获和转发数据包的网卡应为同一块网卡。 在选择好网络适配器后,使m w i n p c a p n i 数打开网络接口,设置接收模式为 混杂模式,在成功打开网络接口后,说明网卡已经正常工作,剩下的就是开始 捕获流经网卡的数据包了。 开始捕获数据包的函数执行,当成功捕获到一个数据包后,继而执行对这 个数据包的判断和处理。使用w i n p c a p 的p c a pn e x te x 函数一直获取数据包。 在p c a pn e x te x 函数捕获到数据包之后,其函数中的参数p k td a t m :旨向了数 据包中的数据部分。通过结构体定义,可以根据帧头中各字段的顺序取出m a c 地址的部分。在做判断时,由于只用到目的m a c 地址字段作为判断的条件,所 以只需要将它取出做比较判断即可。 如果目的m a c 地址是监听主机的,那还需要进一步判断i p 头的部分,因为 在以太网中,以太帧头的长度占1 4 个字节,所以只需要将p k td a t a 晦 后移动1 4 个 字节,就可以指至l j i p 数据报的头部位置,p k td a t a 是包括帧头再加上i p 数据报的 内容,以字节为单位的无符号字符类型变量。再正确得到i p 头部后,需要找到源 i p 地址和目的i p 地址字段。最后真正标识数据包来向或去向的是i p 的值,所以, 通过i p 的值可以填写m a c 地址字段。 最后,需要将重新填写完毕的数据包再次通过发送网络接口发送出去,而 第三章数据捕获模块的设计 数据包中的其他内容并不做修改。发送函数使用的是p c a p _ s e n d p a c k e t ,它一次能 发送一个数据包,数据包的c r c 校验部分可以由网络接口自己计算,不用手动 添加。 关于数据包的接收再转发的问题,存在数据缓冲区的大小和转发速度的问 题。在w i n

温馨提示

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

评论

0/150

提交评论