购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 漏洞扫描

读者看过小王上述的日记后不免会有一些疑问?虽说Nmap不错,它能轻松地实现TCP扫描、UDP扫描、操作系统指纹扫描、隐蔽扫描等,也能得到活动的主机及其端口,还能通过表2-1确认该端口对应的网络或者系统服务,从而通过其他方式来获取这些服务的漏洞发起攻击或者进行网络安全管理。那么,有没有一种比以Nmap为代表的端口扫描技术更加具有针对性的漏洞发现技术呢?读者不要着急,小王在下面将会为你解决这个问题。

2.4.1 漏洞扫描基本原理

漏洞扫描就是对计算机系统或者其他网络设备进行安全相关的检测,以找出安全隐患和可被黑客利用的漏洞。显然,漏洞扫描软件是把双刃剑,黑客利用它入侵系统,而系统管理员掌握它以后又可以有效地防范黑客入侵。因此,漏洞扫描是保证系统和网络安全必不可少的手段,用户必须仔细研究并加以利用。

漏洞扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置、脆弱的口令以及其他同安全规则抵触的对象进行检查。而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利用被动式策略进行扫描,我们称之为系统安全扫描。而利用主动式策略进行扫描,我们称之为网络安全扫描。

这里进一步介绍漏洞扫描的4种检测技术。其具体介绍如下。

●基于应用的检测技术。它采用被动的,非破坏性的办法检查应用软件包的设置,从而发现安全漏洞。

●基于主机的检测技术。它采用被动的,非破坏性的办法对系统进行检测。通常,它涉及系统的内核、文件的属性、操作系统的补丁等问题。这种技术还包括口令解密,把一些简单的口令剔除。因此,这种技术可以非常准确地定位系统的问题,从而发现系统的漏洞。它的缺点是与平台相关,升级复杂。

●基于目标的漏洞检测技术。它采用被动的,非破坏性的办法检查系统属性和文件属性,如数据库和注册号等。通过消息文摘算法对文件的加密数进行检验。这种技术的实现是运行在一个闭环上,不断地处理文件、系统目标、系统目标属性,然后产生检验数,把这些检验数同原来的检验数相比较。一旦发现改变,就通知管理员。

●基于网络的检测技术。它采用积极的,非破坏性的办法来检验系统是否有可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,然后对结果进行分析。它还针对已知的网络漏洞进行检验。网络检测技术常用来进行穿透实验和安全审记。这种技术可以发现一系列平台的漏洞,也容易安装。但是,它可能会影响网络的性能。

优秀的安全扫描产品应该是综合了以上4种方法的优点,且最大限度地增强漏洞识别的精度。

2.4.2 选择:网络漏洞扫描或主机漏洞扫描

首先,基于网络的漏洞扫描器有如下优点。

●价格方面。基于网络的漏洞扫描器的价格相对来说比较便宜。

●基于网络的漏洞扫描器,在操作过程中不需要涉及目标系统的管理员。基于网络的漏洞扫描器,在检测过程中不需要在目标系统上安装任何程序。

●维护简便。当企业的网络发生了变化的时候,只要某个节点能够扫描网络中的全部目标系统,基于网络的漏洞扫描器不需要进行调整。

相对于前者来说,基于主机的漏洞扫描器有如下优点。

●扫描的漏洞数量多。由于通常在目标系统上安装了一个代理(Agent)或者服务(Services),以便能访问所有的文件与进程,这也使得基于主机的漏洞扫描器能够扫描更多的漏洞。

●集中化管理。基于主机的漏洞扫描器通常都有个集中的服务器作为扫描服务器。所有扫描的指令均通过服务器进行控制,这一点与基于网络的扫描器类似。服务器从下载到最新的代理程序后,再分发给各个代理。这种集中化管理模式,使得基于主机的漏洞扫描器的部署上能够快速实现。

●网络流量负载小。由于漏洞扫描器的管理器与漏洞扫描器代理之间只有通信的数据包,漏洞扫描部分都由漏洞扫描器代理单独来完成,这就大大减少了网络的流量负载。当扫描结束后,漏洞扫描器代理再次与漏洞扫描器的管理器进行通信,将扫描结果传送给漏洞扫描器的管理器。

●通信过程中的加密机制。由于漏洞扫描在本地完成,漏洞扫描器代理和漏洞扫描器管理器之间,只需在扫描之前和扫描结束之后建立必要的通信链路。因此,对于配置了防火墙的网络,只需在防火墙上开放漏洞扫描器所需的5600和5601这两个端口,漏洞扫描器即可完成漏洞扫描的工作。

然而,基于主机的漏洞扫描工具也存在如下不足之处。

●价格方面。基于主机的漏洞扫描工具的价格通常由一个管理器的许可证价格加上目标系统的数量来决定,当一个企业网络中的目标主机较多时,扫描工具的价格就比较高。通常,只有实力强大的公司和政府部门才有能力购买这种漏洞扫描工具。

●基于主机的漏洞扫描工具需要在目标主机上安装一个代理或服务,而从管理员的角度来说,并不希望在重要的机器上安装自己不确定的软件。

●随着所要扫瞄的网络范围的扩大,在部署基于主机的漏洞扫描工具的代理软件的时候,需要与每个目标系统的用户打交道,必然延长了首次部署的工作周期。

2.4.3 高效使用网络漏洞扫描

1.网络漏洞扫描器的构成

网络漏洞扫描器的扫描原理和工作原理为:通过远程检测目标主机TCP/IP不同端口的服务,记录目标主机给予的回答。通过这种方法可以搜集到很多目标主机的各种信息(例如,是否能用匿名登录,是否有可写的FTP目录,是否能用Telnet,httpd是否是用root在运行)。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。此外,通过模拟黑客的进攻手法,对目标主机的系统进行攻击性的安全漏洞扫描,如测试弱势口令等,这也是扫描模块的实现方法之一。如果模拟攻击成功,则视为漏洞存在。在匹配原理上,该网络漏洞扫描器采用的是基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后在此基础之上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。所谓基于规则就是基于一套事先定义的规则的匹配系统。同时应当说明的是,基于规则的匹配系统也有局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对网络系统的很多威胁是来自未知的安全漏洞,这一点和PC杀毒很相似。

基于网络的漏洞扫描器一般由以下几个方面组成。

●漏洞数据库模块。漏洞数据库包含了各种操作系统的各种漏洞信息,以及如何检测漏洞的指令。由于新的漏洞会不断出现,该数据库需要经常更新,以便能检测到新发现的漏洞。

●用户配置控制台模块。用户配置控制台与安全管理员进行交互,用来设置要扫描的目标系统,以及扫描哪些漏洞。

●扫描引擎模块。扫描引擎是扫描器的主要部件。根据用户配置控制台部分的相关设置,将扫描引擎组装好相应的数据包,将其发送到目标系统,然后将接收到的目标系统的应答数据包与漏洞数据库中的漏洞特征进行比较,从而判断所选择的漏洞是否存在。

●当前活动的扫描知识库模块。通过查看内存中的配置信息,该模块监控当前活动的扫描,将要扫描的漏洞的相关信息提供给扫描引擎,同时还接收扫描引擎返回的扫描结果。

●结果存储器和报告生成工具。报告生成工具利用当前活动扫描知识库中存储的扫描结果来生成扫描报告。扫描报告将告诉用户配置控制台设置了哪些选项,根据这些设置,当扫描结束后,可以得到在哪些目标系统上发现了哪些漏洞。

2.基于B/S架构的网络漏洞扫描器

图2-1所示为一种网络漏洞扫描器结构。

图2-1 基于B/S架构的网络漏洞扫描器结构

这种漏洞扫描器基于浏览器/服务器(B/S)结构。这种网络扫描器的工作原理是,当用户通过控制平台发出了扫描命令之后,控制平台立即向扫描模块发出相应的扫描请求,扫描模块在接到请求之后启动相应的子功能模块,对被扫描主机进行扫描。通过对从被扫描主机返回的信息进行分析、判断,扫描模块将扫描结果返回给控制平台,再由控制平台最终呈现给用户。

3.基于C/S架构的网络漏洞扫描器

另一种结构的扫描器采用插件程序结构,即客户端/服务器模式。插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,从而可以扫描出更多的漏洞。插件编写规范化后,用户可以用Perl、C语言或自行设计的脚本语言编写的插件来扩充漏洞扫描软件的功能。这种技术使漏洞扫描软件的升级和维护变得相对简单,专用脚本语言的使用也简化了编写新插件的编程工作,使漏洞扫描软件具有强的扩展性。我们可以针对某一个具体漏洞来编写对应的外部测试脚本。通过调用服务检测插件,检测目标主机TCP/IP不同端口的服务,并将结果保存在信息库中,然后调用相应的插件程序,向远程主机发送构造好的数据,也将检测结果保存于信息库,以提供给其他的脚本运行所需的必要信息,这样可以提高检测效率。例如,在针对某FTP服务的攻击中,可以首先查看服务检测插件的返回结果,只有在确认目标主机服务器开启FTP服务时,对应的针对某FTP服务的攻击脚本才能被执行。采用这种插件结构的扫描器可以让用户构造自己的攻击测试脚本,而不用了解太多扫描器的原理。采用这种结构的扫描器具有很强的生命力,如著名的Nessus 就是采用这种结构的。这种网络漏洞扫描器的结构如图2-2所示。

图2-2 基于C/S架构的网络漏洞扫描器结构

其中,客户端主要设置服务器端的扫描参数及收集扫描信息。而其具体扫描工作由服务器来完成。

2.4.4 快速安装Nessus

1.Nessus简介

Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费,而且更新较快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在导致对手发起攻击的安全漏洞。该系统被设计为C/S模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。服务端还采用了plug-ins的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,我们称之为知识库,其中保存了前面进行检查的结果。检查的结果可以使用HTML、纯文本、LaTeX(一种文本文件格式)等格式来保存。

在新版本中,Nessus将会支持速度更快的安全检查,而且这种检查将会占用更少的带宽,其中可能会用到集群的技术以提高系统的运行效率。

Nessus的优点如下。

●它采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况。

●它是免费的,比商业的安全扫描工具(如ISS)具有价格优势。

● Nessus扩展性强、容易使用、功能强大,可以扫描出多种安全漏洞。

Nessus的安全检查完全由plug-ins的插件完成。

除了这些插件外,Nessus还为用户提供了描述攻击类型的脚本语言,可以用来进行附加的安全测试。这种语言称为Nessus攻击脚本语言(NSSL),用来完成插件的编写。

在客户端,用户可以指定运行Nessus服务的机器、使用的端口扫描器及测试的内容和IP地址范围。Nessus本身是工作在多线程基础上的,所以用户还可以设置系统同时工作的线程数。安全检测完成后,服务端将检测结果返回到客户端,然后由客户端生成直观的报告。在这个过程当中,由于服务器向客户端传送的内容是系统的安全弱点,为了防止通信内容受到监听,其传输过程还可以设置加密。

2.安装和启动Nessus服务器端

用户可以在http://www.nessus.org/download.html网站下载Nessus服务器的最新版本。然后使用如下的命令对其进行安装即可。

安装成功后,我们还需要添加用户来对其进行操作,其操作步骤如下所示。

启动Nessus比较简单,使用如下命令即可。

3. 安装Nessus客户端

Nessus的客户端有两个版本,分别是JAVA版本和C版本,其中,JAVA版本的客户端可以在多个平台中运行,C版本的客户端支持Windows。如果拥有这两个版本的客户端,就可以在局域网的任何一台计算机上进行安全检查。为了使用简单,小王选择了一款Windows系统下的Nessus 4客户端版本进行安装和使用,也就是使用Windows客户端来控制运行于Linux下的Nessus服务器端,对局域网中的主机进行漏洞扫描。这也是目前Nessus使用得非常流行的一种方式。具体的安装方式与在Windows下安装任何一款应用软件的方式相同,这里不再赘述。

2.4.5 使用Nessus扫描

下面来看看使用Nessus进行扫描的步骤以及效果。一般来说,使用Nessus进行扫描需要进行如下几个操作步骤。

①设置服务器连接。首先需要设置Nessus客户端来连接Nessus服务器。如图2-3所示,配置好相应的主机名和端口,以及登录所要使用的用户名和密码。

图2-3 设置连接

②设置IP范围。在如图2-4所示的对话框中选中IP Range单选按钮。当然,这里还有其他的选项可提供选择,如Single host和Subnet等,用户可以根据实际情况来选择。

图2-4 设置扫描的IP范围

③单击Scan Now按钮,开始对设定范围进行扫描,如图2-5所示。

图2-5 开始扫描

④扫描的结果如图2-6所示,其中给出了对172.31.12.188这台主机(Linux操作系统,RHEL 5.0版本)的扫描结果,我们可以很清晰地看出操作系统的版本以及开放的端口,同时也能够将开放的端口详细信息列出来。

图2-6 扫描的结果

⑤查看具体的漏洞信息,如图2-7所示。如果想查看具体的漏洞信息报告以及漏洞等级等详细信息,用户可以打开对应开放端口的信息,并针对具体信息采取相应的措施对该漏洞进行修补等操作。

图2-7 具体的漏洞信息 m9Om6qK6Q3qgYvAFAbMOcuHH5JcsKhS2VeldKpk6s4Mj7qstabtYtgbQmNXYsxW7

点击中间区域
呼出菜单
上一章
目录
下一章
×