网络数据包监听与分析工具的模拟实现--毕业论文.doc_第1页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第2页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第3页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第4页
网络数据包监听与分析工具的模拟实现--毕业论文.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计 网络数据包监听与分析工具的模拟实现 大学 年 6 月 毕业设计 网络数据包监听与分析工具的模拟实现 学 生: 指导教师: 专 业:计算机科学与技术 所在单位:计算机科学与工程学院 答辩日期: 年 6 月 19 日 大学毕业设计(论文) - I - 摘摘 要要 如今,网络已经渗透到了生活的方方面面,购物、旅行、医疗等等都在网络 的支撑下变的更加便捷。网络的发展有目共睹,但是网络的效率和安全问题也不 容忽视。网络的兴盛,也使得很多不法分子为了利益方面的追求而破坏网络规则, 通过网络来窃取用户信息,甚至造成财产损失,这就需要网络监听工具。 本文实现了基于数据包的监听系统,该系统可以对数据包进行捕获,通过设 置硬路由器的监听端口,利用以太网络的广播特性,拦截所有经过该机器的网络 上传送的数据。数据包过滤采用 TCP/IP 协议来筛选数据,并根据端口号来选择特 定数据包分析主要用来对过滤之后得到的数据进行分析。该系统能进行 TCP,UDP,HTTP 协议分析使用 VC+作为开发工具。系统利用 Winsock 钩子 截获 Winsock 调用,从而拦截 TCP/IP 数据包,再利用 TCP/IP 协议的封包结构分 析所截获的数据,提取需要的数据对其进行控管规则的检查认证,从而确定 Socket 连接是否允许通过。 通过将网卡设置为混合模式来实现数据包的捕获,在捕获数据包后,利用 TCP/IP 协议的详细设计对抓到的数据包进行分析。本设计还提供了过滤,和把 数据包存入数据库功能,使得本设计的使用范围和可依赖度极大的提高。 工具使用 VC6.0 进行开发,通过 MFC 设计界面,总体功能完善,外观简 洁大方。当捕获到数据包后,对数据进行分析,可以使每一项清晰的显示在界面 中。 关键词关键词 数据包捕获;数据包监听;数据包捕获;数据包监听; Winsock 大学毕业设计(论文) - - Abstract Today,the Internet has penetrated into every aspect of ourlife,our life in the big and small need notwork participation,shopping,travel,health and so on in network support becomes more convenient. Network development is obvious to people,but the efficiency and the security problem of neteork can not be ignored.With the further development of network more applications will need the support of network,the application scope will be more widely,which requires more rapid and efficient network.The rise of the network,also makes a lot of lawless people in order to benefiit pursuit and destruction of network rules,to steal the user information through the Internet,and even cause the user propertty loss.In order to build an efficient,fast,secure network environment requires an efficient paker capture toll. And through the data packet statistics we can know the datatraffic in the network, then we can kown the congestion. This design also provides filtering, rataing disk and other funcitions,the range of use of this design can be greatly improved andit will bbe more reliable. The design called WinPcap devalipument kit to capture packet, then use the well designed TCP/IP protocol to analyse the packets which we have captrured. This design use the VC6.0 to develop and use the design interface by using MFC.It functions well and have a simple appearance. After packets captured andanalised, the analysis of data of each packet will be clearly displaryed in the interface. Key words Data packet Capture; Data packet listening; Winsock 大学毕业设计(论文) - - 目目 录录 摘摘 要要.II ABSTRACT .II 第第 1 章章 绪论绪论 1 1.1 选题意义.1 1.2 选题来源与目的.1 第第 2 章章 开发工具简介开发工具简介 3 2.1 开发环境介绍.3 2.1 Access 数据库介绍 3 2.2 Winsocket 编程技术.4 2.3 网络监听工具技术简介.5 第第 3 章章 监听工具简介监听工具简介 7 3.1 网络数据包监听与分析工具.7 3.2 网络监听工具的工作环境.7 3.3 网络监听工具的工作原理.8 第第 4 章章 系统需求分析概述系统需求分析概述 11 4.1 数据库需求分析.11 4.1.1 数据库概述 11 4.2 系统需求分析.12 4.3 系统流程.13 第第 5 章章 网络监听工具系统设计与实现网络监听工具系统设计与实现 15 5.1 总体设计.15 5.2 详细设计.16 5.2.1 数据包捕获模块 16 5.2.2 数据包过滤模块 16 5.2.3 数据包分析模块 17 5.3 系统实现.18 5.3.1 数据包捕获模块实现 18 5.3.2 数据包分析模块实现 19 第第 6 章章 系统测试系统测试 23 6.1 系统测试概述.23 6.2 系统测试.24 6.2.1 系统界面测试 24 6.2.2 数据包捕获测试 25 6.2.3 数据包的过滤测试 26 总结总结 28 致谢致谢 29 大学毕业设计(论文) - I - 参考文献参考文献 30 大学毕业设计(论文) -1- 第第 1 1 章章 绪论绪论 1.1 选题意义 随着科学技术的不断提高,计算机科学日渐成熟。网络监听工具成为一个保 证网络信息安全的工具不断被应用,通过使用网络监听工具可以把网卡设置于混 杂模式,并可实现对网络上传输的数据包的捕获与分析。可以有效地探测在网络 上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的,为 此我们很有必要基于网络监听工具原理,对构建网络信息安全系统做以探讨,以 利于构建“文明网络”、 “绿色网络”,确保上网的信息安全。 网络监控就是对网络内到达本地服务器的所有数据包进行截取和分析,掌握 当前网络总流量,控制当前网络数据流量,同时可以根据不同的需要对特定端口 或特定外部地址进行监视,防止非法入侵,以保障本地网络系统的安全和稳定。 它的主要意义在于实现了网络监控。随着内部网络的规模与容量的日渐扩大,保 持系统的正常运作将会变得越来越重要。网络监控能使系统及时地发现网络流量 异常的现象,使服务器在发现非法入侵后能立即做出反应,来保护自己的服务器 不被破坏,以求获得安全性的同时,提高网络性能。网络监控系统可以用来发现 并解决网络交流问题,规划网络流量,进行网络优化。该系统能捕获所以通过它 的网络流量,并把它们翻译出来进行解码,还可以翻译正在使用的不同协议。 1.2 选题来源与目的 近年来,随着互联网的迅速普及,网络已经进入了千家万户,网络通信也逐渐 成为人们通信的首选方式,海量信息都在网络上大量流通着,给人们的工作、学习、 生活带来诸多便利。 伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了 解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已成了网络 发展中最重要的事情。 为了保障对数据信息的高效、安全传输,利用网络监听技术对网络的使用情 况进行监控,从而减少网络的负面作用就显得非常必要。网络数据包监听与分析 的合理运用与信息安全防护已越来越受到人们的重视。 网络数据包捕获、监听与分析技术是网络安全维护的一个基础技术同时也是 网络入侵的核心手段,研究有关数据包捕获和分析技术对保证网络的健康、安全 运行是很有意义的,可以弥补传统安全技术的不足。 当网络给人们提供便利的同时,网络技术的发展方向似乎都趋向于网络的便 大学毕业设计(论文) -2- 利性和实用性,因而留下了太多的技术、管理和基础设施的漏洞。课题针对网络 数据的监听与分析技术进行相关研究和探讨,有利于网络管理、网络故障排除以 及网络入侵检测系统的进一步发展,对于维护整个网络的安全和性能稳定有着重 要的作用。 大学毕业设计(论文) -3- 第第 2 2 章章 开发工具简介开发工具简介 2.1 开发环境介绍 Visual C+6.0 由 Microsoft 开发1, 它不仅是一个 C+编译器,而且是一个基 于 Windows 操作系统的可视化集成开发环境(integrated development environment,IDE) 。Visual C+6.0 由许多组件组成,包括编辑器、调试器以及 程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名 为 Developer Studio 的组件集成为和谐的开发环境。Microsoft 的主力软件产品。 Visual C+是一个功能强大的可视化软件开发工具。自 1993 年 Microsoft 公司推 出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+已成为专业程序员进 行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0), 但它的应用有很大的局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所以实际中,更多的是以 Visual C+6.0 为平台。Visual C+6.0 以拥有 “语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远 程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必 重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能 及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在 大型软件计划上尤其显著。 2.1 AccessAccess 数据库介绍 Microsoft Office Access 是微软把数据库引擎的图形用户界面和软件开发工具 结合在一起的一个数据库管理。它是微软 OFFICE 的一个成员,在包括专业版和更 高版本的 office 版本里面被单独出售。2012 年 12 月 4 日,最新的微软 OfficeAccess2013 在微软 Office2013 里发布,微软 OfficeAccess2010 是前一个版本。 MSACCESS 以它自己的格式将数据存储在基于 AccessJet 的数据库引擎里。它还 可以直接导入或者链接数据。软件开发人员和数据架构师可以使用 MicrosoftAccess 开发应用软件,“高级用户”可以使用它来构建软件应用程序。和其 他办公应用程序一样,ACCESS 支持 VisualBasic 宏语言,它是一个面向对象的编 程语言,可以引用各种对象,包括 DAO(数据访问对象),ActiveX 数据对象,以及许 多其他的 ActiveX 组件。可视对象用于显示表和报表,他们的方法和属性是在 VBA 编程环境下,VBA 代码模块可以声明和调用 Windows 操作系统函数。 本程序采用 Visual C+ 6.0 作为开发工具,数据库采用 Access,运行环境为 Windows 7/XP。 大学毕业设计(论文) -4- Visual C+ 6.0 中的 MFC 用来构造 Win32 应用程序的 C+类库。该库的主 要优点是效率高。它减少了大量在建立 Windows 程序时必须编写的代码。同时 它还提供了所有一般 C+ 编程的优点2,例如继承和封装,MFC 是可移植的3。 2.2 Winsocket 编程技术 Winsock 是微软公司以 Berkeley Socket 规范为范例,定义的 Windows Socketes 规范4。 这是 Windows 操作系统环境下的套接字网络应用程序编程接口(API) 。利 用这套 API,在 Windows 环境下,网络应用程序开发者可以轻松地与 Internet 协 议族相连接,显现网络中进程之间的通信。 Winsock 2 的传输服务提供者是以动态链接库的形式(DLL)存在的,它是 通过 WSPStartup 函数为上层函数提供接口,而其他的传输服务提供者函数则是 通过分配表的方式来访问 WS2_32.DLL。传输服务提供者的动态链接库只有在应 用程序需要时才由 Ws2_32.dll 来装入内存中的,在不需要时则会被自动卸载。 WinsocketAPI 的网络 I/O 函数如表 2-1 所示: 表 2-1 Winsocket API 的网络 I/O 函数 函数功能 Send通过连接的 Socket 传送数据,使用特殊的标志控制 Socket 的行为。 Sendto 将数据传送给 Socket 地址结构指定的主机, 传送时使用一个简单的报文缓冲区。 Recvform 从 Socket 接收数据,选择发送主机的网络地址, 传送时使用一个简单的报文缓冲区。 函数描述 Gethostbyaddr根基网络地址获得域名和 IP 地址。 Gethostbyname根据主机名字获得域名和 IP 地址。 Gethostname获得本地主机的域名。 Getprotoyname根据名字获得协议,返回其正式名字和一个表示此协议的数。 Getprotobynameker根据特定的数获得相应的协议名字。 Getseverbyname获得与服务名字相应的协议端口。 大学毕业设计(论文) -5- 表 2-2 Winsocket API 的数据库函数 2.3 网络监听工具技术简介 网络监听工具是一种常用的收集有用数据方法,这些数据可以是用户的帐号 和密码,可以是一些商用机密数据等等。网络监听工具可以作为能够捕获网络报 文的设备,ISS 为网络监听工具这样定义:网络监听工具是利用计算机的网络接 口截获目的地为其他计算机的数据报文的一种工具。 网络监听工具的正当用处主要是分析网络的流量,以便找出所关心的网络中 潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而 我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。 在合理的网络中,网络监听工具的存在对系统管理员是致关重要的,系统管理员 通过网络监听工具可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多 台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于网络监听工具系统 管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主 机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互 主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域 提供了非常宝贵的信息。 以太网网络监听工具是指对以太网设备上传送的数据包进行侦听,发现感兴 趣的包。如果发现符合条件的包,就把它存到一个 log 文件中去。通常设置的这 些条件是包含字“username”或“password”的包。它的目的是将网络层放到 promiscuous 模式,从而能干些事情。Promiscuous 模式是指网络上的所有设备都 对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。根据第二章中有关 对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时, 它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受 数据。不过只是将属于自己的数据传给该计算机上的应用程序。利用这一点,可 以将一台计算机的网络连接设置为接受所有以太网总线上的数据,从而实现网络 监听工具。 网络监听工具通常运行在路由器,或有路由器功能的主机上。这样就能对大 量的数据进行监控。网络监听工具属第二层次的攻击。通常是攻击者已经进入了 目标系统,然后使用 Sniffer 这种攻击手段,以便得到更多的信息。 网络监听工具除了能得到口令或用户名外,还能得到更多的其他信息,比如 一个其他重要的信息,在网上传送的金融信息等等。Sniffer 几乎能得到任何以太 网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入 的后门,以保证网络监听工具能够执行。在 Solaris2.x 平台上,网络监听工具程 Getseverbyport根据特定的协议端口获得服务名字。 大学毕业设计(论文) -6- 序通常被安装在/usr/bin 或/dev 目录下。黑客还会巧妙的修改时间,使得网络监 听工具程序看上去是和其它系统程序同时安装的。 大多数以太网 Sniffer 程序在后台运行,将结果输出到某个记录文件中。黑 客常常会修改 ps 程序,使得系统管理员很难发现运行的 Sniffer 程序。 以太网 Sniffer 程序将系统的网络接口设定为混合模式。这样,它就可以监 听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行 Sniffer 的主机。程序将用户名、密码和其它黑客感兴趣的数据存入 log 文件。黑 客会等待一段时间比如一周后,再回到这里下载记录文件。 大学毕业设计(论文) -7- 第第 3 3 章章 监听工具简介监听工具简介 3.13.1 网络数据包监听与分析工具 目前存在许多网络监听工具,其中比较有代表性的几个网络监听工具介绍如 下。 1. Network General:Network General 开发了多种产品。最重要的是 Expert Sniffer,它不仅仅可以 sniffing,还能够通过高性能的专门系统发送/接收 数据包。还有一个增强产品 Distrbuted Sniffer System,可以将 UNIX 工 作站作为 sniffer 控制台,而将 Sniffer Agents 分布到远程主机上。 2. Misrosofts Net Monitor:对于某些商业站点,可能同时需要运行多种协议 如 NetBEUI,IPX/SPX ,TCP/IP,802.3 和 SNA 等。这时很难找到一种 sniffer 帮助解决网络问题,因为许多 Sniffer 往往将某些正确的协议数据 包当成了错误数据包。Microsoft 的 Net Monitor 可以解决这个难题。它 能够正确区分诸如 Netware 控制数据包,NetBios 名字服务广播等独特的 数据包。 3. VVinDump:最经典的 Unix 平台上的 tepdump 的 Windows 移植版,和 tepdump 几乎完全兼容.采用命令行方式运行。 4. Sniffit:由 Lawrence Berkeley 实验室开发,运行于 Solaris 和 Linux 等平 台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议 和网络接口等。Tcpdump:最经典的网络监听工具,被大量的 Uni、系 统采用。 5. 另外,还有 Iris,Linsniffer,ESniffer,So1Sniffer,Wireshark (Ethereal)等 等网络监听工具。 3.2 网络监听工具的工作环境 网络监听工具就是能够捕获网络报文的设备。网络监听工具的正当用处在于 分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一 段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此 时就可以用网络监听工具来作出精确的问题判断。 网络监听工具在功能和设计方面有很多不同。有些只能分析一种协议,而另 一些可能能够分析几百种协议。一般情况下,大多数的网络监听工具至少能够分 析下面的协议: 1. 标准以太网 大学毕业设计(论文) -8- 2. TCP/IP 3. IPX 4. DECNet 网络数据包监听工具通常是软硬件的结合。专用的嗅探器价格非常昂贵。另 一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。 网络数据包监听工具与一般的键盘捕获程序不同。键盘捕获程序捕获在终端 上输入的键值,而网络数据包监听工具则捕获真实的网络报文。网络数据包监听 工具通过将其置身于网络接口来达到这个目的例如将以太网卡设置成杂收模 式。为了理解杂收模式是怎么回事,先解释局域网是怎么工作的。 数据在网络上是以很小的称为帧(Frame)的单位传输的帧由好几部分组成,不 同的部分执行不同的功能。例如,以太网的前 12 个字节存放的是源和目的的地 址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户 数据、TCP/IP 的报文头或 IPX 报文头等。 帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线 上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端 机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。 就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。 每一个在 LAN 上的工作站都有其硬件地址。这些地址唯一地表示着网络上 的机器(这一点于 Internet 地址系统比较相似) 。当用户发送一个报文时,这些报 文就会发送到 LAN 上所有可用的机器。 在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自 己的报文则不予响应换句话说,工作站 A 不会捕获属于工作站 B 的数据,而是 简单的忽略这些数据。 如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的 报文和帧,如果一个工作站被配置成这样的方式,它包括其软件就是一个嗅探器。 3.3 网络监听工具的工作原理 在以太网中,所有的通讯都是广播的,也就是说通常在同一个网段的所有网 络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口都有一个唯 一的硬件地址,这个硬件地址也就是网卡的 MAC 地址,大多数系统使用 48 比 特的地址,这个地址用来表示网络中的每一个设备,一般来说每一块网卡上的 MFC 地址都是不同的,每个网卡厂家得到一段地址,然后用这段地址分配给其 生产的每个网卡一个地址。在硬件地址和 IP 地址间使用 ARP 和 RARP 协议进行 大学毕业设计(论文) -9- 相互转换。 在正常的情况下,一个网络接口应该只响应这样的两种数据帧: 1. 与自己硬件地址相匹配的数据帧。 2. 发向所有机器的广播数据帧。 在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的 数据,网卡内的单片程序接收数据帧的目的 MAC 地址,根据计算机上的网卡驱 动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知 CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根 本就不知道。CPU 得到中断信号产生中断,操作系统就根据网卡的驱动程序设置 的网卡中断程序地址调用驱动程序接收数据,驱动程序接收数据后放入信号堆栈 让操作系统处理。而对于网卡来说一般有四种接收模式: 广播方式:该模式下的网卡能够接收网络中的广播信息。 组播方式:设置在该模式下的网卡能够接收组播数据。 直接方式:在这种模式下,只有目的网卡才能接收该数据。 混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据 是否是传给它的。首先在以太网中是基于广播方式传送数据的,也就是说,所有 的物理信号都要经过本地机器;再次,网卡可以置于一种模式叫混杂模式 (promiscuous) ,在这种模式下工作的网卡能够接收到一切通过它的数据,而不 管实际上数据的目的地址是不是他。这实际上就是 SNIFF 工作的基本原理:让网 卡接收一切他所能接收的数据。 网络监听工具就是一种能将本地网络客户端状(NC)态设成状态的软件,当 nc 处于这种“混杂“方式时,该 nc 具备“广播地址“,它对所有遭遇到的每一个帧 都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。 绝大多数的 nc 具备置成 promiscuous5方式的能力。捕获数据包的结构图如图 2- 1 所示: 图 2-1 捕获数据包的结构图 大学毕业设计(论文) -10- 可见,网络监听工具工作在网络环境中的底层,它会拦截所有的正在网络上 传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分 析所处的网络状态和整体布局。值得注意的是:网络监听工具是极其安静的,它 是一种消极的安全攻击。 大学毕业设计(论文) -11- 第第 4 4 章章 系统需求分析系统需求分析概述概述 4.1 数据库需求分析 4.1.1 数据库概述 数据库设计是研制数据库及其应用系统设计。数据库设计通常是在一个通用 的 DBMS 支持下进行的,对于一个给定的应用环境,构造最优的数据库模式, 使之能够有交际地存储数据, 以及一个确定数据库存储结构和存取方法的物理 设计,建立起既能反映现实世界信息和信息联系,又能被某个数据库管理系统所 接受,同时能实现系统目标,并有效存取数据的数据库,满足各种用户的需要。 数据库是信息系统的核心基础,它将大量的数据按一定的模型组织起来,提 供存储、维护、检索数据的功能。只有对数据库进行合理的逻辑设计和有郊的物 理设计,才能开发出完善且高效的信息系统,用户才能方便、及时和准确地从数 据库中获取所需的信息。 数据库在一个系统中占有极其重要的地位,数据库结构设计的好坏将直接对 应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据 存储的效率,保证数据的完整和一致。合理的数据库也有利于程序的实现。设计 数据库系统时应首先充分了解用户的各个方面的需求,包括现有的以及将来可能 增加的需求。用户的需求具体体现在对各种信息的提供、保存、更新和交流,这 就要求数据库结构能充分满足各种信息的输出和输入6。 本系统是小型系统,因为需要存储的信息不多,Access 数据库的结构简单, 适合小型系统所以本系统采用 Access 作为数据库,可以提高编码速度同时又减 少应用程序消耗的存储空间。并且 Access 作为一种文件系统的数据,具有轻巧 通用性高的特点,所以在本系统中具有很大的优势。 ,下表来介绍数据库中表结 构的字段及其属性,如表 3-1 所示: 表 3-1 表结构 字段类型是否为空 协议char否 源地址char否 源端口long否 目的地址char否 目的端口long否 大小long否 数据char否 大学毕业设计(论文) -12- 其中,协议,源地址,目的地址和数据都是 char 类型,源端口,目的端口和 数据大小是 long 类型。它们都不能为空。 4.2 系统需求分析 软件需求分析是指对目标软件系统在功能、行为、性能、设计约束等方面的 期望。需求分析是软件设计、实现测试直至维护的主要基础,良好的需求分析可 以避免或尽早提出早期的错误,从而降低软件的开发成本,改进软件的质量。 本设计完成的数据包监听与分析系统应该要完成以下的任务: (1) 监听数据,捕获流经本地网络的数据,显示网络协议、数据、网络端口、 源地址和目的地址,存储在对应的网络数据库中。 (2) 对网络数据库进行操作,得到的信息可以显示在本地数据库里。用户可 以对本地数据库的内容进行相应操作。 (3) 该系统必须包括具体实施方案以及构建及其使用说明等方面,系统容错 性好,可移植性强,易扩展。 (4) 软件的核心程序通过在系统的消息队列中加入一个钩子,钩取将要发送 到网络中的消息包,通过对该封包的分析,决定将其发送到网络或者丢弃。用户 可以设置一些初始数据:如 HTTP、TCP、FTP。软件的核心程序还可以产生封 包监视记录,放行的连接待放行结束后显示给用户,拒绝的连接在遭到拒绝后显 示给用户。显示的记录内容包括该网络连接的开始时间、结束时间、协议、进出 流量、进出 IP 和端口、应用程序、访问动作以及备注的一些附加信息。 大学毕业设计(论文) -13- 4.3 系统流程 系统流程如图 3-1 所示: 图 3-1 系统流程图 开始 设置网卡 捕获数据 过滤数据 Tcp,udp,http协议分析 分析数据 存储结果 是否符合过滤规则 关闭网卡 结束 是 是 否 否 大学毕业设计(论文) -14- 下面对每一步进行简要说明: 1. 设置网卡:将网卡设为混杂模式。 2. 捕获数据:在得到执行命令后,从网路设备驱动程序处收集数据包。 3. 过滤数据:按照设置的过滤规则对捕获的数据进行过滤 4. 分析数据:对缓冲区的数据包进行相应的分析,然后输出相关信息。 5. 存储结果:将分析得到的信息保存到数据库中。 6. 关闭网卡:将网卡关闭。 大学毕业设计(论文) -15- 第第 5 5 章章 网络监听工具系统设计网络监听工具系统设计与实现与实现 5.1 总体设计 整个系统需要完成网络数据包监听和分析工具的模拟实现。它可以被划分为 4 个具体的模块,模块图如图 4-1 所示: 图 4-1 系统模块图 网络监听工具系统 数据包捕获 数据包过滤 数据包分析 1.数据捕获模块:用来捕获想要的数据包。在通常情况下,网络通信的套接字 程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于 其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络 接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无 法收取与自己无关的的数据包。如果想实现截获流经网络设备的所有数据包, 将网卡设置为混杂模式,这样一来,该主机的网卡就可以捕获到所有流经其 网卡的数据包和帧。 2.数据过滤模块:主要用来对数据流进行有选择的控制。数据过滤通常是在数 据包传送的过程中允许或阻止它们的通过,要完成过滤,需要设置规则来指 定哪些类型的数据被允许通过或者被阻止通过。该系统中主要是允许 IP 数据 包通过,阻止非 IP 数据包的通过。 3.协议分析模块:主要用来对过滤之后得到的数据进行分析。该系统能进行 TCP,UDP,HTTP 协议分析。 大学毕业设计(论文) -16- 5.2 详细设计 5.2.1 数据包捕获模块 通过设置硬件网卡的监听端口,利用以太网络的广播特性,拦截所有经过该 机器的网络上传送的数据,实时分析这些数据的内容,分析网络当前状态和整体 布局。数据捕获机制包含:1)数据链路提供者接口; 2)SOCK_PACKET 类型 套接口;3)数据包过滤器,要实现数据链路层上的数据捕获需要使用驱动程序。 数据包捕获方案采用报文 Socket 套接字机制,在创建套接字后,可以对网络 数据包进行监听,对数据包的获取可采用数据报套接字,利用接收函数完成。 由于应用程序只能接受和自己有关的数据包,和自己无关的数据则直接丢掉。 想要监听网络中流经网卡的数据包,则需要将网卡设置为混合模式,这样目的地 址不是本机的数据不会被直接丢弃掉,也就给了我们处理和捕获数据包的机会, 数据包的捕获正是基于这样的原理实现的。 实现中先将网卡设置为混合模式接收所有到达网卡的数据包,然后系统绑定 一个 Socket 套接字,并设置为原始流套接字,接收 ip 数据包,即完成了数据包 的捕获。数据包模块图如图 4-2 所示: 图 4-2 数据包捕获模块图 数据包捕获 数据监听 数据捕获 5.2.2 数据包过滤模块 在进行网络数据包捕获时人们往往需要只对一种类型的数据包进行捕获,例 如 TCP 包。这样有利于对网络进行详细的分析,也有利于对网络的某一项协议 进行详细的分析。在本次设计中,我们通过对 ip 数据包进行解析,分析 ip 数据 头中的协议字段,来判读是哪种协议的数据包。在 ip 数据包的表头中,有一个 大学毕业设计(论文) -17- 协议字段用来描述数据包的类别。就是在 IP 头部表示出三层以上用的是什么协 议。 三层以上封装的什么协议,缺省值就置为相应的数字。因此程序中通过设置 相应的协议类别来过滤不同的数据包。如果选择了 TCP 协议,则只有当协议号 为 6 的数据包才会传到上层去,然后被解析。以此这样既可完成了数据包的过滤 操作。数据包过滤模块图如图 4-3 所示: 图 4-3 数据包过滤模块图 数据包过滤 UDPHTTPTCP 5.2.3 数据包分析模块 数据包的分析是本次设计的关键环节,本次设计中,当捕获到数据包时,获 取源 MAC 地址和目的 MAC 地址。然后,在数据链层获取协议类型代码,当数 据包在网络层的协议是 IP 协议,进行网络层的分析,获取上层协议类型,当协 议类型是 UDP 是,分析应用层协议是否为 DNS 协议。当传输协议类型是 TCP 是,分析应用层协议是 HTTP 或 FTP。并根据 ip 头中记录的协议编号来按不同 的协议进行解析,将解析后得到的数据显示出来,并将数据存入数据库中。数据 包分析模块图如图 4-4 所示: 图 4-4 数据包分析模块图 大学毕业设计(论文) -18- 数据包分析 数据链层分析 应用层分析 网络层分析 5.3 系统实现 5.3.1 数据包捕获模块实现 网络监听工具作为一种网络通讯程序,也是通过对网卡的编程来实现网络通 讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常 的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧, 对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络 接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收 取到达的数据包。而网络监听工具的目的恰恰在于从网卡接收所有经过它的数据 包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就 不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。 具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字 (rawsocket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接 字。在创建了原始套接字后,需要通过 setsockopt()函数来设置 IP 头操作选项, 然后再通过 bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受 所有的数据,还需要通过 ioctlsocket()来进行设置,而且还可以指定是否亲自处 理 IP 头。至此,实际就可以开始对网络数据包进行监听了,对数据包的获取仍 由套接字或数据报套接字那样通过 recv()函数来完成。 根据上文的设计思路,不难写出网络监听工具的实现代码,下面就给出一个 简单的示例,该示例可以捕获到所有经过本地网卡的数据包,并可从中分析出协 议、IP 源地址、IP 目标地址、TCP 源端口号、TCP 目标端口号以及数据包长度 等信息。由于前面已经将程序的设计流程讲述的比较清楚了,因此这里就不在赘 述了,下面就结合注释对程序的具体是实现进行讲解,同时为程序流程的清晰起 见,去掉了错误检查等保护性代码。主要代码实现为: /检查 Winsock 版本号,WSAData 为 WSADATA 结构对象 大学毕业设计(论文) -19- WSAStartup(MAKEWORD(2,2), /创建原始套接字 sock=socket(AF_INET,SOCK_RAW,IPPROTO_RAW); /设置 IP 头操作选项,其中 flag 设置为 ture,亲自对 IP 头进行处理 setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*) /获取本机名 gethostname(char*)LocalName,sizeof(LocalName)-1); /获取本地 IP 地址 pHost=gethostbyname(char*)LocalName); /填充 SOCKADDR_IN 结构 addr_in.sin_addr=*(in_addr*)pHost-h_addr_list0;/IP addr_in.sin_family=AF_INET; addr_in.sin_port=htons(57274); /把原始套接字 sock 绑定到本地网卡地址上 bind(sock,(PSOCKADDR) /dwValue 为输入输出参数,为 1 时执行,0 时取消 DWORDdwValue=1; /设置 SOCK_RAW 为 SIO_RCVALL,以便接收所有的 IP 包。其中 SIO_RCVALL /的定义为:#defineSIO_RCVALL_WSAIOW(IOC_VENDOR,1) ioctlsocket(sock,SIO_RCVALL, 前面的工作基本上都是对原始套接字进行设置,在将原始套接字设置完毕, 使其能按预期目的工作时,就可以通过 recv()函数从网卡接收数据了。 5.3.2 数据包分析模块实现 原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP 头、TCP 头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原 貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由 于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包 进行分析。 数据在从应用层到达传输层时,将添加 TCP 数据段头,或是 UDP 数据段头。 其中 UDP 数据段头比较简单,由一个 8 字节的头和数据部分组成。 而 TCP 数据头则比较复杂,以 20 个固定字节开始,在固定头后面还可以有 一些长度不固定的可选项,对于此 TCP 数据段头的分析在编程实现中可通过数 大学毕业设计(论文) -20- 据结构_TCP 来定义: typedefstruct_TCP WORDSrcPort;/源端口 WORDDstPort;/目的端口 DWORDSeqNum;/顺序号 DWORDAckNum;/确认号 BYTEDataOff;/TCP 头长 BYTEFlags;/标志(URG、ACK 等) WORDWindow;/窗口大小 WORDChksum;/校验和 WORDUrgPtr;/紧急指针 TCP; typedefTCP*LPTCP; typedefTCPUNALIGNED*ULPTCP; 在网络层,还要给 TCP 数据包添加一个 IP 数据段头以组成 IP 数据报。IP 数据头以大端点机次序传送,从左到右,版本字段的高位字节先传输(SPARC 是大端点机;Pentium 是小端点机) 。如果是小端点机,就要在发送和接收时先行 转换然后才能进行传输。IP 数据段头格式如下: typedefstruct_IP union BYTEVersion;/版本 BYTEHdrLen;/IHL ; BYTEServiceType;/服务类型 WORDTotalLen;/总长 WORDID;/标识 Union WORDFlags; /标志 WORDFragOff; /分段偏移 大学毕业设计(论文) -21- ; BYTETimeToLive; /生命期 BYTEProtocol; /协议 WORDHdrChksum;/头校验和 DWORDSrcAddr;/源地址 DWORDDstAddr; /目的地址 BYTEOptions; /选项 IP; typedefIP*LPIP; typedefIPUNALIGNED*ULPIP; 在明确了以上几个数据段头的组成结构后,就可以对捕获到的数据包进行分 析了。 接收到的原始数据包存放在缓存 RecvBuf中,缓冲区长度 BUFFER_SIZE 定义为 65535。然后就可以根据前面对 IP 数据段头、TCP 数据段 头的结构描述而对捕获的数据包进行分析: while(true) /接收原始数据包信息 intret=recv(sock,RecvBuf,BUFFER_SIZE,0); if(ret0) /对数据包进行分析,并输出分析结果 ip=*(IP*)RecvBuf; tcp=*(TCP*)(RecvBuf+ip.HdrLen); TRACE(“协议:%srn“,GetProtocolTxt(ip.Protocol); TRACE(“IP 源地址:%srn“,inet_ntoa(*(in_addr*) TRACE(“IP 目标地址:%srn“,inet_ntoa(*(in_addr*) TRACE(“TCP 源端口号:%drn“,tcp.SrcPort); TRACE(“TCP 目标端口号:%drn“,tcp.DstPort); TRACE(“数据包长度:%drnrnrn“,ntohs(ip.TotalLen); 其中,在进行协议分析时,使用了 GetProtocolTxt()函数,该函数负责将 IP 包中的协议(数字标识的)转化为文字输出,该函数实现如下: 大学毕业设计(论文) -22- #definePROTOCOL_STRING_ICMP_TXT“ICMP“ #definePROTOCOL_STRING_TCP_TXT“TCP“ #definePROTOCOL_STRING_UDP_TXT“UDP“ #definePROTOCOL_STRING_SPX_TXT“SPX“ #definePROTOCOL_STRING_NCP_TXT“NCP“ #definePROTOCOL_STRING_UNKNOW_TXT“UNKNOW“ CStringCSnifferDlg:GetProtocolTxt(intProtocol) switch(Protocol) case IPPROTO_ICMP; return PROTOCOL_STRING_ICMP_TXT; case IPPROTO_TCP; return PROTOCOL_STRING_TCP_TXT; case IPPROTO_UDP; r

温馨提示

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

评论

0/150

提交评论