1.1.2 网络安全技术的发展现状

1.1.2 网络安全技术的发展现状

1.1.2.1 脆弱性检测技术

网络诸多安全问题的根源是网络系统本身存在脆弱性,脆弱性是网络存在安全损害的内因,如果能够设计出不存在任何脆弱性的系统,那么一切安全问题都能迎刃而解,消除系统的脆弱性作为系统安全的最原始的防线很早就被研究。在计算机技术出现之初,系统设计者们采用了各种技术上和管理上的措施,都是旨在设计安全的系统,但是实践证明,不可能设计出绝对安全的系统,任何人工的系统都不可避免地存在各种薄弱环节,但是如果能够检测到系统的脆弱性,及时进行修补,那么可以减少各种安全危害。脆弱性检测技术的目的就是在发现系统本身的安全漏洞和薄弱环节,帮助网络管理员在故障出现之前及时修复,减少潜在的威胁。脆弱性检测主要从技术上和管理上两个方面进行,技术层面涉及检测物理环境、网络环境、网络协议、软件漏洞等方面的脆弱性,管理层面包括检测技术管理和组织管理两方面脆弱性。

脆弱性检测技术所采用的方法主要有问卷调查和工具检测,其中工具检测是最为重要的一种手段,脆弱性检测技术的发展在很大程度上是对脆弱性检测工具的改进。脆弱性检测工具又称为脆弱性扫描器,脆弱性扫描器通过两种技术手段检测目标主机是否存在漏洞,其一是通过端口扫描技术,得到网络中每个主机开放的端口和提供的服务,进而将这些数据匹配脆弱性特征库,确定满足匹配条件的脆弱性;另一种是通过渗透测试技术,模拟黑客的入侵过程,根据入侵成功与否确定系统的脆弱性。端口扫描技术的优点是检测速度快,检测面广,但是只能检测脆弱性规则库中存在的脆弱性,对于未披露的脆弱性却无能为力;渗透测试技术的优点是能检测一些未知的脆弱性,但是检测速度慢,检测面较窄。

第一个脆弱性扫描器出现在1992年,Chris等人编写了一个能远程检测Unix系统脆弱性的工具ISS(Internet Security System)[5],该工具能检测Unix系统几十种常见的脆弱性。1993年,Wietse和Dan开发了一个类似的检测工具SATAN(Security Administrator Tool for Analyzing Networks)[6],该工具本质上与ISS相同,但是它能识别网络相关的脆弱性,但是同ISS一样,它只对脆弱性做上标记而不提出解决的方法,对每一个检测到的脆弱性,SATAN提供一个文档介绍该脆弱性,并给出该脆弱性的潜在影响,同时对该脆弱性进行分类。随后,脆弱性扫描技术得到了长足发展,出现了一系列的脆弱性扫描器,到目前为止市面上大概有几十种脆弱性扫描器,它们的基本原理是相同的,都是通过扫描获得目标主机开放的端口和提供的服务,并将这些数据与漏洞规则库进行匹配,从而判断脆性是否存在。

目前常用的脆弱性扫描器有Nmap、Nessus和X-scan,它们都能检测操作系统的脆弱性和网络结构,Nmap是GNU(General Public License)旗下发布的[7],可以免费下载和使用,能够对大规模的网络进行扫描,可以得到网络中开放的主机及其提供的网络服务,支持TCP、UDP和ICMP扫描技术。Nessus是Renaud Derasion开发的开源风险评估工具[8],能够支持各种主流的操作系统,功能十分强大,能完成超过1200项安全检查,拥有友好的界面,并支持多种格式的安全报告输出。XScan是国内非常有名的一款免费的通用的脆弱性扫描器[9],支持多种插件,采用多线程的方式对指定的IP地址段进行漏洞检测,并提供图形的操作界面。能够探测远程主机的操作系统版本及其提供的服务、SNMP信息、CGI漏洞、RPC漏洞、IIS漏洞、SSL漏洞、注册表信息等。

渗透测试技术是脆弱性检测的另一种技术,它通过模拟黑客的攻击行为,来检测系统的脆弱性,从攻击者的角度检测系统是否安全有效[10]。渗透测试包括侦查、入侵、攻击和安全分析四个阶段,渗透测试对网络中节点设备,包括主机、路由器、交换机等的网络协议、操作系统、数据库系统和应用软件系统及网络应用服务分析研究的基础上,通过发现、利用软件系统在机理、设计和配置上存在的缺陷与漏洞,在不影响网络正常运行的前提下,实现对目标网络的植入控制,进而检测目标网络的脆弱性。

脆弱性检测技术的发展对提高系统的安全性起了非常大的作用,利用脆弱性检测的结果,网络管理员可以有针对性地对网络的薄弱环节进行修复和加固,抑制安全事件的发生,从而预防了网络的潜在安全威胁,提高了网络的安全性。

但是脆弱性检测技术本身存在很多不足,首先,脆弱性检测技术只能检测一定的脆弱性,尤其是脆弱性扫描器,只能检测大部分已经公布的脆弱性,不能识别未知脆弱性;其次,渗透测试虽能识别未知的脆弱性,但是应用范围窄,实现起来复杂,只能对一些特定的脆弱性做渗透测试;最后,各种脆弱性检测工具本身的局限性很大,它们有各自的适用范围和优缺点,很难全面地对系统进行检测。因此,脆弱性检测技术对提高网络的安全性的作用有限。

1.1.2.2 恶意代码检测技术

恶意代码指对网络系统有恶意目的的程序,它危害系统运行,并能自行复制和传播。恶意代码从类型上分为病毒、蠕虫、特洛伊木马、后门、逻辑炸弹、间谍软件、僵尸网络客户端等[11]。恶意代码一般利用系统的软硬件漏洞和欺骗用户的方式进行传播和破坏,如果系统中存在脆弱性而不存在利用该脆弱性的恶意代码,那么系统只是存在潜在的安全风险,并未出现安全损害,恶意代码是对系统造成安全损害的外因。恶意代码检测通过各种检测技术,识别出目标系统存在的恶意代码的特征和位置,包括基于特征码的静态检测技术、启发式扫描技术和基于虚拟机的行为检测技术。

基于特征码的静态分析技术是最基本、最常用的技术,目前主流的防毒软件的查毒引擎大部分采用这种技术,它首先对已存在的恶意代码样本进行分析,提取恶意代码的特征码,并写入相应的特征码库,然后对目标系统的文件进行扫描,若发现目标文件中有与特征码库相符的特征,则认为该文件含有恶意代码[12]。基于特征码的检测技术具有实现简单、误报率低、查毒效率高的优点,但是检测结果依赖恶意代码的特征库,对已经存在的恶意代码能很好地检测,对未知、加壳变形和特征码难以描述的恶意代码不能很好地检测,造成该技术存在大量的漏报现象。针对这种情况,目前的主流杀毒软件都提供实时的更新技术,及时更新病毒的特征库,并且采用广义特征码技术,能应对一些简单加壳和变形的恶意代码,但是在较为复杂的加壳加密的恶意代码面前,其显得力不从心。

启发式扫描技术是对静态特征码扫描技术的一种改进,对恶意代码的特性进行分析,分析恶意代码指令出现的顺序和特定的指令组合,获得统计上的启发知识,在对文件扫描时,一旦发现目标文件中存在可疑的指令或指令组合,则认为目标文件含有恶意代码[13]。该技术能够检测出未知的和变形后的恶意代码,但是在实现上非常复杂,尤其是恶意代码的启发知识很难精确获取,因此误报率较高。

基于虚拟机的行为检测技术是在系统中虚拟CPU环境,在虚拟的环境中将恶意代码激活,根据其行为特征判断是否是恶意代码[14]。该技术对未知的、加壳和变形后的恶意代码能有效地检测,并且不需要构建庞大的病毒特征库,能在一定程度上保证原系统的安全,因此,该技术是目前杀毒软件升级的一个趋势。

但是基于虚拟机的行为检测技术存在两个缺点,其一是在系统中虚拟计算环境需要占用系统资源,对系统的性能产生影响;其二是激活恶意代码并分析其行为特征需要较长的时间,影响查毒效率。实现该技术难点是如何识别恶意代码的行为特征并构建行为特征库,需要确定哪些行为类型适合作为恶意代码的判断对象。

如果能有效地检测并及时清除系统中存在的恶意代码,可以减少系统受到的安全损害。但是恶意代码检测技术一般都是在系统存在恶意代码之后才能进行检测和清除的,此时恶意代码可能已经造成损害了,因此该技术并不能在第一时间阻止安全事件的发生,并且目前存在的恶意代码检测技术在检测的广度和精度上都不够,存在很多的漏报和误报。因此,恶意代码检测技术对提高网络的安全性作用有限。

1.1.2.3 防火墙技术

防火墙是在已授权和未授权通信实体之间作出判断的软件和硬件的设备组合,防止对重要信息的未授权的访问和修改[15]。防火墙作为网络安全的第一道防线,常常部署在内外网之间,通过筑高墙的方法,强化网络安全策略,对网络存取和访问进行监控和审计,防止内部私密信息外泄。防火墙从实现方式上分为硬件防火墙和软件防火墙,它们在原理和技术上类似,是为了适应不同的应用背景的需求而设计的。

防火墙所采用的技术分为五类,根据出现的时间先后秩序,依次为包过滤防火墙、应用级网关防火墙、电路级网关防火墙、状态包检查防火墙和自适应代理防火墙。包过滤防火墙是最早出现的防火墙,一般是依附在路由器之上的,可以称为包过滤器或者分组过滤器[16]。它工作在通信协议的网络层和传输层,根据预先建立的过滤规则,对每一个通过网络的包进行检查,以便确定是否与某一条规则匹配,从而决定是放行还是丢弃该包。包过滤防火墙的核心部分是防火墙管理员预定义的规则库,该技术实现简单,工作效率高,但是功能单一,称为第一代防火墙。

电路级网关和应用级网关防火墙属于第二代和第三代防火墙技术,它们功能相似,对于每个进出内外网络之间的连接,都要经由防火墙提交请求和进行应答,内外网不直接进行通信,增加了内网的安全性,并且隐藏了内网结构。

1989年,贝尔实验室的Dave Presotto和Howard Trickey提出电路级网关防火墙的初步结构,它工作在通信协议的会话层,并且可以提供NAT(网络地址转换)服务,通过监控内外网通信的TCP握手信息来判断该会话是否合法,网络连接完全由防火墙来完成,防火墙接收客户端的连接请求,根据客户端的IP地址及所请求的端口,将该连接重新定向到指定的服务器的地址和端口,该过程对客户端透明。应用级网关防火墙工作在网络协议的应用层,防火墙接收来自内部网络的通信,通过代理技术参与到一次TCP连接的全过程,在两个通信实体之间转接数据包,当防火墙检测到客户端的连接请求时,它核实并处理连接请求,将处理后的请求传递到服务器端,然后接受服务器端的应答,并处理该应答,最后将处理后的应答返回给客户端。由于基于代理的防火墙参与到TCP连接,因此易遭受与TCP三次握手相关的攻击,尤其是一些洪泛攻击。

状态动态检测防火墙也称为动态包过滤防火墙,属于第四代防火墙。1992年,USC信息科学院的Bob Braden提出基于动态包过滤技术,后来演变为目前所说的状态监视技术。1994年,以色列的Check Point公司开发出了第一个采用这种技术的商业化的产品。状态动态检测技术采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题,对每一个连接都进行跟踪,并且根据需要动态在过滤规则库中增加或减少规则。

1998年,NAI公司推出一种自适应代理技术,称为第五代防火墙技术,并在其产品Gauntlet Firewall for NT中给予实现该技术给代理类型的防火墙赋予了全新的意义,融合了包过滤技术的高速度和代理技术的高安全性的特点,是未来防火墙的一个发展方向。

防火墙作为隔离内外网的一种手段,对提高内网的安全性起了非常重要的作用,所有防火墙的工作方式都是分析进出防火墙的数据包,决定是放行还是阻塞。一般在应用防火墙技术来提高内网安全性时通常部署多级防火墙,入侵者必须一层层穿越防火墙,才能入侵目标系统。但是没有一种防火墙技术能为系统提供永久的安全保障,首先,防火墙无法防范旁路攻击,有很多入侵采用防火墙的穿透技术或者绕过防火墙的规则的旁路技术;其次,防火墙只能检测进出网络的数据包,无法阻止内网主机发起的攻击;再则,防火墙本身如果配置不当,或者策略使用不当,很可能引入新的脆弱性。

1.1.2.4 入侵检测技术

当网络系统本身不可避免地存在脆弱性,筑高墙的方法无法阻挡安全攻击时,网络不可避免地存在安全入侵危险,如果能及时检测并消除入侵,那么可以减轻网络的安全损害,提供网络的安全性,因此入侵检测技术作为网络安全的第二道防线变得尤为重要。入侵检测(Intrusion Detection)指检测网络入侵的技术,有着二十多年的历史。1986年,Anderson[17]第一次提出入侵的概念,将入侵定义为未授权的访问、篡改信息,使系统变得不可靠或者不可能。1986年,Denning[18]给出了第一个入侵检测模型,该模型主要是根据系统的日志记录,分析其中的异常情况,从而判断系统是否遭受入侵,随后有很多学者对入侵检测模型进行研究。

入侵检测技术分为两类:异常检测(Anomalyintrusion)和误用检测(Misuseintrusion)。异常检测首先检测系统的正常行为,描绘系统的正常行为轮廓,然后分析系统的当前行为,比较当前行为轮廓与正常行为轮廓之间的差异,判断当前行为是否正常,进而判断是否有入侵发生。误用检测首先提取已知的攻击行为的特征,建立特征知识库,然后将检测到的系统行为与知识库中的攻击行为特征进行比较,如果发现能够匹配,进而判断系统有入侵发生。异常检测技术与系统无关,通用性强,对未知攻击有一定的检测能力,但是该技术需要很多的主机正常行为作为先验知识,而准确全面定义主机的正常行为轮廓非常困难,因此异常检测的误报率很高。误用检测技术原理简单,易于扩充,但是只能检测已经存在的攻击行为,对于未知的入侵行为或者变异的入侵行为却无能为力,并且漏报率很高。

入侵检测系统根据检测目标的不同可以分为两类:基于主机的入侵检测系统和基于网络的入侵检测系统。

入侵检测系统根据部署方式的不同也分为两类:单一式结构和分布式结构。

入侵检测技术作为一种安全防卫技术,信息系统的第二条防线,在系统遭受攻击时能及时地发出警报,具有很好的理论研究意义和实用价值。但是,由于网络结构的复杂性,入侵手段的隐蔽性和检测技术的局限性,入侵检测系统至今还存在着很多问题。

(1)告警数量庞大,难以直接解读与管理。对一个规模稍大的网络来说,由IDS和其他安全设备所产生的安全数据量相当庞大。例如,一个IDS在一个普通的百兆链路每天能产生500000多条消息。个别单一的攻击行为可能引发多个安全设备产生大量数据,导致“事件风暴”的出现。一方面,面对海量安全数据,单纯依赖网络管理员手工处理极其困难;另一方面,过多的报警常常干扰网络的正常运行。以至于使这些安全工具和日志常常成为网管人员的累赘和烦恼。

(2)真实威胁难以从杂乱海量的原始告警中识别,安全威胁缺乏有效监控。在实际入侵检测工作中,告警中常常有高达99%都是误报警[19]。面对数量庞大且误报充斥的告警数据,管理员很难从中识别出真正的高威胁事件。Goodall等在《入侵检测工作:重新思考安全分析员的角色》(The Work of Intrusion Detection:Rethinking the Role of Security Analyst)[20]一文中指出:由于缺乏有效的辅助分析工具,在实际的入侵检测工作中,安全分析员常常是依据其经验和对网络的了解来选择一部分告警进行调查,或是等到安全事件造成严重或显著后果后才得知安全事件的发生。

(3)网络安全数据孤立、片面,难以提供整体的安全事件信息。现有大部分IDS设备产生的告警都为入侵过程中的单一攻击行动所触发,一个原子攻击行为也能触发数十个不同类型的IDS告警,单个告警所包含的信息量较低。并且,安全告警常常是孤立的、零星的、缺乏关联,无法形成真实有效的主体安全事件。

无法提供有效的网络威胁和安全态势信息,缺少真正的指导意义。在入侵检测工作中,网络安全管理员不仅关心网络中发生了什么安全事件(What)及哪些资产和策略遭到了侵犯(Where),更希望知道究竟这些事件对网络安全的影响程度以及系统当前处于何种安全状态(How)。但是IDS等安全工具通常只能报告比较低级的攻击信息,并不能对攻击的威胁程度和攻击对主机风险的影响进行评估。

这些问题的存在使得网络管理员通常不能依赖IDS等现有的安全检测技术来直接得到当前网络的威胁情况和安全态势信息。需要采用一种手段来对网络安全数据进行解读,协助管理员从海量杂乱的安全数据中提取出有效的安全态势知识,直观反映网络中面对的威胁和网络系统的安全状态。

1.1.2.5 信息安全风险管理技术

信息安全风险管理技术通过分析网络系统中资产的重要性、面临的威胁、存在的脆弱性、采用的安全措施,综合判断网络面临的风险,给出相应的解决措施,保障网络的正常运行,是确定、控制、消除或缩减影响网络资源的安全事件的总过程,包括风险分析、风险评估和风险控制[21],其核心是风险评估。风险评估的前提是风险分析,风险分析是对信息系统的资产、面临威胁、存在的脆弱性、采用的安全措施等进行分析。

早期的风险评估工作主要致力于对操作系统和网络环境的薄弱点评估和渗透测试,其目的是为了发现系统的漏洞。随着对信息资产的认识日益深入,风险评估从单纯的漏洞评估发展到对整个信息安全管理体系的研究,各个国家纷纷提出了安全评估标准和相应的指南和方法。比较著名的安全评估标准有TCSEC、ITSEC、CC、BS7799和ISO13335标准。

基于知识的风险评估方法考虑关键信息资产、资产所面临的威胁以及威胁所利用的脆弱点三方面的信息来确定系统的安全性,这类方法的主要代表有COBRA和OCTAVE。COBRA是一个基于专家系统的安全评估工具。它是一个问卷调查形式的风险分析工具,由问卷建立器、风险测量器和结果产生器三个部分组成。利用专家系统建立规则和外部知识库,通过调查问卷的方式收集组织内部信息安全的状态。对重要资产的威胁和脆弱点进行评估,产生专家推荐的安全控制措施。

OCTAVE方法关注关键资产的风险情况,提供了一个信息系统的评估框架,将信息安全风险评估过程分为三个阶段:建立基于资产的威胁配置文件;标识基础结构的弱点;确定安全策略和计划。

基于模型的风险评估方法使用安全模型来表达系统所有可能的行为和状态,通过模型分析工具根据模型产生测试用例来达到对系统整体的安全性进行评估的目的。基于攻击图的安全评估方法[22]通过搜集一系列系统属性来代表系统状态,从而作为攻击图的节点。例如主机中特定的漏洞、主机之间的连接、外部访问者对网络的访问权限。图的每一个连接代表攻击者可以进行的攻击,可以通过自动化工具产生攻击图,然后计算出攻击的成功概率来表示量化的系统安全度量。

张涛等[23]使用故障树模型通过计算到达顶点事件的概率来分析计算机系统的安全性。张永铮等[24]提出了用于评估网络信息系统的风险传播模型,包括风险网络和风险传播算法,考虑了风险的传播性,提高了传统的基于风险累加的评估方法的准确性。肖道举等[25]基于服务在系统中所占的比重和漏洞威胁度给出了一个综合评估模型,评估目标系统所提供服务的风险,定量分析目标系统的安全状况。冯登国研究员[26]对信息安全风险评估领域的安全模型、评估标准、评估方法、评估工具等进行了综述。这些传统的风险评估方法能够就网络长期所处的风险状态进行评估,评估结果是制订和调整安全策略的基础。

风险评估从宏观角度定量地描述网络的安全状态,是一种介于定性与定量之间的静态安全性分析方法,对避免大规模安全事件的发生,提高网络的安全性有很大的作用,但是风险评估有很多不完善的地方。

(l)风险评估过程繁琐,主观因素多,很难使评估自动化。

(2)风险评估过程需要较多人为参与,评估周期较长。

(3)风险评估结果只有简单的五个等级,不能精细反映网络安全状况。

(4)风险评估结果是静态的,评估周期长,不能实时反映网络安全状态的变化,对一些突发事件很难迅速地做出响应。

如果能够根据实时的网络安全事件和安全数据,对网络中正在发生的威胁进行评估,对主机和网络的当前安全态势给出量化的风险值,可使管理员随时都能掌握当前的系统风险状况。根据评估结果,网络操作员就能对安全事件进行快速而准确的响应,有针对性地保护安全资产,并对安全策略进行动态的调整以适应当前风险状况。实时安全风险评估方法是信息安全风险评估方法的重要发展方向[27]