漏洞扫描技术

对于渗透测试者来说,及时了解这些漏洞的信息是一项必备的技能。目前很多企业都采用了漏洞扫描器来对网络和系统来进行分析。漏洞扫描器通常是由两个部分组成的,一个是进行扫描的引擎部分,另一个是包含了世界上大多数系统和软件漏洞特征的特征库。和其他类型的测试工具不同,漏洞扫描器大都是商业软件。这一点也很容易理解,因为世界上每天都会发现新的漏洞,如果没有专业化团队长期维护,便无法保证这些漏洞可以被及时地添加到特征库中。

一、程序漏洞的成因与分析

漏洞是一个范围较广的名词,在本章中专指那些操作系统或者应用程序中编码失误导致的缺陷。世界上存在的软件要数以千万计了,但是这些软件开发者的水平参差不齐,即便是微软这样专业团队开发的产品也经常会出现缺陷,难怪图灵奖获得者艾兹格·W·迪科斯彻会说“编程就是产生缺陷的过程”。而这些缺陷中的一部分被黑客发现,进一步利用,就变成了漏洞。

1、笑脸漏洞的产生原因

第一次接触系统漏洞的人可能会对二进制漏洞的分类感到十分的迷茫,“栈溢出”“堆溢出”“字符串格式化”“竞争条件漏洞”“类型混淆”等术语,如果没有一定的编程功底,可能连这些词语都没有听说过。不过这并不会成为我们学习的障碍,随着你接触漏洞的数量越来越多,就会逐渐建立起科学的分类体系。

在第四章中,我们在对目标进行扫描的过程中,发现了目标系统(Metasploitable2)上安装了软件VSFTPD v2.3.4,这是一个曾经很流行的软件,vsftpd是Very Secure FTP daemon的缩写,是一款FTP服务器,但是在它的代码中却存在着一个重大问题,在文件str.c中出现了一行与程序功能无关的代码。

{
    return 1;
    }
    else if((p_str->p_buf[i]==0x3a)
    && (p_str->p_buf[i+1]==0x29))
    {
        vsf_sysutil_extra();
        }
    {
    return 0;
}

2、如何检测笑脸漏洞

二、漏洞信息库的介绍

在这种情况下,一个可以为大家所接受的漏洞行业标准就需要出现了,CVE (Common Vulnerabilities & Exposures)是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。例如我们在5.1节中介绍的VSFTPD v2.3.4上的漏洞在CVE中的编号就是“CVE-2011-2523”,在CVE的官方主页上可以查询到这个漏洞。

CVE 的建立是在1999年9月,时至今日已经被大量的漏洞库组织和厂商所接受。这样一来各种漏洞厂商就有了一个可以横向比较的标准。而我们在互联网上查找某一漏洞信息,也有了一个方便的索引。例如国内的比较知名的Seebug在它的漏洞库中就使用的CVE标准,如图5-3所示。

三、在Nmap中对系统漏洞的扫描

如今,正式的NSE已经包含了14个大类的脚本,总数达500多个。这些脚本包括了对网络口令强度,对服务器安全性配置,服务器漏洞的审计等功能。

针对VSFTPD v2.3.4的检测脚本名字为“ftp-vsftpd-backdoor.nse”,使用它的方法为--script加上脚本名。

Nmap --script ftp-vsftpd-backdoor 192.168.xxx.xxx

四、常见的专业化扫描工具

Nmap虽然具备了漏洞扫描功能,前面3节内容有助于我们对漏洞扫描的学习。但是如果是作为专业机构,并不能只使用Nmap。在漏洞扫描阶段,我们要对目标进行扫描来发现这个目标是否存在某种漏洞,这个阶段对工具的依赖性最强,因为目前世界上已知的各种版本的操作系统就有几十种,常见软件大概有几千种。这些操作系统和软件上面的漏洞更是不计其数,如果依靠人工来对目标是否存在某种漏洞进行逐个的分析是极为不现实的。

谈到现在优秀的漏洞扫描器,大概要数Rapid7 Nexpose、Tenable Nessus和OpenVas。以我的经验来看,这些工具扫描的结果经常会有较大的差异性,但是3个工具之间并不存在什么优劣之分。每个工具在进行扫描的时候都会存在一定的误报和漏报。所以现在渗透测试业内一般的做法是,如果条件允许的话最好是分别使用这些工具都扫描一遍。

五、对Web应用程序进行漏洞扫描

RIPS是一款PHP开发的开源的代码审计工具,由安全研究者Johannes Dahse开发,目前已经停止了更新,最后的版本是0.55。程序小巧玲珑,仅有不到500kb,对PHP语法分析非常精准,可以实现跨文件变量和函数追踪,误报率较低。需要注意的是,我们在这里介绍该工具只是出于学习目的。

总结:

在这一章节中,我们学习了对目标系统进行漏洞扫描,除了扫描操作外,在这个阶段中生成的报告也十分重要,一来我们需要依靠这份报告来确定在渗透测试的方向,二来这份报告也将会是漏洞渗透测试报告的重要组成部分。在下一章中我们将会讲解如何利用已经获得的信息对目标进行渗透。

Logo

更多推荐