ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:698.33KB ,
资源ID:8341205      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8341205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络监听技术是系统安全领域内一个非常敏感的话题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络监听技术是系统安全领域内一个非常敏感的话题.docx

1、网络监听技术是系统安全领域内一个非常敏感的话题摘 要网络监听技术是系统安全领域内一个非常敏感的话题,也是一项重要的技术,具有很强的现实应用背景。网络监听是网络监测、负载分析等管理活动常用的方法,同时也是黑客非法窃取信息的手段。网络监听工具通过网络传输介质的共享特性实现抓包,获得当前网络的使用状况,为网络管理员对网络中的信息进行实时的监测、分析提供一个合适的工具;同时也让黑客截获本网段的一些敏感信息,威胁网络安全。本文对网络监听技术的原理和实现进行了比较详细的介绍,讨论了监听技术在Windows下的多种实现,并主要介绍了如何在Win32环境中利用Winpcap开发包开发网络实时监听程序,给出了具

2、体的设计与实现方法。详细描述Winpcap开发包的主要功能,分析网络监听程序的层次结构(从底到顶依次为NPF驱动程序,Winpcap的dll函数库),监听应用程序。最后就当前的监听技术的不足提出了分布式监听的观点,还引入了简单网络管理。关键字:网络监听,Winpcap,包捕获AbstractNetwork sniffer is an important issue and technique in the domain of system security, so it has strong realism application background . Network sniffer is

3、 a way which is used in network monitor, load analysis; at the same time it is also a way which is used by hacker to get the information illegally. Network sniffer tools snap packets to get the networks current status by the shared characteristic of the network transmission medium. It provides netwo

4、rk manager a nice tool which can help them inspect and analyse the information of network ; simultaneously hackers also get some important information, so threaten system security.In this article ,we will introduce the principles and implementations of the network sniffer in details ,discuss multi-i

5、mplementations of sniffer technique at windows ,and mainly introduce how to develop sniffer program at win32 by Winpcap development kit ,the detailed design and implementations . Particularly we describe the main function of Winpcap , analyse the framework of network sniffer program and the sniffer

6、application program.At last I bring forward distributed sniffer viewpoint for the lack of current sniffer technique . I also import simple network management.Keyword: network monitor,winpcap,packet snap前 言当今计算机网络及通讯技术的广泛应用,促使Internet的迅速发展,给我们带来产生了巨大的社会和经济效益。在这种情况下,计算机网络的设计,维护的难度日益增加,因此人们迫切需要能够分析,诊断与

7、测试网络功能的工具软件。网络监听工具在这种需求下孕育而生。它对网络上的所有数据进行捕获,一方面对数据包进行检查分析,以便找出我们所关心的网络中潜在的问题,对网络故障做出精确定位,帮助管理员解决网络的故障和性能问题;另一方面它又是黑客窃听网络的工具,黑客利用数据包中携带的数据直接或间接获取的XX信息。所以实现网络监听技术具有重要的现实和理论意义。本文主要对网络监听技术的原理和实现进行了比较详细的介绍。讨论了监听技术在Windows下的多种实现,并主要论述了如何在Win32环境中利用Winpcap开发包开发网络实时监听程序,并给出了具体的设计与实现方法。正文第一章主要描述与实现网络监听工具有关的理

8、论,包括网络监听的原理,实现网络监听的多种不同技术。第二章详细描述在实现本网络监听工具中使用的Winpcap技术,包括DDK驱动开发技术,DLL动态库技术,MFC应用程序开发技术。本监听工具所具备的功能。第三章详细描述系统功能。第四章详细描述系统实现,包括NPF驱动程序的实现;PACKET.DLL动态库程序的实现;应用程序的实现,将给出数据流图,模块结构图,关键程序流程图。第五章叙述系统测试和使用。最后一章得出毕业设计的总结,并阐明本软件的缺陷和解决方法。 第1章系统概述1.1系统目标本课设从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术和标准,模拟仿真了一组网络实

9、验。为了能够检验实验的结果,我们开发了这个网络监听工具,帮助实验人员对网络中的信息进行实时的监测、分析,诊断网络故障。同时通过该毕业设计的内容,让我们了解各种抓包技术,熟练掌握基于Winpcap开发包的编程模式;了解网络监听技术的新发展和网络安全防X的新方向;最后能有所体会。1.2相关理论与技术的简单介绍1.2.1 网络监听原理共享式局域网采用的是广播信道,也就是说每台主机所发出的帧都会被整个网络内的所有主机接收到1。接收主机对帧的处理根据网卡的工作模式来实现。一般网卡具有一下4种工作模式:广播模式,多播模式,直播模式和混杂模式。网卡缺省工作模式是工作在广播和直播模式下的,即只能接收发送给自己

10、和广播的帧。正常情况下接收主机的网卡根据帧中所包含的目标MAC地址或是广播MAC地址进行判断,若等于自己的MAC地址或是广播MAC地址,则提交给上层处理程序,否则丢弃此数据包。当网卡处于混杂模式的时候,它不作任何判断直接把接收到的所有帧交给上层处理程序。网络监听技术就是基于这个原理,来捕获网络中所有的数据包,实现网络监测和流量分析的。交换式以太网是基于数据链路层的点到点的信道,所以简单采用应用于共享式以太网的监听技术是完全失效的。本文主要讨论共享式以太网的情况,最后给出交换式以太网监听难题的解决方案。1.2.2 监听技术相关的实现方法原始套接字编程模式2:Raw Socket: 原始套接字可以

11、用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP.1.创建了一个 Raw Socket int sockRaw=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);2.把网卡置于混杂模式用 Raw Socket 实现代码如下:setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag); 设置 IP 头操作选项。flag 标志是用来设置 IP 头操作的, bool flag = ture 也就是说要亲自处理 IP 头。bind(sockRaw,(PSOCKADDR)&add

12、rLocal,sizeof(addrLocal); 把 sockRaw 绑定到本地网卡上,addrLocal 为本地地址: SOCKADDR_IN addrLocal。ioctlsocket(sockRaw, SIO_RCVALL, &dwValue); 让 sockRaw 接受所有的数据。dwValue 为输入输出参数, 为 1 时执行, 0 时取消: DWORD dwValue = 1;3.捕获数据包recv(sockRaw, RecvBuf, BUFFER_SIZE, 0);/接受任意数据包原始套接字编程模式:优点: 实现简单, 不需要做驱动程序就可实现抓包.缺点: 数据XX不含帧信息,

13、 不能接收到与 IP 同层的其它数据包, 如 ARP, RARP,IPXIMD中间层驱动编程模式3:中间层驱动(NDIS intermediate driver)1内核级网络驱动介绍:Microsoft Windows 2000支持三种基本的内核级网络驱动,这三层driver顺序从下到上依次为:a)Miniport NIC drivers:微端口网卡驱动,位于最底层,直接操纵网卡并且对高层驱动提供接口。b)Intermediate drivers:IMD中间层驱动位于1和3之间。c)Protocol drivers:高层协议驱动,俗称为TDI(传输驱动程序接口),高于前面两层,直接面向用户级,

14、为用户提供网络服务,也就是绝大多数程序所用到的网络接口。2IMD驱动 IMD中间层,它的实质很简单,即:中间层插入网卡和协议层之间,对上面的协议层表现为一个虚拟的微端口网卡结构,而对下面的网卡则表现为一个协议层的结构。所以,无论是网卡接收并上传的数据报,还是上层要下送至网卡发送的数据报,无一例外地要经过中间层。3IMD包过滤技术前面我们已经看到,所有的数据报都要经过中间层,所以,我们可以在中间层加入我们想要过滤的数据报的特征,实现基于中间层驱动的内核级包过滤。优势:首先,在驱动级别上做过滤,无须组包,速度快,效率自然就高;其次,所有的数据报无一例外,只要网卡上传的数据报均可以截获,避免了用户级

15、无法得到所有数据报的缺点。缺点:IMD包过滤技术也存在其不可避免的缺点,与操作系统版本关系密切,与硬件联系大,可移植性低,调试困难。Winpcap编程模式Winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发Winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:1.获原始数据报,包括在共享式网络上各主机发送/接收的以及相互之间交换的数据报;2.在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;3.在网络上发送原始的数据报;4.收集网络通信过程中的统计信息。不足:Win

16、pcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,Winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。目前,Winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用Winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且M$也已经放弃了对win9x的开发。其实Winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。1.

17、3系统需求能够捕获所需要的所有以太网数据包分析捕获的包类型,报文信息数据形式显示当前以太网中数据包的分布情况图表形式显示当前以太网中数据包的分布情况能表现网络中各个节点的相互通讯情况可以保存数据到文件在数据包中查找敏感信息(匹配关键字)具备简单的网络管理功能实现简单的分布式监听第2章基于Winpcap开发的技术详解讨论了各种不同的编程模式之后,本章将阐明我们选择Winpcap技术的原因,然后将对Winpcap做详细的分析。2.1选用Winpcap技术的原因:提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具原始套接字的

18、编程模式中不能捕获ARP和IPX的数据包对SNIFFER软件有着致命的限制,所以不能选择这种方法。IMD编程模式虽然功能强大,而且灵活性强,但是开发调试难度比较大,不适合作为SNIFFER软件的开发模式,甚至在防火墙开发技术中也不用IMD。WINPCAP本身不能阻塞,过滤或控制其他应用程序数据报的发收的缺点在我们这个软件的开发过程中,并不影响。所以经过权衡,我选用了Winpcap编程模式来开发MySniffer软件。2.2Winpcap的结构分析Winpcap的主要思想来源于Unix系统中著名的BSD包捕获结构,它的基本结构如图2.1所示:整个包捕获框架的基础是NDIS(网络驱动器接口规X),

19、它是Windows中最低端的与联网有关的软件,主要是为各种应用协议与网卡之间提供的一套接口函数。Winpcap由三个模块组成,一个是工作在内核级别上的NPF包过滤器;另外两个是用户级的动态连接库packet.dll和wpcap.dll4。wpcap.dll是packet.dll的上一层封装,提供了编程的高级接口。为了能更好的了解Winpcap的工作原理,我选用了packet.dll作为程序对底层访问的接口。因为基于Winpcap开发涉及到驱动程序开发技术,dll动态连接库开发技术,和vc的MFC应用程序开发技术,所以将对它们做一些介绍。 图2.1 Winpcap及NPF的结构图52.3NDIS

20、驱动开发技术网络驱动程序使用ISO的开放的系统互连网罗标准(OSI),这是一个七层的模型,它的顶层是应用软件层,底层是硬件连接和网络的拓扑结构,网络接口卡(NIC)给大多数的平台提供网络的硬件接口,网络驱动程序是写给指定的NIC的驱动程序。网络驱动程序接口规X(NDIS)给NIC驱动程序提供库支持,通常只允许NIC厂商提供管理硬件特殊细节的MINI驱动程序,更高层的NDIS(中间驱动程序,协议驱动程序)在需要的时候提供媒体转换,过滤。分层的NDIS如图2所示。WIN2000提供一个分层的内核模式软件传输驱动接口(TDI),这个分层的在NDIS层和高层软件抽象像插座和NetBIOS,TDI层使W

21、IN2000的高层结构具有更多的可移植性。图2.网络驱动程序接口规X2.4DLL动态连接库技术DLL (Dynamic Linkable Library) 文件通常是一个具有独立功能的程序模块,可以进行单独编译和测试。在运行时,只有当 EXE 程序确实要调用这些 DLL 模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了 EXE文件的大小和对内存空间的需求,而且使这些 DLL 模块可以同时被多个应用程序使用,只是增加DLL的计数。当应用程序卸载DLL时,计数则减少,计数为0时DLL就从内存被释放。PACKET.DLL就是为上层应用程序开发的,提供操作网卡的模块;而且它屏蔽应用程序

22、直接操作底层协议驱动程序的复杂性。所以应用程序可以使用PACKET.DLL所提供地接口函数,安全简单的操作协议驱动程序,使应用程序更加健壮。第3章系统功能描述这个网络监听工具虽然不是很庞大,但是有几个功能比较明确,也就是监听功能,显示功能,管理功能,连接功能,所以我把它们划分为四个子系统,来实现。3.1 监听子系统监听子系统再划分为三个功能,捕获功能,过滤功能,保存功能;三个功能描述如下:捕获功能根据过滤器的设置,捕获ip,arp,ipx,tcp,udp,ospf,icmp,spx,ipx-rip等数据包,并把数据包保存在应用程序的缓冲区内。过滤功能用户自己定义过滤信息(特定协议进行捕获),也

23、就说用户可能只需要了解网络中某种类型的数据包的信息,而不需要捕获太多无用的数据,一方面系统负担比较大,另一方面干扰信息过多不利于用户发现网络中存在的问题。保存功能在捕获的过程中,每十秒钟,把统计信息写入文件中,等待图表显示功能模块提取信息。保存功能还根据管理功能的需要,保存数据。如果管理功能被启动,系统将满足管理要求的主机IP地址,记录在IP数据集合中。等待管理子系统从中提取IP地址,实现管理功能。3.2 显示子系统显示子系统可再划分为五个功能,总量显示功能,分量显示功能,通讯显示功能,列表显示功能,树形显示功能。这些功能的详细描述如下:总量显示功能在抓包过程中显示捕获数据包的总量,也就是从开

24、始监听一直到结束,捕获的说有数据包的数量。分量显示功能在抓包过程中显示各种数据包的分量,以及它们在总量中比例(百分比显示)各种数据包的百分比是指,某种类型的数据包除以捕获的数据包的总量。通讯显示功能用直观的方法表示当前各个节点的通讯对象,如果双方存在TCP,UDP,ICMP数据包的往来我们就认为他们之间存在着通讯,然后我们记录他们的信息,并显示在屏幕上。列表显示功能在抓包终止后,显示捕获的数据包的信息。包括:包的次序,包的源和目的地址(ip数据包显示ip地址,arp数据包显示mac地址,ipx数据包显示ipx的地址形式)包的长度,包的简要说明树形显示功能可以指定一个数据包,并显示它的详细内容,

25、XX信息,首先判断是网络层中的哪种类型数据包,其次判断是传输层中的哪种类型的数据包,最后判断是哪种应用层的服务。才判断的过程中不断记录各个XX的信息,并以树状结构加以表现。3.3 管理子系统简单网络管理功能:主要指可选择监听某个端口,根据一些信息截断节点与外界的联系。设计这个功能的目的是,最近这段时间利用WINDOWS 远程管理或是远程调用功能的漏洞,出现很多攻击。它们通常利用135,139或445端口存在的缓冲区溢出的漏洞,使病毒入侵主机,然后利用相同的方法再从被感染的主机向其他网络中的主机发起攻击。所以如果我们在觉察到某台机器中毒并不断攻击其他主机时,我们可以把他们发出的数据包定位到错误的

26、网关地址,这样就把威胁限制在一个网段内了,还可以造成IP冲突让部分被感染主机无法和网络连接。3.4连接子系统实现分布式监听,这是指我们在各个网段安排不同的MySniffer,然后把各个网段的信息汇总到一台服务器中。服务器可以对数据加以显示,帮助管理人员觉察到网络的异常情况。第4章系统实现4.1 协议驱动程序NPF的设计参考Windows系统的DDK(Driver Development Kit)中的网络驱动程序(Network Driver)开发文档,针对不同类型的网罗驱动程序,NDIS定义的一些必须向系统进行登记和实现的接口,作为系统操作和管理某一个网卡的入口。开发驱动程序主要的工作便是对这

27、些接口进行实现。系统采用协议驱动程序(也叫中间驱动程序)来进行网络数据包的读取,下面就是协议驱动程序需要实现和登记的主要几个接口。具体实现包括:NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath) 6:DriverEntry 是系统调用设备驱动程序的入口函数,当协议驱动程序被加载到内存开始运行时它被调用。它初始化驱动程序,注册所有的驱动程序的回调函数,创建虚拟设备,在NDIS结构中定义协议驱动程序。参数:DriverObject 系统创建的一个协议驱动程序对象 RegisterP

28、ath 注册表中与协议驱动有关的注册项的路径返回值:包括一组网卡的串。NdisRegisterProtocol:在驱动程序初始化的时候,调用该函数向系统进行登记,将自己注册成一个协议驱动程序。NdisOpenAdapter:在驱动程序初始化的时候,调用该函数绑定(BIND)和打开(OPEN)一个或多个网络适配器(Adapter)。在高层应用程序,发出要求绑定协议驱动程序或者要求接收和发送数据包的请求时,协议驱动程序调用以下函数:NPF_BindAdapterHandler:NDIS通过这个函数请求协议驱动程序绑定到一个底层的NIC(网卡)或者虚拟的NICNPF_UnbindAdapterHan

29、dler:NDIS通过这个函数关闭协议驱动程序到NIC或者虚拟NIC的连接。NPF_OpenAdapterpleteHandler:当协议驱动程序调用NdisOpenAdapter函数的返回是NDIS_STATUS_PENDING时,这个函数来指定(Binding)操作完成。NPF_CloseAdapterpleteHandler:当协议驱动程序调用NPF_NdisCloseAdapter函数返回是NDIS_STATUS_PENDING时,这个函数来指定(Unbinding)操作完成。NPF_ReceiveHandler:当一个数据包到达时,便调用这个接口进行处理。NPF_Receiveple

30、teHandler:指示进行接收的数据是否已经接收完成。NPF_TransferpleteHandler:当协议驱动程序调用NdisTransferData函数的返回值是NDIS_STATUS_PENDING,系统调用这个函数指示传送的数据时候已经发送完成。NPF_SendpleteHandler:当协议驱动程序调用NdisSend 函数的返回值为NDIS_STATUS_PENDING,系统调用这个函数指示进行发送的数据时候已经发送。NPF_Read:为用户提供读操作。NPF_Write:为用户提供写操作。NPF_IoControl:处理IOCTL操作。以上所罗列的是协议驱动程序中用到或是实现

31、的主要的几个函数。4.2 动态连接库程序PACKET.DLL的设计首先声明一些相关的数据结构: 1. typedef struct _ADAPTER ADAPTER6 /描述一个网络适配器;2. typedef struct _PACKET PACKET /描述一组网络数据报的结构;3. typedef struct NetType NetType /描述网络类型的数据结构;4. typedef struct npf_if_addr npf_if_addr /描述一个网络适配器的ip地址;5. struct bpf_hdr /数据报头部;5. struct bpf_stat /当前捕获数据报的

32、统计信息。下面,将介应用程序用到的各个函数,他们都是在packet.dll中定义的:1 LPPACKET PacketAllocatePacket(void)当需要给程序接收数据包的时候,需要先分配一个接收缓冲区,而接受缓冲区又需要一个描述它的结构体。所以在分配缓冲区的时候,调用这个函数分配这个结构体的空间。如果运行成功,返回一个_PACKET结构的指针,否则返回NULL。成功返回的结果将会传送到PacketReceivePacket()函数,接收来自驱动的网络数据报。2 VOID PacketCloseAdapter(LPADAPTER lpAdapter) 当应用程序需要关闭监听功能的时候,需要调用这个函数。

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

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