河南理工网络嗅探器课设.docx

上传人:b****2 文档编号:24399459 上传时间:2023-05-27 格式:DOCX 页数:13 大小:23.59KB
下载 相关 举报
河南理工网络嗅探器课设.docx_第1页
第1页 / 共13页
河南理工网络嗅探器课设.docx_第2页
第2页 / 共13页
河南理工网络嗅探器课设.docx_第3页
第3页 / 共13页
河南理工网络嗅探器课设.docx_第4页
第4页 / 共13页
河南理工网络嗅探器课设.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

河南理工网络嗅探器课设.docx

《河南理工网络嗅探器课设.docx》由会员分享,可在线阅读,更多相关《河南理工网络嗅探器课设.docx(13页珍藏版)》请在冰豆网上搜索。

河南理工网络嗅探器课设.docx

河南理工网络嗅探器课设

河南理工大学

计算机科学与技术学院

课程设计报告

2012—2013学年第一学期

 

课程名称

设计题目网络嗅探器设计与实现

姓名

学号

专业班级

指导教师

年月日

目录

一、概述3

1.1课程设计的目的3

1.2课程设计的内容3

二、网络安全分析4

2.1网络安全4

2.2常用的网络安全技术5

三、软件总体设计8

3.1嗅探原理及实现过程8

3.2代码设计14

四、系统实现16

五、测试运行24

六、课程设计心得、总结28

参考文献:

29

 

摘要

随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,网络的安全性和可靠性显得越发重要。

因此,对于能够分析、诊断网络,测试网络性能与安全性的工具软件的需求也越来越迫切。

网络嗅探器具有两面性,攻击者可以用它来监听网络中数据,达到非法获得信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。

本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制。

文中首先分析了嗅探的原理和危害,并介绍了几种常见的嗅探器,然后研究了入侵检测系统中使用的包捕获技术。

利用原始套接字在windows平台下实现了一个网络嗅探器程序,完成了对数据包进行解包、分析数据包的功能。

 

一、概述

1.1课程设计的目的

本学期的《网络信息安全》课程设计是网络安全延伸,同学们通过课堂的学习并不能完全掌握实际的应用,必须亲自动手才能将知识用到实际的操作之中。

通过课程设计,大家可以掌握网络安全的基本概念,结合实际的操作和设计,巩固课堂教学内容,使大家掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个简单安全软件的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。

具体掌握的基本能力有以下几个方面:

1.学习和巩固《网络信息安全》的基本知识。

2.熟悉软件设计过程,培养解决实际问题的能力。

3.简单程序的设计方法。

1.2课程设计的内容

1.根据题目查找资料及调研,写出网络安全的需求分析报告;

2.根据需求分析,设计系统的功能结构,设计的功能要全面、正确,能解决各类用户的实际需要;

3.根据需求分析,确定所设计的系统涉及到的具体知识,为能满足系统功能的需要做好准备;

二、网络安全分析

2.1网络安全

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

网络安全从其本质上来讲就是网络上的信息安全。

从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。

随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。

但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。

计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。

Internet的安全已经成为亟待解决的问题。

2.2常用的网络安全技术

常用网络安全技术有:

网络防火墙技术、杀毒软件技术、文件加密和数字签名技术

1.防火墙

网络防火墙技术是一种用来加强网络之间访问控制,防止外部网络用户以非法手段通过外部网络进入内部网络,访问内部网络资源,保护内部网络操作环境的特殊网络互联设备。

它对两个或多个网络之间传输的数据包如链接方式按照一定的安全策略来实施检查,以决定网络之间的通信是否被允许,并监视网络运行状态。

目前的防火墙产品主要有堡垒主机、包过滤路由器、应用层网关(代理服务器)以及电路层网关、屏蔽主机防火墙、双宿主机等类型。

虽然防火墙是目前保护网络免遭黑客袭击的有效手段,但也有明显不足:

无法防范通过防火墙以外的其它途径的攻击,不能防止来自内部变节者和不经心的用户们带来的威胁,也不能完全防止传送已感染病毒的软件或文件,以及无法防范数据驱动型的攻击。

自从1986年美国Digital公司在Internet上安装了全球第一个商用防火墙系统,提出了防火墙概念后,防火墙技术得到了飞速的发展。

国内外已有数十家公司推出了功能各不相同的防火墙产品系列。

防火墙处于5层网络安全体系中的最底层,属于网络层安全技术范畴。

在这一层上,企业对安全系统提出的问题是:

所有的IP是否都能访问到企业的内部网络系统?

如果答案是“是”,则说明企业内部网还没有在网络层采取相应的防范措施。

作为内部网络与外部公共网络之间的第一道屏障,防火墙是最先受到人们重视的网络安全产品之一。

虽然从理论上看,防火墙处于网络安全的最底层,负责网络间的安全认证与传输,但随着网络安全技术的整体发展和网络应用的不断变化,现代防火墙技术已经逐步走向网络层之外的其他安全层次,不仅要完成传统防火墙的过滤任务,同时还能为各种网络应用提供相应的安全服务。

另外还有多种防火墙产品正朝着数据安全与用户认证、防止病毒与黑客侵入等方向发展。

根据防火墙所采用的技术不同,我们可以将它分为四种基本类型:

包过滤型、网络地址转换—NAT、代理型和监测型。

2.杀毒软件技术

杀毒软件肯定是我们见的最多,也用得最为普遍的安全技术方案,因为这种技术实现起来最为简单,但我们都知道杀毒软件的主要功能就是杀毒,功能十分有限,不能完全满足网络安全的需要。

这种方式对于个人用户或小企业或许还能满足需要,但如果个人或企业有电子商务方面的需求,就不能完全满足了。

可喜的是随着杀毒软件技术的不断发展,现在的主流杀毒软件同时对预防木马及其它的一些黑客程序的入侵。

还有的杀毒软件开发商同时提供了软件防火墙,具有了一定防火墙功能,在一定程度上能起到硬件防火墙的功效,如KV300,金山防火墙,Norton防火墙等。

3.文件加密和数字签名技术

与防火墙配合使用的安全技术还有文件加密与数字签名技术,它是为提高信息系统及数据的安全性和保密性,防止秘密数据被外部窃取,侦听或破坏所采用的主要技术手段之一。

随着信息技术的发展,网络安全与信息保密日益引起人们的关注。

目前各国除了从法律上,管理上加强数据的安全保护外,从技术上分别在软件和硬件两方面采取措施,推动着数据加密技术和物理防范技术的不断发展。

按作用不同,文件加密和数字签名技术主要分为数据传输,数据存储,数据完整性的鉴别。

三、软件总体设计

3.1嗅探原理及实现过程

网络嗅探器利用的是共享式的网络传输介质。

共享即意味着网络中的一台机器可以嗅探到传递给本网段(冲突域)中的所有机器的报文。

网络嗅探器通过将网卡设置为混杂模式来实现对网络的嗅探。

一个实际的主机系统中,数据的收发是由网卡来完成的,当网卡接收到传输来的数据包时,网卡内的单片程序首先解析数据包的目的网卡物理地址,然后根据网卡驱动程序设置的接收模式判断该不该接收,认为该接收就产生中断信号通知CPU,认为不该接收就丢掉数据包,所以不该接收的数据包就被网卡截断了,上层应用根本就不知道这个过程。

CPU如果得到网卡的中断信号,则根据网卡的驱动程序设置的网卡中断程序地址调用驱动程序接收数据,并将接收的数据交给上层协议软件处理。

下面给出一个简单的图示,简单理解数据传送的原理:

  _________

  /.........\

  /..Internet.\

  +-----++----+.............+-----+

   UserA ----- 路由 ............. UserB 

  +-----+^+----+.............+-----+

   \.........../

   \---------/

  +------+

   嗅探器 

  +------+

  UserAIP地址:

10.0.0.23

  UserBIP地址:

192.168.100.54

现在知道UserA要于UserB进行计算机通讯,UserA需要为10.0.0.23到192.168.100.54的通讯建立一个IP包。

这个IP包在网络上传输,它必须能够穿透路由器。

因此,UserA必须首先提交这个包给路由器。

由每个路由器考查目地IP地址然后决定传送路径。

UserA所知道的只是本地与路由的连接,和UserB的IP地址。

UserA并不清楚网络的结构情况和路由走向。

UserA必须告诉路由预备发送的数据包的情。

以太网数据传输结构大概是这样的:

  +--+--+--+--+--+--+

   目标MAC 

  +--+--+--+--+--+--+

   源MAC 

  +--+--+--+--+--+--+

   0800 

  +--+--+-----------+    

  ..

  .IP包.

  ..    

  +--+--+--+--+-----+

   CRC校验 

  +--+--+--+--+

理解一下这个结构,UserA的计算机建立了一个包假设它由100个字节的长度(我们假设一下,20个字节是IP信息,20个字节是TCP信息,还有60个字节为传送的数据)。

现在把这个包发给以太网,放14个字节在目地MAC地址之前,源MAC地址,还要置一个0x0800的标记,他指示出了TCP/IP栈后的数据结构。

同时,也附加了4个字节用于做CRC校验(CRC校验用来检查传输数据的正确性)。

现在发送数据到网络。

所有在网内的计算机通过适配器都能够发现这个数据片,其中也包括路由适配器,嗅探器和其他一些机器。

通常,适配器都具有一块芯片用来做结构比较的,检查结构中的目地MAC地址和自己的MAC地址,如果不相同,则适配器会丢弃这个结构。

这个操作会由硬件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。

当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。

查找0x8000标记,然后对这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。

设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个结构,则嗅探器无论如何也无法检测到这个结构的。

sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。

值得注意的是:

sniffer是极其安静的,它是一种消息安全攻击。

3.2网络嗅探的应用

网络嗅探器又称为网络监听器,简称为Sniffer子系统,放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,这些数据可以是用户的账号和密码,可以是一些商用机密数据等等。

他广泛地应用于流量分析、安全监控、网管分析、防火墙等的实现中。

Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。

Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。

例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。

而嗅探器也可作为攻击工具被黑客所利用为其发动进一步的攻击提供有价值的信息。

嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通常被黑客运用于网络攻击。

我们如果也能掌握网络嗅探器的原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企业信息安全防护。

嗅探器可能造成的危害:

  sniffing是作用在网络基础结构的底层。

通常情况下,用户并不直接和该层打交道,有些甚至不知道有这一层存在。

所以,应该说snffer的危害是相当之大的,通常,使用sniffer是在网络中进行欺骗的开始。

它可能造成的危害:

  嗅探器能够捕获口令。

这大概是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd。

能够捕获专用的或者机密的信息。

比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin。

比如偷窥机密或敏感的信息数据,通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。

  可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限。

窥探低级的协议信息。

这是很可怕的事,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口IP地址、IP路由信息和TCP连接的字节顺序号码等。

这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:

他正要进行一次欺骗(通常的IP地址欺骗就要求你准确插入TCP连接的字节顺序号)。

事实上,如果你在网络上存在非授权的嗅探器就意味着你的系统已经暴露在别人面前了。

  简单的放置一个嗅探器并将其放到随便什么地方将不会起到什么作用。

将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。

sniffer通常运行在路由器,或有路由器功能的主机上。

这样就能对大量的数据进行监控。

sniffer属第二层次的攻击。

通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。

如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。

3.3代码设计

该程序实现了抓取本机在网络通信数据并加以简单的分析的功能,实现了一个简单的网络嗅探器。

其中有一个主页面,另一个详细显示包信息的页面。

代码所需实现的功能:

(1)获得计算机的IP地址

(2)开始监听,获得数据包的协议类型、源端口、目地端口和大小

(3)停止监听,程序将暂停运行

(4)清空列表,显示列表被清空

(5)帮助,弹出帮助对话框,显示作者信息

(6)详细信息,双击列表中的任意行,显示数据包的详细信息。

部分功能函数:

#endregion

privatevoidPacketForm_Load(objectsender,System.EventArgse){

RawText.Text=m_Packet.ToString();

InfoList.Items.Add(newListViewItem(newstring[]{"开始时间",m_Packet.Time.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"源端口",m_Packet.Source}));

InfoList.Items.Add(newListViewItem(newstring[]{"目的端口",m_Packet.Destination}));

InfoList.Items.Add(newListViewItem(newstring[]{"协议类型",m_Packet.Protocol.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"生存时间",m_Packet.TimeToLive.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"版本信息",m_Packet.Version.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"报头大小",m_Packet.HeaderLength.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"报文总长",m_Packet.TotalLength.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"优先级别",m_Packet.Precedence.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"延迟",m_Packet.Delay.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"吞吐量",m_Packet.Throughput.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"可靠性",m_Packet.Reliability.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"鉴定",m_Packet.Identification.ToString()}));

InfoList.Items.Add(newListViewItem(newstring[]{"校验和",m_Packet.Checksum[0].ToString("X2")+m_Packet.Checksum[1].ToString("X2")}));

}

privatePacketm_Packet;

}

}

publicvoidStart(){

if(m_Monitor==null){

try{

m_Monitor=newSocket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);

m_Monitor.Bind(newIPEndPoint(IP,0));

m_Monitor.IOControl(SIO_RCVALL,BitConverter.GetBytes((int)1),null);

m_Monitor.BeginReceive(m_Buffer,0,m_Buffer.Length,SocketFlags.None,newAsyncCallback(this.OnReceive),null);

}catch{

m_Monitor=null;

thrownewSocketException();

}

}

}

///

///停止侦听指定的端口.

///

publicvoidStop(){

if(m_Monitor!

=null){

m_Monitor.Close();

m_Monitor=null;

}

}

///

///当socket拦截了一个IP数据包时执行.

///

///异步结果.

privatevoidOnReceive(IAsyncResultar){

try{

intreceived=m_Monitor.EndReceive(ar);

try{

if(m_Monitor!

=null){

byte[]packet=newbyte[received];

Array.Copy(Buffer,0,packet,0,received);

OnNewPacket(newPacket(packet));

}

}catch{}//无效的数据包,丢弃

m_Monitor.BeginReceive(Buffer,0,Buffer.Length,SocketFlags.None,newAsyncCallback(this.OnReceive),null);

}catch{

Stop();

}

}

///

///该接口用于拦截IP数据包.

///

///Aninstance.

publicIPAddressIP{

get{

returnm_IP;

}

}

///

///缓冲区,用于保存拦截的IP数据包.

///

///数组

protectedbyte[]Buffer{

get{

returnm_Buffer;

}

}

四、系统实现

我所设计的程序能够侦听所有进出本主机的数据包,完整显示数据包网络层和传输层(ICMP、IP、TCP和UDP)的头信息。

比如,对IP头而言,需要显示版本、头长度、服务类型、数据包长度、标识、DF/MF标志、段内偏移、生存期、协议类型、源目的IP地址、选项内容。

要求显示数据的实际含义;侦听来源于指定IP地址的数据,显示接收到的TCP数据包的全部实际内容。

需要考虑一个TCP包划分为多个IP包传输的情况。

五、测试运行

六、课程设计心得、总结

经过两个星期的实验课,我也是翻阅了许多相关资料和上网借鉴了前人的宝贵经验。

我的课程设计耽误的时间是在怎么获得IP地址,怎么获取数据包,经过一段时间的思考和查阅,这些问题都一一解决了。

只有解决了这些问题才能实现设计的要求,达到设计的基本目的。

通过此次课程设计,对网络终端监控程序的编写的方法及实现有了更深入的了解,基本具备了简单的网络终端监控程序开发的能力。

为今后更好的学习及今后工作打下了坚实的基础。

但也发现了许多的不足之处,我们不能局限于课本上面的知识,因为课本和现实的世界是有差距的,只有立足于现实才能很好地完成任务。

参考文献:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1