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

上传人:b****6 文档编号:20209749 上传时间:2023-01-19 格式:DOCX 页数:20 大小:79.27KB
下载 相关 举报
简单的sniffer的设计与实现文档格式.docx_第1页
第1页 / 共20页
简单的sniffer的设计与实现文档格式.docx_第2页
第2页 / 共20页
简单的sniffer的设计与实现文档格式.docx_第3页
第3页 / 共20页
简单的sniffer的设计与实现文档格式.docx_第4页
第4页 / 共20页
简单的sniffer的设计与实现文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

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

《简单的sniffer的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《简单的sniffer的设计与实现文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

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

网络信息安全成为亟待解决的涉及国家全局和长远利益的关键问题之一。

信息安全不但是我国发展信息技术的有力保证,而且是对抗霸权主义、抵御信息侵略的重要保障。

网络信息安全问题如果解决不好,将威胁到我国政治、军事、经济、文化等各方面的安全,还将使国家处于信息战和金融风险的威胁之中。

近年来,信息系统受到电脑病毒及黑客肆意滋扰破坏的情况越见严重。

在计算机互连网市场不断扩张的同时,信息系统安全及互联网保安对所有计算机用户来看亦变得极为重要。

网络探测技术是网络安全技术的重要组成部分,于是网络探测系统的研究也变得日益重要。

在网络探测系统中,对网络上传送的数据包进行有效的监听即捕获包是目前网络探测的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。

从事网络安全的技术人员和相当一部分准黑客(指那些使用现成的黑客软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(Sniff)感到陌生,网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。

通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。

此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。

可见,网络嗅探器实际是一把双刃剑。

虽然网络嗅探技术被黑客利用后会对网络安全构成一定的威胁,但嗅探器本身的危害并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。

而在网络安全方面,网络嗅探器可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。

权衡利弊,有必要对网络嗅探器的实现原理进行介绍。

一一网络嗅探技术概述网络嗅探技术概述1.1嗅探技术嗅探技术嗅探技术是网络安全攻防技术中很重要的一种。

很多网络安全系统首要的任务就是捕获网络上的数据信息,而嗅探技术就解决了这个问题。

嗅探技术是从网络上捕获所有的或者特定的网络数据包信息,供其他网络安全系统所用。

他的功能非常简单,就是捕获网络上的数据包信息。

对黑客来说,通过嗅探技术能以非常隐蔽的方式攫取网络中的大量敏感信息,与主动扫描相比,嗅探行为更难被察觉,也更容易操作。

对安全管理人员来说,借助嗅探技术,可以对网络活动进行实时监控,并进行发现各种网络攻击行为。

1.1.1嗅探原理嗅探原理嗅探器的英文名称是Sniff,可以理解为一个安装在计算机上的窃听设备他可以用来窃听计算机在网络上所产生的众多信息。

其最初是作为网络管理员检测网络通信的一种工具,它既可以是软件,又可以是一个硬件设备。

软件Sniff应用方便,针对不同的操作系统平台都有多种不同的软件Sniff,而且很多都是免费的;

硬件Sniff通常被称作协议分析器,其价格一般都很高昂。

在局域网中,由于以太网的共享式特性决定了嗅探能够成功。

因为以太网是基于广播方式传送数据的,所有的物理信号都会被传送到每一个主机节点,此外网卡可以被设置成混杂接收模式(Promiscuous),这种模式下,无论监听到的数据帧目的地址如何,网卡都能予以接收。

而TCP/IP协议栈中的应用协议大多数明文在网络上传输,这些明文数据中,往往包含一些敏感信息(如密码,账号等),因此使用Sniff可以悄无声息地监听到所有局域网内的数据通信,得到这些敏感信息。

同时Sniff的隐蔽性好,它只是“被动”接收数据,而不向外发送数据,所以在传输数据的过程中,根本无法觉察到有人监听。

当然,Sniff的局限性是只能在局域网的冲突域中进行,或者是在点到点连接的中间节点上进行监听。

在交换网络中,虽然避免了利用网卡混杂模式进行的嗅探。

但交换机并不会解决所有的问题,在一个完全由交换机连接的局域网内,同样可以进行网络嗅探。

主要有以下三种可行的办法:

MAC洪水(MACFlooding),MAC复制(MACDuplicating),ARP欺骗,其中最常用的是ARP欺骗。

1.1.2嗅探造成的危害嗅探造成的危害Sniff是作用在网络基础结构的底层。

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

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

它可能造成的危害有:

1)捕获口令Sniff可以记录到明文传送的userid和passwd,即使网络传送过程中使用了加密的数据,Sniff记录的数据一样有可能使入侵者想办法算出你的算法。

一般Sniff只嗅探每个报文的前200到300个字节,而用户名和口令都包含在这一部分中。

2)能够捕获专用的或者机密的信息比如金融帐号,许多用户很放心在网上使用自己的信用卡或现金帐号,然而Sniff可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期,帐号和pin。

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

3)可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限一旦入侵者得到用户名和口令,必然可以通过信任关系危害网络邻居的安全,既而获取更高级别的访问权限。

窥探低级的协议信息。

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

这些信息由入侵者掌握后将对网络安全构成极大的危害,例如通常的IP地址欺骗就是要求准确插入TCP连接的字节顺序号。

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

如果将嗅探器放置于被攻击机器,网关或网络附近,可以捕获到很多口令。

如果将Sniff运行在路由器,或有路由器功能的主机上,可以对大量的数据进行监控。

Sniff属第二层次的攻击。

通常是攻击者已经进入了目标系统,然后使用Sniff这种攻击手段,以便得到更多的信息,并捕获网络和其他网络进行身份鉴别的过程。

1.2捕获机制捕获机制很多网络安全系统最首要的任务就是捕获网络上的数据信息,而网路数据包捕获技术就解决了这个问题。

网络数据包捕获技术是从网络上捕获所有的或特定的网络数据包信息,供其他网络安全系统使用。

它的功能非常简单,就是不会网络上的数据包信息。

不同的网络有不同的捕获技术,不同的操作系统器捕获的机理也稍有不同,所以在选择捕获技术技术的时候要慎重考虑。

而以太网采用了CSMA/CD技术,它使用了广播机制,所有与网络连接的机器都可以看到网络上传播的数据。

在以太网环境下捕获数据包时非常容易的。

操作系统提供的捕获机制主要有以下三种:

1)SOCK_PACKET类型套接口Linux中套接字类型中有一种套接字类型SOCK_PACKET。

SOCK_PACKET类型的socket可以接收网络上所有的数据包。

它的实现由操作系统提供的编程接口来进行。

2)数据链路提供着接口(DLPI)数据链路提供者接口(DLPI,DataLinkProviderInterface)定义了数据链路层向网络层提供的服务,是数据链路服务的提供者和使用者间的一种标准接口,在实现上基于UNIX的流(Stream)机制。

数据链路服务的使用者既可以是用户的应用程序,也可以是访问数据链路服务的高层协议,如TCP/IP等。

3)伯克利数据包过滤器(BPF)伯克利数据包过滤器(BPF,BerkeleyPacketFilter)是一种高效的数据包捕获机制。

他工作在操作系统的内核层。

BFP主要由两部分组成:

网络转发部分和数据包过滤部分。

网络转发部分是从链路层中捕获数据包并把它们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接受过滤规则决定的网络数据包,其他数据包就抛弃。

1.3网络协议分析技术网络协议分析技术由于网络的核心是网络协议,所以网络协议分析技术在网络安全领域也是一项重要的技术。

网络协议分析是指对网络上的数据进行相应的协议分析。

网络上的协议是多种多样的,所以产生的数据也是不同的,但是一个网络数据归根结底是基于协议产生的,也就是说任意一个网络数据都使用了一定的协议。

究竟是什么协议呢?

那就要对数据包进行协议分析,得到数据包的整个协议内容。

现在流行的协议是TCP/IP协议栈。

它里面最核心的协议有以太网协议、ARP/RARP协议、IP协议、UDP协议、TCP协议、ICMP协议等。

当然还有很多应用层协议,如HTTP协议、FTP协议、Telenet协议、DNS协议、POP3协议等。

新的协议层出不穷,各式各样的网络系统使各种各样的协议,然后他们之间才能够通信。

协议是公开的,不然就不可能进行通信,使用对协议的分析是可行的。

1.3.1开放系统互连开放系统互连(OSI)模型模型开放系统互连(OSI)模型将网络划分为七层模型,分别用以在各层上实现不同的功能,这七层分别为:

应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。

而TCP/IP体系也同样遵循这七层标准,只不过在某些OSI功能上进行了压缩,将表示层及会话层合并入应用层中,所以实际上我们打交道的TCP/IP仅仅有5层而已,网络上的分层结构决定了在各层上的协议分布及功能实现,从而决定了各层上网络设备的使用。

实际上很多成功的系统都是基于OSI模型的,如:

如帧中继、ATM、ISDN等。

TCP/IP的网络体系结构(部分)-|SMTP|DNS|HTTP|FTP|TELNET|应用层-|TCP|UDP|传输层-|IP|ICMP|ARP|RARP|网络层-|IEEE802以太网SLIP/PPPPDNetc|数据链路层-|网卡电缆双绞线etc|物理层1.3.2协议分析协议分析协议分析的过程主要包括三个部分内容:

捕获数据包、过滤数据包和具体协议分析。

1)捕获数据包:

对网络数据包的协议分析,第一步就是要捕获网络上的数据包。

可以使用专业的捕获数据包的开发包,比如比较著名的开发包Libpcap和Winpcap,在本文后面章节将对它们进行详细的讨论。

当然,也可以不使用专业的捕获数据包的开发包,而利用操作系统提供的功能来实现,但是那样是比较繁琐的,容易出错。

在不同的操作系统下面,捕获数据包的实现不尽相同。

2)过滤数据包:

由于网络上的数据信息量是庞大的,不可能对每个数据进行协议分析,并且在实际应用中有时只想分析某种具体的协议,其他协议都不用考虑。

这样,就需要对捕获的到的数据包进行过滤。

过滤的方式有两种,一种实在内核层就过滤掉,另一种是在应用层过滤。

显然,第一种的效率要高一些,因为从内核层到应用层之间的转换是费时费力的,这样对性能有很大的影响。

使用开发包Winpcap,它里面提供了NPF过滤机制,它是在内核层实现过滤的,效率很高,而且NPF过滤机制进行了优化处理,效果明显改善。

使用,是Winpcap不仅实现了数据包的捕获功能,也可以实现数据包过滤功能。

3)具体协议分析:

捕获到特定的网络数据包之后,就可以分析网络协议了。

根据TCP/IP协议层次的概念,对网路数据包的协议分析是从链路层开始的。

首先分析数据包的链路层协议,如以太网协议等。

其次根据链路层协议的分析结果分析网络层协议,判断网络层的协议是什么,如IP协议等。

然后再根据网络层协议分析的结果分析传输层协议,如TCP协议、UDP协议等。

最后根据传输层协议分析应用层协议,如HTTP协议、FTP协议等。

这样,一层一层地分析下去,就可以把整个数据包的协议都分析出来。

1.3.3常见协议常见协议表1-1以太网的封装格式目的地址源地址类型数据CRC66246150040800IP数据报24615000806ARP请求/应答PAD228188035RARP请求/应答PAD228181)IP协议IP协议(InternetProtocol)即互联网协议,它被用于异构网络的互联,是各种各样种类繁多的网络的粘合剂,工作在网络体系结构的网络层,为传输层提供独立于网路的分组路由服务。

每一台连在网络上的主机都会分配到一个IP地址,用以在网络上标识这台主机。

表1-2IP数据报格式及首部中的各个字段4位版本4位首部长度8位服务类型(TOS)16位总长度(字节数)16位标识3位标志13位片偏移8位生存时间(TTL)8位协议16位首部校验和32位源IP地址32位目的IP地址选项(如果有)数据2)TCP协议TCP协议(TransferControlProtocol)即传输控制协议,它为网络应用程序提供面向连接的可靠的传输服务,工作在网络体系结构中的传输层。

TCP在数据传输之前首先要利用三步握手协议建立连接,并且提供了分组编号,数据校验和重传机制,确保数据传输的正确无误。

表1-3TCP数据在IP数据报中的封装IP首部TCP首部TCP数据表1-4TCP包首部16位源端口号16位目的端口号32位序号32位确认号4位首部长度保留(6位)URGACKPSHRSTSYNFIN16位窗口大小16位校验和16位紧急指针选项数据3)UDP协议UDP协议(UserDatagramProtocol)即用户数据报协议,它为网络应用程序提供无连接的数据传输服务,和TCP协议一样,也工作在网络体系结构的传输层。

UDP在数据传输之前不需要建立连接,数据准备好就直接发送出去,不能保证分组准确到达目的地。

然而由于没有三步握手和数据重传操作,传输比较方便。

表1-5UDP首部16位源端口号16位目的端口号16位UDP长度16位UDP校验和数据(如果有)4)ICMP协议ICMP协议(InternetControlManagementProtocol)即互联网控制报文协议。

是IP协议的附属协议,主要负责在主机之间,主机与路由器之间传递差错信息或者其它需要需要注意的信息。

表1-6ICMP报文8位类型8位代码16位校验和(不同类型和代码有不同的内容)1.4网络数据包捕获的原理网络数据包捕获的原理以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。

IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。

运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。

以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的CSMA/CD协议进行信道的争用和共享。

每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。

网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。

如果是的话,接收该数据帧,进行物理数据帧的CRC校验,然后将数据帧提交给LLC子层。

网卡具有如下的几种工作模式:

1)广播模式(BroadCastModel):

它的物理地址(MAC)地址是0Xffffff的帧为广播帧,工作在广播模式的网卡接收广播帧。

2)多播传送(MultiCastModel):

多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。

但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。

3)直接模式(DirectModel):

工作在直接模式下的网卡只接收目地址是自己Mac地址的帧。

4)混杂模式(PromiscuousModel):

工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。

网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。

如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

1.5网络数据包生成技术网络数据包生成技术数据包生成技术是指人工构造网络数据包,然后把此网络数据包发送到网络上,让他们像正常的网络数据信息一样传输的技术。

网络数据包捕获技术实现的是被动地从网络上捕获数据包,而数据包生成技术是主动地构造网络数据包,并把它们放到网络上。

网络数据包构造技术的功能包括构造各种各样的网络协议数据包,如TCP/IP协议栈中的各种协议,然后把构造的数据包发送到网络上。

由于网络协议是多种多样的,所以都在的网络数据包也应该是多种多样的。

利用网络数据包生产技术,可以构造各种各样的网络安全系统,如网络安全扫描系统、网络安全测试系统。

二二Windows环境的网络编程环境的网络编程2.1windowsSockets介绍介绍2.1.1Winsock的起源的起源Winsock是微软公司以BerkeleySocket规范为范例,定义的WindowsSocketes规范。

这是Windows操作系统环境下的套接字网络应用程序编程接口(API)。

利用这套API,在Windows环境下,网络应用程序开发者可以轻松地与Internet协议族相连接,显现网络中进程之间的通信。

2.1.2Winsock2.0的介绍的介绍WinSock2.0在源代码与二进制代码发面与Winsock1.0兼容,这就实现了Winsock应用程序与任何版本的Winsock实现之间的最大互操作性,提供了很大的方便。

Winsock2.0增强爱你过了很多功能。

a.支持多种协议Winsock2.0规范中增加了WinsockDLL与底层协议之间的标准服务提供接WinsockDLL能够同时访问不同软件开发商的多个底层协议栈。

b.引入了重叠I/O的概念Winsock2.0规范引入了重叠I/O的概念,并且要求所有的传输协议提供者都支持这一功能。

c.使用了时间对象异步通知d.服务的质量(QoS)2.2在在Windows下捕获数据包的结构下捕获数据包的结构图2-2捕获数据包的结构图Windows下捕获数据包的结构如图2-2,其中NDIS及其特点是:

NDIS(NetworkDriverInterfaceSpecification)是Microsoft和3Com公司联合制定的网络驱动规范,并提供了大量的操作函数。

它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别。

NDIS向上支持多种网络协议,比如TCP/IP、NWLinkIPX/SPX、NETBEUI等,向下支持不同厂家生产的多种网卡。

NDIS还支持多种工作模式,支持多处理器,提供一个完备的NDIS库(Library)。

但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口2.3利用套接字进行网络数据包的捕获的设计步骤利用套接字进行网络数据包的捕获的设计步骤1)网卡,并设为混杂模式。

2)在得到执行命令后,从网路设备驱动程序处收集数据包。

3)将接受的数据包提交给缓冲区。

4)对缓冲区的数据包进行相应的分析,然后输出相关信息。

5)关闭网卡。

三三.网络嗅探程序的设计网络嗅探程序的设计3.1程序框架程序框架3.1程序框架程序框架网络探测程序主要要实现三个功能:

捕获数据包,即获取以太网上的数据包;

分析数据包,即对数据包进行协议分析;

截获密码,即监听流经本地网卡的数据包。

考虑到这些功能之间的相关性,捕获的数据包可用于协议分析,密码又要从捕获到的数据包中分析才能得出来,且集成到一起也方便使用,我将三者做到了一个程序中。

为了使程序有更好的操作性和用户体验,程序使用VisualC+6.0进行开发。

程序主界面采用了控制台显示。

用于显示数据包的主要信息,包括数据包索引号、捕获到数据包的时间、数据包的长度、以太网的源/目的MAC地址、源/目的IP地址以及端口号。

3.2系统软件结构系统软件结构探测系统捕获数据分析数据内容截获图3-1网络探测系统功能在系统流程图中,绘制了网络监听的概要流程图。

但没有包含其下的各子功能的具体实现流程,这些细节将会在详细设计中予以描述,并绘出进一步的流程。

系统流程图基于各子模块要实现的功能,并且将这些模块再进一步细化,即采用了“自顶向下,逐步求精”的软件设计思路。

3.3详细设计详细设计在详细设计中,将会细致地讨论系统的实现细节、编程中遇到的问题及解决方法,以及多种解决方案中选择某种方案的理由。

此外,本部分中还将进一步论述第一部分所涉及到的理论和技术。

3.3.1设计思路设计思路1首先获取网络设备,然后打开设备,并设置网卡处于混杂模式,启动捕获线程,不断地接收数据包和分析数据包。

2通过在对话栏的组合框中输入过滤串来确定监听某种协议(TCP,UDP,ICMP)的数据包。

默认情况下是不进行过滤的;

监听的结果显示包括以下各项,接收时间、数据包长度、协议、源IP/端口、目标IP/端口。

3.3.2套接字套接字数据结构数据结构在此程序将用到的数据结构,并进行简单的介绍。

Sockaddr_inSockaddr_in数据结构的定义如下:

typedefstructsockaddr_inSOCKADDR_IN;

structsockaddr_inshortsin_family;

/地址家族u_shortsin_port;

/structin_addrsin_addr;

charsin_zero8;

WSADatatypedefstructWSADataWORDwVer

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

当前位置:首页 > 初中教育 > 中考

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

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