网络嗅探器课程设计报告.docx
《网络嗅探器课程设计报告.docx》由会员分享,可在线阅读,更多相关《网络嗅探器课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
![网络嗅探器课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-5/18/030c5ad4-4847-42ee-b335-426044730fab/030c5ad4-4847-42ee-b335-426044730fab1.gif)
网络嗅探器课程设计报告
《网络与信息安全技术》课程报告
课题名称:
网络嗅探器
提交报告时间:
2010年12月17日
各成员的工作量划分表
网络嗅探器
专业
组号指导老师
[摘要]随着网络技术的飞速发展,网络安全问题越来越被人重视。
嗅探技术作为网络安全攻防中最基础的技术,既可以用于获取网络中传输的大量敏感信息,也可以用于网络管理。
通过获取网络数据包的流向和内容等信息,可以进行网络安全分析和网络威胁应对。
因此对网络嗅探器的研究具有重要意义。
本课程设计通过分析网络上常用的嗅探器软件,在了解其功能和原理的基础上,以VC为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap,按照软件工程的思想进行设计并实现了一个网络嗅探工具。
该嗅探工具的总体架构划分为5部分,分别是最底层的数据缓存和数据访问,中间层的数据捕获,协议过滤,协议分析和最顶层的图形画用户界面。
本嗅探器工具完成了数据包捕获及分析,协议过滤的主要功能,实现了对网络协议,源IP地址,目标IP地址及端口号等信息的显示,使得程序能够比较全面地分析出相关信息以供用户参考决策。
关键词:
网络嗅探;WinPcap编程接口;数据包;网络协议;多线程
(中文摘要在150字左右。
摘要正文尽量用纯文字叙述。
用五号宋体字。
姓名与摘要正文之间空二行。
关键词与摘要之间不空行。
“摘要”这两个字加粗)
关键词:
入侵检测系统;感应器;分析器;分布式入侵检测系统模型
Networksniffer
Major:
softwareengineering
GroupNumber:
29
[Abstract]Withtherapiddevelopmentofnetworktechnology,networksecurityisincreasinglybeingattention.Sniffingnetworksecuritytechnologyasthemostbasicoffensiveanddefensivetechniques,bothusedtoobtainalargenumberofnetworktransmissionofsensitiveinformationcanalsobeusedfornetworkmanagement.Accesstonetworkpacketsthroughtheflowandcontentandotherinformation,canbenetworksecuritythreatanalysisandresponsenetworks.Therefore,thenetworksnifferisofgreatsignificance.
Thecourseisdesignedbyanalyzingthecommonlyusednetworksniffersoftware,tounderstandthefunctionsandprinciples,basedontheVCasadevelopmentplatform,usingtheWindowsenvironment,thedevelopmentofnetworkpacketcapturelibraryWinPcap,accordingtosoftwareengineeringdesignAndimplementationofanetworksniffertool.Theoverallstructureofthesnifferisdividedintofiveparts,namely,thebottomofthedatacachinganddataaccess,middlelayerofthedatacapture,protocolfiltering,protocolanalysisandtopgraphicartuserinterface.
Thecompletedtoolsnifferpacketcaptureandanalysisofdata,protocolfilteringofthemainfunctions,therealizationofnetworkprotocol,sourceIPaddress,destinationIPaddressandportnumberandotherinformationdisplay,makestheprogramouttoamorecomprehensiveanalysisofrelevantinformationDecision-makingforuserreference
[Keyword]networksniffer;WinPcapprogramminginterface;datapacket;networkprotocol;multi-threaded
第一章绪论
嗅探器是一种利用计算机网络接口监视网络数据运行,截获网络数据的工具,可用于网络管理,网络协议分析以及网络安全等众多方面。
在网络攻防技术中,嗅探器技术是最为基础的一种技术。
从攻防的角度,黑客可以利用嗅探器程序非法获取网络中传输的大量敏感信息,如账号和口令等,对网络安全极具威胁;从防守的角度,嗅探技术是基于网络的入侵检测系统的最底层环节,是整个系统的数据来源。
背景
随着网络技术的迅速发展,加速了全球信息化进程,各种重要数据在网上的传播日益普遍,使得网络安全问题越来越为人们所关注。
网络嗅探器作为一种网络数据监听程序,在网络安全攻防方面扮演了很重要的角色,目前已经有不少的嗅探工具,譬如在Windows环境下,最富盛名的工具是Netxray,Snifferpro,在UNIX环境下是sniffer和snoop,以及同时支持Linux和windows平台的Ethereal等工具都是比较常见的。
网络嗅探器实际是一把双刃剑,通过使用网络嗅探器可以把网卡设置于混杂模式,并可以实现对网络上传输的数据包的捕获与分析,此分析结果可供网络安全分析之用,也可以为黑客发动进一步的攻击提供有价值的信息。
而在网络安全方面,目前使用最广泛的TCP/IP协议存在很多安全缺陷,网络嗅探器可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。
我们通过对网络嗅探器的数据包捕获与分析功能进一步了解,才能做到知己知彼,有针对性的获取所需要的信息,利用对这些休息进行网络安全协议和网络威胁应对。
根据《网络安全技术发展分析》一文中的数据,2007年以来网络监听技术出现了新的重要特征,传统的Sniffer技术是被动的监听网络通信,用户名和口令,而新的Sniffer技术则主动地控制通信数据。
我们通过对网络嗅探器的数据包捕获与分析功能的进一步了解,才能做到知己知彼,有针对行地获取所需要的信息,利于对这些信息进行网络安全分析和网络威胁应对。
因此,对网络嗅探器的研究具有重要意义。
国内外现状
Sniffer中文翻译过来就是嗅探器,在当前网络技术中使用的非常得广泛。
Sniffer既可以做为网络故障的诊断工具,已可以做为黑客嗅探和监听的工具。
最近两年,网络嗅探监听(sniffer)技术出现了新的重要特征。
传统的sniffer技术是被动地监听网络通信,用户名和口令。
而新的sniffer技术出现了主动地控制通信数据的特点,把sniffer技术扩展到了一个新的领域,Sniffer技术除了目前在传统的网络侦测管理外,也开始被应用于在咨询保全的领域。
可以这样说,sniffer技术是一把双刃剑,如何更好的利用它,了解它的一些特性,将能使用这项技术更好的为我们需求带来便利。
Sniffer的编程方法比较通用的有以下几种:
1).winpcap这是一个比较通用的库,相信做过抓包的工具大多人都不会陌生。
2).rawsocket在2000以后的版本都比较支持此项功能,2000server有个网络监视器就是基于rawsocket。
3).tdi,ndis,spi,hooksocket技术,这种技术比较大的不同是,可以将包截取而不仅仅是获得包的一份拷贝。
实际应用中的Sniffer还分软,硬两种。
软件Sniffer的优点在于比较便宜,易于学习使用,同时也易于交流,缺点是往往无法抓取网络上所有的传输(不如碎片),某些情况下也就可能无法真正了解网络的故障和运行情况;硬件的Sniffer通常称为协议分析仪,一把都比较昂贵,它的优点恰恰是软件Sniffer所欠缺的,但是昂贵是它的致命的缺点。
因此目前流行的Sniffer工具都是软件的。
本文工作
作为论文的主要部分,本文正文的安排如下:
第一部分提出相关技术,剖析网络嗅探器的作用和危害的同时提出论题,并介绍出现网络嗅探器工具的原理和方法,以及本次设计中用到的Winpcap技术;
第二部分描述研究内容,包括程序需求分析和系统的设计与实现。
讨论用户类及特征,用户需求,功能需求,性能需求,运行环境等因素,对嗅探工具开发的思想和过程作初步的分析和论证。
此外。
还详细介绍使用Winpcap开发程序的一般流程及相关功能函数,以及数据包捕获,分析,过滤等各个模块的具体实现。
第三部分介绍测试环境及过程,作为课程设计的最后一部分,网络嗅探器的结尾工作,我们将严格地对我们的网络嗅探器进行测试。
第四部分总结这次课程设计的心得以及列出我们的参考文献。
第二章相关技术
嗅探原理
嗅探器是一种常用的收集有用数据的方法,嗅探器是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种工具。
由于组网方式不同,嗅探器的工作原理也有所不同,总共可以分为三类:
(1)基于网卡混杂模式的嗅探原理;
(2)基于ARP欺骗的网络嗅探原理;
(3)基于中间人攻击的嗅探原理。
本次课程设计就是利用第一种方式来实现嗅探器的功能,可见监听到所有流经同一以太网网段的数据包,这是一种被动嗅探的方式。
从以太网的工作原理来看,数据传输是基于“共享”的,所有的同一本地网范围内的计算机共同接收到相同的数据包,这意味着计算机直接的通讯都是透明可见的。
正是因为这样的原因,以太网卡都构造了硬件的“过滤器”,这个过滤器将忽略掉一切和自己无关的网络信息,事实上时忽略掉了与自身MAC地址不符合的信息。
从网卡原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据包,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。
对于网卡来说一般有四种接收模式:
(1)广播方式:
该模式下的网卡能够接收网络中的广播信息;
(2)组播方式:
设置在该模式下的网卡能够接收组播数据;
(3)直接方式:
在这种模式下,只有目的网卡才能接收该数据;
(4)混杂模式:
在这种模式下的网卡能够接收一切通过它的数据。
而本次设计嗅探工具正是利用了这个特点,把网卡设置为“混杂模式”。
因此,嗅探程序就能够接收到整个以太网内的网络数据信息了,而不管该数据是否是传给它的。
正常模式和混杂模式的两者对比如图所示:
图网卡对数据包的处理方式
捕获机制
很多网络安全系统最首要的任务就是捕获网络上的数据信息,而网络数据包捕获技术就解决了这个问题。
网络数据包捕获技术是从网络上捕获所有的或特定的网络数据包信息,供其他网络安全系统使用。
不同的网络有不同的捕获技术,不同的操作系统其捕获机理也有所不同。
以太网采用了CSMA/CD技术,它使用了广播机制,所有与网络连接的机器都可以看到网络上传播的数据,操作系统提供的捕获机制主要有以下三种:
(1)SOCK_PACKET类型套接口;
(2)数据链路提供者接口(DataLinkProviderInterface,DLPI);
(3)伯克利数据包过滤器(BerkeleyPacketFilter,BPF)。
BPF主要由两部分组成:
网络转发部分和数据包过滤部分。
网络转发部分是从链路层中捕获数据包并把它们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接受过滤规则决定的网络数据包,其他数据包就抛弃。
捕获数据包和过滤数据包都是在操作系统内核中完成的,而且使用了数据缓存机制。
从效率上来讲,BPF在三种机制中是性能最高的,而SOCK_PACKET是最弱的。
在实际应用中,实现网络数据包捕获技术的代表是Libpcap。
它是一个专业的跨平台的网络数据包捕获开发包。
使用Libpcap可以很轻松地实现网络数据包的捕获功能,它的捕获机制就是BPF捕获机制。
在Windows平台下有与Libpcap兼容的WinPcap开发包,它是专门针对Windows平台而开发的,本次程序的开发就是利用WinPcap库函数实现的。
功能介绍
WinPcap(WindowsPacketCapture)是Windows平台下的一个免费、公平的专业网络数据包捕获开发包,也是其它一些安全工具的应用基础。
使用该开发包的软件主要有:
Windump、Analyzer、Ethereal、Dsniff等。
WinPcap包括三部分,即数据包捕获和过滤块NPF、较低层的网络编程接口、较高层的编程接口。
使用该开发包可以提高应用效率,WinPcap充分考虑了各种性能和效率的优化,在内核层实现了数据包的捕获和过滤,这是由NPF来实现的,NPF是WinPcap的核心部分,它实现了内核的统计功能,对于设计网络流量的程序很有好处。
WinPcap是Libpcap在Windows平台下的版本,在设计WinPcap时参照了Libpcap,对Windows进行了优化处理和发展,主要功能:
(1)数据包捕获。
跟Libpcap一样,WinPcap主要的功能还是完成了对网络数据包的捕获,它可以捕获在共享网络上传输的各种网络数据包。
(2)数据包过滤。
WinPcap也具备数据包的过滤功能,在接收网络数据包和发送个应用程序之前在内核层对数据包进行过滤,其过滤规则与BPF过滤规则兼容。
(3)数据包发送。
使用WinPcap可以实现数据包的发送功能,可以发送原始的网络数据包,网络数据包的内容可以由开发者自己确定。
(4)流量统计。
在WinPcap中还实现了流量统计功能,这也是在内核层实现的。
(5)数据包存储。
使用WinPcap可以在内核中将捕获到的数据包直接存储到磁盘中。
Winpcap体系结构
前一节提到你了WinPcap的三个模块,它们分别是NPF、、,其体系结构如下图所示:
图WinPcap体系结构
这个三个模块组成了有较好扩展性的底层网络分析体系结构,下面对三个模块作详细说明。
NPF是WinPcap的组件,用来处理网络上传输的数据包,并对用户层导出数据包捕获、发送与分析的能力。
它是运行于操作系统内核中的驱动程序,它直接与网卡驱动程序进行交互,捕获在网络上传输的原始数据包。
在WindowsXP系统中,它以SYS文件形式存在。
该模块提供了抓取数据包以及发送数据包的基本功能,此外还提供了一些高级功能,如数据包过滤系统和检测引擎。
用于在Windows平台上为数据包驱动程序提供一个公共的接口。
不同的Windows版本在用户态和内核态之间提供互不相同的接口,而可以屏蔽这些接口区别,提供一个与系统无关的API。
开发的数据包截获程序可以运行于不同的Windows平台而不必重新进行编译。
可以执行如获取适配器名称、动态驱动器加载以及获取主机掩码及以太网冲突次数等低级操作。
模块提供了一组功能强大且跨平台的函数,利用这些函数,可以不去关心适配器和操作系统的类型。
含有诸如产生过滤器、定义用户缓冲以及包注入等高级功能。
的函数调用会自动调用中的低级函数,并且可能被转换成若干个系统调用。
第三章研究内容描述
本次课题的主要研究内容是利用套接字开发网络嗅探器的程序设计,设计要求完成对流经本地网卡的所有数据包的捕获,分析协议类型,并根据不同的协议类型对数据包进行了进一步的分析,包括分析数据包的源IP地址、目的IP地址、源端口号、目的端口号、大小等。
通过对该课题的研究,让我对嗅探技术有了进一步的了解,对其两面性在网络中产生的影响有了更深的认识,为了打破以上局限性,还需要结合已学知识对网络嗅探技术方面的知识作进一步的学习。
利用套接字开发网络嗅探器程序时的一般步骤如下图所示:
如图所示,在利用套接字开发网络嗅探器程序时的一般步骤是:
首先,创建原始套接字,并设置其操作选项;其次将原始套接字绑定到本地网卡地址上;设置网卡为混杂模式,这样网卡就可以收到任何在网络中传输的数据包;在以上条件下开始对数据包进行捕获、分析。
有两类人对于流动在网络上的数据是非常感兴趣的:
网络管理员和黑客,他们都要对网络上的以包为单位的数据流进行监测。
事实上,一个好的数据包监测软件通常可以在网络管理和黑客技术的工具包中同时找到。
黑客可以用数据包监测软件监听互联网,并且追踪一些敏感数据的交换如登录对话和财经交易;网络管理员可以用数据包监测软件监视网络的状态、查找网络漏洞,检测网络性能和修复网络的故障等。
所以,研究网络数据的捕获和网络协议的分析不但能够有利于管理网络和维护网络的健康运转,更重要的还可以得知黑客对网络攻击的机理,有针对地进行入侵检测,进而避免黑客的攻击破坏和对资料的窃取。
本课题针对网络数据包的捕获和分析技术做了比较深入的阐述。
在对当今网络数据捕获和分析的有关基本实现机理、方法和手段进行分析的基础上,通过详细地分析网络数据包捕获函数库Libpcap和winpcap的工作机理和内部架构,描述了网络数据包捕获和分析程序的层次结构,给出了具体的通过调用Winpcap来捕获和分析数据包的程序的设计与实现方法。
对于今后网络数据的监测和分析方案(比如对无线网络和交换环境捕获和分析),本文也在最后部分做了相应的阐述和预测。
设计完成后经测试能实现预期要求的功能。
但是仍然存在一些不足之处,例如:
1.由于时间和所学知识有限,只对数据包作了简单分析,分析内容不是很全面;
2.本论文中的嗅探器适用于基于广播包的网络,而对于诸如交换机这类设备,由于它能够阻止广播,所以就不能够对子网内其他的机器进行监听,若想要对此子网进行监听,就必须处于与此交换机同级的包交换网络中。
第四章测试环境和过程描述
通过对整体框架的设计、程序代码的编写,最终会在调试的时候出现各种各样的问题,有的是细节问题,如语法不明、丢失分号、声明错误,有的问题是程序设计思路本身不够完善,或者代码出现了错误导致不能运行,需要通过不断的调试和改正,从而使程序能正确的按照要求运行。
在反复的调试中,可以使我们认识到作为一个程序员对程序编写的严谨性,养成严于律己的好习惯。
程序调试
在本次设计中我们遇到了一些问题,,对于这些问题我们采用的方法是,查看相应的协议书,参考WinPcap开发手册,并从网上看了一下流行的处理方法。
现将编程实现程序过程中遇到的主要问题陈述如下:
(1)用pcap_lookupnet时发现网卡的IP和掩码都是并且无法捕捉。
通过网上搜索相关问题,发现是因为使用了pcap_lookupdev这个函数,在WinPcap开发手册中这个函数也是不推荐使用的。
因为在实际使用中我们的机器安装了VMware这个虚拟机软件,在查找网卡时都能找到一个虚拟的网卡,并且处于第一个位置,这样向下一步提交设备句柄的时候就已经传错了。
后面使用了开发手册推荐的pcap_findalldevs函数返回一个网卡列表,然后找到需要的正常网卡,解决了这个问题。
(2)使用了pcap_findalldevs函数,并且调试时发现已经是正常网卡,可是还是无法捕获,抓不到包,好像WinPcap没有工作。
通过仔细排查,发现pcap_open函数中的延迟参数设置有问题,延迟设置过小使程序无法工作。
然后设置为1000ms后,故障排除了。
(3)在MFC下开发的问题,要使用pcap_next_ex函数,而不要使用在Dos下开发时常用的pcap_loop函数,这样才不会有回调函数的那个问题。
通过排除程序中存在语法错误、误用的函数等各种问题后,最终在VC的输出窗口显示无错误的信息,编译成功,显示如图所示:
图编译通过
程序测试
编译通过后,对本系统进行测试,网络环境是一个主机数为4的小型局域网,可以连接互联网,带宽为1Mbps,测试主机的硬件和软件环境如表4-1:
表4-1测试主机的环境
运行网络嗅控工具,程序正常运行,其界面如图所示:
图程序界面
程序界面可分为6个区域,分别是程序菜单,过滤规则设置,数据包统计,捕获的数据包信息,数据包详细信息,数据包数据内容。
下面按照菜单的顺序,即数据包捕获的过程来进行程序测试,第一步是配置网卡,点击网络配置菜单,弹出网络适配器列表,如图所示:
图网络适配器列表
在已显示的网卡列表中,第一个是本机上的虚拟网卡,第二个是本机物理网卡,点开树形结构显示该物理网卡的详细信息。
该部分信息符合事实,这部分功能成功实现。
然后点击确定可以绑定网卡,如图所示:
图绑定成功提示
网卡绑定成功后,在2区域可设置规则,默认为空,也可以自己设置过滤规则。
如果规则为空时则抓取所有的数据包,若自定义规则,则在输入框中编辑当前的捕获规则,然后点选测试语句,若没有错误可以点击“应用生效”按钮使规则生效,程序便可以在以后的抓包过程中自动采用所设置的规则:
如有语句不合法,程序会指示当前语句发生错误,要修改再进行测试。
这里我们设置“tcpsrcport80”的规则,表示捕获公当tcp的数据包的源端口地址为80的数据包,输入后测试,没有语法错误,然后音乐规则,显示新规则设置成功,如图所示:
(a)测试规则(b)应用规则
图规则设置提示
然后点击启动命令,程序开始抓包,可以随时点击暂停命令来停止抓取数据包,显示信息如图所示:
图抓包界面
正如上图所示,在第3区域显示了抓取数据包的统计量,统计显示抓取的都是tcp数据包,符合实际,该部分功能测试通过。
第4区域显示了数据包的各种信息,如数据包的编号,时间戳,数据包长度,协议类型,源IP地址,目的IP地址,源端口号,目的端口号,源MAC地址等相关信息,点击任意一个数据包,会在下面的5,6区域显示该数据包的详细信息。
第5区域显示了网络的ISO层次模型中链路层,网络层,传输层3层结构中的详细信息,包括版本号,头部长度,服务类型,优先级,延迟,校验和等。
第6区域则是显示的16进制数据,通过对其解码,可以得到数据包的诸如IP地址,端口号等信息。
以上的种种信息均与第1区域的过滤规则相符合,各种信息也是一高产田的,说明些次编程实现数据包捕获的主要功能已经成功实现。
此外,本程序还添加了数据导出功能,程序中支持对数据包中的信息按XML格式的方式进行导出,可以在程序上方主菜单中选中数据导出便可以完成此项操作。
在弹出的对话框中,会自动生成当前时间日期为名的XML文档,当然也可以自己设置文件名,同时可以选择文件的其它保存路径,我这里选择的是桌面位置,如图所示:
图数据导出
点击“导出”按钮后,在好事多磨