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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(简单的sniffer的设计与实现文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简单的sniffer的设计与实现文档格式.docx

1、网络信息安全成为亟待解决的涉及国家全局和长远利益的关键问题之一。信息安全不但是我国发展信息技术的有力保证,而且是对抗霸权主义、抵御信息侵略的重要保障。网络信息安全问题如果解决不好,将威胁到我国政治、军事、经济、文化等各方面的安全,还将使国家处于信息战和金融风险的威胁之中。近年来,信息系统受到电脑病毒及黑客肆意滋扰破坏的情况越见严重。在计算机互连网市场不断扩张的同时,信息系统安全及互联网保安对所有计算机用户来看亦变得极为重要。网络探测技术是网络安全技术的重要组成部分,于是网络探测系统的研究也变得日益重要。在网络探测系统中,对网络上传送的数据包进行有效的监听即捕获包是目前网络探测的关键技术,只有进

2、行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。从事网络安全的技术人员和相当一部分准黑客(指那些使用现成的黑客软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(Sniff)感到陌生,网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。可见,网络嗅探器实际是一把双刃剑。虽然网络嗅探技术被黑客利用后会对网络安全构成一定的威胁,但嗅探器本身的危害

3、并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。而在网络安全方面,网络嗅探器可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。权衡利弊,有必要对网络嗅探器的实现原理进行介绍。一一 网络嗅探技术概述网络嗅探技术概述 1.1 嗅探技术嗅探技术 嗅探技术是网络安全攻防技术中很重要的一种。很多网络安全系统首要的任务就是捕获网络上的数据信息,而嗅探技术就解决了这个问题。嗅探技术是从网络上捕获所有的或者特定的网络数据包信息,供其他网络安全系统所用。他的功能非常简单,就是捕获网络上的数据包信息。对黑客来说,通过嗅探技术能以非常隐蔽的

4、方式攫取网络中的大量敏感信息,与主动扫描相比,嗅探行为更难被察觉,也更容易操作。对安全管理人员来说,借助嗅探技术,可以对网络活动进行实时监控,并进行发现各种网络攻击行为。1.1.1 嗅探原理嗅探原理 嗅探器的英文名称是 Sniff,可以理解为一个安装在计算机上的窃听设备他可以用来窃听计算机在网络上所产生的众多信息。其最初是作为网络管理员检测网络通信的一种工具,它既可以是软件,又可以是一个硬件设备。软件 Sniff应用方便,针对不同的操作系统平台都有多种不同的软件 Sniff,而且很多都是免费的;硬件 Sniff通常被称作协议分析器,其价格一般都很高昂。在局域网中,由于以太网的共享式特性决定了嗅

5、探能够成功。因为以太网是基于广播方式传送数据的,所有的物理信号都会被传送到每一个主机节点,此外网卡可以被设置成混杂接收模式(Promiscuous),这种模式下,无论监听到的数据帧目的地址如何,网卡都能予以接收。而 TCP/IP 协议栈中的应用协议大多数明文在网络上传输,这些明文数据中,往往包含一些敏感信息(如密码,账号等),因此使用 Sniff可以悄无声息地监听到所有局域网内的数据通信,得到这些敏感信息。同时 Sniff的隐蔽性好,它只是“被动”接收数据,而不向外发送数据,所以在传输数据的过程中,根本无法觉察到有人监听。当然,Sniff的局限性是只能在局域网的冲突域中进行,或者是在点到点连接

6、的中间节点上进行监听。在交换网络中,虽然避免了利用网卡混杂模式进行的嗅探。但交换机并不会解决所有的问题,在一个完全由交换机连接的局域网内,同样可以进行网络嗅探。主要有以下三种可行的办法:MAC洪水(MAC Flooding),MAC 复制(MAC Duplicating),ARP 欺骗,其中最常用的是 ARP欺骗。1.1.2 嗅探造成的危害嗅探造成的危害 Sniff是作用在网络基础结构的底层。通常情况下,用户并不直接和该层打交道,有些甚至不知道有这一层存在。所以,应该说 Sniff的危害是相当之大的,通常,使用Sniff是在网络中进行欺骗的开始。它可能造成的危害有:1)捕获口令 Sniff可以

7、记录到明文传送的 userid和 passwd,即使网络传送过程中使用了加密的数据,Sniff记录的数据一样有可能使入侵者想办法算出你的算法。一般 Sniff只嗅探每个报文的前 200到 300 个字节,而用户名和口令都包含在这一部分中。2)能够捕获专用的或者机密的信息 比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,然而 Sniff可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期,帐号和 pin。比如偷窥机密或敏感的信息数据,通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的 email 会话过程。3)可以用来危害网络邻居的安全,或者用

8、来获取更高级别的访问权限 一旦入侵者得到用户名和口令,必然可以通过信任关系危害网络邻居的安全,既而获取更高级别的访问权限。窥探低级的协议信息。通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址,远程网络接口 IP 地址,IP 路由信息和 TCP 连接的字节顺序号码等。这些信息由入侵者掌握后将对网络安全构成极大的危害,例如通常的 IP 地址欺骗就是要求准确插入 TCP 连接的字节顺序号。当然,简单的放置一个嗅探器并将其随便放置将不会起到什么作用。如果将嗅探器放置于被攻击机器,网关或网络附近,可以捕获到很多口令。如果将 Sniff运行在路由器,或有路由器功能的主机上,可以对大量的数据进行

9、监控。Sniff属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用 Sniff这种攻击手段,以便得到更多的信息,并捕获网络和其他网络进行身份鉴别的过程。1.2 捕获机制捕获机制 很多网络安全系统最首要的任务就是捕获网络上的数据信息,而网路数据包捕获技术就解决了这个问题。网络数据包捕获技术是从网络上捕获所有的或特定的网络数据包信息,供其他网络安全系统使用。它的功能非常简单,就是不会网络上的数据包信息。不同的网络有不同的捕获技术,不同的操作系统器捕获的机理也稍有不同,所以在选择捕获技术技术的时候要慎重考虑。而以太网采用了 CSMA/CD技术,它使用了广播机制,所有与网络连接的机器都可以看到

10、网络上传播的数据。在以太网环境下捕获数据包时非常容易的。操作系统提供的捕获机制主要有以下三种:1)SOCK_PACKET 类型套接口 Linux 中套接字类型中有一种套接字类型 SOCK_PACKET。SOCK_PACKET 类型的 socket 可以接收网络上所有的数据包。它的实现由操作系统提供的编程接口来进行。2)数据链路提供着接口(DLPI)数据链路提供者接口(DLPI,Data Link Provider Interface)定义了数据链路层向网络层提供的服务,是数据链路服务的提供者和使用者间的一种标准接口,在实现上基于UNIX的流(Stream)机制。数据链路服务的使用者既可以是用户

11、的应用程序,也可以是访问数据链路服务的高层协议,如 TCP/IP 等。3)伯克利数据包过滤器(BPF)伯克利数据包过滤器(BPF,Berkeley Packet Filter)是一种高效的数据包捕获机制。他工作在操作系统的内核层。BFP 主要由两部分组成:网络转发部分和数据包过滤部分。网络转发部分是从链路层中捕获数据包并把它们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接受过滤规则决定的网络数据包,其他数据包就抛弃。1.3 网络协议分析技术网络协议分析技术 由于网络的核心是网络协议,所以网络协议分析技术在网络安全领域也是一项重要的技术。网络协议分析是指对网络上的数据进行相应的协议分

12、析。网络上的协议是多种多样的,所以产生的数据也是不同的,但是一个网络数据归根结底是基于协议产生的,也就是说任意一个网络数据都使用了一定的协议。究竟是什么协议呢?那就要对数据包进行协议分析,得到数据包的整个协议内容。现在流行的协议是 TCP/IP 协议栈。它里面最核心的协议有以太网协议、ARP/RARP 协议、IP 协议、UDP 协议、TCP 协议、ICMP 协议等。当然还有很多应用层协议,如 HTTP 协议、FTP 协议、Telenet 协议、DNS 协议、POP3 协议等。新的协议层出不穷,各式各样的网络系统使各种各样的协议,然后他们之间才能够通信。协议是公开的,不然就不可能进行通信,使用对

13、协议的分析是可行的。1.3.1 开放系统互连开放系统互连(OSI)模型模型 开放系统互连(OSI)模型将网络划分为七层模型,分别用以在各层上实现不同的功能,这七层分别为:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。而 TCP/IP 体系也同样遵循这七层标准,只不过在某些 OSI功能上进行了压缩,将表示层及会话层合并入应用层中,所以实际上我们打交道的 TCP/IP 仅仅有 5层而已,网络上的分层结构决定了在各层上的协议分布及功能实现,从而决定了各层上网络设备的使用。实际上很多成功的系统都是基于 OSI模型的,如:如帧中继、ATM、ISDN等。TCP/IP 的网络体系结构(部分)-

14、|SMTP|DNS|HTTP|FTP|TELNET|应用层 -|TCP|UDP|传输层 -|IP|ICMP|ARP|RARP|网络层 -|IEEE 802 以太网 SLIP/PPP PDN etc|数据链路层 -|网卡 电缆 双绞线 etc|物理层 1.3.2 协议分析协议分析 协议分析的过程主要包括三个部分内容:捕获数据包、过滤数据包和具体协议分析。1)捕获数据包:对网络数据包的协议分析,第一步就是要捕获网络上的数据包。可以使用专业的捕获数据包的开发包,比如比较著名的开发包 Libpcap 和 Winpcap,在本文后面章节将对它们进行详细的讨论。当然,也可以不使用专业的捕获数据包的开发包,

15、而利用操作系统提供的功能来实现,但是那样是比较繁琐的,容易出错。在不同的操作系统下面,捕获数据包的实现不尽相同。2)过滤数据包:由于网络上的数据信息量是庞大的,不可能对每个数据进行协议分析,并且在实际应用中有时只想分析某种具体的协议,其他协议都不用考虑。这样,就需要对捕获的到的数据包进行过滤。过滤的方式有两种,一种实在内核层就过滤掉,另一种是在应用层过滤。显然,第一种的效率要高一些,因为从内核层到应用层之间的转换是费时费力的,这样对性能有很大的影响。使用开发包 Winpcap,它里面提供了 NPF过滤机制,它是在内核层实现过滤的,效率很高,而且 NPF过滤机制进行了优化处理,效果明显改善。使用

16、,是 Winpcap 不仅实现了数据包的捕获功能,也可以实现数据包过滤功能。3)具体协议分析:捕获到特定的网络数据包之后,就可以分析网络协议了。根据TCP/IP 协议层次的概念,对网路数据包的协议分析是从链路层开始的。首先分析数据包的链路层协议,如以太网协议等。其次根据链路层协议的分析结果分析网络层协议,判断网络层的协议是什么,如 IP 协议等。然后再根据网络层协议分析的结果分析传输层协议,如 TCP 协议、UDP 协议等。最后根据传输层协议分析应用层协议,如HTTP 协议、FTP 协议等。这样,一层一层地分析下去,就可以把整个数据包的协议都分析出来。1.3.3 常见协议常见协议 表 1-1

17、以太网的封装格式 目的地址 源地址 类型 数据 CRC 6 6 2 461500 4 0800 IP 数据报 2 461500 0806 ARP 请求/应答 PAD 2 28 18 8035 RARP 请求/应答 PAD 2 28 18 1)IP 协议 IP 协议(Internet Protocol)即互联网协议,它被用于异构网络的互联,是各种各样种类繁多的网络的粘合剂,工作在网络体系结构的网络层,为传输层提供独立于网路的分组路由服务。每一台连在网络上的主机都会分配到一个 IP 地址,用以在网络上标识这台主机。表 1-2 IP 数据报格式及首部中的各个字段 4 位版本 4位首部长度 8位服务类

18、型(TOS)16位总长度(字节数)16 位标识 3位标志 13位片偏移 8 位生存时间(TTL)8位协议 16位首部校验和 32 位源 IP 地址 32 位目的 IP 地址 选项(如果有)数据 2)TCP 协议 TCP 协议(Transfer Control Protocol)即传输控制协议,它为网络应用程序提供面向连接的可靠的传输服务,工作在网络体系结构中的传输层。TCP 在数据传输之前首先要利用三步握手协议建立连接,并且提供了分组编号,数据校验和重传机制,确保数据传输的正确无误。表 1-3 TCP 数据在 IP 数据报中的封装 IP 首部 TCP 首部 TCP 数据 表 1-4 TCP 包

19、首部 16 位源端口号 16位目的端口号 32 位序号 32 位确认号 4位首部长度 保留(6位)URG ACK PSH RST SYN FIN 16位窗口大小 16 位校验和 16位紧急指针 选项 数据 3)UDP 协议 UDP 协议(User Datagram Protocol)即用户数据报协议,它为网络应用程序提供无连接的数据传输服务,和 TCP 协议一样,也工作在网络体系结构的传输层。UDP 在数据传输之前不需要建立连接,数据准备好就直接发送出去,不能保证分组准确到达目的地。然而由于没有三步握手和数据重传操作,传输比较方便。表 1-5 UDP 首部 16 位源端口号 16位目的端口号

20、16 位 UDP 长度 16位 UDP 校验和 数据(如果有)4)ICMP 协议 ICMP 协议(Internet Control Management Protocol)即互联网控制报文协议。是 IP 协议的附属协议,主要负责在主机之间,主机与路由器之间传递差错信息或者其它需要需要注意的信息。表 1-6 ICMP 报文 8 位类型 8位代码 16位校验和(不同类型和代码有不同的内容)1.4 网络数据包捕获的原理网络数据包捕获的原理 以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播

21、信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,

22、判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给 LLC 子层。网卡具有如下的几种工作模式:1)广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。3)直接模式(Direct M

23、odel):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。1.5 网络数据包生成技术网络数据包生成技术 数据包生成技术是指人工构造网络数据包,然后把此网络数据包发送到网络上,让他们像正常的网络数据信息一样传输的技术。网络数据包捕获技术实现的是被动地从网络上捕获数据包,

24、而数据包生成技术是主动地构造网络数据包,并把它们放到网络上。网络数据包构造技术的功能包括构造各种各样的网络协议数据包,如 TCP/IP 协议栈中的各种协议,然后把构造的数据包发送到网络上。由于网络协议是多种多样的,所以都在的网络数据包也应该是多种多样的。利用网络数据包生产技术,可以构造各种各样的网络安全系统,如网络安全扫描系统、网络安全测试系统。二二 Windows 环境的网络编程环境的网络编程 2.1 windows Sockets 介绍介绍 2.1.1 Winsock 的起源的起源 Winsock是微软公司 以 Berkeley Socket 规范为范例,定义的 Windows Socke

25、tes 规范。这是 Windows 操作系统环境下的套接字网络应用程序编程接口(API)。利用这套 API,在 Windows 环境下,网络应用程序开发者可以轻松地与 Internet 协议族相连接,显现网络中进程之间的通信。2.1.2 Winsock 2.0 的介绍的介绍 WinSock 2.0 在源代码与二进制代码发面与 Winsock 1.0 兼容,这就实现了Winsock应用程序与任何版本的 Winsock实现之间的最大互操作性,提供了很大的方便。Winsock 2.0 增强爱你过了很多功能。a.支持多种协议 Winsock 2.0规范中增加了 Winsock DLL与底层协议之间的标

26、准服务提供接 Winsock DLL能够同时访问不同软件开发商的多个底层协议栈。b.引入了重叠 I/O的概念 Winsock 2.0规范引入了重叠 I/O的概念,并且要求所有的传输协议提供者都支持这一功能。c.使用了时间对象异步通知 d.服务的质量(QoS)2.2 在在 Windows 下捕获数据包的结构下捕获数据包的结构 图 2-2 捕获数据包的结构图 Windows 下捕获数据包的结构如图 2-2,其中 NDIS 及其特点是:NDIS(Network Driver Interface Specification)是 Microsoft 和 3Com 公司联合制定的网络驱动规范,并提供了大量

27、的操作函数。它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别。NDIS 向上支持多种网络协议,比如 TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下支持不同厂家生产的多种网卡。NDIS 还支持多种工作模式,支持多处理器,提供一个完备的 NDIS 库(Library)。但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口 2.3 利用套接字进行网络数据包的捕获的设计步骤利用套接字进行网络数据包的捕获的设计步骤 1)网卡,并设为混杂模式。2)在得到执行命令后,从网路设备驱动程序处收集数据包。3)将接受的数据包提交给缓冲区。4)对缓冲区的数据

28、包进行相应的分析,然后输出相关信息。5)关闭网卡。三三.网络嗅探程序的设计网络嗅探程序的设计 3.1 程序框架程序框架 3.1 程序框架程序框架 网络探测程序主要要实现三个功能:捕获数据包,即获取以太网上的数据包;分析数据包,即对数据包进行协议分析;截获密码,即监听流经本地网卡的数据包。考虑到这些功能之间的相关性,捕获的数据包可用于协议分析,密码又要从捕获到的数据包中分析才能得出来,且集成到一起也方便使用,我将三者做到了一个程序中。为了使程序有更好的操作性和用户体验,程序使用 Visual C+6.0 进行开发。程序主界面采用 了控制台显示。用于显示数据包的主要信息,包括数据包索引号、捕获到数

29、据包的时间、数据包的长度、以太网的源/目的 MAC 地址、源/目的 IP 地址以及端口号。3.2 系统软件结构系统软件结构 探测系统 捕获数据 分析数据 内容截获 图 3-1 网络探测系统功能 在系统流程图中,绘制了网络监听的概要流程图。但没有包含其下的各子功能的具体实现流程,这些细节将会在详细设计中予以描述,并绘出进一步的流程。系统流程图基于各子模块要实现的功能,并且将这些模块再进一步细化,即采用了“自顶向下,逐步求精”的软件设计思路。3.3 详细设计详细设计 在详细设计中,将会细致地讨论系统的实现细节、编程中遇到的问题及解决方法,以及多种解决方案中选择某种方案的理由。此外,本部分中还将进一

30、步论述第一部分所涉及到的理论和技术。3.3.1 设计思路设计思路 1 首先获取网络设备,然后打开设备,并设置网卡处于混杂模式,启动捕获线程,不断地接收数据包和分析数据包。2 通过在对话栏的组合框中输入过滤串来确定监听某种协议(TCP,UDP,ICMP)的数据包。默认情况下是不进行过滤的;监听的结果显示包括以下各项,接收时间、数据包长度、协议、源 IP/端口、目标IP/端口。3.3.2 套接字套接字 数据结构数据结构 在此程序将用到的数据结构,并进行简单的介绍。Sockaddr_in Sockaddr_in 数据结构的定义如下:typedef struct sockaddr_in SOCKADDR_IN;struct sockaddr_in short sin_family;/地址家族 u_short sin_port;/struct in_addr sin_addr;char sin_zero8;WSAData typedef struct WSAData WORD wVer

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

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