2024年3月31日发(作者:)

漏洞扫描

1、漏洞扫描器的扫描原理

网络漏洞扫描器对目标系统进行漏洞检测时,首先探测目标系统

的存活主机,对存活主机进行端口扫描,确定系统听开放的端口,同

时根据协议指纹技术识别出主机的操作系统类型。然后扫描器对开放

的端口进行网络服务类型的识别,确定其提供的网络服务。漏洞扫描

器根据目标系统的操作系统平台和提供的网络服务,调用漏洞资料库

中已知的各种漏洞进行逐一检测,通过对探测响应数据包的分析判断

是否存在漏洞。  

现有的网络漏洞扫描器主要是利用特征匹配的原理来识别各种

已知的漏洞。扫描器发送含有某一漏洞特征探测码的数据包,根据返

回数据包中是否含有该漏洞的响应特征码来判断是否存在漏洞。例如,

对于IIS中的Uncode目录遍历漏洞,扫描器只要发送含有特征代码%

c1%1c的探测包;http:///scrlpts/..%c1%1c../

winnt/system32/cmd exe?/c+dir,如果应答数据包中含有200 OK

则可以断定该漏洞存在。

因此,只要我们认真研究各种漏洞,知道它们的探测特征码和响

应特征码就可以利用软件来实现对各种已知漏洞的模拟.

  2、模拟漏洞的实现

  现在常用的操作系统平台主要为Windows和LiDUX/Unix两大系

列,漏洞扫描器的测试项目包含对扫描器跨平台、跨网段的扫描能力

测试。测试环境中至少应该有两台目标主机,分别配置为Windows系

统和Linux/Unix系统。因此,可以分别设计两个平台下的漏洞模拟

软件,测试时将其安装在对应平台的目标主机上就可以方便、全面地

模拟测试环境的拓扑和漏洞配置。下面以Windows平台为例说明模拟

露洞的实现方法。

(1)漏洞的分类

由于漏洞数量繁多,为了便于组织管理把已知的漏洞分为应用软

件漏洞和操作系统漏洞。应用软件漏洞主要是系统提供的网络服务软

件的漏洞,如WWW服务漏洞,FTP服务漏洞、SMTP服务漏洞、Telnet

服务漏洞等等。由于同一网络服务可由不同的服务程序提供,因此,

除了一些共有的漏洞外,还存在各服务程序特有的漏洞。操作系统漏

洞主要是 Windows系统中的一些常见的RPC漏洞,NET810S漏洞等漏

洞。  

(2)漏洞资料库的组织

  由于漏洞模拟系统实际上是分析扫描器发出的探测包中的是否

含有探测特征码并返回具有相应响应特征码的数据包。因此,对每一

个漏洞,探测特征码和响应特征码是两项必需的描述。为了便于快速

查找,我们把漏洞分类项也加入到描述项中,因此,一个漏洞可以用

漏洞名称、服务类型、服务程序,探测特征码,响应特征码来完整地

描述。例如,IIS的 Unicode目录遍历漏洞可以描述为

Unicode目录遍历漏洞" "WWW" " " "%1%1c" "200 OK"

  

  采用数据库技术可以方便地向漏洞资料库中添加新发现的漏洞,

使漏洞模拟软件能够不断地更新漏洞资料库,可以更加有效地测试扫

描器对安全漏洞的检测能力。

  (3)模拟漏洞编程实现

  1)模拟网络服务漏洞的实现

  对每一种网络服务,漏洞模拟软件都提供一个服务代理模块。在

主界面上进行适当的配置(如网络服务类型的选择服务程序和服务端

口的选择等)便可启动服务代理线程,使其在相应的端口进行监听。

当建立连接后,代理模块分析接收到的数据包,查找数据包中是否存

在漏洞探测特征码,如果存在,则返回含有响应特征码的应答包。如

果不存在,则按服务协议进行正常应答。

  2)模拟操作系统漏洞的实现

  操作系统常见的漏洞主要集中在弱口令、远程共享服务和RPC服

务上,这些服务也是与特定的端口相关联(如win- dows系统中的135、

137,138,139、445等端口)。对操作系统的漏洞模拟比对网络服务

漏洞的模拟要复杂一些,因为必须要屏蔽掉操作系统自身对于漏洞探

测包的响应。在模拟漏洞实现中可以采用网络数据包截获技术,截获

相应端口的数据包,判断是否属于已知漏洞的探测包。如果是漏洞探

测包,则模拟漏洞应答,让扫描器认为漏洞存在。反之,则递交给操

作系统,让操作系统做出响应。