基于网络的漏洞扫描系统---毕业论文_第1页
基于网络的漏洞扫描系统---毕业论文_第2页
基于网络的漏洞扫描系统---毕业论文_第3页
基于网络的漏洞扫描系统---毕业论文_第4页
基于网络的漏洞扫描系统---毕业论文_第5页
免费预览已结束,剩余46页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本 科 毕 业 论 文 基于网络的漏洞扫描系统Vulnerability Scan System Based on Network 姓 名:学 号:学 院:软件学院 系:软件工程专 业:软件工程年 级: 指导教师: 年 月摘要随着互联网的日益普及,网络的安全问题越来越成为人们关注的焦点之一。而在所有安全事件中,99%的网络入侵都是基于已知的漏洞而产生的,因此检测并修补已知的安全漏洞对保证网络的安全起着非常重要的意义。基于网络的漏洞扫描系统是一种主动式的安全检测系统。它能够根据漏洞库中不同漏洞的特征,模拟黑客攻击的方式,向本地或远程主机发送一个或多个经过特殊构造的数据包,捕获并记录目标主机发回的应答数据包。通过这种方法,收集到目标主机的各种信息,并将这些信息与已有漏洞的特征进行匹配,从而发现目标主机上的各种安全漏洞。本文首先介绍了课题研究的背景和意义,以及安全漏洞的概念、产生的原因,并对几种常见的漏洞进行了分析。接下来研究了安全漏洞扫描中使用的一些关键技术,例如协议栈指纹识别技术、ICMP扫描技术、TCP扫描技术等,并在此基础上设计和实现了一个基于网络的漏洞扫描系统。该系统首先检测目标主机的存活状况,然后对远程主机操作系统版本进行识别,紧接着扫描该主机所开放的服务端口,在得到这些信息的基础上对目标可能存在的已知安全漏洞进行逐项检测,发现目标系统中存在的漏洞。在扫描结束时,给出扫描报告,从而让管理员及时发现当前网络中的安全隐患,修补系统中的漏洞,提高网络的安全性与抵御攻击的能力。关键词:漏洞;网络安全;漏洞扫描AbstractWith the increasing popularity of the Internet, network security is drawing more and more peoples attention. For all the security incidents, 99% of the network instrusions are based on the known vulnerabilities, so it is significant for network security that the known vulnerabilities should be detected and repaired.Vulnerability Scan System Based on Network is a type of active security detection system. It can immatate the way of hackers attacking to send one or more specially constructed data packets accourding to the feaures of different vulnerability, and then capture and record the echoing packets from target host. By this way, the information of target host is collected, then system compares them with the features of existing vulnerabilities, thus vulnerabilities of the target host will be found out.This article firstly introduces the background and significance of the research, and the definition of vulnerability, the cause of the vulnerability as well as the analysis of several common type of vulnerabilities. Then some key technologies are studiedy such as identification of protocol stack, ICMP scaning technology, TCP scaning technology, etc,based on which a system called Vulnerability Scan System Based on Network is designed and implemented.The system firstly detect the liveness of the target host, then its operation system version is detected, and next, the opening service ports is scaned, after the collection of these information, the system will check the hosts vulnerabilities one by one, find its existing vulnerabilities. After the scaning, a report is given which allows the administrator to find network sercurity vulnerabilities in time and fix them, which will rise the security level and the ability to defense network attacking.Key words: vulnerability; network security; vulnerabilities scan.目 录第一章 引言11.1 研究背景11.2 漏洞扫描技术的现状11.3 本文的内容及安排2第二章 相关理论及技术概述42.1 相关理论介绍42.1.1 漏洞概念42.1.2 漏洞成因72.1.3 常见漏洞类型82.2 相关技术介绍82.2.1 Winsock与原始套接字82.2.2 操作系统嗅探技术102.2.3 ICMP扫描技术112.2.4 TCP扫描技术132.3开发环境简介172.4本章小结17第三章 系统分析与设计183.1 整体设计183.1.1设计目标183.1.2系统结构183.1.3数据库设计203.2功能模块设计213.2.1存活主机检测213.2.2操作系统嗅探223.2.3端口扫描233.2.4漏洞扫描243.3本章小结25第四章 系统的实现264.1存活主机检测模块的实现264.2操作系统嗅探模块实现274.3端口扫描模块实现294.4漏洞扫描模块实现304.5本章小结34第五章 系统演示355.1 演示环境355.2 演示结果355.2.1 主机检测365.2.2 操作系统嗅探365.2.3 端口探测365.2.4 漏洞扫描385.3 本章小结38第六章 总结与展望396.1总结396.2展望39参考文献41致谢4243ContentChapter 1 Intrudoction11.1 Background11.2 Status of Current Vulnerabilities Techniques11.3 Content and Structure of This Paper2Chapter 2 Related Conceptions and Technologies42.1 Introduction of Related Conceptions42.1.1 Concept of Vulnerability42.1.2 Course of Vulnerability72.1.3 Common Vulnerabilities82.2 Related Technologies82.2.1 Winsock and Raw Socket82.2.2 Operation System Detection102.2.3 ICMP Scan Technology112.2.4 TCP Scan Technology132.3 Development Environment172.4 Chapter Summary17Chapter 3 System Analysis and Design183.1 General Design183.1.1 Goal of Design183.1.2 System Structure183.1.3 Database Design203.2 Functional Module Design213.2.1 Living Hosts Detection213.2.2 Operation System Detection223.2.3 Ports Scan233.2.4 Vulnerabilities Scan243.3 Chapter Summary25Chapter 4 System Realizations264.1 Realization of Host Detection264.2 Realization of Operation System Detection274.3 Realization of Port Scan294.4 Realization of Vulnerabilities Scan304.5 Chapter Summary34Chapter 5 System Demonstrations355.1 Demonstration Environment355.2 Demonstration Result355.2.1 Host Detection365.2.2 Operation System Detection365.2.3 Ports Scan365.2.4 Vulnerabilities Scan385.3 Chapter Summary38Chapter 6 Conclusions and Further Works396.1 Summary396.2 Future Works39References41Acknowledgements42第一章 引言第一章 引言1.1 研究背景现代社会中,计算机网络已经成为人们生活中不可缺少的组成部分,但是网络技术在给我们带来方便的同时也带来了巨大的安全隐患。特别是近些年来,计算机网络犯罪日益猖獗,从上世纪的蠕虫、CHI到最近几年的灰鸽子、熊猫烧香以及最近出来的鬼影,安全问题给人们带来一次又一次沉重的教训。据美国联邦调查局调查显示,全美大约有280万个公司和组织都至少遇到过一次计算机安全问题,平均每一家遭受到了2.4万美元的损失,如此,一年内的损失总额可能会达到672亿美元。1我们网络环境之所以不安全,是因为它存在着漏洞,每一个网络系统都有已被发掘的或潜在的尚未被发掘的各种安全漏洞,漏洞是无法避免的,不存在绝对安全的网络系统。对于安全漏洞引起的问题,采用事先检测系统的脆弱点防患于未然,是减少损失的有效办法。通常黑客进行攻击前,会首先收集目标网络系统的信息,确定目标网络的状态,如操作系统版本类型、开放端口、运行服务等,然后再实施具有针对性的攻击。对目标网络系统信息的获取,主要是通过漏洞扫描完成的。我们可以通过同样的方式来评估网络的安全性能。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的服务器的各种TCP端口的分配、提供的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。从而在计算机网络系统安全防护中做到有的放矢,及时修补漏洞,构筑安全的网络体系。2漏洞扫描是一把双刃剑,它作为网络安全评测的重要工具,可以帮助系统管理员评估主机和网络的安全性能,发现网络中潜在的安全漏洞,提高网络的抗攻击能力;但是也可能被网络入侵者所利用,作为收集网络主机信息的重要手段。21.2 漏洞扫描技术的现状目前,在网络安全领域,安全扫描技术、入侵检测技术、防火墙技术和病毒检测技术构成网络安全4种主要技术。后3种技术都是在攻击进行中或者进行后的被动检侧,而安全扫描技术则是在攻击进行前的主动检测。3安全扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置,脆弱的口令以及其他同安全规则抵触的对象进行检查;而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利用被动式策略扫描称为系统安全扫描,利用主动式策略扫描称为网络安全扫描。 目前安全漏洞扫描主要使用的检测方案4:(1)基于应用的检测技术它采用被动的、非破坏性的办法检查应用软件包的设置,发现安全漏洞。(2)基于主机的检测技术它采用被动的、非破坏性的办法对系统进行检测。通常,它涉及到系统的内核,文件的属性,操作系统的补丁等问题。这种技术还包括口令解密,把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,发现系统的漏洞。它的缺点是与平台相关,升级复杂。(3)基于目标的漏洞检测技术它采用被动的、非破坏性的办法检查系统属性和文件属性,如数据库,注册号等。通过消息文摘算法,对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,不断地处理文件,系统目标,系统目标属性,然后产生检验数,把这些检验数同原来的检验数相比较。一旦发现改变就通知管理员。(4)基于网络的检测技术它采用积极的、非破坏性的办法来检验系统是否有可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。网络检测技术常被用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。1.3 本文的内容及安排本文详细介绍了安全漏洞的基本知识,漏洞扫描的核心技术与方法,如存活主机检测、基于协议栈指纹识别技术的操作系统嗅探,端口扫描及一些常见漏洞的扫描。在此基础上设计并实现了一个简单的漏洞扫描系统。全文共六章,章节安排如下:第一章:引言。介绍课题背景,漏洞扫描技术的现状以及本文的研究内容和组织结构。第二章:相关理论及技术概述。介绍了安全漏洞的概念、成因及一些常见漏洞分析。阐述了Winsock与原始数据包、存活主机检测、操作系统嗅探、ICPM扫描、TCP扫描等相关技术。另外还介绍了本系统的开发环境。第三章:系统分析与设计。阐述系统的整体结构,工作原理、各模块的设计及模块之间的联系,数据库的设计等。第四章:系统的实现。根据第三章的设计,将本系统各个功能模块的实现作了详细的介绍。第五章:系统演示。简单演示了各个模块的功能。第六章:总结与展望。总结了本文的工作与本系统的特点,并提出了一些改进措施。第二章 相关理论及技术概述这一章将介绍相关理论及技术,包括漏洞的概念、成因及常见漏洞的分析,Winsock与原属数据包的相关知识,基于协议栈指纹识别技术的操作系统嗅探原理和TCP、ICMP扫描等技术。最后简要介绍了一下系统的开发环境。2.1 相关理论介绍2.1.1 漏洞概念漏洞(Vulnerability):也称脆弱性,是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。5具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Send mail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。6系统安全漏洞是在系统具体实现和具体使用中产生的错误,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。6漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题第二章 相关理论及技术概述也会长期存在。因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。2.1.2 漏洞成因网络的安全符合木桶原理,入侵者只要找到复杂计算机网络中的一个缝隙,就能轻而易举地闯入系统。所以,了解这些缝隙可能存在的地方以及产生的原因,对检测及修补他们起着至关重要的意义。通常产生这些缺陷的方面主要表现在系统设计、口令设置、数据未加密、软件bug等。6 设计上的缺陷: TCP/IP协议在设计之初首先考虑的是网络互连而不是网络安全,它是假定工作在可信环境下的,而且由于TCP/IP协议是完全公开的,入侵者可以随意地伪造或修改数据包而不被发现,从而达到一些不正当的目的。这使得我们的网络环境变得很不安全、很不可靠。 口令设置过于简单:(1)口令被猜测:很多人经常使用自己的电话号码,生日等作为登陆口令,有的人甚至采用像“abc”、“111111”、“123456”等简单的字符串。这些口令过于简单,很容易被入侵者猜测并加以利用。(2)字典攻击:入侵者使用一个程序,该程序借助一个包含用户名和口令的字典数据库,不断地尝试登录系统,直到成功进入。毋庸置疑,这种方式的关键在于有一个好的字典。(3)暴力破解:与字典攻击类似,不同的是暴力破解会把所有的字符串组合都试一遍。例如包含6个数字的口令有一百万种组合,1个包含大小写且标点符号的7字符口令大约有10万亿种组合。对于后者,一般的计算机要花费大约几个月的时间才能试验一遍。可见,长口令是保证系统安全的有效措施。 数据未加密:抓包程序轻而易举的就能够抓到所有经过该节点的数据流,若我们的数据未加密,那么它就会完全暴露在入侵者面前,系统就毫无安全性可言。(1) 共享介质:传统的以太网结构很便于入侵者在网络上放置一个嗅探器就可以查看该网段上的通讯数据,但是如果采用交换型以太网结构,嗅探行为将变得非常困难。(2) 服务器嗅探:交换型网络也有一个明显的不足,入侵者可以在服务器上特别是充当路由功能的服务器上安装一个嗅探器软件,然后就可以通过它收集到的信息闯进客户端机器以及新任的机器。例如,虽然不知道用户的口令,但当用户使用Telnet软件登录时就可以嗅探到他输入的口令了。(3) 远程嗅探:许多设备都具有RMON(Remote monitor,远程监控)功能以便管理者使用公共体字符串(public community strings)进行远程调试。随着宽带的不断普及,入侵者对这个后门越来越感兴趣了。 编写软件存在bug:无论是服务器程序、客户端软件还是操作系统,只要是用代码编写的东西,都会存在不同程度的bug,常见的主要有以下几类:(1) 缓冲区溢出:指入侵者在程序的有关输入项目中了输入了超过规定长度的字符串,超过的部分通常就是入侵者想要执行的攻击代码,而程序编写者又没有进行输入长度的检查,最终导致多出的攻击代码占据了输入缓冲区后的内存而执行。(2) 意料外的联合使用问题:一个程序经常由功能不同的多层代码组成,甚至会涉及到最底层的操作系统级别。入侵者通常会利用这个特点为不同的层输入不同的内容,以达到窃取信息的目的。例如:对于由Perl编写的程序,入侵者可以在程序的输入项目中输入类似“mail/etc/password”的字符串,从而使Perl让操作系统调用邮件程序,并发送出重要的密码文件给入侵者。(3) 不对输入内容进行预期检查:有些编程人员怕麻烦,对输入内容不进行预期的匹配检查,使入侵者输送炸弹的工作轻松简单。(4) Race conditions:多任务多线程的程序越来越多,在提高运行效率的同时,也要注意Race conditions的问题。比如说:程序A和程序B都按照“读/改/写”的顺序操作一个文件,当A进行完读和改的工作时,B启动立即执行完“读/改/写”的全部工作,这时A继续执行写工作,结果是A的操作没有了表现!入侵者就可能利用这个处理顺序上的漏洞改写某些重要文件从而达到闯入系统的目的。2.1.3 常见漏洞类型漏洞的种类很多,据CVE(通用漏洞披露)的统计资料现在已经有几千种,其中以CGI漏洞最多,而SMTP漏洞以及缓冲区溢出漏洞的出现频率最高,以下针对几种比较常见的漏洞加以介绍。 CGI漏洞:CGI (Common Gateway Interface) 即公共网关接口,它是一种与Web服务器通信的标准接口。 CGI 主要有两项功能:1.用于收集从浏览器发送给Web 服务器的信息,并使这些信息能供其他程序使用; 2.对提出请求的浏览器回送服务器处理的结果。7由于CGI程序开发者的疏忽,许多CGI程序存在各种危险程度的漏洞。例如有的CGI程序允许远程攻击者在WEB服务器上执行任意的命令,可能对服务器造成破坏;有些CGI程序本身、或者被其调用的函数缺乏对用户输入数据的合法性检查,未能滤除一些特殊字符,使得入侵者可以通过构造请求来达到入侵的目的。比如,缺乏对“”的过滤,可能导致入侵者读取系统的任意文件;有些CGI程序会向客户端浏览器返回某些敏感信息,比如脚本所在路径、HTTP根目录所在路径、Perl版本、server_admin、server_name、PATH环境变量等,这些都为黑客的攻击提供了便利。7目前,大多数网站都使用免费的公共CGI脚本程序去驱动各自的Web服务,从而导致有缺陷的CGI脚本在Internet上泛滥开来。因此,对CGI脚本的安全性应高度重视。 SMTP漏洞:SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议的简称。SMTP协议出于TCP/IP协议的应用层包,但事实上它与传输系统和机制无关,仅要求一个可靠的数据流通道。尽管SMTP服务已经在RFC中被详细的定义,但在具体实现中各个软件开发商并没有很好的遵循RFC的规定,因此我们可以通过实现上的细小差异来进行探测活动。通过发送特定的、非标准的数据包来获得指纹信息,可以进而判断出目标主机使用的软件版本信息。 FTP漏洞:FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务也存在多种漏洞,包括拒绝服务攻击漏洞、缓冲区溢出漏洞等等,以FTP弱口令为例,因为ftp服务器上可能存在匿名用户或者弱势密码用户,所以黑客常利用该缺陷进行攻击。例如发现ftp匿名用户后,可以再借助系统的其他漏洞通过匿名用户提升权限。开放匿名用户经常会给系统带来一些安全隐患。 DOS漏洞:DOS是Denial of Service的简称,即拒绝服务。任何对服务的干涉如果使得其可用性降低或者失去可用性均成为拒绝服务。如果一个计算机系统崩溃或其带宽耗尽或其硬盘被填满,导致其不能提供正常的服务,就构成拒绝服务。造成DOS的攻击行为被称为DOS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DOS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。 Finger漏洞: Finger是UNIX系统中用于查询用户情况的实用程序。UNIX系统保存了每个用户的详细资料,包括E-mail地址、账号,在现实生活中的真实姓名、登录时间、有没有未阅读的信件,最后一次阅读E-mail的时间以及外出时的留言等资料。当用Finger命令查询时,系统会将上述资料一一显示在终端计算机上。使用Finger可以查询Internet主机内任意用户的某些公开信息,因此,它为黑客提供了大量有用的信息:如用户名列表、用户登录信息和一些能够用来猜测密码的信息等。特别要指出的是,79端口是专为Finger服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息 2.2 相关技术介绍2.2.1 Winsock与原始套接字Windows Sockets简称WinSock,是Windows下的网络编程规范,为应用程序提供了开放的、支持多种协议的网络编程接口。它定义了如何通过API实现与internet协议族的连接。应用程序通过调用Windows Sockets的API实现相互之间的通信,而实际的工作是通过下层的网络通信协议和操作系统实现的。在七层网络协议中,WinSock主要控制数据的输入和输出,也就是传输层和网络层,屏蔽了数据链路层和物理层。Winsock API函数有1.1版本和2.0版本。经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程的事实上的标准。8Winsock 2.0为上层应用程序提供的一种标准网络接口,而不是协议,所以它可以用于发现和使用任意数量的底层传输协议所提供的通信能力。上层应用程序不用关心Winsock实现的细节,它为上层应用程序提供透明的服务最开始的Winsock是围绕着TCP/IP协议运行的,但是在Winsock 2. 0中却增加了对更多传输协议的支持.Winsock2.0不仅提供了一个供应用程序访问网络服务的Window socket应用程序编程接口(API:Application Programming Interface),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI:Service Provider Interface)和ws2_ 32. d11。Winsock 2. 0引人的这个新功能(SPI技术)打破了服务提供者的透明,让开发者可以编写自己的服务提供程序,SPI以动态链接库(DLL)的形式存在,它工作在应用层,为上层API调用提供接口函数。在网络安全扫描中要构造各种不同的数据报,如TCP数据包,UDP数据包及ICMP数据包,可以利用Winsock的原始套接字来实现。并且在分析返回数据时要捕获网络数据包,此时也可以使用Winsock的原始套接字。原始套接字能够根据需要生成用户想要的数据报文,包括报头和数据报本身的内容,而且能够对网络底层的传输制进行控制。对于一般的流套接字或数据报套接字,开发人员只能处理封装在TCP或 UDP协议中的数据。而原始套接字则提供了一种直接访问底层IP协议的方法。它主要提供了以下几种TCP及UDP套接字所不能提供的功能:8(1) 使用原始套接字可以读写包含在IP包中的其它协议数据报,如ICMP、IGMP、OSPF等。(2)利用原始套接字,使用IP_HDRINCL套接字选项可以构造IP包头部。(3)利用原始套接字,使用I/O控制命令SIO_RCVALL可以捕获网上所有的IP在构造数据包的时候,要按照协议规定封装数据,入栈的封装过程如图2-1所示。图2-1:数据进入协议栈时的封装过程 要注意的是由于TCP、UDP、ICMP、和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标示,以表明数据属于哪一层。为此,IP在首部存入一个长度为8bit的数值,称作协议域。1表示ICMP协议,2表示IGMP协议,6表示TCP协议,17表示UDP协议。92.2.2 操作系统嗅探技术在网络信息安全系统,尤其是安全评估系统中,信息的收集和分析至关重要,对操作系统进行踩点,识别目标操作系统则是其中不可获取的一个组成部分。因为各种各样的漏洞依附于不同的操作系统之上,只有精确地识别出目标主机操作系统的类型,才能更有目的性地发掘漏洞和弱点所在,准确地对目标主机进行评估。当前流行的主动操作系统探测方法主要分为TCP/IP栈指纹识别和ICMP栈指纹识别。在TCP/IP栈指纹识别中,通过设置IP头部和TCP头部标志位的不同值,观察回复报文标志位的设置等诸多情况,分析操作系统类型;ICMP栈指纹识别探测主要通过发送ICMP Echo Request、Timestamp Request和Information Request等报文进行探测,通过分折回复报文的IP头、ICMP头部的相关标志位的设置情况来区分操作系统类型。以下举例说明不同系统对ICMP响应的差别8。 IP 总长度: 一些系统会正常响应该域的值,而某些操作系统(如BSD家族系列)会在原始IP总长度域上增加20字节(sizeof(ipheader),这是因为其内部错误处理数据包的结果。(注意: 同样的数据包如果从SOCK_RAW读取的话,返回的数据包ip_len字段将会减掉20字节). IP/UPD 头校验和: 一些操作系统会错误计算这个域,某些系统会填充0值,而有些系统能正确响应这个值。 DF位响应:些TCP/IP堆栈会在ICMP错误数据包中响应DF位,其他的(如Linux)会拷贝全部八位位组,并部分位清零,再有的是会忽略这个位而设置其自身相关的值。 IP ID字段:基于Linux 2.4.0 - 2.4.4 内核的Linux机器会在ICMP查询请求和应答信息中设置IP标识为零值。而在Linux2.4.5和以上版本中得到改正。 ICMP回显请求code字段: ICMP回显请求信息(类型8)中ICMP代码段的值不等于0时,操作系统会使用ICMP回显应答对发送方的查询进行回答,基于Microsoft的操作系统会发回在ICMP回显应答中ICMP代码类型设置为0的数据包,而其他操作系统和网络设备则会使用ICMP回显请求中相同的ICMP代码段值。以上列举了几种不同系统对发送方区别响应的情况。当我们收集到足够的信息之后,就可以判断出目标主机所使用的操作系统。信息越详细,探测的结果就越准确,能够辨别的操作系统也就越多。2.2.3 ICMP扫描技术ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的子协议,用于在IP主机、路由器之间传递控制消息。一般来说,ICMP报文提供针对网络层的错误诊断、拥塞控制、路径控制和查询服务四项功能。例如,当一个分组无法到达目的站点或TTL超时后,路由器就会丢弃此分组,并向源站点返回一个目的不可达的ICMP报文。11ICMP报文大体上可以分为两种类型,即:ICMP差错报文和ICMP查询报文。常用的ICMP报文有ICMP回显请求、ICMP地址掩码请求、ICMP时间戳请求和ICMP端口不可达报文。格式如图2-1所示。图2-2:ICMP协议报文格式ICMP回显请求/应答报文是一种双向信息查询报文,用于获取某些有用信息,以便进行网路故障诊断和网络控制。常用的ping程序就是基于ICMP回显请求实现的。ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码,系统将广播它的ICMP请求报文。ICMP端口不可达报文是ICMP目的不可达报文中的一种,可以从ICMP差错报文中所附加的数据中查看错误信息。ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,是协调的统一时间(Coordinated Universal Time,UTC),它是世界各地通用标准时间,也叫世界时。这种ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间只能提供秒级的分辨率。最常用的ICMP扫描方法就是利用PING的原理,发送ICMP回显请求报文,然后监听是否有ICMP回显应答报文返回,如果没有就证明目标主机不存在或者已经停机,如果能够返回ICMP回显应答报文,就证明主机正在运行6。其过程如图2-3所示。图2-3:ICMP回显请求2.2.4 TCP扫描技术利用TCP协议来进行端口扫描是常见的扫描方法,因为现在的很多网络应用程序都是基于TCP协议来实现的,例如Web服务器就是基于TCP的80号端口6。TCP是一个面向连接的协议,格式如图2-4所示:图2-4:TCP协议格式端口号对应服务类型,也是TCP通信与应用程序的接口,每个TCP通信程序都有一个TCP端口,或者是临时的端口或者是固定的端口。一个四元组(客户机IP,客户端口,服务器IP,服务器端口)对应一个完整的TCP连接。TCP协议提供完全可靠的、面向连接的、全双工的、流传输服务。它与IP协议同时使用,保证了网络上不同主机在通信时数据传输的可靠、高效。TCP的可靠传输是通过三次握手过程实现的。TCP中有六个标志位,其中URG 表示紧急指针,ACK 表示确认号,RSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。RST 置1时重建连接,如果接收到RST位,通常表明发生了某些错误。SYN 置1时用来发起一个连接。FIN 置1时表示发送端完成发送任务,用来释放连接,表明发送方已经没有数据发送了。TCP正常连接也称为三次握手过程,在这个过程中的第一个报文的代码类型设置为SYN,序列号为m,表示开始一次握手。接收方接收后,向发送者发回一个报文。代码类型设置为SYN和ACK,序列号设置为n,确认序列号设置为m+1。发送者在收到这个报文后,就可以进行TCP数据发送,于是,它又向接收者发送一个ACK段,表示双方的连接已经建立。在完成握手之后,就开始正式的数据传输。上面握手段中的序列号都是随机产生的。一个正常的TCP连接过程如图2-5所示。9图2-5:TCP建立连接的三次握手TCP 用三个报文建立一个链接,而终止连接时需要四个报文。原因在于被动关闭链接一方需要关闭处理时间,因此 ACK 和 FIN 不能同时发给主动关闭一方7。如图2-6所以。图2-6:TCP终止连接的四次握手TCP扫描技术主要有TCP FIN扫描、TCP ACK扫描、TCP SYN扫描。 TCP FIN扫描: TCP FIN扫描使用的是FIN标志,如果发送一个FIN标志的TCP报文到一个关闭的端口,那么应该返回一个RST报文,如果发送到一个开放的端口,那么端口可能没有任何反应。如果收到ICMP端口不可达错误数据包,则不能确认是否开放或者关闭,称为状态未知端口。8 TCP FIN扫描的过程如图2-7所示。图2-7:TCP FIN扫描过程构造含有FIN标志的TCP数据包到目标主机B的某一个端口,如果返回含有RST的TCP报文,那么表示端口关闭,如果没有任何反应,则有可能表示端口打开,如果产生ICMP差错报文,则端口的状态是未知。由于网络环境的复杂性,或者由于有防火墙或存在其他网络过滤设备,阻碍了正常的数据流程,TCP FIN扫描将无法明确判断端口是否打开。另外,对Windows系统而言,TCP FIN扫描是无效的。 TCP ACK扫描:TCP ACK扫描是利用标志位ACK,而ACK标志在TCP协议中表示确认序号有效,它表示确认一个正常的TCP连接。但是在TCP ACK扫描中没有进行正常的TCP连接过程,实际上是没有真正的TCP连接。使用TCP ACK扫描不能够确定端口的关闭或者开放,因为当发送给对方一个含有ACK表示的TCP报文的时候,都返回含有RST标志的报文,无论端口是开放或者关闭。所以,不能使用TCP ACK扫描来确定端口是否开放或者关闭。但是可以利用它来扫描防火墙的配置,用它来发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。8 TCP SYN扫描: TCP SYN扫描是一个半开放扫描形式,它利用了TCP 三次握手中的一个步骤,也就是传送SYN标志这个步骤,其他的后续步骤没有发生。而SYN标志在TCP协议中表示发起一个新的连接,但如果只是发送了一个SYN标志,后续的三次握手过程没有。8不同的端口状态会返回不同的响应数据包,如果是开放的端口,那么会返回一个含有SYN+ACK标志的TCP报文,如果端口是关闭的,那么会反馈一个含有RST标志的报文。其过程如图2-8所示。图2-8:TCP SYN扫描过程主机A扫描主机B,构造一个带有ACK标志的TCP数据包发送给主机B的一个端口,如果对方返回一个带有SYN和ACK的TCP数据包,那么就表示端口是开放的,如果返回一个带有RST的TCP数据包,那么就表示端口关闭。2.3开发环境简介操作系统:Windows 2000 Professional开发工具:Microsoft Visual C+ 6.0; Eclipse-SDK-3.2-win32数据库:MySQL 5.0.18本系统涉及到原始数据包的构造和发送,Windows 2000系统提供了对原始数据包的有效支持,因此本系统选择了Windows 2000 Professional 操作系统作为开发平台。本系统后台部分主要使用C语言开发,在Windows平台下,VC+是最强大的C语言开发工具,而前台部分则是使用java开发的,因此选用了Eclipse。MySQL是一个小型关系型数据库管理系统,由于其体积小、速度快、成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站成本而选择了MySQL作为网站数据库。作为试验性项目,为了降低开发成本,加快开发灵活性与开发速度,本系统采用MySQL 最新版5.0.18版本。2.4本章小结本章第一节介绍了有关漏洞的相关知识,漏洞的概念、形成的原因等,并详细介绍了CGI漏洞、SMTP漏洞、FTP漏洞、DOS漏洞及Finger漏洞。第二节分析了漏洞扫描的一系列相关技术。最后在第三节简要介绍了一下系统的开发环境。第三章 系统分析与设计第三章 系统分析与设计通过前面对漏洞相关概念及技术的讨论,本章设计了一个基于网络的漏洞扫描系统,明确了设计目标,给出了整体架构和系统流程,并简单介绍了各个模块的设计及数据库的设计。3.1 整体设计3.1.1设计目标此系统作为一个网络安全体系的评估工具,应为网络管理员、普通个人等不同用户提供友好的操作界面,应具备快速、准确的扫描能力。具体如下:(1)针对普通非专业用户,提供图形化界面,友好的操作方式。(2)针对专业用户,如网络管理员,提供命令行操作方式,使之能够方便地使用各个模块的功能。(3)接受用户的扫描任务,允许用户设置扫描参数,如IP地址段,端口号等。(4)在一定时间内完成扫描任务并将生成的报告整理成报告文档提交给用户。3.1.2系统结构系统的功能性模块主要有远程主机检测模块、端口扫描模块、操作系统嗅探模块、漏洞扫描模块。功能性模块将在下文中详细介绍。用户配置模块是系统为用户提供的操作界面;配置文件是系统运行时需要读取的一些参数,比如默认的端口列表等。多线程处理则应用于各模块当中。扫描过程中得出的结果将会被存放在临时文件中,待扫描结束后,系统将会整理这些结果并生成一份扫描报告提供给用户。如图3-1所示。远程主机探测模块接收用户设置的IP段参数,该模块将会对该IP段中的远程主机进行逐一扫描,以确定主机是否处于活跃状态。如果处于活跃状态,则调用端口扫描模块对目标主机进行端口扫描,否则跳过该IP。端口扫描模块在接到扫描任务后,立刻读取默认的或者是用户设置的端口扫描参数,然后开辟端口扫描线程对远程主机端口进行一一扫描。在端口扫描过程中,如果发现开放的服务端口有对应于该服务的漏洞扫描模块,则调用相应的漏洞扫描模块进行漏洞扫描。否则跳过该端口。漏洞扫描模块在接到扫描任务后,则开辟漏洞扫描线程执行漏洞扫描任务。至此,扫描任务完成。如图3-2所示。图3-1:系统整体模式图图3-2:系统流程图3.1.3数据库设计本系统的数据库用来存放扫描时所用到的数据信息,系统中各模块独立性较强,因此本数据库中的各表之间的独立性也很高,表与表之间联系很小。系统中主要使用表有存放操作系统版

温馨提示

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

评论

0/150

提交评论