端口扫描与检测技术的实现毕业设计论文

上传人:1888****888 文档编号:39415473 上传时间:2021-11-10 格式:DOC 页数:34 大小:844.52KB
收藏 版权申诉 举报 下载
端口扫描与检测技术的实现毕业设计论文_第1页
第1页 / 共34页
端口扫描与检测技术的实现毕业设计论文_第2页
第2页 / 共34页
端口扫描与检测技术的实现毕业设计论文_第3页
第3页 / 共34页
资源描述:

《端口扫描与检测技术的实现毕业设计论文》由会员分享,可在线阅读,更多相关《端口扫描与检测技术的实现毕业设计论文(34页珍藏版)》请在装配图网上搜索。

1、毕毕 业业 设设 计计( 论论 文文)端口扫描与检测技术的实现端口扫描与检测技术的实现论文作者姓名:论文作者姓名:申请学位专业:申请学位专业:申请学位类别:申请学位类别:指指导导教教师师姓姓名名(职职称称):论文提交日期:论文提交日期:端口扫描与检测技术的实现端口扫描与检测技术的实现摘摘 要要随着 Internet 日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。而其中,端口扫描技术吸引了越来越多人的关注。端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。攻击者在攻击一个目标时,首先要

2、获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。针对端口扫描技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。关键词关键词:端口;端口扫描;数据包捕获;端

3、口检测The Realization of Port Scanning and Detecting TechnologyAbstractAs the widely applying of Internet, the attacking behavior made by hacker is increasing but not decreasing. How to resist this kind of attacking behavior is always the key point of the domain of the information security.And the port

4、 scanning draws peoples attention more and more. Port scanning is a usual method which is used by the hacker to collect the information of the target main processor. In order to deal with the invading behavior of the Internet effectively, it is very useful and necessary to work on the port scanning.

5、 When an attacker attacks to a target, he or she will firstly gets some basic information about the target, and the port scanning is one of the most simple and important methods which can scan the opening Port of the target machine to make sure the offering service made by the target machine, and it

6、 is a preparation to the next attacking. The port detecting seems more and more important referring to the port scanning. As an important task of the secure technique of Internet, the port detecting is of great significance.In this thesis, it firstly elaborates the basic principles and usual methods

7、 of the port scanning. On this basis, it then designs a program which can scan the Port of the Internet, and assess the opening situation of the target main processor, and the other program which begins on capturing and analyzing the information packet of Internet, and then assess whether there is a

8、 behavior about port scanning through statistic analyses. Lastly, it demonstrates and analyses the technology of port scanning and port detecting from the viewpoint of attacking and resisting.Key Words:port; port scanning; packet capture; port detecting目目 录录论文总页数:23 页1引言.11.1本课题研究的意义.11.2本课题的研究方法.22

9、端口扫描概述.22.1基本概念.22.2端口扫描原理.32.3端口扫描技术简介.53检测端口扫描概述.73.1端口扫描检测的分析.73.2普通端口扫描检测技术概述.83.3慢速端口扫描检测技术概述.93.4端口扫描的分布式检测概述.93.5主流的端口扫描工具.114端口扫描的实现.124.1扫描程序的设计原理.124.2程序流程图.125检测端口扫描的实现.135.1检测程序的设计原理.135.2程序流程图.135.3设计实现重点代码.146性能测试.186.1端口扫描程序性能测试.186.2检测端口扫描程序性能测试.19结 论.20参考文献.21致 谢.22声 明.23第 1 页 共 23

10、页1 1 引言引言随着科学技术的飞速发展,21 世纪的地球人已经生活在信息时代。20 世纪人类的两大科学技术成果计算机技术和网络技术,均已深入到人类社会的各个领域,Internet 把“地球村”的居民们紧密联系在一起, “天涯若比邻”已然成为现实。互联网之所以能这样迅速蔓延,被世人所接受,是因为它具备特有的信息资源。无论对商人、学者,还是对社会生活中的普通老百姓,只要你进入网络的世界,就能找到其隐藏的奥妙,就能得到你所需要的信息。近年来 Internet的迅速发展,给人们的日常生活带来了全新的感受, “网络生存”已经成为时尚,同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度

11、已经越来越强, “网络经济”时代已初露端倪。然而,网络技术的发展在给我们带来便利的同时也带来了巨大的隐患,尤其是 Internet 和 Intranet 的飞速发展对网络安全提出了前所未有的挑战。技术是一把双刃剑,不法分子试图不断利用新的技术伺机攻入他人的网络系统,而肩负保护网络安全重任的系统管理员则要利用最新的网络技术来防范各种各样的非法网络入侵行为。事实已经证明,随着互联网的日趋普及,在互联网上的犯罪活动也越来越多,特别是 Internet 大范围的开放以及金融领域网络的接入,使得越来越多的系统遭到入侵攻击的威胁。而作为黑客入侵的前奏,端口扫描是最常见的信息获取手段,端口扫描的检测技术在当

12、今已经越来越成为一个重要的课题。本文首先对端口扫描技术进行研究,并开发一个能查询目标主机端口开放情况的程序;然后重点研究端口扫描的检测技术,从对数据包的捕获和分析着手,再定义一个判断是否扫描的条件,并通过统计由定义的扫描条件判断是否存在端口扫描行为,不但能对一般的扫描、快速扫描能够检测,且在一定程度上对慢速扫描也能很好的检测。1.11.1 本课题研究的意义本课题研究的意义在今天快速发展的 Internet 中,黑客攻击方法层出不穷,网络的安全性已经越来越受到威胁。要保证计算机资源的保密性、有效性、完整性也变得越来越困难。端口扫描作为黑客攻击的一个重要方面,也在不停地向前发展,扫描手段已经变得越

13、来越丰富,越来越隐蔽,越来越具有威胁性。如何有效的对端口扫描行为进行检测,已经是越来越重要的一个课题,这对于保证我们网络的安全性有着重要的意义,也是入侵检测系统(IDS)和入侵预防系统(IPS)的一个重点。第 2 页 共 23 页1.21.2 本课题的研究方法本课题的研究方法本文分别对端口扫描技术以及端口扫描的检测技术作了研究,并设计出一个根据扫描者向目标主机的 TCP/IP 服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态的端口扫描程序,以及一个从网络信息的数据包的捕获和分析着手,通过统计判断是否存在端口扫描行为的端口扫描检测程序。2

14、 2 端口扫描概述端口扫描概述2.12.1 基本概念基本概念端口的含义:在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45 端口、SC 端口等等。二是逻辑意义上的端口,一般是指 TCP/IP 协议中的端口,端口号的范围从 0 到 65535,比如用于浏览网页服务的 80 端口,用于FTP 服务的 21 端口等等。我们这里将要介绍的就是逻辑意义上的端口。 端口分类:逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:按端口号分布划分:(1)知名端口(Well-Known Ports)

15、知名端口即众所周知的端口号,范围从 0 到 1023,这些端口号一般固定分配给一些服务。比如 21 端口分配给 FTP 服务,25 端口分配给 SMTP(简单邮件传输协议)服务,80 端口分配给 HTTP 服务,135 端口分配给 RPC(远程过程调用)服务等等。(2)动态端口(Dynamic Ports)动态端口的范围从 1024 到 65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配出一个供该程序使用。比如 1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所

16、占用的端口号。不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4 是 8011、Netspy 3.0 是 7306、YAI 病毒是 1024 等等。按协议类型划分:第 3 页 共 23 页按协议类型划分,可以分为 TCP、UDP、IP 和 ICMP(Internet 控制消息协议)等端口。下面主要介绍 TCP 和 UDP 端口:(1)TCP 端口TCP 端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括 FTP 服务的 21 端口,Telnet 服务的 23 端口,SMTP 服务的 25 端口,以及 HTTP

17、服务的 80 端口等等。(2)UDP 端口UDP 端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有 DNS 服务的 53 端口,SNMP(简单网络管理协议)服务的 161 端口,QQ 使用的 8000 和 4000 端口等等。2.22.2端口扫描原理端口扫描原理扫描者向目标主机的 TCP/IP 服务端口发送探测数据包,通过探测性数据包得到目标主机的响应并记录下来,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态。通常通过调用套接字函数connect ()连接到目标计算机上,完成一个完整的3次握手程。如果端口处于侦听状态,那么connect()

18、就能成功返回。否则,该端口不可用,即没有提供服务。端口扫描的第一步是向目标主机的TCP/UDP端口发送探测数据包,然后根据对方的回应判断端口是否开放。由于网络环境的差异以及操作系统对连接请求的应答并不一致,在端口扫描中支持多种扫描方式,以保证扫描的准确和快速。大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字支持对IP 报头的设置,即构造IP 数据包。同时,原始套接字也支持发送和接收IP数据包。这样,原始套接字接口实际上成为网络层向上提供的接口。实现时可通过调用Winsock2库中的函数setsockopt()来设置选项IP_HDRINCL,以获取自定义IP报头的权限。由于Wind

19、ows2000仅支持Raw ICMP和Raw IGMP,不支持RawTCP,因此,发送TCP数据包,必须通过设置选项IP_HDRINCL来构造IP报头。首先创建原始套接字,定义IP首部。IPHEADER, TCP伪首部TCPSOCHEADER和TCP首部TCPHEADER,再填充IP首部和TCP首部,其中,TCP首部中的结构体变量tcpHeader的tcpHeade.th_flag=2,表示发送的是SYN数据包,修改它可以实现不同的标志位探测,如2是SYN,0是NULL,1是FIN,16是ACK探测等等。因为是自己填充IP首部和TCP首部,所以还需定义一个计算校验和函数checksum来计算I

20、P报头和TCP报头的校验和。在填充TCP首部时,通过TCP伪首部填充TCP数据包的IP选项。事实上TCP伪首部并不是第 4 页 共 23 页真正存在的,只是用于填充TCP的一些选项和计算校验和。调用setsockopt()设置选项IP_HDRINCL,根据填充TCP、IP报头的内容构造IP 数据包。设置侦听原始套接字的同步和超时之后,调用sendto()发送IP 数据包。发送原始套接字包流程图如图1所示:图 1 发送原始套接字包流程图原始套接字包发送完后,就可以接收目标主机的回应。当发送原始套接字包时(如TCP SYN数据包),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当

21、远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应用程序上。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以再定义一个原始套接字,用来接收数据,并在套接字I/0控制函数中设置SIO_RCVALL,表示接收所有的数据。通过设置原始套接字的I/0控制命令,便可以调用recv()接收返回的数据包。一般情况下使用的是TCP SYN半连接扫描,由于TCPConnect()全连接扫描拥有很好的稳定第 5 页 共 23 页性,这种技术用得非常多。通常通过调用套接字函数connect()连接到目标计

22、算机上,完成一个完整的3 次握手过程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。以上实现的端口扫描,可以得到每个端口的状态,此处的状态并非端口本身的性质,而是对扫描结果的描述。端口状态可以分为5种:open(开放的)、closed(关闭的)、filtered(被过滤的)、unfiltered(未被过滤的)和open filtered(开放或者被过滤的)。2.32.3端口扫描技术简介端口扫描技术简介常用的端口扫描技术主要有以下几种:(1)TCP connect() 扫描这是最基本的TCP扫描。利用操作系统提供的connect系统调用,用来与每一

23、个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,则connect就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的最大的优点是,用户不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以串行的方式,使用单独的connect()调用,那么将会花费相当长的时间,用户可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许设置一个较低的超时时限,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是否出错的服务消息,并且能很快地使它关闭。(2)TCP SYN扫描这种技术

24、通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN/ACK 的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN/ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。 这种扫描技术的优点在于一般不会在目标计算机上留下记录,但这种方法的缺点是,必须要有root权限才能建立自己的SYN数据包,不过这个条件一般都是很容易满足的。(3)TCP FIN扫描有的时候有可能SYN扫描都不够秘密。一些防火

25、墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会顺利通第 6 页 共 23 页过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。如果有的系统不管端口是否打开,都回复RST,那么这种扫描方法就不适用了。但这种方法在区分Unix和NT时是十分有用的。(4)IP段扫描这种不能算是新方法,只是其他技术的变化。它并不是直接发送TCP探测数据包,是将数据包分成二个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但一些程序在处理这些小数据

26、包时会有些问题。(5)FTP返回攻击FTP协议的一个的特点是它支持代理FTP连接。即入侵者可以从自己的计算机和目标主机的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP,这是个推测,尽管RFC明确定义请求一个服务器发送文件到另一个服务器是可以的,但当前的大多数实现并不支持,因为这个特性“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙”。利用FTP返回攻击的目的是从一个代理的FTP服务器来扫描TCP端

27、口。这样,用户能在一个防火墙后面连接到一个FTP服务器,然后扫描端口。如果FTP服务器允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口。对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录,结果通过Server-DIP发送出去。如果目标主机正在某个端口侦听,传输就会成功,(产生一个150或226的回应)否则,会出现“425 Cant build data connection:Connection refused.”。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很

28、明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。(6)UDP ICMP端口不能到达扫描这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是第 7 页 共 23 页关闭的。UDP和ICMP错误都不保证能到达,因此,这种扫描器必须还实现一个在包看上去是丢失的时候能重新传输。这种扫描方

29、法是很慢的,因为RFC对ICMP错误消息的产生速率作了规定。同样,这种扫描方法需要具有root权限。(7)UDP recvfrom()和write()扫描。当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时会返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。(8)TCP 反向 ident 扫描ident 协议(rfc1413)允许看到通过 TCP 连接的

30、任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。例如,扫描者能连接到 Http 端口,然后用 ident 来发现服务器是否正在以root 权限运行。这种方法只能在和目标端口建立了一个完整的 TCP 连接后才能看到。总之,为了避过目标系统的日志审计和防火墙的阻截,为了避过目标系统的端口扫描检测,入侵者往往会采用一系列方法来改变正常的端口扫描方式,以达成端口扫描的隐蔽性,这些方法包括:改变扫描端口的顺序、慢速扫描、端口扫描间隔随机化、随机化扫描包的其它区域、伪造源地址扫描和分布式扫描等。3 3 检测端口扫描概述检测端口扫描概述3.13.1 端口扫描检测的分析端口扫描检测的分析端口扫描是

31、一台主机对多个目标端口进行试探,包括打开的和没有打开的端口。这就为检测端口扫描提供了两条“线索”:一是“是否存在试图连接已经关闭端口的行为” ;二是“在一段时间内,是否存在从一个源地址发出的数据包到达多个目的地址的行为” 。检测端口扫描的方法主要有两种:一种是对主机没有对外提供服务的端口进行监听,如果检测到有对这样的端口的连接请求,就认为有扫描发生;另一种检测方法是对整个网络流量进行监控,检查网络中所有的数据,并对异常情况进行记录。在本文中,为了便于对端口扫描检测进行研究,从端口扫描检测的角度出发,把端口扫描技术分为普通扫描,慢速扫描及分布式扫描,并在后面的介绍第 8 页 共 23 页中分别对

32、不同的检测方法作了介绍。3.23.2普通普通端口扫描检测技术概述端口扫描检测技术概述目前比较常见的端口扫描就是一对一的扫描关系,如下图2所示,即只有一个扫描者,且扫描者从本身出发,不经过任何隐藏通过发送探测性数据包来判断目标主机的端口开放情况。图2 普通扫描技术针对这种一对一的普通或快速的端口扫描技术,目前端口扫描的检测技术采用的方法有Snort方法、Watcher方法和PortSentry方法等三种,都能很好的检测出这种扫描。它们进行端口扫描检测采用的算法大致可以概括如下:在M秒内,监测从同一源端发出的数据包, 如果其目的IP与目的端口的组合数目超出N的话, 则认为是一次扫描。Snort是一

33、个轻量级的网络入侵检测系统。它的探测引擎采用模块化的插件结构,允许开发者扩展Snort的功能, 也可以使得用户可以按自己的需要定制功能。Snort检测端口扫描的方法是:在Y秒内, 如果检测到从同一个源发出,目的为不同的主机和端口的组合的TCP或UDP包的数目超出阈值X, 则认为是扫描。其中X和Y的值可以由用户自己设定。另外, Snort也同样可以检测有奇异标志的TCP包。Watcher是一个比较完整的基于网络的入侵检测系统的设计代码。它检测所有通过的信息包, 并且将它认为是恶意的攻击行为记录在syslog中。它的检测原理是:如果在短时间内有超过7个以上的端口收到信息包(不管类型如何) , 那么

34、这一事件就被当成端口扫描记录下来。PortSentry是基于主机的网络入侵检测系统的一个组成部分,主要用来检测外部对主机的端口扫描,它能够对多种扫描方法进行检测。它的检测原理是:对没有开放服务的端口的访问有可能是一次扫描。通过监测没有开放服务的端口,在最近n次连接里由同一个源发起的连接超过X次则判断为一次扫描。以上几种扫描检测方法对端口扫描所采用的检测技术都比较简单,且存在第 9 页 共 23 页以下缺点:(1)无法检测慢速扫描, 因为在检测中时间窗是个固定值, 只要扫描速度低于这个阈值, 攻击者就可以成功地逃避检测。当设定的时间阈值大到一定程度时,需要从相当长时间的网络连接记录中找出扫描行为

35、,系统资源消耗较大,无法适应宽带网络尤其是高速网络环境; 从理论上讲,黑客总能够以略大于系统设定阈值的时间间隔进行端口扫描;(2)未考虑到受保护网段的特点, 对网段内所有主机都采用相同的检测策略, 效率不高而且容易导致误报。3.33.3慢慢速端口扫描检测技术概述速端口扫描检测技术概述慢速端口扫描是在普通端口扫描技术上进化而来的,可以说是黑客技术提高的体现。通常普通端口扫描的扫描者对被扫描者发送探测性数据包都是快速的,被扫描者在进行捕包判断上就会显得比较容易,而慢速扫描与普通扫描一样,都是一对一,即扫描者和被扫描者都只有一个,但是其对目标主机发送探测性数据包的时间间隔上就变化很大,可以在1分钟发

36、送一个探测性数据包后20分钟再继续发送探测性数据包,也或者在发送一个探测性数据包后时间就递增,产生一个时间上的变化,总之给检测端口扫描带来了极大的困难,这就需要用新的规则,新的技术来进行端口检测。在目前的慢速扫描检测技术中,模糊技术是应用的比较好的能检测出慢速端口扫描的新型技术。3.43.4端口端口扫描的分布式检测概述扫描的分布式检测概述在当前端口扫描技术中,比较难以检测的是分布式扫描,针对分布式扫描,不能采取对普通扫描及慢速扫描的检测方法。如下图 3 所示,分布扫描是指扫描者通过控制其他多台计算机对目标主机进行数据包探测,这样,被扫描者所捕获的数据包就是来自于不同的 IP,但是实际扫描者通过

37、所控制的计算机对应答数据包的分析依然能够判断出目标主机的端口开放情况,被扫描者虽然所捕获到的探测性数据包其 IP 是正确的,但是受到了 IP 欺骗,并没有判断出真正的扫描者,在这种情况下通常的检测方法对分布式扫描是无效的。当然,在分布式扫描的基础上加以慢速扫描,则是更加难以检测的扫描技术。第 10 页 共 23 页图 3 分布式扫描技术在当前的分布式扫描检测技术中,最常用的是在进行端口扫描检测时,将系统分成两个部分:第一部分是传感器,它的功能是判断一个包的异常程度,赋给包一个异常值。如果一个包有异常,则从网络数据中过滤出来,进行下一步的处理;如果一个包没有异常,则简单地丢弃。第二部分是分析器,

38、它对异常包进行汇集、分类、分析。首先将异常包根据其不同特性分成不同的类,然后再对不同的类计算一个类的异常值总和。如果一个类的异常值总和超过了阈值,则判断为扫描。在分布式端口扫描检测系统中,传感器分布在一个大网的各个子网内,采集网络上的各种有关扫描异常数据;而分类器是一个汇总的分析器,通过汇总分析网络内各个子网的数据,可以更好地分析网络上出现的扫描情况。分布式检测方法具有很多优点:首先,它能够实现分布式扫描的检测。因为分布式扫描其扫描包具有一定的异常性,所以这些包可以被第一步的检测从网络数据中过滤出来。在第二步进行分类分析的时候,由于这些分布式扫描的包具有一个共同的特性,即扫描对象是同一个主机或

39、同一个端口,因此它们可以被聚集到一个类里,从而被检测为扫描。其次,这种方法也能够检测慢速的扫描。由于网络上巨大的通信量,所以在以前的检测方法里检测时间窗T必须很小,否则会消耗掉太多的内存和CPU时间而瘫痪。而采用该方法,由于分析器只需分析处理异常包,因此可以取一个很大的时间窗T,从而检测出慢速的扫描。另外,分布式检测方法具有很好的实时性。由于传感器只需要判断一个包的异常程度,而不需要判断是否属于扫描,因此可以实现一个很快的异常包过滤器。而传统的检测方法,例如,SNORT在接收到一个包以后,首先检查包的结第 11 页 共 23 页构,然后检查现有的扫描列表,相对来说是很费时间的。异常包的检测:首

40、先,需要有一个准则来确定网络上一个包的异常程度。通过分析已有的一些检测工具、扫描工具、以及入侵者用以躲避扫描检测的方法,总结出下面的包是异常的包:(1)带有奇怪标志位的包有可能是扫描包;(2)没有正确的执行TCP协议握手过程的包有可能是扫描包;(3)连接后马上断开,没有具体协议内容的包,有可能是扫描包;(4)对没有开放服务的端口的连接包有可能是扫描包。扫描技术在进步,相应的检测技术也在相应提高,现今还出现了一种新的检测分布式扫描的方法,其原理是靠统计流量来进行判断,也能很好的检测出分布式扫描。但是由于网络上的流量非常的大,且相当的不固定,要定义一定时间内的流量有很大的困难,所以这种检测方法还存

41、在很多缺陷,容易产生误判为端口扫描,也容易放过真正的端口扫描行为。3.53.5主流的端口扫描工具主流的端口扫描工具常用的几种端口扫描检测器有:NSM(The Network Security Monitor)、Gr IDS、Snort和Portsentry等。NSM是最早的基于网络的入侵检测系统,它认为所有与大于15个其它主机建立连接的主机都是扫描者。这种算法是许多检测系统检测算法的雏形。Gr IDS通过建立网络连接拓扑图来检测端口扫描。它使用节点代表主机,如果主机间存在数据交换,就在相应的节点间连线。一次扫描试探就会在扫描者的主机和被扫描者的主机之间建立一条连线,Gr IDS通过计算一个节点

42、上存在多少连线的方法判断是不是有端口扫描行为。这种方法不能检测秘密扫描,速度相对较慢,具体的端口扫描行为的判断需要人工完成。Snort是基于libpcap的一个源代码公开的轻量级的入侵检测系统。它的端口检测功能是通过一个嵌入程序来完成。Snort的扫描检测器通过计算“在时间X秒内有Y个TCP或UDP数据包从一个源地址发往不同的目的地址”来确定是否有端口扫描行为;Snort能查找单个不正常的TCP包。缺点是不能检测分布式扫描、慢速扫描,不能处理分片。Portsentry是基于主机的端口扫描检测器。它指定多个TCP/UDP端口进行监听,当这些端口被试图连接或扫描时,能在瞬间捕捉连接或扫描企图;它能

43、有效捕捉非连续随机扫描,生成外界扫描动作的详细日志记录,并将发起扫描的主机地址写入tcp_wrapper的host.deny文件中,并重指扫描者路由,把信息流第 12 页 共 23 页重定向到一个不存在的主机。缺点是仅限于对一台单机进行端口扫描分析;判断规则过于严格,正常的扫描容易被误认为是端口扫描行为。4 4 端口扫描的实现端口扫描的实现4.14.1扫描程序的设计原理扫描程序的设计原理在进行端口扫描的设计与开发中,利用三次握手的原理,建立原始套接字,通过向目标主机的 TCP/IP 服务端口发送探测性数据包,并记录目标主机的响应情况,最后通过分析响应情况来判断目标主机服务端口是打开还是关闭,进

44、而得知端口的状态。4.24.2程序流程图程序流程图如下图 4 所示,所开发的端口扫描流程图:图 4 端口扫描流程图第 13 页 共 23 页5 5 检测端口扫描的实现检测端口扫描的实现5.15.1检测程序的设计原理检测程序的设计原理在检测端口扫描程序的设计与开发中,这里首先是采取通过套接字来进行数据包的捕获,再通过解 IP 包,然后对所解出的 TCP 包和 UDP 包分别再进行解包,并记录下到达的端口,以及源 IP 地址,目的 IP 地址,目的端口,再设计一种算法,通过算法对数据包进行统计分析,最后设定一个判断发生扫描行为的条件,当满足条件有三次及三次以上的相同源 IP 且到达端口的不同的数据

45、包即判断发生端口扫描行为。此检测端口扫描程序的设计不但可以检测一般的扫描和快速扫描,在一定的程度上也能检测慢速扫描。以前的端口扫描检测方法都是采用在一个固定的时间窗 T 内查看从同一个源地址发起的连接数 X , 如果 X 超出了设定的阀值, 则判断为一次扫描。由于网络上的通信量非常大, 所以以前的端口扫描方法都会设定一个很小的时间窗T ,防止消耗掉过多的内存和 CPU 时间。由于本文提出的方法与时间窗无关, 所以在不降低系统整体性能的前提下,在慢速扫描发送探测性数据包时间间隔上不超出所设计程序所能记录数据包的最大上限的情况下仍能很好的检测慢速扫描。5.25.2程序流程图程序流程图如下图 5 所

46、示,所开发的检测端口扫描程序基本流程图:第 14 页 共 23 页图 5 端口检测流程图5.35.3设计实现重点代码设计实现重点代码在此端口扫描检测程序设计中,重点在于设计一个算法,用于研究是否存在端口扫描行为,算法是此设计的重点。就此设计的检测程序来说,在捕获数据包后所解的 TCP 包和 UDP 包,由于在分析中要分别考虑 TCP 包和 UDP 包,但是对两种包的分析都是一样的,现我们只详细阐述分析 TCP 包的情况。在所设计用于检测端口扫描的算法中,首先是一个统计函数,用于对通过第 15 页 共 23 页套接字捕获数据包的统计:void statistics(char szProtocol

47、,char szSourceIP,int iSourcePort,char szDestIP) if(strcmp(szProtocol,TCP) if(TCP_MAX=MAX_LEN_REC) TCP_MAX=0; if(TCP_MAX=0) strcpy(TCP_RECTCP_MAX.szProtocol,szProtocol); strcpy(TCP_RECTCP_MAX.szSourceIP,szSourceIP); TCP_RECTCP_MAX.iSourcePort=iSourcePort; strcpy(TCP_RECTCP_MAX.szDestIP,szDestIP); +TC

48、P_MAX; else if(check(TCP_REC,szDestIP,iSourcePort,TCP_MAX-1) /调用 check 函数 strcpy(TCP_RECTCP_MAX.szProtocol,szProtocol); strcpy(TCP_RECTCP_MAX.szSourceIP,szSourceIP); TCP_RECTCP_MAX.iSourcePort=iSourcePort; strcpy(TCP_RECTCP_MAX.szDestIP,szDestIP); +TCP_MAX;在统计的时候这里需要调用一个 check 函数即检测函数,此函数的作用是用于排除完全相

49、同的数据包,由于在分析中不需要对完全相同的数据包进行分析,以免出现重复情况产生误判,所以在统计时候这里需要先把完全相同的数据包进行排除,以保证存入 TCP_REC中的数据包是完全没有任何是一个是相同的。bool check(STATISTIC TYPE,char szDestIP,int port,int count) /check 函数,比较协议类型,目的 IP,端口,计数(count) int i=0; bool flag=true; for(i=count;i=0;i-) if(!strcmp(TYPEi.szDestIP,szDestIP)&TYPEi.iSourcePort=port

50、) /比较TYPEi.szDestIP 与 szDestIP 的值在和 TYPEi.iSourcePort/的值做与运算,将得到的结果和 port 比较,是否相等 第 16 页 共 23 页 flag=false; break; return flag; 对所捕获的数据包进行统计后,接着是对所捕获的 TCP 包以及 UDP 数据包进行分析的分析函数,首先是一个用于存放不同 IP 的 rec,在这里我们用到一个临时变量 temp,用于帮助对不同 IP 的提取,最后再根据所记录的不同IP 到 TCP_REC中进行提取符合 IP 的数据包信息,再存入 tcp_tem中,在tcp_tem中就是经过统计

51、分析后的所捕获的探测性数据包。void analysis_tcp(STATISTIC tcp)/对 IP,端口进行分析的函数,判定是否为端口扫描行为 STATISTIC tcp_temMAX_LEN_REC,recMAX_LEN_REC,temp;int i=0;int count=0,reccount=0; strcpy(temp.szProtocol,tcp0.szProtocol); strcpy(temp.szSourceIP,tcp0.szSourceIP); temp.iSourcePort=tcp0.iSourcePort; strcpy(temp.szDestIP,tcp0.s

52、zDestIP); /临时变量记录第一条数据包的情况strcpy(recreccount.szProtocol,tcp0.szProtocol); strcpy(recreccount.szSourceIP,tcp0.szSourceIP); recreccount.iSourcePort=tcp0.iSourcePort; strcpy(recreccount.szDestIP,tcp0.szDestIP); /将第一条记录保存到地址列表中for(i=0;i=0;t-) /进入 for 循环,将 reccount 的值赋给 t,t 大于等于0,t 的值减 1 if(!strcmp(temp.

53、szDestIP,rect.szDestIP) flag=false; break; /反向搜索地址记录表如果有相同的则不记录 if(flag) +reccount; strcpy(recreccount.szProtocol,temp.szProtocol); strcpy(recreccount.szSourceIP,temp.szSourceIP); recreccount.iSourcePort,temp.iSourcePort; strcpy(recreccount.szDestIP,temp.szDestIP); /没有相同的则将该不同的地址记录到数组中 /if 条件判断 /如果相

54、同则不记录/for 循环system(cls);printf(nTCP_REC 中的数据是:n);for(i=0;iTCP_MAX;i+)printf(%s:%dn,TCP_RECi.szDestIP,TCP_RECi.iSourcePort); for(i=0;i=reccount;i+) int j=0;count=0;memset(tcp_tem,0,100*sizeof(STATISTIC);for(j;jTCP_MAX;j+)第 18 页 共 23 页 if(!strcmp(reci.szDestIP,tcpj.szDestIP) strcpy(tcp_temcount.szProt

55、ocol,tcpj.szProtocol); strcpy(tcp_temcount.szSourceIP,tcpj.szSourceIP); tcp_temcount.iSourcePort=tcpj.iSourcePort; strcpy(tcp_temcount.szDestIP,tcpj.szDestIP); +count; 在程序的最后,由于此设计是需要判断是否发生端口扫描行为,这里就需要设定一个条件来定义端口扫描行为。在此设计中,我们定义扫描行为是当有 3 个或 3 个以上的探测性数据包且其源 IP 一致的数据包存在的时候就判断为端口扫描行为,当然在这里能够定义更多或者更少的探测性

56、数据包为发生端口扫描行为条件,只要检测程序在当记录到有 3 个或 3 个以上的数据包且源 IP 一致的数据包对本机进行连接的时候能显示出来所发出的探测性数据包并判断为存在端口扫描行为,并显示出扫描者的 IP 信息以及对本机所扫描的端口。此检测端口扫描程序设计对一般的以及快速扫描均能很好的扫描,在一定程度上能很好的检测慢速扫描,虽然并没有设定时间阈值,不会存在当设定的时间阈值大到一定程度时,需要从相当长时间的网络连接记录中找出扫描行为,系统资源消耗较大,无法适应宽带网络尤其是高速网络环境;但是毕竟所分析的数据包有个定量,扫描者总能以略大于系统设定数据包捕获定量的时间间隔进行端口扫描,所以说针对慢

57、速扫描只能在一定程度上实现。6 6 性能测试性能测试6.16.1端口扫描程序性能测试端口扫描程序性能测试在端口扫描程序设计完成后,用开发出的端口扫描程序作了一个性能演示,如下图 6 所示,扫描者通过扫描命令向 IP 为 192.168.1.102 的目标主机的 1-10000 端口进行了发送探测性数据包扫描,并根据回应显示目标主机的端口开放情况。第 19 页 共 23 页图 6 端口扫描效果显示图如图 6 显示,IP 为 192.168.1.102 的目标主机在 1-10000 端口中,开放的端口有 21,25,81,82,83,110,119,139,143。6.26.2检测端口扫描程序性能

58、测试检测端口扫描程序性能测试再用所开发的检测端口扫描程序作了测试,针对攻击者的扫描行为,捕获探测性数据包,并进行分析,当收到同一地址而且目的端口不同的数据包有3个时,能准确判断出来自扫描者的端口扫描行为。如下图7所示,当程序运行并有IP为192.168.1.7的扫描者向本机发起扫描时候,能显示IP为192.168.1.7的扫描者发起了端口扫描行为,能作出判断并显示出相应的信息。图 7 检测端口扫描效果显示图第 20 页 共 23 页如图 7 显示当本机遭受到扫瞄者扫描时,程序能对扫描者发起的探测性的数据包进行捕获,并记录下来,当有 3 个来自于同一 IP,且目的端口不同的时候程序就判定为遭到了

59、来自于所捕获数据包源 IP 主机的扫描。这种情况是在只有一个扫描者的时候能正确显示出扫描者的信息以及扫描者对本机哪些端口进行了扫描。当程序运行并且有 IP 为 192.168.1.7 和 192.168.1.103 的两个扫描者向本机发起扫描时候,能显示 IP 为 192.168.1.7 和 192.168.1.7 的扫描者对本机发起了端口扫描行为,并能将探测性数据包显示出来且能作出判断并显示出相应的信息,对用户作出报警,由此可见扫描者的个数并不会影响程序的正常检测,如下图 8 所示:图 8 多扫描者进行扫描时检测端口扫描效果显示图如图 8 显示当本机遭受到有两个扫瞄者扫描时,程序能对扫描者发

60、起的探测性的数据包进行捕获,并记录下来,当有 3 个来自于同一 IP,且目的端口不同的时候程序就判定为遭到了来自于所捕获数据包源 IP 主机的扫描。在这种情况下有两个不同 IP 的扫描者对本机进行扫描,程序能分辨出不同的 IP 并显示出来遭受到来自两个扫描者的扫描。结结 论论本文首先介绍了各种扫描技术,以及分析入侵者可以逃避检测的各种方法。其后又介绍了现有的各种端口扫描检测工具,并对它们的原理和功能进行了分析。检测端口扫描是防止系统被攻击的一个重要手段,是 IDS 的主要内容。文中第 21 页 共 23 页分析了端口扫描基本原理,总结了现有检测工具存在的主要问题,对现有检测工具原理进行了阐述。

61、本文所设计的端口扫描程序是基于 TCP 连接设计;端口检测是基于捕获数据包进行统计分析,能较好的解决普通扫描,并在一定程度上能检测出慢速扫描,尚未解决分布式扫描,本人水平有限和时间仓促,很多问题考虑不周全甚至可能有错误。所以请老师多多指正。参考文献参考文献1 Andrew S.Tanenbaum美.计算机网络M.北京:清华大学出版社,1998。2 Anonymous美.网络最高安全技术指南M.北京:机械工业出版社,1998。3 David A.Solomon美.计算机网络管理M.北京:清华大学出版社,1999。4 Douglas E.Comer美.TCP/IP 网络互连技术M.北京:清华大学出

62、版社,1998。5 David J.Kruglinski美.Visual C+ 技术内幕M.北京:清华大学出版社,1999。6 Anonymous美.网络入侵检测系统分析与设计M.北京:机械工业出版社,1998。7 W.Richard Stevens美.TCP/IP 详解M.北京:机械工业出版社,2000。8 张仕斌.网络安全技术M.北京:清华大学出版社,2004。第 22 页 共 23 页致致 谢谢本文是在赵攀老师和盛志伟老师的热情关心和指导下完成的,他们渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!在论文完成过程中,本人还得到了同事和

63、同学的热心帮助,本人向他们表示深深的谢意!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!作者简介:姓 名:谢欣 性别:男 出生年月:1983 年 11 月 18 日 民族:汉 E-mail: 第 23 页 共 23 页声声 明明本论文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明:本人完全了解成都信息工程学院有关保管使用学位论

64、文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定) 。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明! 作者签名: 年 月 日 第 24 页 共 23 页Are you hungry now?No, I am tired and lazy now; if I pursue you I will not cat

65、ch you, and if I catch you-through your own slowness and clumsiness-I will not kill you, and if I kill you I will not eat you.Nicholas had begun to back away, and at the last; words, realizing that they were a signal, he turned andbegan to run, splashing through the shallow water. Ignacio ran after

66、him, much helped by his longer legs, his hair flying behind his dark young face, his square teeth-each white as a bone and as big as Nicholass thumbnail-showing like spectators who lined the railings of his lips.Dont run, Nicholas, Dr. Island said with the voice of a wave. It only makes him angry that you run. Nicholas did not answer, but cut to his left, up the beach and among the trunks of the palms, sprinting all the way because he had no way of knowing Ignacio was not right behind him, about

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!