计算机毕业论文-网络嗅探器的设计与实现25497.doc

上传人:来看看 文档编号:3968616 上传时间:2019-10-11 格式:DOC 页数:31 大小:246.02KB
返回 下载 相关 举报
计算机毕业论文-网络嗅探器的设计与实现25497.doc_第1页
第1页 / 共31页
计算机毕业论文-网络嗅探器的设计与实现25497.doc_第2页
第2页 / 共31页
计算机毕业论文-网络嗅探器的设计与实现25497.doc_第3页
第3页 / 共31页
计算机毕业论文-网络嗅探器的设计与实现25497.doc_第4页
第4页 / 共31页
计算机毕业论文-网络嗅探器的设计与实现25497.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《计算机毕业论文-网络嗅探器的设计与实现25497.doc》由会员分享,可在线阅读,更多相关《计算机毕业论文-网络嗅探器的设计与实现25497.doc(31页珍藏版)》请在三一文库上搜索。

1、毕毕 业业 设设 计计( ( 论论 文文 ) ) 网络嗅探器的设计与实现网络嗅探器的设计与实现 论文作者姓名:论文作者姓名: 申请学位专业:申请学位专业: 申请学位类别:申请学位类别: 指指导导教教师师姓姓名名(职职称称) : 论文提交日期:论文提交日期: 网络嗅探器的设计与实现网络嗅探器的设计与实现 摘摘 要要 随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联 网上,网络的安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络, 测试网络性能与安全性的工具软件的需求也越来越迫切。网络嗅探器具有两面 性,攻击者可以用它来监听网络中数据,达到非法获得信息的目的,网络管理 者可以

2、通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可 供网络安全分析之用。 本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,如 winpcap、原始套接字。文中首先分析了嗅探的原理和危害,并介绍了几种常见 的嗅探器,然后研究了入侵检测系统中使用的包捕获技术。本文利用原始套接 字在 windows 平台下实现了一个网络嗅探器程序,完成了对数据包进行解包、 分析数据包的功能。 关键词:关键词:网络嗅探器;数据包捕获;数据包分析;原始套接字 Design and Realization of Network Sniffer Abstract Along with the de

3、velopment of network technologies and the popularization of network applications, more and more information resources are put on internet. The network security and reliability become important increasingly. Therefore, the demand of the software tools which could analyze, diagnosis and test network p

4、erformance or security are more and more pressing. Network sniffer has two sides. An attacker can use it to monitor network data, to achieve the purpose for obtaining information illegally, while network managers can use it to capture and analyze the data which transmitted on network. The result of

5、analysis can be used to analyze the network security. This thesis briefly analyzed the technology of network sniffer, and researched the capture mechanism of network data packets such as winpcap and raw socket. This paper first analyzed the theory and the harm of sniffer, introduced several common s

6、niffers, and then researched the capture technology which used in the intrusion detection system. The thesis uses raw sockets on windows platform to realize one sniffer which can complete unpack and analyze data packet. Key words: network sniffer; capture data packet; analyze data capture; raw socke

7、ts 目目 录录 论文总页数:25 页 1 引言1 1.1 网络安全的现状1 1.1.1 计算机网络安全的问题1 1.1.2 网络安全机制及技术措施1 1.2 本课题的研究意义 2 1.3 本文研究的内容 3 2 网络嗅探器的基本原理3 2.1 网络嗅探器概述 3 2.2 嗅探器实现基础3 2.3 常见的 sniffer 4 2.4 数据包捕获机制的研究4 2.4.1 WinPcap 包捕获机制 5 2.4.2 套接字包捕获机制6 2.5 嗅探器的两面性8 2.5.1 sinffer 的危害 8 2.5.2 通过网络嗅探进行网络管理9 3 入侵检测系统与嗅探器9 3.1 入侵检测概念9 3.2

8、 入侵检测的实现与嗅探器.10 3.2.1 入侵检测的实现与嗅探器的关系.11 3.2.2 数据包嗅探技术在入侵检测系统中的应用.11 4 嗅探器的实现与测试.12 4.1 利用套接字开发网络嗅探程序的步骤 .12 4.2 嗅探器的具体实现原理.13 4.3 数据包捕获程序设计.15 4.4 数据包的解析.15 4.5 数据的显示.19 4.6 嗅探器的测试.22 结 论.23 参考文献.23 致 谢.24 声 明.25 1 1 引言引言 1.11.1 网络安全的现状网络安全的现状 1.1.11.1.1 计算机网络安全计算机网络安全的问题的问题 随着各种新的网络技术的不断出现、应用和发展,计算

9、机网络的应用越来 越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算 机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影 响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算 机网络安全问题越来越严重,网络破坏所造成的损失越来越大。Internet 的安 全已经成为亟待解决的问题。 从目前使用的情况来看,对计算机网络的入侵、威胁和攻击,基本上可以 归纳为以下几种: 1.外部人员攻击 2.黑客入侵 3.信息的泄漏、窃取和破坏 4.搭线窃听 5.线路干扰 6.拒绝服务或注入非法信息 7.修改或删除关键信息 8.身份截取或中断攻击 9.工作疏忽,造

10、成漏洞 10.人为的破坏网络设备,造成网络瘫痪 1.1.21.1.2 网络安全机制及技术网络安全机制及技术措施措施 目前国内外维护网络安全的机制主要有以下几类: 1.访问控制机制 访问控制机制是指在信息系统中,为检测和防止未授权 访问,以及为使授权访问正确进行所设计的硬件或软件功能、操作规程、管理 规程和它们的各种组合。 2.身份鉴别 身份鉴别技术是让验证者相信正在与之通信的另一方就是所 声称的那个实体,其目的是防止伪装。 3.加密机制 对纯数据的加密,加密机制是对你不愿意让他人看到的这些 数据(数据的明文)用可靠的加密算法,只要破解者不知道被加密数据的密码, 他就不可解读这些数据。 4.病毒

11、防护 计算机病毒的防范既是一个技术问题,也是一个管理问题, 它采取以“预防为主,治疗为辅”的防范策略将计算机病毒的危害降到最小限 度。针对以上机制的网络安全技术措施主要有: (1)防火墙技术 防火墙是指一种将内部网和公众网络分开的方法,它 实际上是一种隔离技术,是在两个网络通信是执行的一种访问控制手段,它能 允许用户“同意”的人和数据进入网络,同时将用户“不同意”的人和数据拒 之门外,最大限度地阻止网络中的黑客来访自己的网络,防止他们更改、复制 和毁坏自己的重要信息。 (2)基于主机的安全措施 通常利用主机操作系统提供的访问权限,对 主机资源进行保护,这种安全措施往往只局限于主机本身的安全,而

12、不能对整 个网络提供安全保证。 (3)加密技术 用于网络安全的加密技术通常有两种形式: (a)面向服务的加密技术。面向服务的加密技术即通常所说的信息加密。它 是指利用好的密码算法对有些敏感数据、文件和程序进行加密,并以密文方式 存取,以防泄密。其优点在于实现相对简单,不需要对网络数据所经过的网络 的安全性提出特殊的要求。 (b)面向网络的加密技术。面向网络的加密技术是指通信协议加密,它是在 通信过程中对包中的数据进行加密,包括完整性检测、数字签名等,这些安全 协议大多采用了诸如 RSA 公钥密码算法、DES 分组密码、MD 系列 Hash 函数及其 它一些序列密码算法实现信息安全功能,用于防止

13、黑客对信息进行伪造、冒充 和篡改,从而保证网络的连通性和可用性不受损害。 加密技术是网络信息最基本、最核心的技术措施。但加密的有效性完全取 决于所采用的密码算法,故一般由中央授权部门研制生产,不能自行采用一些 密码算法用于网络中,否则后果不堪设想。 (4)其它安全措施 包括鉴别技术、数字签名技术、入侵检测技术、审 计监控、防病毒技术、备份和恢复技术等。鉴别技术是指只有经过网络系统授 权和登记的合法用户才能进入网络。审计监控是指随时监视用户在网络中的活 动,记录用户对敏感的数据资源的访问,以便随时调查和分析是否遭到黑客的 攻击。这些都是保障网络安全的重要手段。 1.21.2 本课题的研究意义本课

14、题的研究意义 计算机网络技术的飞速发展,极大的改变了人们传统的生活和工作模式, 越来越多的社会经济活动开始依赖网络来完成,可以说计算机网络的发展已经 成为现代社会进步的一个重要标志。但与此同时,计算机犯罪、黑客攻击、病 毒入侵等恶性事件也频频发生。因此,信息安全已越来越受到世界各国的重视。 嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网 卡的编程是使用通常的套接字(socket)方式来进行。但是,通常的套接字程 序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他 形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在 验证投递地址并非自身地

15、址之后将不引起响应,也就是说应用程序无法收取到 达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包, 这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不 能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。 本文通过对网络嗅探器对网络上传输的数据包的捕获与分析功能的进一步 了解,做到知己知彼。通过网络嗅探器对网络上传输的数据包进行捕获和分析, 获取所需要的信息,利用对这些信息进行网络安全分析。因此,对网络嗅探器 的研究具有重要意义。 1.31.3 本文研究的内容本文研究的内容 本文的研究主要围绕以下几个方面进行。 1.网络嗅探器的概念及技术的研究。主要包

16、括网络嗅探器的概念、网络嗅 探器的工作原理及常见网络嗅探器的实现原理等。 2.入侵检测与嗅探器之间的联系,入侵检测的实现由四部分组成:数据包 嗅探解析部分、数据行为检测部分、算法部分和扫描检测部分。数据包嗅探技 术是实现入侵检测的基础,将数据包从共享网络线路中捕获,并将其提取到应 用程序中。 3.网络嗅探程序的实现。主要工作包括:给出了一个网络嗅探程序的系统 框架、数据包捕获程序的设计、数据包的解析、数据的显示等。 4.网络嗅探程序的性能测试与评价,得出结论。 2 2 网络嗅探器的基本原理网络嗅探器的基本原理 2.12.1 网络嗅探器概述网络嗅探器概述 网络嗅探器又称为网络监听器,简称为 Sn

17、iffer 子系统,放置于网络节点 处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用 数据的方法,这些数据可以是用户的账号和密码,可以是一些商用机密数据等 等。 Sniffer 是利用计算机的网络接口截获目的地为其他计算机的数据报文的 一种工具。Sniffer 的正当用处主要是分析网络的流量,以便找出所关心的网络 中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而 我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分 析问题的所在。而嗅探器也可作为攻击工具被黑客所利用为其发动进一步的攻 击提供有价值的信息。 2.22.2 嗅探器实现基

18、础嗅探器实现基础 以太网数据帧是一组数字脉冲,它们在传输介质上进行传输,从而实现信 息的传递。以太网帧格式符合 IEEE802.3 标准,帧中包含目的地址和源地址, 目的地址最高位为 0 是普通地址,为 1 时是组地址。当一个帧送到组地址时, 组内的所有站点都会收到该帧。如果将它送到一个普通地址,一般情况下,只 有一个站点收到这个帧,但是,以太网是以广播方式发送帧的,也即这个帧会 传播到其所在网段内的所有站点,只不过该站点不会接收目的地址不为本机地 址的帧。为了捕获网段内的所有帧(以后称数据包),可以设置以太网卡的工作 方式,以太网卡通常有正常模式(normal mode)和混杂模式(prom

19、iscuous mode) 两种工作模式。在正常模式下,网卡每接收到一个到达的数据包,就会检查该 数据包的目的地址,如果是本机地址和广播地址,则将接收数据包放入缓冲区, 其他目的地址的数据包则直接丢掉。因此,正常模式下主机仅处理以本机为目 的的数据包,网卡如果工作在混杂模式,则可以接收本网段内传输的所有数据 包。如果要进行数据包捕获,必须利用网卡的混杂模式,获得经过本网段的所 有数据信息。 2.32.3 常见的常见的 sniffsnifferer sniff网络分析仪有专用硬件和软件的产品,尖端的网络分析仪产品可以找 出一般网络接口检测不到的错误:中等商业市场的网络分析仪产品往往是带有特 定软

20、件的便携计算机;而基于各个平台的很多普通的网络监听软件则在网上可以 自由下载。比较知名的被广泛用于调试网络故障的免费sniff工具有: tcpdump(运行在FreeBSD、linux、SunOS等系统下);Nfswatch(运行在HP-UX、 Irix、SunOS); Etherfind, Snooper(运行在SunOS); Ipman, therload,Gobbler(运行在DOS、Windows)。在Linux下监听的基本实现过程是 通过Socket来实现的。Linux支持一种特殊的套接字,即Sock-Packet型套接字。 在这种套接字下,应用程序可以读到网卡传递给系统的全部报文,

21、一般情况下, 网卡只将那些目的地址是自身的报文传递给系统内核。因此,需要将网卡的工 作模式设定为混杂模式,这样系统内核就可以读到网卡监听到的所有报文,从 而监听器应用程序也可以读到这些报文。 2.42.4 数据包数据包捕获机制的研究捕获机制的研究 纵观国内外在网络嗅探技术中所使用的包捕获机制的方法,大致可归纳为 两类:一类是由操作系统内核提供的捕获机制;另一类是由应用软件或系统开 发包通过安装包捕获驱动程序提供的捕获机制,该机制主要用于Win32平台下的 开发。操作系统提供的捕获机制主要有四种:BPF(Berkeley packet Filter), DLPI (Data Link Provi

22、der Interface),NIT(Network Interface Tap), Sock Packet类型套接口。BPF由基于BSD的Unix系统内核所实现。DLPI是Solaris(和 其它System V Unix)系统的内嵌子系统。从性能上看, Sock Packet最弱。 Windows操作系统没有提供内置的包捕获机制。它只提供了数量很少并且功能有 限的API调用。WinPcap(Windows Packet Capture)是Win32上的第一个用来捕获 数据包的开放系统软件包,它是一种新提出的强有力并且可扩展的框架结构。 WinPcap包含了一系列以前系统所没有的创新特性。本

23、文将对目前比较流行的 WinPcap软件包提供的捕获机制进行简单介绍。 2.4.1 WinPcap 包捕获机制包捕获机制 WinPcap的体系结构如图2-1所示: 图2-1 Winpcap的体系结构 由WinPcap体系结构图可以看出它采用的是分层化的驱动程序模型,并包含 有三个组件: 1.内核级的数据包捕获驱动程序 2.低级的动态连接库(Packet.dll) 3.高级系统无关库(Wpcap.dll) WinPcap(Windows Packet Capture)是由微软资助的一个项目,其核心仍是 基于NDIS的,但它对NDIS进行封装,它是Windows平台下一个免费、公共的网络 Netw

24、ork Lever Aplicatio n Kernl Lever Packets User code Call Winpcap User code Call Winpcap User code Monitoring Wpcap.dll Wpcap.dll Wpcap.dll Wpcap.dll Wpcap.dll User- buffer1 User- buffer2 User code Direct access to the NPF packet.dll calls Packet.dll Statistical Filter1Filter2Filter3 Kernel Buffer2 K

25、ernel Buffer2 NIC Driver(NDIS 3.0 or higher) Other Protocl Stacks User Netgroup Packer filter NPF 访问系统,它为win32应用程序提供访问网络底层的能力。它提供了以下的各项 功能: 1.捕获原始数据报,包括在共享网络上各主机发送/接收以及相互之间交换 的数据报; 2.在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过 滤掉; 3.在网络上发送原始的数据报; 4.收集网络通信过程中的统计信息。 在Windows NT下WinPcap包捕获驱动和网卡设备驱动的交互是通过 NDIS(Netw

26、ork Device Interface Specification)来实现的。而且包捕获驱动 既与网络驱动通信又与用户应用程序通信,所以它在NDIS结构中如同一个协议驱 动,对WindowsNT操作系统中的NDIS结构中的高端驱动进行编程,这样编制的程 序与上层应用程序更容易连接,应用程序对驱动设置的工作也更方便。如图2-2 所示: 应用程序应用程序 协议驱动包捕获驱动 NIC 驱动 数据包 核心层 网络层 图2-2 包捕获驱动在NDIS中所处位置 2.4.22.4.2 套接字包捕获机制套接字包捕获机制 上世纪 80 年代初,加利福尼亚大学 Berkeley 分校在 UNIX 操作系统下实现

27、 了 TCP/IP 协议,它们为 TCP/IP 网络通信开发了一个应用程序接口(API),这 个 API 称为 socket(套接字)接口。Socket 给程序员提供了一个高层接口,它 的出现使得程序员在编写网络应用程序时只需要调用函数,对网络的底层细节 并不需要精通,因此十分方便。 socket实质上是提供了进程通信的端点。进程通信之前,双方首先必须各 自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前, 双方必须拥有各自的电话机一样。 在网间和网内部,每一个socket用一个半相关描述:协议,本地地址,本 地端口 一个完整的socket连接则用一个相关描述:协议,本地地址,

28、本地端口, 远地地址,远地端口 每一个socket有一个本地唯一的socket号,由操作系统分配。 最重要的是,socket是面向客户服务器模型而设计出来的,针对客户 和服务器程序提供不同的socket系统调用。客户随机申请一个socket(相当于一 个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个 socket号;服务器拥有全局公认的socket(在LINUX中,/etc/services用于存储 全局公认的socket号),任何客户都可以向它发出连接请求和信息请求。 下面我们一一给出重要的socket系统调用。 函数socket()可以创建一个socket对象,socke

29、t()函数的原型如下: SOCKET socket(int af, int type, int protocol); 创建一个socket实际上是向系统申请一个属于自己的socket号。 af(Address Family)俗称套接字地址族,如表2.1所示。 表2.1 Linux支持的套接字地址族 协议族、socket 类型和协议常用的组合如表 2.2 所示: 表2.2 系统调用三参数组合关系 套接字地址族描述 UNIX UNIX域套接字 INET 通过TCP/IP协议支持的Internet地址族 AX25Amater radio X25 IPXNovell IPX APPLETALKAppl

30、etalk DDP X25X25 协议族 (af) Socket类型 (type) 协议(UNIX表示) 实际协议 Sock_DGRAMIPPROC_UDPUDP Sock_STREAMIPPROC_TCPTCP Sock_RAMIPPROC_ICMPICMP AF_INET Sock_RAMIPPROC_RAM某低级协议 指定本地地址使用函数bind()一一绑定 socket()系统调用创建socket时,只指定了相关五元组的协议元,没有指 定其余四元(本地地址、本地端口、远地地址、远地端口),因此需要别的系统 调用加以补充。 bind()将本地socket地址(包括本地主机地址和本地端口)

31、与所创建的 socket号联系起来,即将本地socket地址赋予socket,以指定本地半相关。其 用于Linux性能评估的测试工具的设计与实现调用格式为: bind(sockid, localaddr, addrlen) 总的来说,各种socket地址数据结构包括两大部分:地址类型和协议地址。 网络协议地址又包括主机地址和端口号。 监听 listen() 对于服务器来说,在它接受客户机的连接之前,首先要监听。只有进入了 监听模式,才能接受来自客户机的连接。这一点可以通过listen()函数来实现, 它的原型如下: int listen(SOCKET s, int backlog); 各参数意

32、义如下: s:进行监听的套接字。 Backlog:正在等待连接的最大队列的长度。如果backlog的只为3,有4个客 户机同时发出连接请求,则前3个会放在等待连接队列中,最后一个将被忽略。 如果函数成功,则返回0;否则返回SOCKET_ERROR。 当客户机和服务器的连接建立起来后,用函数 send()和 recv()来进行数据 传输。 2.52.5 嗅探器的两面性嗅探器的两面性 从事网络安全的技术人员和相当一部分准黑客(指使用现成的黑客软件进 行攻击的人)都知道网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演 了很重要的角色。通过使用网络嗅探器可以实现对网络上传输的数据包的捕获 与分析。此

33、分析结果可供网络安全分析之用,也可为黑客所利用为其发动进一 步的攻击提供有价值的信息。可见,嗅探器实际是一把双刃剑。 2.5.12.5.1 sinffersinffer 的危害的危害 网络嗅探器作为被黑客所利用的攻击工具其危害性主要表现在以下几个方 面: 1.偷窥机密或敏感的数据信息 通过拦截数据包,入侵者可以记录网上敏 感信息的传送,或者干脆拦截整个会话过程。 2.窥探低级的协议信息 对底层的协议信息记录,如两台主机之间的网络 接口地址,远程网络接口IP地址,IP路由信息和TCP连接的字节顺序号码等,这 些信息由非法入侵者掌握后将对网络的安全构成极大的危害。 一个入侵者攻击网络系统可能步骤大

34、体有:信息收集安全弱点探测和分析 实施攻击逃避检测。入侵者会利用公开的协议和工具,收集目标网络中各 个主机系统的相关信息,入侵者会探测目标网络上的各个主机,以寻找该系统 的安全漏洞及安全弱点。他可以自编程序或利用公开的程序进行自动扫描,然 后对目标实施攻击,获得系统控制权。入侵者甚至可以利用该主机为基础入侵 整个网络并留下后门,掩盖痕迹,完成一次入侵。 2.5.22.5.2 通过网络嗅探进行网络管理通过网络嗅探进行网络管理 在合理的网络中,网络嗅探器的存在对系统管理员是致关重要的,系统管 理员通过 sniffer 可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至 多台计算机之间的异常通讯有

35、些甚至牵涉到各种的协议,借助于 sniffer 系统 管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的 主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或者 相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网 络区域提供了非常宝贵的信息。 使用嗅探器进行网络管理主要体现在两个方面: 1.使用网络嗅探技术进行网络故障诊断与分析 通过网络嗅探技术收集到 网络中传送的数据后对这些数据进行分析可以帮助解决在各种网络上的性能问 题并排除网络故障,进一步可以产生报表等数据分析结果以更好的支持网络的 运行。 2.使用网络嗅探技术进行安全分析 通过对监听结

36、果进行分析,可以及时 发现各种危害网络安全的行为,维护网络的安全性。新的网络安全技术的研究 方向正集中于网络嗅探技术上,这种方式隐蔽,不会对正常的网络传输造成任 何影响,同时数据收集也十分丰富。通过网络嗅探技术实现审计跟踪、攻击检 测等在网络安全问题上具有重要意义。 3 3 入侵检测系统与嗅探器入侵检测系统与嗅探器 3.13.1 入侵检测概念入侵检测概念 建立入侵检测系统是网络安全的一个重要工作,通过学习,对入侵检测系 统有了一定的了解,下面对入侵检测技术做一个总体介绍。 入侵检测技术与防火墙、PKI 等技术不同,防火墙、PKI 只是立足于“防” , 而入侵检测是对网络系统的运行状态进行监视,

37、发现各种攻击企图、攻击行为 或者攻击结果,以保证系统资源的机密性、完整性和可用性。 为了提高入侵检测系统(IDS)产品、组件及与其他安全产品之间的互操作 性,美国国防高级研究计划署(DARPA)和互联网工程任务组(IETF)的入侵检 测工作组(IDWG)发起制定了一系列建议草案,从体系结构、API、通信机制、 语言格式等方面规范 IDS 的标准。DARPA 提出的建议是公共入侵检测框架 (CIDF) ,最早由加州大学戴维斯分校安全室主持起草工作。 CIDF 提出了一个通用模型, 将入侵检测系统分成了四大模块:事件产生 器(Event Generators) ,事件分析器(Event Analy

38、zers) ,响应单元 (Response Units)和事件数据库(Event Database) 。各部分功能是: 1. 事件产生器获得数据并向 IDS 的其它模块提供; 2. 事件分析器针对数据进行入侵分析; 3. 响应单元对分析的结果作出不同的响应; 4. 数据库存储以上三个模块收集及分析的各种数据。 在检测的技术上,主要分为三类:静态分析、异常检测、误用检测。 1.静态分析方法:通过分析系统配置,检查系统是否已经或可能被人入侵。 2.异常检测方法:通过历史数据定义用户正常活动的模型,当检测到与所 建立的正常模型有差异的行为发生时,认为可能有入侵行为的发生。 3.误用检测方法:通过分析

39、已知的入侵模式,用事先定义的规则描述这些 入侵模式,再通过这些已知的行为模式来检测当前网络中是否存在入侵行为。 上述三种方法均建立在数据包捕获的基础上。 3.23.2 入侵检测的实现与嗅探器入侵检测的实现与嗅探器 入侵检测的实现由四部分组成:数据包嗅探解析部分、数据行为检测部分、 算法部分和扫描检测部分。在这里以误用检测方法对入侵检测的实现做更详细 的介绍。系统编写构架如图 3-1 所示: 显示模块入侵检测模块网络协议分析模 块 数据包捕获模块存储 模块 规则解析模 块 攻击特征 图 3-1 入侵检测系统的架构 由图 3-1 可以知道,在编写入侵检测系统时,需要遵循 CIDF 标准来进行 系统

40、的设计,首先通过数据包嗅探技术获得网络上流通的数据包;其次通过攻 击特征库对嗅探到的数据包进行入侵行为的检测;再次对入侵数据包做出报警; 最后将这些入侵事件纪录到数据库,便于查询和分析。 3.2.13.2.1 入侵检测的入侵检测的实现实现与嗅探器的关系与嗅探器的关系 数据包嗅探技术是实现入侵检测的基础,将数据包从共享网络线路中捕获, 并将其提取到应用程序中,这个过程要依赖于网络物理层到应用层以及操作系 统本身各方面进行协调、设置,下面通过实例来看一下以太网络中数据包的流 程: 1. 物理层,在一个以太局域网,数据在共享的网络介质(网线、HUB)中 以广播的形式到达局域网每一个节点; 2. 数据

41、链路层,节点的网络适配器(网卡 NIC)查看到来的数据帧 (Frame) ,通过一系列的检验,将到来的大量的数据帧中属于自己且正确合法 的数据帧重构成数据包(Packet)送入操作系统的协议栈; 3. 网络层至运输层,操作系统的协议栈通过这两层中的 IP、TCP、UDP 等 协议判断到来的数据包是否属于本操作系统的接收范围(根据 IP 地址) ,是否 属于本操作系统上的应用程序的接收范围(根据 Port 端口号) ,如果所属范围 正确并且数据包合法,操作系统通过端口将数据包重构成报文(Segment)送入 应用程序。 3.2.23.2.2 数据包嗅探技术在入侵检测系统中的应用数据包嗅探技术在入

42、侵检测系统中的应用 为了嗅探到网络中的任意一个数据包,必须对物理线路、网卡、操作系统 进行完全的配合,首先从网络构成上讲,嗅探技术并不是适合所有类型的网络, 不同传输介质的网络的可监听性是不同的。一般来说,以太网被监听的可能性 比较高,因为以太网是一个广播型的网络,在一个标准的以太网子网上,多台 计算机通过一条线路互联,且任何时刻,电缆上只有一个数据包存在,为了保 证多台计算机能 共 享 同 一 线 路 , 以 太 网 使 用 了 CSMA/CD(Carrier Sense MultipleAccess/Collision Detection)载波侦听多 路访问/冲突检测,这样一来,共享线路上

43、的所有以太网卡及相关设备总是处于 对线路上的信号进行监听的状态中,这使得每一台机器都能够探知并接受线路上 的数据流。 事实证明嗅探适用于基于广播包的网络,如利用广播技术来分发数据包的 连通网络(或者使用令牌的网络,只不过因为令牌不一定经过本机器,所以只 能嗅探到网络中部分数据包) 。此外如果在一个子网内部进行嗅探,而子网顶部 存在着诸如交换机这类设备,由于它能够阻止广播,所以就不能够对子网内其 他的机器进行监听,若想要对此子网进行监听,就必须处于与此交换机同级的 包交换网络中。例如从路由器到某一子网的共享网络中安装一个 hub,在将监 听机器和子网交换机用此 hub 连接起来,这样,就能够对此

44、子网进行监听了, 另一种办法就是在交换机上给监听机器做端口映射,指明让它接受经过交换机 的所有数据包。 当数据经过数据链路层后,就要通过操作系统协议栈的审核了,系统协议 栈在 TCP/IP 网络模型跨越的层次非常多,它们直接从位于系统的数据链路层 提取数据,通过在这一层的开发环境中设置混杂模式,就可以成功的接收从驱 动层来的各种数据包。大多数的操作系统在这一层使用的是 Socket 套接字技 术,它们通过函数 ioctlsocket(socket, SIO_RCVALL, /16 位源端口 WORD DestPort; /16 位目的端口 WORD Len; /16 位长度 WORD ChkS

45、um; /16 位校验和 ; 而 TCP 数据头则比较复杂,以 20 个固定字节开始,在固定头后面还可以有 一些长度不固定的可选项,图 4-4 给出 TCP 数据段头的格式组成: 16 位 16 位 源端口 目的端口 顺序号 确认号 TCP 头长 (保留) 7 位 URG ACK PSH RST SYN FIN 窗口大小 校验和 紧急指针 可选项(0 或更多的 32 位字) 数据(可选项) 图 4-4 TCP 数据段头格式 对于此 TCP 数据段头的分析在编程实现中可通过数据结构 TCPPacketHead 来定义: struct TCPPacketHead WORD SourPort; /源

46、端口 WORD DestPort; /目的端口 DWORD SeqNo; /32 位序列号 DWORD AckNo; /32 位确认号 BYTE HLen; /4 位首部长度 BYTE Flag; /6 位标志位 WORD WndSize; /16 位窗口大小 WORD ChkSum; /16 位校验和 WORD UrgPtr; /16 位紧急数据偏移量 ; 在网络层,还要给 TCP 数据包添加一个 IP 数据段头以组成 IP 数据报。IP 数据段头格式如图 4-5 所示: 16 位 16 位 版本 IHL 服务类型 总长 标识 标志 分段偏移 生命期 协议 头校验和 源地址 目的地址 选项(

47、0 或更多) 图 4-5 IP 数据段头格式 同样,在实际编程中也需要通过一个数据结构来表示此 IP 数据段头,下面 给出此数据结构的定义: typedef struct _IPHEADER unsigned char header_len:4; /4 位首部长度 unsigned char version:4; /4 位版本号 unsigned char tos; / 8 位服务类型 unsigned short total_len; / 16 位总长度 unsigned short ident; / 16 位标识符 unsigned short flags; /3 位标志位 unsigne

48、d char ttl; /8 位生存时间 unsigned char proto; / 8 位协议 ( IP , TCP, UDP etc) unsigned short checksum; /16 位 IP 首部校验和 unsigned int sourceIP; /32 位源 IP 地址 unsigned int destIP; /32 位目的 IP 地址 IPHEADER; 4.34.3 数据包捕获程序设计数据包捕获程序设计 根据前面的设计思路,本文在 windows 平台下实现了一个嗅探器程序,开 发工具使用 visual C+。下面就给出本设计的部分程序代码,该设计可以捕获 到所有经

49、过本地网卡的数据包,并可从中分析出协议、IP 源地址、IP 目标地址、 TCP 源端口号、TCP 目标端口号等信息。 在捕获数据包前,首先对原始套接字进行设置,代码如下: void CIpmonDlg:OnLookUp() char szErr 50 , szHostNameMAX_PATH; DWORD dwErr ; SOCKADDR_IN sa; gethostname(szHostName, sizeof(szHostName) ;/获取主机名 m_iphostsource = m_ipsource ; m_ipcheckedhost = ntohl(m_iphost) ; if( 0 = m_threadID ) SetDlgItemText(IDC_LOOKUP,“停止捕获!“ ); else if( m_threadID ) PostThreadMessage(m_threadID,WM_CLOSE,0,0) ; Se

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1