欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:3990570       资源大小:808KB        全文页数:33页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    毕业设计(论文)端口扫描与检测技术的实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:端口扫描与检测技术的实现摘 要随着Internet日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。而其中,端口扫描技术吸引了越来越多人的关注。端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。针对端口扫描技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。关键词:端口;端口扫描;数据包捕获;端口检测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 scanning draws people's 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. 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 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 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 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端口扫描概述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声 明231 引言随着科学技术的飞速发展,21世纪的地球人已经生活在信息时代。20世纪人类的两大科学技术成果计算机技术和网络技术,均已深入到人类社会的各个领域,Internet把“地球村”的居民们紧密联系在一起,“天涯若比邻”已然成为现实。互联网之所以能这样迅速蔓延,被世人所接受,是因为它具备特有的信息资源。无论对商人、学者,还是对社会生活中的普通老百姓,只要你进入网络的世界,就能找到其隐藏的奥妙,就能得到你所需要的信息。近年来Internet的迅速发展,给人们的日常生活带来了全新的感受,“网络生存”已经成为时尚,同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度已经越来越强,“网络经济”时代已初露端倪。然而,网络技术的发展在给我们带来便利的同时也带来了巨大的隐患,尤其是Internet和Intranet的飞速发展对网络安全提出了前所未有的挑战。技术是一把双刃剑,不法分子试图不断利用新的技术伺机攻入他人的网络系统,而肩负保护网络安全重任的系统管理员则要利用最新的网络技术来防范各种各样的非法网络入侵行为。事实已经证明,随着互联网的日趋普及,在互联网上的犯罪活动也越来越多,特别是Internet大范围的开放以及金融领域网络的接入,使得越来越多的系统遭到入侵攻击的威胁。而作为黑客入侵的前奏,端口扫描是最常见的信息获取手段,端口扫描的检测技术在当今已经越来越成为一个重要的课题。本文首先对端口扫描技术进行研究,并开发一个能查询目标主机端口开放情况的程序;然后重点研究端口扫描的检测技术,从对数据包的捕获和分析着手,再定义一个判断是否扫描的条件,并通过统计由定义的扫描条件判断是否存在端口扫描行为,不但能对一般的扫描、快速扫描能够检测,且在一定程度上对慢速扫描也能很好的检测。1.1 本课题研究的意义在今天快速发展的Internet中,黑客攻击方法层出不穷,网络的安全性已经越来越受到威胁。要保证计算机资源的保密性、有效性、完整性也变得越来越困难。端口扫描作为黑客攻击的一个重要方面,也在不停地向前发展,扫描手段已经变得越来越丰富,越来越隐蔽,越来越具有威胁性。如何有效的对端口扫描行为进行检测,已经是越来越重要的一个课题,这对于保证我们网络的安全性有着重要的意义,也是入侵检测系统(IDS)和入侵预防系统(IPS)的一个重点。1.2 本课题的研究方法本文分别对端口扫描技术以及端口扫描的检测技术作了研究,并设计出一个根据扫描者向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态的端口扫描程序,以及一个从网络信息的数据包的捕获和分析着手,通过统计判断是否存在端口扫描行为的端口扫描检测程序。2 端口扫描概述2.1 基本概念端口的含义:在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。我们这里将要介绍的就是逻辑意义上的端口。 端口分类:逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:按端口号分布划分:(1)知名端口(Well-Known Ports)知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。(2)动态端口(Dynamic Ports)动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配出一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。按协议类型划分:按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:(1)TCP端口TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。(2)UDP端口UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。2.2 端口扫描原理扫描者向目标主机的TCP/IP服务端口发送探测数据包,通过探测性数据包得到目标主机的响应并记录下来,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态。通常通过调用套接字函数connect ()连接到目标计算机上,完成一个完整的3次握手程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。端口扫描的第一步是向目标主机的TCP/UDP端口发送探测数据包,然后根据对方的回应判断端口是否开放。由于网络环境的差异以及操作系统对连接请求的应答并不一致,在端口扫描中支持多种扫描方式,以保证扫描的准确和快速。大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字支持对IP 报头的设置,即构造IP 数据包。同时,原始套接字也支持发送和接收IP数据包。这样,原始套接字接口实际上成为网络层向上提供的接口。实现时可通过调用Winsock2库中的函数setsockopt()来设置选项IP_HDRINCL,以获取自定义IP报头的权限。由于Windows2000仅支持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来计算IP报头和TCP报头的校验和。在填充TCP首部时,通过TCP伪首部填充TCP数据包的IP选项。事实上TCP伪首部并不是真正存在的,只是用于填充TCP的一些选项和计算校验和。调用setsockopt()设置选项IP_HDRINCL,根据填充TCP、IP报头的内容构造IP 数据包。设置侦听原始套接字的同步和超时之后,调用sendto()发送IP 数据包。发送原始套接字包流程图如图1所示:图1 发送原始套接字包流程图原始套接字包发送完后,就可以接收目标主机的回应。当发送原始套接字包时(如TCP SYN数据包),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应用程序上。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以再定义一个原始套接字,用来接收数据,并在套接字I/0控制函数中设置SIO_RCVALL,表示接收所有的数据。通过设置原始套接字的I/0控制命令,便可以调用recv()接收返回的数据包。一般情况下使用的是TCP SYN半连接扫描,由于TCPConnect()全连接扫描拥有很好的稳定性,这种技术用得非常多。通常通过调用套接字函数connect()连接到目标计算机上,完成一个完整的3 次握手过程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。以上实现的端口扫描,可以得到每个端口的状态,此处的状态并非端口本身的性质,而是对扫描结果的描述。端口状态可以分为5种:open(开放的)、closed(关闭的)、filtered(被过滤的)、unfiltered(未被过滤的)和open filtered(开放或者被过滤的)。2.3 端口扫描技术简介常用的端口扫描技术主要有以下几种:(1)TCP connect() 扫描这是最基本的TCP扫描。利用操作系统提供的connect系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,则connect就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的最大的优点是,用户不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以串行的方式,使用单独的connect()调用,那么将会花费相当长的时间,用户可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许设置一个较低的超时时限,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是否出错的服务消息,并且能很快地使它关闭。(2)TCP SYN扫描这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN/ACK 的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN/ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。 这种扫描技术的优点在于一般不会在目标计算机上留下记录,但这种方法的缺点是,必须要有root权限才能建立自己的SYN数据包,不过这个条件一般都是很容易满足的。(3)TCP FIN扫描有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会顺利通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。如果有的系统不管端口是否打开,都回复RST,那么这种扫描方法就不适用了。但这种方法在区分Unix和NT时是十分有用的。(4)IP段扫描这种不能算是新方法,只是其他技术的变化。它并不是直接发送TCP探测数据包,是将数据包分成二个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但一些程序在处理这些小数据包时会有些问题。(5)FTP返回攻击FTP协议的一个的特点是它支持代理FTP连接。即入侵者可以从自己的计算机和目标主机的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP,这是个推测,尽管RFC明确定义请求一个服务器发送文件到另一个服务器是可以的,但当前的大多数实现并不支持,因为这个特性“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙”。利用FTP返回攻击的目的是从一个代理的FTP服务器来扫描TCP端口。这样,用户能在一个防火墙后面连接到一个FTP服务器,然后扫描端口。如果FTP服务器允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口。对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录,结果通过Server-DIP发送出去。如果目标主机正在某个端口侦听,传输就会成功,(产生一个150或226的回应)否则,会出现“425 Cant build data connection:Connection refused.”。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。(6)UDP ICMP端口不能到达扫描这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此,这种扫描器必须还实现一个在包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率作了规定。同样,这种扫描方法需要具有root权限。(7)UDP recvfrom()和write()扫描。当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时会返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。(8)TCP反向ident扫描ident协议(rfc1413)允许看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。例如,扫描者能连接到Http端口,然后用ident来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。总之,为了避过目标系统的日志审计和防火墙的阻截,为了避过目标系统的端口扫描检测,入侵者往往会采用一系列方法来改变正常的端口扫描方式,以达成端口扫描的隐蔽性,这些方法包括:改变扫描端口的顺序、慢速扫描、端口扫描间隔随机化、随机化扫描包的其它区域、伪造源地址扫描和分布式扫描等。3 检测端口扫描概述3.1 端口扫描检测的分析端口扫描是一台主机对多个目标端口进行试探,包括打开的和没有打开的端口。这就为检测端口扫描提供了两条“线索”:一是“是否存在试图连接已经关闭端口的行为”;二是“在一段时间内,是否存在从一个源地址发出的数据包到达多个目的地址的行为”。检测端口扫描的方法主要有两种:一种是对主机没有对外提供服务的端口进行监听,如果检测到有对这样的端口的连接请求,就认为有扫描发生;另一种检测方法是对整个网络流量进行监控,检查网络中所有的数据,并对异常情况进行记录。在本文中,为了便于对端口扫描检测进行研究,从端口扫描检测的角度出发,把端口扫描技术分为普通扫描,慢速扫描及分布式扫描,并在后面的介绍中分别对不同的检测方法作了介绍。3.2 普通端口扫描检测技术概述目前比较常见的端口扫描就是一对一的扫描关系,如下图2所示,即只有一个扫描者,且扫描者从本身出发,不经过任何隐藏通过发送探测性数据包来判断目标主机的端口开放情况。图2 普通扫描技术针对这种一对一的普通或快速的端口扫描技术,目前端口扫描的检测技术采用的方法有Snort方法、Watcher方法和PortSentry方法等三种,都能很好的检测出这种扫描。它们进行端口扫描检测采用的算法大致可以概括如下:在M秒内,监测从同一源端发出的数据包, 如果其目的IP与目的端口的组合数目超出N的话, 则认为是一次扫描。Snort是一个轻量级的网络入侵检测系统。它的探测引擎采用模块化的插件结构,允许开发者扩展Snort的功能, 也可以使得用户可以按自己的需要定制功能。Snort检测端口扫描的方法是:在Y秒内, 如果检测到从同一个源发出,目的为不同的主机和端口的组合的TCP或UDP包的数目超出阈值X, 则认为是扫描。其中X和Y的值可以由用户自己设定。另外, Snort也同样可以检测有奇异标志的TCP包。Watcher是一个比较完整的基于网络的入侵检测系统的设计代码。它检测所有通过的信息包, 并且将它认为是恶意的攻击行为记录在syslog中。它的检测原理是:如果在短时间内有超过7个以上的端口收到信息包(不管类型如何) , 那么这一事件就被当成端口扫描记录下来。PortSentry是基于主机的网络入侵检测系统的一个组成部分,主要用来检测外部对主机的端口扫描,它能够对多种扫描方法进行检测。它的检测原理是:对没有开放服务的端口的访问有可能是一次扫描。通过监测没有开放服务的端口,在最近n次连接里由同一个源发起的连接超过X次则判断为一次扫描。以上几种扫描检测方法对端口扫描所采用的检测技术都比较简单,且存在以下缺点:(1)无法检测慢速扫描, 因为在检测中时间窗是个固定值, 只要扫描速度低于这个阈值, 攻击者就可以成功地逃避检测。当设定的时间阈值大到一定程度时,需要从相当长时间的网络连接记录中找出扫描行为,系统资源消耗较大,无法适应宽带网络尤其是高速网络环境; 从理论上讲,黑客总能够以略大于系统设定阈值的时间间隔进行端口扫描;(2)未考虑到受保护网段的特点, 对网段内所有主机都采用相同的检测策略, 效率不高而且容易导致误报。3.3 慢速端口扫描检测技术概述慢速端口扫描是在普通端口扫描技术上进化而来的,可以说是黑客技术提高的体现。通常普通端口扫描的扫描者对被扫描者发送探测性数据包都是快速的,被扫描者在进行捕包判断上就会显得比较容易,而慢速扫描与普通扫描一样,都是一对一,即扫描者和被扫描者都只有一个,但是其对目标主机发送探测性数据包的时间间隔上就变化很大,可以在1分钟发送一个探测性数据包后20分钟再继续发送探测性数据包,也或者在发送一个探测性数据包后时间就递增,产生一个时间上的变化,总之给检测端口扫描带来了极大的困难,这就需要用新的规则,新的技术来进行端口检测。在目前的慢速扫描检测技术中,模糊技术是应用的比较好的能检测出慢速端口扫描的新型技术。3.4 端口扫描的分布式检测概述在当前端口扫描技术中,比较难以检测的是分布式扫描,针对分布式扫描,不能采取对普通扫描及慢速扫描的检测方法。如下图3所示,分布扫描是指扫描者通过控制其他多台计算机对目标主机进行数据包探测,这样,被扫描者所捕获的数据包就是来自于不同的IP,但是实际扫描者通过所控制的计算机对应答数据包的分析依然能够判断出目标主机的端口开放情况,被扫描者虽然所捕获到的探测性数据包其IP是正确的,但是受到了IP欺骗,并没有判断出真正的扫描者,在这种情况下通常的检测方法对分布式扫描是无效的。当然,在分布式扫描的基础上加以慢速扫描,则是更加难以检测的扫描技术。图3 分布式扫描技术在当前的分布式扫描检测技术中,最常用的是在进行端口扫描检测时,将系统分成两个部分:第一部分是传感器,它的功能是判断一个包的异常程度,赋给包一个异常值。如果一个包有异常,则从网络数据中过滤出来,进行下一步的处理;如果一个包没有异常,则简单地丢弃。第二部分是分析器,它对异常包进行汇集、分类、分析。首先将异常包根据其不同特性分成不同的类,然后再对不同的类计算一个类的异常值总和。如果一个类的异常值总和超过了阈值,则判断为扫描。在分布式端口扫描检测系统中,传感器分布在一个大网的各个子网内,采集网络上的各种有关扫描异常数据;而分类器是一个汇总的分析器,通过汇总分析网络内各个子网的数据,可以更好地分析网络上出现的扫描情况。分布式检测方法具有很多优点:首先,它能够实现分布式扫描的检测。因为分布式扫描其扫描包具有一定的异常性,所以这些包可以被第一步的检测从网络数据中过滤出来。在第二步进行分类分析的时候,由于这些分布式扫描的包具有一个共同的特性,即扫描对象是同一个主机或同一个端口,因此它们可以被聚集到一个类里,从而被检测为扫描。其次,这种方法也能够检测慢速的扫描。由于网络上巨大的通信量,所以在以前的检测方法里检测时间窗T必须很小,否则会消耗掉太多的内存和CPU时间而瘫痪。而采用该方法,由于分析器只需分析处理异常包,因此可以取一个很大的时间窗T,从而检测出慢速的扫描。另外,分布式检测方法具有很好的实时性。由于传感器只需要判断一个包的异常程度,而不需要判断是否属于扫描,因此可以实现一个很快的异常包过滤器。而传统的检测方法,例如,SNORT在接收到一个包以后,首先检查包的结构,然后检查现有的扫描列表,相对来说是很费时间的。异常包的检测:首先,需要有一个准则来确定网络上一个包的异常程度。通过分析已有的一些检测工具、扫描工具、以及入侵者用以躲避扫描检测的方法,总结出下面的包是异常的包:(1)带有奇怪标志位的包有可能是扫描包;(2)没有正确的执行TCP协议握手过程的包有可能是扫描包;(3)连接后马上断开,没有具体协议内容的包,有可能是扫描包;(4)对没有开放服务的端口的连接包有可能是扫描包。扫描技术在进步,相应的检测技术也在相应提高,现今还出现了一种新的检测分布式扫描的方法,其原理是靠统计流量来进行判断,也能很好的检测出分布式扫描。但是由于网络上的流量非常的大,且相当的不固定,要定义一定时间内的流量有很大的困难,所以这种检测方法还存在很多缺陷,容易产生误判为端口扫描,也容易放过真正的端口扫描行为。3.5 主流的端口扫描工具常用的几种端口扫描检测器有:NSM(The Network Security Monitor)、Gr IDS、Snort和Portsentry等。NSM是最早的基于网络的入侵检测系统,它认为所有与大于15个其它主机建立连接的主机都是扫描者。这种算法是许多检测系统检测算法的雏形。Gr IDS通过建立网络连接拓扑图来检测端口扫描。它使用节点代表主机,如果主机间存在数据交换,就在相应的节点间连线。一次扫描试探就会在扫描者的主机和被扫描者的主机之间建立一条连线,Gr IDS通过计算一个节点上存在多少连线的方法判断是不是有端口扫描行为。这种方法不能检测秘密扫描,速度相对较慢,具体的端口扫描行为的判断需要人工完成。Snort是基于libpcap的一个源代码公开的轻量级的入侵检测系统。它的端口检测功能是通过一个嵌入程序来完成。Snort的扫描检测器通过计算“在时间X秒内有Y个TCP或UDP数据包从一个源地址发往不同的目的地址”来确定是否有端口扫描行为;Snort能查找单个不正常的TCP包。缺点是不能检测分布式扫描、慢速扫描,不能处理分片。Portsentry是基于主机的端口扫描检测器。它指定多个TCP/UDP端口进行监听,当这些端口被试图连接或扫描时,能在瞬间捕捉连接或扫描企图;它能有效捕捉非连续随机扫描,生成外界扫描动作的详细日志记录,并将发起扫描的主机地址写入tcp_wrapper的host.deny文件中,并重指扫描者路由,把信息流重定向到一个不存在的主机。缺点是仅限于对一台单机进行端口扫描分析;判断规则过于严格,正常的扫描容易被误认为是端口扫描行为。4 端口扫描的实现4.1 扫描程序的设计原理在进行端口扫描的设计与开发中,利用三次握手的原理,建立原始套接字,通过向目标主机的TCP/IP服务端口发送探测性数据包,并记录目标主机的响应情况,最后通过分析响应情况来判断目标主机服务端口是打开还是关闭,进而得知端口的状态。4.2 程序流程图如下图4所示,所开发的端口扫描流程图:图4 端口扫描流程图5 检测端口扫描的实现5.1 检测程序的设计原理在检测端口扫描程序的设计与开发中,这里首先是采取通过套接字来进行数据包的捕获,再通过解IP包,然后对所解出的TCP包和UDP包分别再进行解包,并记录下到达的端口,以及源IP地址,目的IP地址,目的端口,再设计一种算法,通过算法对数据包进行统计分析,最后设定一个判断发生扫描行为的条件,当满足条件有三次及三次以上的相同源IP且到达端口的不同的数据包即判断发生端口扫描行为。此检测端口扫描程序的设计不但可以检测一般的扫描和快速扫描,在一定的程度上也能检测慢速扫描。以前的端口扫描检测方法都是采用在一个固定的时间窗T内查看从同一个源地址发起的连接数X , 如果X 超出了设定的阀值, 则判断为一次扫描。由于网络上的通信量非常大, 所以以前的端口扫描方法都会设定一个很小的时间窗T ,防止消耗掉过多的内存和CPU时间。由于本文提出的方法与时间窗无关, 所以在不降低系统整体性能的前提下,在慢速扫描发送探测性数据包时间间隔上不超出所设计程序所能记录数据包的最大上限的情况下仍能很好的检测慢速扫描。5.2 程序流程图如下图5所示,所开发的检测端口扫描程序基本流程图:图5 端口检测流程图5.3 设计实现重点代码在此端口扫描检测程序设计中,重点在于设计一个算法,用于研究是否存在端口扫描行为,算法是此设计的重点。就此设计的检测程序来说,在捕获数据包后所解的TCP包和UDP包,由于在分析中要分别考虑TCP包和UDP包,但是对两种包的分析都是一样的,现我们只详细阐述分析TCP包的情况。在所设计用于检测端口扫描的算法中,首先是一个统计函数,用于对通过套接字捕获数据包的统计:void statistics(char szProtocol,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); +TCP_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函数即检测函数,此函数的作用是用于排除完全相同的数据包,由于在分析中不需要对完全相同的数据包进行分析,以免出现重复情况产生误判,所以在统计时候这里需要先把完全相同的数据包进行排除,以保证存入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) /比较TYPEi.szDestIP与szDestIP的值在和TYPEi.iSourcePort/的值做与运算,将得到的结果和port比较,是否相等 flag=false; break; return flag; 对所捕获的数据包进行统计后,接着是对所捕获的TCP包以及UDP数据包进行分析的分析函数,首先是一个用于存放不同IP的 rec,在这里我们用到一个临时变量temp,用于帮助对不同IP的提取,最后再根据所记录的不同IP到TCP_REC中进行提取符合IP的数据包信息,再存入tcp_tem中,在tcp_tem中就是

    注意事项

    本文(端口扫描与检测技术的实现毕业设计论文.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开