1、在扫描结束时,给出扫描报告,从而让管理员及时发现当前网络中的安全隐患,修补系统中的漏洞,提高网络的安全性与抵御攻击的能力。关键词:漏洞;网络安全;漏洞扫描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
2、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 accourdi
3、ng 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
4、.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, I
5、CMP 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 s
6、caned, 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 sec
7、urity level and the ability to defense network attacking.Key words: vulnerability; network security; vulnerabilities scan.Content第一章 引言 研究背景现代社会中,计算机网络已经成为人们生活中不可缺少的组成部分,但是网络技术在给我们带来方便的同时也带来了巨大的安全隐患。特别是近些年来,计算机网络犯罪日益猖獗,从上世纪的蠕虫、CHI到最近几年的灰鸽子、熊猫烧香以及最近出来的鬼影,安全问题给人们带来一次又一次沉重的教训。据美国联邦调查局调查显示,全美大约有280万个公司和
8、组织都至少遇到过一次计算机安全问题,平均每一家遭受到了万美元的损失,如此,一年内的损失总额可能会达到672亿美元。1我们网络环境之所以不安全,是因为它存在着漏洞,每一个网络系统都有已被发掘的或潜在的尚未被发掘的各种安全漏洞,漏洞是无法避免的,不存在绝对安全的网络系统。对于安全漏洞引起的问题,采用事先检测系统的脆弱点防患于未然,是减少损失的有效办法。通常黑客进行攻击前,会首先收集目标网络系统的信息,确定目标网络的状态,如操作系统版本类型、开放端口、运行服务等,然后再实施具有针对性的攻击。对目标网络系统信息的获取,主要是通过漏洞扫描完成的。我们可以通过同样的方式来评估网络的安全性能。漏洞扫描器是一
9、种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的服务器的各种TCP端口的分配、提供的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。从而在计算机网络系统安全防护中做到有的放矢,及时修补漏洞,构筑安全的网络体系。2漏洞扫描是一把双刃剑,它作为网络安全评测的重要工具,可以帮助系统管理员评估主机和网络的安全性能,发现网络中潜在的安全漏洞,提高网络的抗攻击能力;但是也可能被网络入侵者所利用,作为收集网络主机信息的重要手段。 漏洞扫描技术的现状目前,在网络安全领域,安全扫描技术、入侵检测技术、防火墙技术和病毒检测技术构成网络安全4种主要
10、技术。后3种技术都是在攻击进行中或者进行后的被动检侧,而安全扫描技术则是在攻击进行前的主动检测。3安全扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置,脆弱的口令以及其他同安全规则抵触的对象进行检查;而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利用被动式策略扫描称为系统安全扫描,利用主动式策略扫描称为网络安全扫描。目前安全漏洞扫描主要使用的检测方案4:(1)基于应用的检测技术它采用被动的、非破坏性的办法检查应用软件包的设置,发现安全漏洞。(2)基于主机的检测技术它
11、采用被动的、非破坏性的办法对系统进行检测。通常,它涉及到系统的内核,文件的属性,操作系统的补丁等问题。这种技术还包括口令解密,把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,发现系统的漏洞。它的缺点是与平台相关,升级复杂。(3)基于目标的漏洞检测技术它采用被动的、非破坏性的办法检查系统属性和文件属性,如数据库,注册号等。通过消息文摘算法,对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,不断地处理文件,系统目标,系统目标属性,然后产生检验数,把这些检验数同原来的检验数相比较。一旦发现改变就通知管理员。(4)基于网络的检测技术它采用积极的、非破坏性的办法来检验系统是否有
12、可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。网络检测技术常被用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。 本文的内容及安排本文详细介绍了安全漏洞的基本知识,漏洞扫描的核心技术与方法,如存活主机检测、基于协议栈指纹识别技术的操作系统嗅探,端口扫描及一些常见漏洞的扫描。在此基础上设计并实现了一个简单的漏洞扫描系统。全文共六章,章节安排如下:第一章:引言。介绍课题背景,漏洞扫描技术的现状以及本文的研究内容和组织结构。第二章:相关理论及技术概述。介绍了安全漏洞的概念、成因及
13、一些常见漏洞分析。阐述了Winsock与原始数据包、存活主机检测、操作系统嗅探、ICPM扫描、TCP扫描等相关技术。另外还介绍了本系统的开发环境。第三章:系统分析与设计。阐述系统的整体结构,工作原理、各模块的设计及模块之间的联系,数据库的设计等。第四章:系统的实现。根据第三章的设计,将本系统各个功能模块的实现作了详细的介绍。第五章:系统演示。简单演示了各个模块的功能。第六章:总结与展望。总结了本文的工作与本系统的特点,并提出了一些改进措施。第二章 相关理论及技术概述这一章将介绍相关理论及技术,包括漏洞的概念、成因及常见漏洞的分析,Winsock与原属数据包的相关知识,基于协议栈指纹识别技术的操
14、作系统嗅探原理和TCP、ICMP扫描等技术。最后简要介绍了一下系统的开发环境。 相关理论介绍2.1.1 漏洞概念漏洞(Vulnerability):也称脆弱性,是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。5具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Send mail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在Unix系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。6系统安全漏洞是在系统具体实现和具体使用中产生的错误
15、,但并不是系统中存在的错误都是安全漏洞。只有能威胁到系统安全的错误才是漏洞。许多错误在通常情况下并不会对系统安全造成危害,只有被人在某些条件下故意使用时才会影响系统安全。漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些
16、早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。2.1.2 漏洞成因网络的安全符合木桶原理,入侵者只要找到复杂计算机网络中的一个缝隙,就能轻而易举地闯入系统。所以,了解这些缝隙可能存在的地方以及产生的原因,对检测及修补他们
17、起着至关重要的意义。通常产生这些缺陷的方面主要表现在系统设计、口令设置、数据未加密、软件bug等。设计上的缺陷: TCP/IP协议在设计之初首先考虑的是网络互连而不是网络安全,它是假定工作在可信环境下的,而且由于TCP/IP协议是完全公开的,入侵者可以随意地伪造或修改数据包而不被发现,从而达到一些不正当的目的。这使得我们的网络环境变得很不安全、很不可靠。口令设置过于简单:(1)口令被猜测:很多人经常使用自己的电话号码,生日等作为登陆口令,有的人甚至采用像“abc”、“111111”、“123456”等简单的字符串。这些口令过于简单,很容易被入侵者猜测并加以利用。(2)字典攻击:入侵者使用一个程
18、序,该程序借助一个包含用户名和口令的字典数据库,不断地尝试登录系统,直到成功进入。毋庸置疑,这种方式的关键在于有一个好的字典。 (3)暴力破解:与字典攻击类似,不同的是暴力破解会把所有的字符串组合都试一遍。例如包含6个数字的口令有一百万种组合,1个包含大小写且标点符号的7字符口令大约有10万亿种组合。对于后者,一般的计算机要花费大约几个月的时间才能试验一遍。可见,长口令是保证系统安全的有效措施。数据未加密:抓包程序轻而易举的就能够抓到所有经过该节点的数据流,若我们的数据未加密,那么它就会完全暴露在入侵者面前,系统就毫无安全性可言。(1) 共享介质:传统的以太网结构很便于入侵者在网络上放置一个嗅
19、探器就可以查看该网段上的通讯数据,但是如果采用交换型以太网结构,嗅探行为将变得非常困难。(2) 服务器嗅探:交换型网络也有一个明显的不足,入侵者可以在服务器上特别是充当路由功能的服务器上安装一个嗅探器软件,然后就可以通过它收集到的信息闯进客户端机器以及新任的机器。例如,虽然不知道用户的口令,但当用户使用Telnet软件登录时就可以嗅探到他输入的口令了。(3) 远程嗅探:许多设备都具有RMON(Remote monitor,远程监控)功能以便管理者使用公共体字符串(public community strings)进行远程调试。随着宽带的不断普及,入侵者对这个后门越来越感兴趣了。编写软件存在bu
20、g:无论是服务器程序、客户端软件还是操作系统,只要是用代码编写的东西,都会存在不同程度的bug,常见的主要有以下几类:(1) 缓冲区溢出:指入侵者在程序的有关输入项目中了输入了超过规定长度的字符串,超过的部分通常就是入侵者想要执行的攻击代码,而程序编写者又没有进行输入长度的检查,最终导致多出的攻击代码占据了输入缓冲区后的内存而执行。(2) 意料外的联合使用问题:一个程序经常由功能不同的多层代码组成,甚至会涉及到最底层的操作系统级别。入侵者通常会利用这个特点为不同的层输入不同的内容,以达到窃取信息的目的。例如:对于由Perl编写的程序,入侵者可以在程序的输入项目中输入类似“mail/etc/pa
21、ssword”的字符串,从而使Perl让操作系统调用邮件程序,并发送出重要的密码文件给入侵者。(3) 不对输入内容进行预期检查:有些编程人员怕麻烦,对输入内容不进行预期的匹配检查,使入侵者输送炸弹的工作轻松简单。(4) Race conditions:多任务多线程的程序越来越多,在提高运行效率的同时,也要注意Race conditions的问题。比如说:程序A和程序B都按照“读/改/写”的顺序操作一个文件,当A进行完读和改的工作时,B启动立即执行完“读/改/写”的全部工作,这时A继续执行写工作,结果是A的操作没有了表现!入侵者就可能利用这个处理顺序上的漏洞改写某些重要文件从而达到闯入系统的目的
22、。2.1.3 常见漏洞类型漏洞的种类很多,据CVE(通用漏洞披露)的统计资料现在已经有几千种,其中以CGI漏洞最多,而SMTP漏洞以及缓冲区溢出漏洞的出现频率最高,以下针对几种比较常见的漏洞加以介绍。CGI漏洞:CGI (Common Gateway Interface) 即公共网关接口,它是一种与Web服务器通信的标准接口。 CGI 主要有两项功能:1.用于收集从浏览器发送给Web 服务器的信息,并使这些信息能供其他程序使用; 2.对提出请求的浏览器回送服务器处理的结果。7由于CGI程序开发者的疏忽,许多CGI程序存在各种危险程度的漏洞。例如有的CGI程序允许远程攻击者在WEB服务器上执行任
23、意的命令,可能对服务器造成破坏;有些CGI程序本身、或者被其调用的函数缺乏对用户输入数据的合法性检查,未能滤除一些特殊字符,使得入侵者可以通过构造请求来达到入侵的目的。比如,缺乏对“”的过滤,可能导致入侵者读取系统的任意文件;有些CGI程序会向客户端浏览器返回某些敏感信息,比如脚本所在路径、HTTP根目录所在路径、Perl版本、server_admin、server_name、PATH环境变量等,这些都为黑客的攻击提供了便利。 目前,大多数网站都使用免费的公共CGI脚本程序去驱动各自的Web服务,从而导致有缺陷的CGI脚本在Internet上泛滥开来。因此,对CGI脚本的安全性应高度重视。SM
24、TP漏洞:SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议的简称。SMTP协议出于TCP/IP协议的应用层包,但事实上它与传输系统和机制无关,仅要求一个可靠的数据流通道。尽管SMTP服务已经在RFC中被详细的定义,但在具体实现中各个软件开发商并没有很好的遵循RFC的规定,因此我们可以通过实现上的细小差异来进行探测活动。通过发送特定的、非标准的数据包来获得指纹信息,可以进而判断出目标主机使用的软件版本信息。FTP漏洞:FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。用户可以通过它
25、把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务也存在多种漏洞,包括拒绝服务攻击漏洞、缓冲区溢出漏洞等等,以FTP弱口令为例,因为ftp服务器上可能存在匿名用户或者弱势密码用户,所以黑客常利用该缺陷进行攻击。例如发现ftp匿名用户后,可以再借助系统的其他漏洞通过匿名用户提升权限。开放匿名用户经常会给系统带来一些安全隐患。DOS漏洞:DOS是Denial of Service的简称,即拒绝服务。任何对服务的干涉如果使得其可用性降低或者失去可用性均成为拒绝服务。如果一个计算机系统崩溃或其带宽耗尽或其硬盘被填满,导致其不能提供正常的服务,就构成拒绝服务
26、。造成DOS的攻击行为被称为DOS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DOS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。Finger漏洞: Finger是UNIX系统中用于查询用户情况的实用程序。UNIX系统保存了每个用户的详细资料,包括E-mail地址、账号,在现实生活中的真实姓名、登录时间、有没有未阅读的信件,最后一次阅读E-mail的时间以及外出时的留言等资料
27、。当用Finger命令查询时,系统会将上述资料一一显示在终端计算机上。使用Finger可以查询Internet主机内任意用户的某些公开信息,因此,它为黑客提供了大量有用的信息:如用户名列表、用户登录信息和一些能够用来猜测密码的信息等。特别要指出的是,79端口是专为Finger服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息 相关技术介绍2.2.1 Winsock与原始套接字Windows Sockets简称WinSock,是Windows下的网络编程规范,为应用程序提供了开放的、支持多种协议的网络编程接口。它定义了如何通过API实现与internet协议
28、族的连接。应用程序通过调用Windows Sockets的API实现相互之间的通信,而实际的工作是通过下层的网络通信协议和操作系统实现的。在七层网络协议中,WinSock主要控制数据的输入和输出,也就是传输层和网络层,屏蔽了数据链路层和物理层。Winsock API函数有版本和版本。经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程的事实上的标准。8Winsock 为上层应用程序提供的一种标准网络接口,而不是协议,所以它可以用于发现和使用任意数量的底层传输协议所提供的通信能力。上层应用程序不用关心Win
29、sock实现的细节,它为上层应用程序提供透明的服务最开始的Winsock是围绕着TCP/IP协议运行的,但是在Winsock 2. 0中却增加了对更多传输协议的支持.不仅提供了一个供应用程序访问网络服务的Window socket应用程序编程接口(API:Application Programming Interface),还包含了由传输服务提供者和名字解析服务提供者实现的Winsock服务提供者接口(SPI:Service Provider Interface)和ws2_ 32. d11。Winsock 2. 0引人的这个新功能(SPI技术)打破了服务提供者的透明,让开发者可以编写自己的服务
30、提供程序,SPI以动态链接库(DLL)的形式存在,它工作在应用层,为上层API调用提供接口函数。在网络安全扫描中要构造各种不同的数据报,如TCP数据包,UDP数据包及ICMP数据包,可以利用Winsock的原始套接字来实现。并且在分析返回数据时要捕获网络数据包,此时也可以使用Winsock的原始套接字。原始套接字能够根据需要生成用户想要的数据报文,包括报头和数据报本身的内容,而且能够对网络底层的传输制进行控制。对于一般的流套接字或数据报套接字,开发人员只能处理封装在TCP或 UDP协议中的数据。而原始套接字则提供了一种直接访问底层IP协议的方法。它主要提供了以下几种TCP及UDP套接字所不能提供的功能:(1) 使用原始套接字可以读写包含在IP包中的其它协议数据报,如ICMP、IGMP、OSPF等。(2)利用原始套接字,使用IP_HDRINCL套接字选项可以构造IP包头部。(3)利用原始套接字,使用I/O控制命令SI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1