漏洞扫描主要通过以下两种方法来检查目标主机是否存在漏洞:
首先进行端口扫描,得知目标主机开启的端口以及端口上运行的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在。或是通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,若模拟攻击成功,则表明目标主机系统存在安全漏洞。
一次完整的网络漏洞扫描分为3个阶段:
第1阶段:发现目标主机或网络。
第2阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。
第3阶段:根据搜集到的信息判断或者进一步测试系统是否存在安全漏洞。
基于网络的漏洞扫描系统的关键部分就是它所使用的漏洞库,它是根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验形成的一套标准的网络系统漏洞库,然后在此基础上构成相应的匹配规则,由扫描程序自动的进行漏洞扫描的工作。
漏洞库信息的完整性和有效性决定了漏洞扫描系统的性能,漏洞库的修订和更新的性能也会影响漏洞扫描系统运行的时间。因此,漏洞库的编制不仅要对每个存在安全隐患的网络服务建立对应的漏洞库文件,而且应当能满足性能要求。
基于网络的漏洞扫描系统一般都采用插件技术。插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的漏洞。添加新的插件就可以增加新的功能,扫描出更多的漏洞。
插件编写规范化后,用户自己可以用perl、c或自行设计的脚本语言编写的插件来扩充漏洞扫描软件的功能。这种技术使漏洞扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使漏洞扫描系统具有很强的扩展性。
基于网络的漏洞扫描系统一般由安全漏洞管理控制平台和扫描引擎两大部分构成,系统的体系结构如图1。
图1 系统的体系结构