1、 本科 毕业 设计 (论文 ) (二零 届) 基于 C#的网络嗅探器设计与实现 所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 摘要 :本系统设计完成了一个简单的网络嗅探器,它实现了对本机的网络监听作用,捕获 IP数据包并对数据包进行分析。数据包信息内容包括 源 IP地址、目标 IP 地址、协议、时间、吞吐量、长度、生存时间、校验码等。该嗅探器不但能保存所需要的包信息,而且可以选择所要嗅探的协议类型,以便获得想要的信息。本系统采用 C#语言编写,并运用了其中的网络编程技术,无论在安全性还是在稳定性上都有很好的保证。 关键词 :网络嗅探器;协议;数据包;监
2、听;吞吐量 Abstract: The system design is complete a simple network sniffer, it realized the role of the local network monitoring, capture IP packets and data packets for analysis. The information of packet Including the source IP address information, the target IP address, protocol, time, throughput, le
3、ngth of survival time, check codes. The sniffer can not only save the required package of information, but can choose to be sniffing the protocol type, in order to obtain the desired information. The system uses the C # language, and the network programming technology, in terms of security and stabi
4、lity have very good on the guarantee. Key words: Network sniffer; Protocol; Data packet; Monitor; Throughput 目录 1 绪论 . 1 1.1 背景和意义 . 1 1.2 网络嗅探器的概述 . 1 1.3 研究现状 . 3 2 网络嗅探器设计相关技术简介 . 4 2.1 在交错环境下的嗅探技术 . 4 2.1.1 ARP 欺骗 . 4 2.1.2 交换机 MAC地址表溢出 . 4 2.1.3 交换机 MAC地址伪装 . 4 2.1.4 ICMP 重定向攻击 . 5 2.2 C#语言编程 .
5、 5 2.3 Windows Forms 程序概述 . 5 2.4 C#网络编程概述 . 6 2.4.1 Dns 类 . 7 2.4.2 IPHostEntry 类 . 7 2.4.3 Socket 类 . 7 2.5 网络协议 . 8 2.5.1 IP协议基本知识 . 8 2.5.2 TCP 协议基本知识 . 10 2.5.3 UDP 协议基本知识 . 12 2.5.4 ICMP 协议基本知识 . 13 3 系统需求分析 . 14 3.1 系统性能要求 . 14 3.1.1 准确性和及时性 . 14 3.1.2 标准性 . 14 3.1.3 开放性和可扩充性 . 14 3.2 功能要求分析
6、. 14 3.2.1 抓包功能 . 14 3.2.2 数据包过滤功能 . 15 3.2.3 解析功能 . 15 4 系统设计 . 15 5 系统实现 . 17 5.1 嗅探器主界面 . 17 5.2 嗅探器详细的报文信息界面 . 23 总结 . 27 致谢 . 错误 !未定义书签。 参考文献 . 28 1 1 绪论 随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,网络的安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络,测试网络性 能与安全性的工具软件的需求也越来越迫切。网络嗅探器就是一种用于网络分析的好工具,且它具有两面性,攻击者可以用它来监听网络中数据,达到非法
7、获得信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。 1.1 背景和意义 网络嗅探器,它与当前的网络生活有很大的关系,一些网络管理员普遍采用它,也有很多黑客通过使用它来获得他们想要的信息资料。与电话线路不同,计算机网络是共享通信通道的,这就意味着计算机能够接收到发给其他计算机的信息。捕获在网络中传输的数据信息就称 为“窃听” 1。 在内部网上,黑客们如果想要迅速获得大量的用户账号,最有效的手段是使用嗅探器。这种方法要求运行嗅探器程序的主机和被监听的主机必须在同一个以太网段上。以太网窃听则是对以太网设备上传送的数据包进行侦听,来探测感兴
8、趣的包。如果发现符合条件的包,就把它存下来 2。如果网络嗅探器运行在路由器或有路由功能的主机上,就能对大量的数据进行监控。 网络嗅探器在 Internet 安全隐患中扮演这重要角色。大多数的黑客仅仅是为了探测内部网上的主机并取得控制权,只要那些“雄心勃勃”的黑客,为了控制整个网络才会安装 特洛伊木马和后门程序,并清除记录。他们经常使用的手法就是安装嗅探器。 相信嗅探技术会越来越得到广泛应用,而网络安全问题的研究也会成为今后一段很长时期的热门话题。 1.2 网络嗅探器的概述 在局域网中,由于以太网的共享式特性决定了嗅探能够成功。因为以太网是基于广播方式传送数据的,所有的物理信号都会被传送到每一个
9、主机节点,此外网卡可以被设置成混杂模式,这种模式下,无论监听到得数据帧目的地址如何,网卡都能予以接收。而 TCP/IP 协2 议栈中的应用协议大多数以明文在网络上传输,这些明文数据中往往包含一些敏感的信息(如 密码、账号等),因此使用网络嗅探器可以悄无声息地监听到局域网的数据通信,获取这些敏感信息。同时网络嗅探器的隐蔽性好,它只是“被动”接收数据,而不向外发送数据,所以在传输数据的过程中,根本无法觉察到有人监听。当然,网络嗅探器的局限性是只能在局域网的冲突域中进行,或者是在点到点连接的中间节点上进行监听 3。 虽然网络监听很难被发现,但作为网络管理员还是要采取必要的措施来检测和防范网络监听。
10、1. 对可能存在的网络监听的检测方法 ( 1)对于怀疑运行监听程序的机器,用正确的 IP 地址和错误的物理地址 ping,运行监听程序的机器会有响应。这是因为正常的机器不接收错误的物理地址,处于监听状态的机器能接收。 ( 2)向网上发大量不存在的物理地址包,由于监听程序要分析和处理大量的数据包会占用很多的 CPU 资源,这将导致性能下降。通过对比前后该机器的性能变化加以判断。 ( 3)使用反监听工具进行检测。 2. 对网络监听的防范 ( 1)从逻辑或物理上对网络分段 将非法用户与敏感的网络资源相互隔离,从而防止可能的非法监听 14。 ( 2)以交换式集线器代替共享式集线器 应该以交换式集线器代
11、替共享式集线器,使单播包仅在两个节点之间传送, 从而防止非法监听。当然,交换式集线器只能控制单播包而无法控制广播包和多播包。但广播包和多播包内的关键信息,要远少于单播包 14。 ( 3)使用加密技术 数据经过加密后,通过监听仍然可以得到传送的信息,但显示的是乱码。使用加密技术的缺点是影响数据传输速度以及使用一个弱加密技术比较容易被攻破。系统管理员和用户需要在网络速度和安全性上进行折中 14。 ( 4)划分 VLAN 运用 VLAN 技术,将以太网通信变为点到点通信,可以防止大部分基于网络监听的入侵 14。 3 1.3 研究现状 随着移动通信技术的发展,网络 嗅探目前为世界各国普遍重视。以美国为
12、首的信息发达国家,为了在信息化浪潮中占据先机,打击网络犯罪和网络恐怖活动,窃取他国秘密和信息,搞信息霸权等,已经建立和完善其信息监控法律法规制度,并颁布了相应的法律和总统令 4,开始实施相关网络监控项目,对关键性的信息活动进行全球性的监视 5。在亚洲,日本也已经编制出一套准则,防止越权访问计算机网络。在颁布相关法律的同时,各国也都开始实施相关网络监控项目,监视全球关键性的信息活动。美国联邦调查局开发了名为“肉食者”的电子窃听系统 6,用于监视可疑的电子邮件(包括邮件 头或全部的内容)、列出服务器怀疑的访问(例如 FTP、 HTTP 等)、全面地嗅探可疑的 IP 地址和通过 RADIUS 登陆发
13、现网络上正在发生的可疑活动等。 网络嗅探器可以是软件,也可以是硬件设备 7。硬件的网络嗅探器也称为协议分析器,是一种监视网络数据运行的软件设备,协议分析器既能用于合法网络管理也能用于窃取网络信息 8。网络运作和维护都可以采用协议分析器,如监视网络流量、分析数据包、监视网络资源利用、执行网络安全操作规则、鉴定分析网络数据以及诊断并修复网络问题等。由于专业人士的普遍使用,协议分析器广泛应用于所有 能够捕获和分析网络流量的产品。协议分析器基本上可分成两大类:手提式协议分析器和分布式协议分析器。手提式协议分析器是一种能够安装在个人电脑上的单机设备软件。它能够捕获数据,实时控制和分析数据。手提式协议分析
14、器一般应用于小型公司或者大型公司的现场工程师等。其核心技术主要是用于数据包的捕获和分析。不同的供应商的产品具有不同的特征,诸如简单协议分析(即数据包重组为原始信息)或专家分析等。分布式协议分析器主要由两部分组成:一个是各网络点上的监视探测器;另一个是网络操作中心的控制台。大型企业一般采用该装置实现中心监控网 络运行。协议分析器价格非常昂贵,狭义的网络嗅探器是指软件嗅探器,常见的软件嗅探器有 Sniffer Pro 系统和影音神探系统等。 Sniffer Pro 是美国 Network Associates 公司出品的一种网络分析软件,可用于网络故障与性能管理,在网络界应用非常广泛,可用于网络故
15、障分析与性能管理,支持各种平台,性能优越。 Sniffer Pro 集网络专家积累的经验和智能捕获技术于一身,帮助用户更快地分析判断和解决网络性能问题,其特点是对于网络的数据包进行监控,可以了解网络中流动的所有数据信息,分析数据包中的源地 址、目的地址以及端口号,甚至还可以对数据包中的内容进行分析。影音神探是一款国产嗅探器,它基于 WinPcap 开发包开发,能够嗅探流过网卡的数据并智能分析过滤,快速找到所需要的网络信息。 4 2 网络嗅探器设计相关技术简介 2.1 在交错环境下的嗅探技术 2.1.1 ARP 欺骗 按照 ARP 协议的设计,为了减少网络上过多的 ARP 数据通信,一台主机,即
16、使收到的ARP 应答并非自己请求得到的,它也会将其插入到自己的 ARP 缓存表中,这样,就造成了“ ARP 欺骗”的可能。如果黑客想探听同一网络中的两台主机之间的通信,他 会分别给这两台主机发送一个 ARP 应答包,让两台主机都误认为对方的 MAC 地址是第三方黑客所在的主机,这样,双方看似直接的通信连接,实际上都是通过黑客所在的主机间接进行。黑客一方面得到了想要的通信内容,另一方面,只需要更改数据包中的一些信息,成功地做好转发工作即可。这种嗅探方式中,黑客所在主机是不需要设置网卡的混杂模式的,因为通信双方的数据包在物理上都是发给黑客所在的中转主机的 3。 2.1.2 交换机 MAC 地址表溢
17、出 交换机之所以能够根据数据包中目的 MAC地址判断出它应该把数据包发送到哪一个端口是因 为根据它本身维护的一张地址表。对于动态的地址表,并且地址表的大小是有上限的,可以通过发送大量错误的地址信息而使交换机维护的地址表“溢出”,从而使它变成广播模式来达到我们要嗅探两台机器之间的通信的目的。 2.1.3 交换机 MAC 地址伪装 一种欺骗交换机的方法,也就是发送伪造的 MAC 地址给交换机,让交换机在缓存中存储伪造的 MAC 地址,这样,就可以实现对网络的嗅探,不过这要求交换机是动态更新地址表。举个例子:要在主机 1 上实现对主机 2 的嗅探,这时主机 1 就要伪造主机 2 的 MAC 地址,让
18、它指向自己,并把伪造好的帧 不断地发送到交换机,交换机就会认为主机 2 的 MAC地址是指向主机 1 的,但是同时,主机 2 也会向交换机发送正确的 MAC 地址,因此必须让主机 2 暂时离线。 5 2.1.4 ICMP 重定向攻击 ICMP 重定向通常使用在这样的场合下,假设 A 与 B 两台机器分别位于同一个物理网段内的两个逻辑子网内,而 A 和 B 都不知道这一点,只有路由器知道,当 A 发送给 B 的数据到达路由器的时候,路由器会向 A 发送一个 ICMP 重定向包,告诉 A 直接送到 B 那里就可以了。设想一下,一个攻击者完全可以利用这一点,使 A 发送给 B 的数据经过他。 2.2
19、 C#语 言编程 为适应未来社会的发展,微软推出了 .NET 战略,以此作为下一代的网络应用基础。微软的所有产品包括操作系统、办公软件和开发工具等都将转移到 .NET 平台上来。 .NET 所包括的技术全面而且先进,必将对今后的软件开发和应用形式产生巨大的影响,因此及时地了解和掌握 .NET 技术,对于大多数开发人员来说都是必要的。 C#是微软公司在 2000 年 7 月发布的一种全新且简单、安全、面向对象的程序设计语言,是专门为 .NET 的应用而开发的语言。它吸收了 C+、 Visual Basic、 Delphi、 Java 等语言的优点,体现了 当今最新的程序设计技术的功能和精华。 C
20、#继承了 C 语言的语法风格,同时又继承了 C+的面向对象特性。不同的是, C#的对象模型已经面 internet 进行了重新设计,使用的是 .NET 的类库; C#不再提供对指针类型的支持,使得程序不能随便访问内存地址空间,从而更加健壮; C#不再支持多重继承,避免了以往类层次结构中由于多重继承带来的可怕后果。 .NET 为 C#提供了一个强大的、易用的、逻辑结构一致的程序设计环境。同时,公共语言运行时为 C#程序语言提供了一个托管的运行时环境,使程序比以往更加稳定、安全 9。 2.3 Windows Forms 程序概述 Windows Forms程序,指能够在诸如 Windows98、
21、windows NT、 Windows XP、 Windows Vista等 Microsoft操作系统平台上运行的,有着友好界面外观(如窗体、菜单、控件等)的程序。Windows Forms 在 .NET 平台中初次出现,也称为 Windows 窗体。同时,由于它是在 .NET 平台下运行的程序,因此操作系统就必须首先安装 .NET 平台,才能在 .NET 下开发的 Windows Forms应用程序中运行。以下是 Windows Forms程序的几个概念。 ( 1)启动程序 Windows Forms 程序与控制台应用程序的不同之处在于, Windows Forms 应用程序是通6 过非常
22、直观的窗体及窗体上的各种控件,例如按钮、文本框等与用户交互的。窗体应用程序不像控制台程序那样一步一步地执行,而是采用事件驱动机制,根据用户的各种操作所引发的事件选择执行相应的功能。 Windows Forms窗体应用程序与控制台应用程序有很大的不同,但是程序的入口是相同的,均为 Main函数。在 Windows Forms应用程序中, Main函数也是应用程序中要执行 的第一个函数。 ( 2)窗体 Windows 操作系统最主要的成功源于其友好的外观,即窗体。通常, Windows Forms 程序都包含若干个窗体,可以把各种各样的控件,如标签、文本框、命令按钮等,放置在窗体上,组成一个非常人
23、性化的人机界面。在 Windows Forms 应用程序中创建窗体需要使用System.Windows.Forms.Form 类或其派生类创建一个 Forms对象。 ( 3)事件 在 Windows Forms 程序中,用户的大部分操作都将产生 Windows事件,如单击一个按钮会引发一个 Click事件,用 户移动鼠标有相应鼠标移动的事件等,还有一些事件不是由用户操作产生而是系统自动产生的,如窗体关闭、数据库连接断开、时间到达某一时刻或使用外设时未就绪等。每一个 Windows控件都拥有大量的事件,使其可以达到与用户交互的目的。事件的监视及管理由 Application 类负责。在产生一个事
24、件时一般会引发一系列操作,如单击窗体上的关闭图标会触发程序关闭窗口或退出程序等。开发人员就是通过编写事件的响应方法,即事件所引发的操作,来达到对程序进行控制及交互的目的。 ( 4)事件响应的方法 在 .NET中,事件的声明是通过 event(事件)关键字来声明的。事件的响应及处理是通过一个 delegate(委托)来处理的。 由于事件的监视及管理是由 Application对象进行的,程序员不需要知道用户何时响应事件或者是响应了什么事件,只需要为事件添加相应的方法即可。另外,如果想为一个事件添加多个响应方法,可以使用“ +=”操作符;同时,还可以通过非常简单的“ -=”操作符取消这些响应方法 10。 2.4 C#网络编程概述 微软的 .NET 框架为我们进行网络编程提供了两个命名空间: System.Net 以及