4.1.3 运行系统漏洞挖掘
由于运行系统是多种软件的有机整体,因而运行系统的漏洞分析相较于单个软件的漏洞分析有其特殊性。具体表现在运行系统比单个软件更加复杂,因而对运行系统进行漏洞分析难度更大,挑战性更强;运行系统是以黑盒的方式呈现给用户和漏洞分析人员的(分析人员没有源代码和程序文档等资料),因而分析人员只能通过向运行系统输入具体数据并分析和验证输出的方式来分析漏洞;运行系统内部的信息(如运行系统的架构、网络拓扑等)往往都是不公开的,漏洞分析人员往往需要手工或者利用工具获取这些信息。
与运行系统漏洞分析相似的概念还有广义渗透测试、狭义渗透测试、穿透性测试,这些术语很容易引起混淆。渗透测试(在《信息技术安全评估通用准则》中称为穿透性测试)一般是指通过模拟恶意攻击者攻击的方法,来评估系统安全的一种评估方法,渗透测试的目的就是找到系统中存在的漏洞。根据测试对象的不同,渗透测试可以分为广义渗透测试和狭义渗透测试。广义渗透测试的目标对象一般包含操作系统、数据库系统、网络系统、应用软件、网络设备等;而狭义渗透测试一般特指网络系统渗透测试。本书所讨论的运行系统漏洞分析的概念接近广义渗透测试,但分析对象不包含硬件设备。
目前,漏洞分析人员通过信息搜集、漏洞检测和漏洞确认三个步骤对运行系统进行漏洞分析,整个分析过程如图4.25所示。其中,信息收集技术包含网络拓扑探测技术、操作系统探测技术、应用软件探测技术、基于爬虫的信息收集技术和公用资源收集技术;漏洞检测技术包含配置管理测试技术、通信协议验证技术、授权认证检测技术、数据验证测试技术和数据安全性验证技术;漏洞确认技术包含漏洞复现技术、漏洞关联分析技术。其分类结构如图4.26所示。
图4.25 运行系统漏洞分析原理
图4.26 运行系统漏洞分析技术分类
1.信息收集
在信息收集阶段,分析人员利用社会工程学、主机扫描技术、端口扫描技术等多项技术,通过人工或者一些自动化工具收集有关运行系统架构、运行系统所部署机器的网络拓扑结构及其上面运行的操作系统类型版本、开启的端口及服务等信息。这个阶段收集的信息是否充足,直接影响到后续漏洞检测阶段的检测效果。目前,主要的信息收集方法有以下几种:网络拓扑探测、操作系统探测、应用软件探测、基于爬虫的信息收集和公用资源搜索。操作系统探测技术用于探测目标系统所采用的操作系统,一般使用TCP/IP协议栈指纹来识别不同的操作系统和设备;应用软件探测技术用于确定目标主机开放端口上运行的具体的应用程序及其版本信息;网络爬虫是利用一定规则对网络资源进行自动抓取的程序;公用资源收集包含对互联网上公开披露的漏洞信息或开源工具的收集。
2.漏洞检测
在漏洞检测阶段,分析人员将依据收集的信息,对运行系统进行配置管理测试、通信协议验证、授权认证检测、数据验证测试和数据安全性验证。这些分析结果将指出运行系统的弱点在哪里,然后针对这些运行系统的弱点进行模拟攻击,来生成疑似漏洞列表。其中,配置管理测试是对运行系统配置进行安全性测试,检查系统各配置是否符合运行系统的安全需求和制定的安全策略,主要工具有MBSA、Metasploit、天珣安全配置核查管理系统等;通信协议验证是对运行系统通信协议中潜在的安全漏洞进行检测,主要有两种对通信协议进行验证的方法:形式化方法和攻击验证方法。主要工具有NeSSUS、Nmap等;授权认证检测通过了解运行系统的授权、认证工作流程来尝试绕过运行系统的授权、认证机制,主要工具有Nessus、WebScarab等;数据验证测试目的在于发现由于运行系统没有正确验证来自客户端或外界的数据而产生的安全漏洞,主要工具有Acunetix Web Vulnerability Scanner(WVS)、AppScan、极光漏洞扫描工具、明鉴Web应用弱点扫描器等;数据安全性验证旨在发现威胁运行系统内部数据自身安全性的漏洞,该类技术通常采用密码分析、在线密码破解、模拟物理入侵等方式来验证数据运行系统数据安全性,主要工具有WireShark等。
3.漏洞确认
在漏洞确认阶段,分析人员对疑似漏洞列表中的漏洞进行逐一验证,以确认其是漏洞,进而输出最终的漏洞列表,主要采用漏洞复现技术和漏洞关联分析技术。漏洞复现技术主要是找到漏洞的触发条件和步骤,对漏洞进行重现,然后通过跟踪和调试分析来确定是否是漏洞。单一的漏洞可能不会对运行系统造成大的威胁,但是利用漏洞之间的相互关联进行攻击可以对运行系统安全造成严重影响。通过漏洞关联分析技术找出漏洞之间依赖关系,可以确认一些隐藏的漏洞。