网络攻击与防护论文14.docx

上传人:b****5 文档编号:29855590 上传时间:2023-07-27 格式:DOCX 页数:24 大小:223.70KB
下载 相关 举报
网络攻击与防护论文14.docx_第1页
第1页 / 共24页
网络攻击与防护论文14.docx_第2页
第2页 / 共24页
网络攻击与防护论文14.docx_第3页
第3页 / 共24页
网络攻击与防护论文14.docx_第4页
第4页 / 共24页
网络攻击与防护论文14.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

网络攻击与防护论文14.docx

《网络攻击与防护论文14.docx》由会员分享,可在线阅读,更多相关《网络攻击与防护论文14.docx(24页珍藏版)》请在冰豆网上搜索。

网络攻击与防护论文14.docx

网络攻击与防护论文14

 

江西理工大学应用科学学院

《网络攻击与防御》课程作业论文

 

题目:

网络嗅探技术

系别:

信息系

班级:

网络091

姓名:

黎宇

成绩:

__________________

 

二〇一二年四月

网络嗅探课程设计

一、选题的目的和意义

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

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

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

本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,如winpcap、原始套接字。

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

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

关键词:

网络嗅探器;数据包捕获;数据包分析;原始套接字

二、目前该选题的研究现状

1.1.2网络安全机制及技术措施

目前国内外维护网络安全的机制主要有以下几类:

1.访问控制机制访问控制机制是指在信息系统中,为检测和防止未授权访问,以及为使授权访问正确进行所设计的硬件或软件功能、操作规程、管理规程和它们的各种组合。

2.身份鉴别身份鉴别技术是让验证者相信正在与之通信的另一方就是所声称的那个实体,其目的是防止伪装。

3.加密机制对纯数据的加密,加密机制是对你不愿意让他人看到的这些数据(数据的明文)用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。

4.病毒防护计算机病毒的防范既是一个技术问题,也是一个管理问题,它采取以“预防为主,治疗为辅”的防范策略将计算机病毒的危害降到最小限度。

针对以上机制的网络安全技术措施主要有:

(1)防火墙技术防火墙是指一种将内部网和公众网络分开的方法,它实际上是一种隔离技术,是在两个网络通信是执行的一种访问控制手段,它能允许用户“同意”的人和数据进入网络,同时将用户“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访自己的网络,防止他们更改、复制和毁坏自己的重要信息。

(2)基于主机的安全措施通常利用主机操作系统提供的访问权限,对主机资源进行保护,这种安全措施往往只局限于主机本身的安全,而不能对整个网络提供安全保证。

(3)加密技术用于网络安全的加密技术通常有两种形式:

1.2本课题的研究意义

计算机网络技术的飞速发展,极大的改变了人们传统的生活和工作模式,越来越多的社会经济活动开始依赖网络来完成,可以说计算机网络的发展已经成为现代社会进步的一个重要标志。

但与此同时,计算机犯罪、黑客攻击、病毒入侵等恶性事件也频频发生。

因此,信息安全已越来越受到世界各国的重视。

嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。

但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。

而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。

显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。

本文通过对网络嗅探器对网络上传输的数据包的捕获与分析功能的进一步了解,做到知己知彼。

通过网络嗅探器对网络上传输的数据包进行捕获和分析,获取所需要的信息,利用对这些信息进行网络安全分析。

因此,对网络嗅探器的研究具有重要意义。

三、设计思路分析

1.3本文研究的内容

本文的研究主要围绕以下几个方面进行。

1.网络嗅探器的概念及技术的研究。

主要包括网络嗅探器的概念、网络嗅探器的工作原理及常见网络嗅探器的实现原理等。

2.入侵检测与嗅探器之间的联系,入侵检测的实现由四部分组成:

数据包嗅探解析部分、数据行为检测部分、算法部分和扫描检测部分。

数据包嗅探技术是实现入侵检测的基础,将数据包从共享网络线路中捕获,并将其提取到应用程序中。

3.网络嗅探程序的实现。

主要工作包括:

给出了一个网络嗅探程序的系统框架、数据包捕获程序的设计、数据包的解析、数据的显示等。

2网络嗅探器的基本原理

2.1网络嗅探器概述

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

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

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

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

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

2.2嗅探器实现基础

以太网数据帧是一组数字脉冲,它们在传输介质上进行传输,从而实现信息的传递。

以太网帧格式符合IEEE802.3标准,帧中包含目的地址和源地址,目的地址最高位为0是普通地址,为1时是组地址。

当一个帧送到组地址时,组内的所有站点都会收到该帧。

如果将它送到一个普通地址,一般情况下,只有一个站点收到这个帧,但是,以太网是以广播方式发送帧的,也即这个帧会传播到其所在网段内的所有站点,只不过该站点不会接收目的地址不为本机地址的帧。

为了捕获网段内的所有帧(以后称数据包),可以设置以太网卡的工作方式,以太网卡通常有正常模式(normalmode)和混杂模式(promiscuousmode)两种工作模式。

在正常模式下,网卡每接收到一个到达的数据包,就会检查该数据包的目的地址,如果是本机地址和广播地址,则将接收数据包放入缓冲区,其他目的地址的数据包则直接丢掉。

因此,正常模式下主机仅处理以本机为目的的数据包,网卡如果工作在混杂模式,则可以接收本网段内传输的所有数据包。

如果要进行数据包捕获,必须利用网卡的混杂模式,获得经过本网段的所有数据信息。

2.4.1WinPcap包捕获机制

由WinPcap体系结构图可以看出它采用的是分层化的驱动程序模型,并包含有三个组件:

1.内核级的数据包捕获驱动程序

2.低级的动态连接库(Packet.dll)

3.高级系统无关库(Wpcap.dll)

WinPcap(WindowsPacketCapture)是由微软资助的一个项目,其核心仍是基于NDIS的,但它对NDIS进行封装,它是Windows平台下一个免费、公共的网络访问系统,它为win32应用程序提供访问网络底层的能力。

它提供了以下的各项功能:

1.捕获原始数据报,包括在共享网络上各主机发送/接收以及相互之间交换的数据报;

2.在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;

3.在网络上发送原始的数据报;

4.收集网络通信过程中的统计信息。

在WindowsNT下WinPcap包捕获驱动和网卡设备驱动的交互是通过NDIS(NetworkDeviceInterfaceSpecification)来实现的。

而且包捕获驱动既与网络驱动通信又与用户应用程序通信,所以它在NDIS结构中如同一个协议驱动,对WindowsNT操作系统中的NDIS结构中的高端驱动进行编程,这样编制的程序与上层应用程序更容易连接,应用程序对驱动设置的工作也更方便。

如图2-2所示:

 

图2-2包捕获驱动在NDIS中所处位置

2.4.2套接字包捕获机制

上世纪80年代初,加利福尼亚大学Berkeley分校在UNIX操作系统下实现了TCP/IP协议,它们为TCP/IP网络通信开发了一个应用程序接口(API),这个API称为socket(套接字)接口。

Socket给程序员提供了一个高层接口,它的出现使得程序员在编写网络应用程序时只需要调用函数,对网络的底层细节并不需要精通,因此十分方便。

socket实质上是提供了进程通信的端点。

进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。

正如打电话之前,双方必须拥有各自的电话机一样。

在网间和网内部,每一个socket用一个半相关描述:

{协议,本地地址,本地端口}

一个完整的socket连接则用一个相关描述:

{协议,本地地址,本地端口,远地地址,远地端口}

每一个socket有一个本地唯一的socket号,由操作系统分配。

最重要的是,socket是面向客户——服务器模型而设计出来的,针对客户和服务器程序提供不同的socket系统调用。

客户随机申请一个socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的socket(在LINUX中,/etc/services用于存储全局公认的socket号),任何客户都可以向它发出连接请求和信息请求。

下面我们一一给出重要的socket系统调用。

函数socket()可以创建一个socket对象,socket()函数的原型如下:

SOCKETsocket(intaf,inttype,intprotocol);

创建一个socket实际上是向系统申请一个属于自己的socket号。

af(AddressFamily)俗称套接字地址族,如表2.1所示。

表2.1Linux支持的套接字地址族

套接字地址族

描述

UNIX

UNIX域套接字

INET

通过TCP/IP协议支持的Internet地址族

AX25

AmaterradioX25

IPX

NovellIPX

APPLETALK

AppletalkDDP

X25

X25

 

协议族、socket类型和协议常用的组合如表2.2所示:

表2.2系统调用三参数组合关系

协议族(af)

Socket类型(type)

协议(UNIX表示)

实际协议

AF_INET

Sock_DGRAM

IPPROC_UDP

UDP

Sock_STREAM

IPPROC_TCP

TCP

Sock_RAM

IPPROC_ICMP

ICMP

Sock_RAM

IPPROC_RAM

某低级协议

 

指定本地地址使用函数bind()一一绑定

socket()系统调用创建socket时,只指定了相关五元组的协议元,没有指定其余四元(本地地址、本地端口、远地地址、远地端口),因此需要别的系统调用加以补充。

bind()将本地socket地址(包括本地主机地址和本地端口)与所创建的socket号联系起来,即将本地socket地址赋予socket,以指定本地半相关。

其用于Linux性能评估的测试工具的设计与实现调用格式为:

bind(sockid,localaddr,addrlen)

总的来说,各种socket地址数据结构包括两大部分:

地址类型和协议地址。

网络协议地址又包括主机地址和端口号。

监听—listen()

对于服务器来说,在它接受客户机的连接之前,首先要监听。

只有进入了监听模式,才能接受来自客户机的连接。

这一点可以通过listen()函数来实现,它的原型如下:

intlisten(SOCKETs,intbacklog);

各参数意义如下:

s:

进行监听的套接字。

Backlog:

正在等待连接的最大队列的长度。

如果backlog的只为3,有4个客户机同时发出连接请求,则前3个会放在等待连接队列中,最后一个将被忽略。

如果函数成功,则返回0;否则返回SOCKET_ERROR。

当客户机和服务器的连接建立起来后,用函数send()和recv()来进行数据传输。

2.5嗅探器的两面性

从事网络安全的技术人员和相当一部分准黑客(指使用现成的黑客软件进行攻击的人)都知道网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。

通过使用网络嗅探器可以实现对网络上传输的数据包的捕获与分析。

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

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

2.5.1sinffer的危害

网络嗅探器作为被黑客所利用的攻击工具其危害性主要表现在以下几个方面:

1.偷窥机密或敏感的数据信息通过拦截数据包,入侵者可以记录网上敏感信息的传送,或者干脆拦截整个会话过程。

2.窥探低级的协议信息对底层的协议信息记录,如两台主机之间的网络接口地址,远程网络接口IP地址,IP路由信息和TCP连接的字节顺序号码等,这些信息由非法入侵者掌握后将对网络的安全构成极大的危害。

一个入侵者攻击网络系统可能步骤大体有:

信息收集安全弱点探测和分析实施攻击逃避检测。

入侵者会利用公开的协议和工具,收集目标网络中各个主机系统的相关信息,入侵者会探测目标网络上的各个主机,以寻找该系统的安全漏洞及安全弱点。

他可以自编程序或利用公开的程序进行自动扫描,然后对目标实施攻击,获得系统控制权。

入侵者甚至可以利用该主机为基础入侵整个网络并留下后门,掩盖痕迹,完成一次入侵。

2.5.2通过网络嗅探进行网络管理

在合理的网络中,网络嗅探器的存在对系统管理员是致关重要的,系统管理员通过sniffer可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于sniffer系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。

使用嗅探器进行网络管理主要体现在两个方面:

1.使用网络嗅探技术进行网络故障诊断与分析通过网络嗅探技术收集到网络中传送的数据后对这些数据进行分析可以帮助解决在各种网络上的性能问题并排除网络故障,进一步可以产生报表等数据分析结果以更好的支持网络的运行。

2.使用网络嗅探技术进行安全分析通过对监听结果进行分析,可以及时发现各种危害网络安全的行为,维护网络的安全性。

新的网络安全技术的研究方向正集中于网络嗅探技术上,这种方式隐蔽,不会对正常的网络传输造成任何影响,同时数据收集也十分丰富。

通过网络嗅探技术实现审计跟踪、攻击检测等在网络安全问题上具有重要意义。

3入侵检测系统与嗅探器

3.1入侵检测概念

建立入侵检测系统是网络安全的一个重要工作,通过学习,对入侵检测系统有了一定的了解,下面对入侵检测技术做一个总体介绍。

入侵检测技术与防火墙、PKI等技术不同,防火墙、PKI只是立足于“防”,而入侵检测是对网络系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,以保证系统资源的机密性、完整性和可用性。

为了提高入侵检测系统(IDS)产品、组件及与其他安全产品之间的互操作性,美国国防高级研究计划署(DARPA)和互联网工程任务组(IETF)的入侵检测工作组(IDWG)发起制定了一系列建议草案,从体系结构、API、通信机制、语言格式等方面规范IDS的标准。

DARPA提出的建议是公共入侵检测框架(CIDF),最早由加州大学戴维斯分校安全室主持起草工作。

CIDF提出了一个通用模型,将入侵检测系统分成了四大模块:

事件产生器(EventGenerators),事件分析器(EventAnalyzers),响应单元(ResponseUnits)和事件数据库(EventDatabase)。

各部分功能是:

1.事件产生器获得数据并向IDS的其它模块提供;

2.事件分析器针对数据进行入侵分析;

3.响应单元对分析的结果作出不同的响应;

4.数据库存储以上三个模块收集及分析的各种数据。

在检测的技术上,主要分为三类:

静态分析、异常检测、误用检测。

1.静态分析方法:

通过分析系统配置,检查系统是否已经或可能被人入侵。

2.异常检测方法:

通过历史数据定义用户正常活动的模型,当检测到与所建立的正常模型有差异的行为发生时,认为可能有入侵行为的发生。

3.误用检测方法:

通过分析已知的入侵模式,用事先定义的规则描述这些入侵模式,再通过这些已知的行为模式来检测当前网络中是否存在入侵行为。

上述三种方法均建立在数据包捕获的基础上。

3.2入侵检测的实现与嗅探器

入侵检测的实现由四部分组成:

数据包嗅探解析部分、数据行为检测部分、算法部分和扫描检测部分。

在这里以误用检测方法对入侵检测的实现做更详细的介绍。

系统编写构架如图3-1所示:

 

图3-1入侵检测系统的架构

由图3-1可以知道,在编写入侵检测系统时,需要遵循CIDF标准来进行系统的设计,首先通过数据包嗅探技术获得网络上流通的数据包;其次通过攻击特征库对嗅探到的数据包进行入侵行为的检测;再次对入侵数据包做出报警;最后将这些入侵事件纪录到数据库,便于查询和分析。

3.2.1入侵检测的实现与嗅探器的关系

数据包嗅探技术是实现入侵检测的基础,将数据包从共享网络线路中捕获,并将其提取到应用程序中,这个过程要依赖于网络物理层到应用层以及操作系统本身各方面进行协调、设置,下面通过实例来看一下以太网络中数据包的流程:

1.物理层,在一个以太局域网,数据在共享的网络介质(网线、HUB)中以广播的形式到达局域网每一个节点;

2.数据链路层,节点的网络适配器(网卡NIC)查看到来的数据帧(Frame),通过一系列的检验,将到来的大量的数据帧中属于自己且正确合法的数据帧重构成数据包(Packet)送入操作系统的协议栈;

3.网络层至运输层,操作系统的协议栈通过这两层中的IP、TCP、UDP等协议判断到来的数据包是否属于本操作系统的接收范围(根据IP地址),是否属于本操作系统上的应用程序的接收范围(根据Port端口号),如果所属范围正确并且数据包合法,操作系统通过端口将数据包重构成报文(Segment)送入应用程序。

3.2.2数据包嗅探技术在入侵检测系统中的应用

为了嗅探到网络中的任意一个数据包,必须对物理线路、网卡、操作系统进行完全的配合,首先从网络构成上讲,嗅探技术并不是适合所有类型的网络,不同传输介质的网络的可监听性是不同的。

一般来说,以太网被监听的可能性比较高,因为以太网是一个广播型的网络,在一个标准的以太网子网上,多台计算机通过一条线路互联,且任何时刻,电缆上只有一个数据包存在,为了保证多台计算机能共享同一线路,以太网使用了CSMA/CD(CarrierSenseMultipleAccess/CollisionDetection)载波侦听多路访问/冲突检测,这样一来,共享线路上的所有以太网卡及相关设备总是处于对线路上的信号进行监听的状态中,这使得每一台机器都能够探知并接受线路上的数据流。

事实证明嗅探适用于基于广播包的网络,如利用广播技术来分发数据包的连通网络(或者使用令牌的网络,只不过因为令牌不一定经过本机器,所以只能嗅探到网络中部分数据包)。

此外如果在一个子网内部进行嗅探,而子网顶部存在着诸如交换机这类设备,由于它能够阻止广播,所以就不能够对子网内其他的机器进行监听,若想要对此子网进行监听,就必须处于与此交换机同级的包交换网络中。

例如从路由器到某一子网的共享网络中安装一个hub,在将监听机器和子网交换机用此hub连接起来,这样,就能够对此子网进行监听了,另一种办法就是在交换机上给监听机器做端口映射,指明让它接受经过交换机的所有数据包。

当数据经过数据链路层后,就要通过操作系统协议栈的审核了,系统协议栈在TCP/IP网络模型跨越的层次非常多,它们直接从位于系统的数据链路层提取数据,通过在这一层的开发环境中设置混杂模式,就可以成功的接收从驱动层来的各种数据包。

大多数的操作系统在这一层使用的是Socket套接字技术,它们通过函数ioctlsocket(socket,SIO_RCVALL,&Value)来实现混杂模式接收数据包。

通过Socket的处理,数据流(Bits)已经变成了能识别的数据结构,最后协议栈将数据信息传入应用层——应用程序中。

最终,所有的数据变成可以识别的文字、符号出现在机器的视频输出上。

五、设计成果展示

4嗅探器的实现与测试

4.1利用套接字开发网络嗅探程序的步骤

4.2嗅探器的具体实现原理

嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。

但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。

而本设计的要求通过网络嗅探器从网卡接收所有经过它的数据包,因此,在该系统中将网卡以混杂模式替代通常的正常模式。

 

具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(rawsocket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。

在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。

为了让原始套接字能接受所有的数据,还需要通过WSAIoctl()来进行设置。

至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。

但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。

通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。

由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。

下面先给出结构,数据包的总体结构如图4-1所示:

数据包

IP头

TCP头(或其他信息头)

数据

图4-1数据包总体结构

数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。

其中UDP数据段头比较简单,由一个8字节的头和数据部分组成,具体格式如图4-3所示:

16位

16位

源端口

目的端口

UDP长度

UDP校验和

图4-3UDP数据段头格式

对于此UDP数据段头的分析在编程实现中可通过数据结构UDPPacketHead来定义:

structUDPPacketHead{

WORDSourPort;//16位源端口

WORDDestPort;//16位目的端口

WORDLen;//16位长度

WORDChkSum;//16位校验和

};

而TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,图4-4给出TCP数据段头的格式组成:

16位

16位

源端口

目的端口

顺序号

确认号

TCP头长

(保留)7位

URG

ACK

PSH

RST

SYN

FIN

窗口大小

校验和

紧急指针

可选项(0或更多

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

当前位置:首页 > 初中教育 > 理化生

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

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