天津机电职业技术学院TIANFSDFJINVOCATIONALCOLLEGEOFMECHANICSANDELECTRICITY《网络安全(基于软件)》大作业报告书姓名:崔宏学号:20145305035班级:网管14(3+2)指导教师:冯骏完成日期:2015.6.2成绩:论网络嗅探器设计与实现目录一系统分析1设计概述1.1实现目标1.2开发环境2开发相关技术简介2.1C#语言简介2.2嗅探器技术简介2.3TCP/IP协议2.4数据包简介3可行性分析二详细设计1设计原理2功能说明三论文总结一设计概述基于C#的网络嗅探器的设计与实现,首先就是要设定好实现的目标,确定开发的环境。有个合理的设计目标使得在设计过程中不茫然,思路更清楚。而一个好的开发环境对提高开发的效率同样起着很重要的作用。1.1实现目标实现一个简单的网络嗅探器。具备以下功能:1、实现一个简洁的易操作的计算机操作用户界面2、实现抓取数据包的功能3、实现暂停抓取数据包的功能4、实现清空列表的功能5、实现显示数据包详细信息的显示功能1.2开发环境MicrosoftVisualStudio2005,WindowsXP二开发相关技术简介本节将对本设计中用到的一些主要技术进行简单的介绍。2.1C#语言简介C#(CSharp)是微软于2000年提出的一种源于C++、类似于Java的面向对象编程语言,适合于分布式环境中的组件开发。C#是专门为.NET设计的,也是.NET编程的首选语言。C#的产生是因为微软在.NET上需要一种类Java的语言,而Java本身却不能胜任这一需求。C#太像C++了,以至于它很难给人带来体验新事物时的那种兴奋。不过,绝大部分的C++开发者将会因为C#保留了C++中大部分其喜欢的、强大的、令人激动的功能而选择使用它。C#通过避免一般的编程错误和自动资源管理,使得C#的稳定性得到了极大的增强。另外,C#语言功能强大且可以实现对象之间的转换,轻松实现各种对象转换成字符串。鉴于以上种种,我选用C#作为我本次设计的开发语言。2.2嗅探技术简介数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,存在着安全方面的问题。每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。一个简单的局域网组成嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:a)广播方式:该模式下的网卡能够接收网络中的广播信息。b)组播方式:设置在该模式下的网卡能够接收组播数据。c)直接方式:在这种模式下,只有目的网卡才能接收该数据。d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器。其次,如果某个工作站的网络接口处于混杂模式,那么它就可以捕获网络上所有的数据。嗅探程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。2.3TCP/IP协议因特网是一个发展非常活跃的领域。在1968年,它的早期研究成果开始崭露头角,后来便出现了它的前身ARPANET,ARPANET为表现因特网特性的试验平台做出了重大贡献,1973年,因特网正式面世。从那时起,关于因特网的研究和努力就一直没有间断过,其中大部分努力都是围绕着被称为网络的一个新型赛博空间所需要的标准而进行的。因特网协议及其标准与世界上任何其他事物的结构不同,它总是由一些机构或专业人士中的个人首先提出的。为了了解新的协议是如何出现并最终成为标准的,应该首先熟悉缩写词RFC,即RequestforComment。它的发展变迁过程要追溯到1969年,起因是由于因特网的成员过于分散。正如这个词的字面意思所示,这些文档是一些实用文档、方法、测试结果、模型甚至完整的规范。因特网社会的成员可以阅读,也可以把意见反馈给RFC,如果这些想法(或基本原理)被社会接受,就有可能成为标准。在因特网社会中关于RFC的用法以及如何操作并没有太大的变化。1969年,当时只有一个网络,整个社会不超过一百位专业人员;随着因特网的飞速发展,因特网不但需要一个机构来集中和协调这些成果,并且需要制定一个最低要求的准则,至少能在成员之间进行有效的通信并取得相互了解。1974年前后,摆在ARPANET面前的形势很清晰了,通信联络需要进一步扩展,它需要的不仅是要能容纳成倍增加的通信媒体,而且要了解早已存在于群组中的许多领域的意义。这个领域需要一个管理者。大约在1977年,随着作为因特网实验备忘录(IEN)一部分的许多实验的进行,著名的TCP/IP协议获得了发展的动力。没过多久(1986年),为了RFC讨论的需要,需要建立一个由工程技术人员组成的、对标准的发展负责的工作机构,以便有效地引导因特网的发展成长,这样,因特网工程工作组(INENG)成立了。今天,因特网工程部(IETF)和因特网研究部(TRTF)成为对因特网近期工程需求和远期研究目标负责、并担负重任的两个工作组。这两个组织曾直接隶属于国际网络执行委员会(IAB),现在属于因特网协会(1992年成立),这个协会最终也是为因特网技术的发展负责的。2.4数据包简介“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。OSI(OpenSystemInterconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。OSI模型有5层,1到5层分别是:物理层、数据链路层、网络层、传输层、应用层。OSI模型在逻辑上可分为两个部分:低层的1至3层关注的是原始数据的传输;高层的4至5层关注的是网络下的应用程序。我们可以用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。“包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。比如在Windows2000Server中,把鼠标移动到任务栏右下角的网卡图标上(网卡需要接好双绞线、连入网络),就可以看到“发送:××包,收到:××包”的提示,如下图所示:3可行性分析可行性研究(FeasibilityStudy)是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。可行性研究应具有预见性、公正性、可靠性、科学性的特点。[7]当然这次论文的可行性研究并没有上述的如此意义重大,只是理清整个系统分析和设计的大致过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。它的目的不是解决问题,而是确定问题是否值得去解决。当然在现阶段这样的信息安全背景下,网络嗅探器的研究与使用的价值是毋庸置疑的。不仅可以有效地诊断网络状况,更可以为信息安全战打攻坚战。它是广大的网络技术人员不可或缺的工具之一。二详细设计1设计原理嗅探器是如何工作的?如何窃听网络上的信息?网络的一个特点就是数据总是在流动中,从一处到另外一处,而互联网是由错综复杂的各种网络交汇而成的,也就是说:当你的数据从网络的一台电脑到另一台电脑的时候,通常会经过大量不同的网络设备,(我们用tracert命令就可以看到这种路径是如何进行的)。如果传输过程中,有人看到了传输中的数据,那么问题就出现了——这就好比我们用手机给人发了一条短信,结果除了发送对象以外,还发到别人的手机上了一样,这样说或许还不是很可怕,要是传送的数据是企业的机密文件呢,或是用户的信用卡帐号和密码呢?[8]嗅探侦听主要有两种途径,一种是将侦听工具软件放到网络连接的设备或者放到可以控制网络连接设备的电脑上,(比如网关服务器,路由器)——当然要实现这样的效果可能也需要通过其他黑客技术来实现:比如通过木马方式将嗅探器发给某个网络管理员,使其不自觉的为攻击者进行了安装。另外一种是针对不安全的局域网(采用交换HUB实现),放到个人电脑上就可以实现对整个局域网的侦听,这里的原理是这样的:共享HUB获得一个子网内需要接收的数据时,并不是直接发送到指定主机,而是通过广播方式发送到每个电脑,对于处于接受者地位的电脑就会处理该数据,而其他非接受者的电脑就会过滤这些数据,这些操作与电脑操作者无关,是系统自动完成的,但是电脑操作者如果有意的话,就可以将那些原本不属于他的数据打开,这就是安全隐患!以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。正是因为这样的原因,以太网卡都构造了硬件的“过滤器”。这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身MAC地址不符合的信息。嗅探程序正是利用了这个特点,它主动的关闭了这个过滤器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。[9]以下是一个帮助我们理解数据传送的简单图示:_________/.........\/..Internet.\+-----++----+.............+-----+用户A-----路由.............用户B+-----+^+----+.............+-----+\.........../\---------/+------+嗅探器+------+用户AIP地址:192.168.1.10用户BIP地址:192.168.1.1现在知道用户A要于用户B进行计算机通讯,用户A需要为192.168.1.10到用户B192.168.1.1的通讯建立一个IP包。这个IP包在网络上传输,它必须能够穿透路由器。因此,用户A必须首先提交这个包给路由器。由每个路由器考查目地IP地址然后决定传送路径。用户A所知道的只是本地与路由连接和用户B的IP地址。用户A并不清楚网络的结构情况和路由走向。用户A必须告诉路由器准备发送数据包的情况,以太网数据传输结构大概是这样的:+--+--+--+--+--+--+目标MAC+--+--+--+--+--+--+源MAC+--+--+--+--+--+--+0x0800+--+--+-----------+IP包+--+--+--+--+-----+CR