乔 路

(湖北珞格科技发展有限公司,湖北 武汉 430000)

信息时代下,网络的作用越来越大,与此同时,网络安全问题也备受关注。为提高网络的安全性,要采取有效的方法,评估网络安全等级,在各种测评方法中,渗透测试的效果较好,它可以检测出系统中的安全漏洞,避免攻击者破坏网络,使漏洞在完全暴露前得到修复。借此下面就渗透测试在网络安全等级保护测评中的应用展开研究。

1 渗透测试的方法与过程

渗透测试是针对网络安全提出的一种机制,主要是为证明网络的安全防御能力。目前,渗透测试尚无统一的标准定义,按照它的用途,可将之定义:针对目标网络真实攻击的仿真。从技术层面看,渗透测试是对计算机系统全面的安全检测,其目的是发现系统中潜在的漏洞,能够对系统基础组件的行为加以评估,如网络设备、应用程序等。可见,渗透测试在确保网络系统安全方面具有不可替代的作用。

1.1 渗透测试方法

渗透测试方法较多,常用的有以下几种:开源安全测试、系统安全评估、信息安全测试与评估、开放式Web 应用安全项目等。上述渗透测试方法各具特点,如开源安全测试是一个渗透测试框架,可用于衡量网络安全性,能够为安全质量提供较为准确的度量;系统安全评估可检查网络或是应用程序的安全性,以特定的技术目标作为关注对象,如操作系统、路由器、交换机和虚拟网络等;信息安全测试与评估是高级别的网络渗透测试方法;开放式Web 应用安全项目是一种基于HTTP 的测试框架,包含的信息较为详细,可对项目风险全面描述。

1.2 渗透测试过程

1.2.1 计划阶段

渗透测试计划阶段要根据行业标准、安全策略和实践需求等因素,定义测试目标、测试范围以及时间限制,完成所有计划与准备工作,获取客户正式授权许可。具体包括:确定特定IP 地址、测试技术清单、测试时限、测试受限主机、测试目标系统及测试信息采集等方面。

1.2.2 发现阶段

渗透测试根据计划进入发现阶段,具体分为以下4 个环节:(1)目标发现。收集系统版本、安全漏洞、通信区域等公开信息。(2)目标侦察。通过模仿、垃圾搜索、网络踩点等技术手段获取相关信息。(3)目标扫描。识别目标网络的活动系统、过滤端口、操作系统指纹和网络路径等。(4)目标枚举。确定共享文件、已知安全漏洞等信息。

1.2.3 评估阶段

渗透测试评估要对目标网络进行检查评价,采用PacketStrom 漏洞数据库中提供的公开漏洞信息确定潜在威胁,分析漏洞的真实性,识别漏洞可能产生的风险,判断目标网络的安全状态,进而针对性制定安全措施。

1.2.4 攻击阶段

在确定攻击目标后执行具体攻击,利用渗透测试框架节省测试程序执行时间,在获得成功后提升权限。如,获取本地系统访问权限、root 权限、网络访问权限等,攻击结束时出具测试报告[1]。

1.2.5 报告阶段

渗透测试报告主要内容为漏洞与潜在风险评估,描述目标组织的整体安全状况,并提出相关防御建议,保证测试结果的准确性。

2 网络安全等级保护测评中渗透测试的应用

2.1 需求分析

网络安全评估系统是基于网络安全形势与网络体系结构进行确定,为使网络系统的安全得到保障,除要明确具体的安全要求外,还要了解网络系统的脆弱性及其造成的危害,以及针对脆弱性应采取的措施,上述目标的实现,需要评估网络系统的安全性。网络安全评估的最终目的是借助测试技术,找出网络系统中存在的安全漏洞,评估网络风险程度,依据评估结果,制定安全策略与措施,为网络安全提供保障。

2.2 基于渗透测试的测评系统架构

评估网络的整体安全状况是网管的重要工作内容之一,为更加高效地完成此项工作,需要有一套功能强大、性能稳定的测评工具,通过该工具对网络安全等级保护进行评测,及时了解并掌握网络的安全情况。基于此,下面依托渗透测试,设计开发一款网络安全评估系统。本次设计的系统采用当前较为流行的B/S 架构体系,自Web 兴起后,这种架构在系统设计中的应用越来越广泛,基本上已经取代C/S 架构,成为主流架构。系统具备如下功能:用户可以利用Web 浏览器,对服务器进行访问,并向服务器提交相关的扫描任务,如端口扫描、IP 设置等[2];当服务器端接收到用户提交的扫描数据后,便会对指定的网络做安全检测,发现目标网络存在的漏洞;依据漏洞信息,评估漏洞的风险等级和网络设备面临的风险程度,并对网络安全作出整体性评价,提出合理可行的解决方案;以用户指定的格式,反馈评估结果。

2.3 系统模块设计

功能模块是系统的核心部分,是系统设计开发的重要内容,本系统主要有以下模块:用户配置、系统控制、网络安全评估、漏洞库以及插件库等。

2.3.1 用户配置

网络安全漏洞扫描任务信息需要通过用户配置模块进行建立,扫描任务信息是该模块实现的主要功能,具体包括以下信息:扫描任务主机、扫描任务配置以及扫描任务插件等。通过输入相应的指令,可对漏洞扫描任务的启、停加以控制,该模块能够对扫描策略进行定义,并完成扫描参数的设定。依托该模块,用户可自行定制网络安全漏洞扫描任务。

2.3.2 系统控制

系统控制模块可以协调其他模块,接受扫描请求,依据预先设定好的扫描策略,向各功能模块下达指令,并对插件库内的脚本测试插件进行调用,按配置的安全规则,扫描目标网络,将结果发送给处理模块。系统控制模块的功能较多,如完成初始化、响应客户端发出的各种请求。系统在初始化的过程中,会调用脚本检测插件,这个过程较为复杂,可由插件选择与组织两个模块完成。插件选择模块会将选好的插件传给组织模块,而组织模块会通过分析得出需要使用的插件,并为插件的执行编排顺序,这样能够使脚本解释器的执行效率得到大幅度提升。组织模块按可执行的插件建立关系树,据此确定插件的执行顺序[3]。

2.3.3 网络安全评估

网络安全评估是本系统中较为重要的功能模块之一,该模块由漏洞风险评估、权重计算等部分组成,能够对目标网络面临的风险大小进行判定。在评估网络设备风险大小时,依据最薄弱环节公理,即网络中最薄弱的部分决定了安全性的强度等级,换言之网络设备的风险大小等于扫描发现的漏洞风险大小,而漏洞的风险大小,可以通过插件的矢量定义求取。

2.3.4 漏洞库

系统的每个安全漏洞均有属于自己的特征,不同的漏洞有不同的应对措施,漏洞库的作用就是对当前已知的漏洞特征及应对措施加以存储。在开发测评系统时,需要建立一个与通用漏洞披露(CVE)相兼容的漏洞库[4]。由于CVE 会定期更新,所以漏洞库能够追踪到最新的漏洞,为测评提供条件。一个完整的漏洞库由以下信息组成:基本信息、评价要素信息和其他信息。其中基本信息包含漏洞编号、漏洞名称、漏洞描述和漏洞级别等内容;评价要素信息包含攻击途径、攻击的复杂程度、机密性、完整性及可用性等内容;其他信息包含保留字段、解决方案等内容,以上信息可存储于二维表中。漏洞信息可通过相关的网站进行采集,可以自动采集,也可手动收集。

2.3.5 插件库

漏洞检测脚本编写完毕后,需要存放在插件库中,一个插件与一个网络安全漏洞相对应,通过系统控制模块能够调用插件。编制插件时,要遵循简洁明了的原则,插件代码的组成部分越少越好,在保证应用的前提下,单个插件的代码应由以下两个部分组成:一部分为属性描述,另一部分为扫描代码。前者包含与网络安全漏洞相关的各种基本属性,后者可为漏洞检测提供稳定的功能函数,以发送数据包的方式,模拟恶意攻击,检测目标主机是否存在安全漏洞。插件的执行需要通过解释器完成,NASL 自带插件解释器功能,为脚本扩展提供了便利条件。

2.4 渗透测试技术的实现

2.4.1 端口扫描的实现

网络渗透测试前,需要了解测评目标开启的端口情况及提供的网络服务类型,这部分信息的获取可以利用端口扫描完成。本文所设计的系统采用半开式扫描,即TCP SYN[5]。之所以选择这种扫描方式,主要是因为它能够快速且完整的完成3 次握手过程,当SYN请求包发出后,返回的数据包为SYN/ACK 时,表明端口此时正处于监听状态,若是返回的数据包为RST,则说明端口的状态为关闭。由于扫描过程不会在系统上留下任何记录,故很难被发现。在TCP SYN 扫描方式下,TCP 首部中不包含以下信息:源地址、目标地址等,检测时,需要赋予TCP 一个伪首部,以此增强检测的有效性,伪首部主要是用于计算,不需要发送。端口扫描的实现过程如下:套接字初始化,按检测任务创建套接字,并对套接字选项合理设置,可以使用相关的函数对所创建的套接字IP 头进行设置,计算出TCP 的校验,在具体计算时,要包含TCP 伪首部;发送数据包,调用相应的函数接收数据包,最后对接收到的数据包全面分析。

2.4.2 操作系统探测的实现

当端口扫描完成后,便可探测操作系统,为加快探测速度,在系统设计中,引入以下两种探测技术,其中一种是探测返回数据包的TTL,即生存时间值,另一种是探测通信协议栈指纹。

(1)从操作系统的角度看,TTL 具有固定性的特点,对目标主机返回的TTL 进行分析,能够判断出主机操作系统的类型。在探测操作系统时,可以先用TTL 做初步判定,再以协议栈指纹对初步判定结果加以确认,提高探测效率。发送SYN 探测包可以获得TTL,SYN探测包的发送归属于协议栈探测技术的范畴,由此使得探测包能够与指纹相匹配[6]。当二者的判断结果吻合时,便不需要协议栈指纹探测,可直接得出最终的探测结果。

(2)用通信协议栈指纹判断网络主机的操作系统类型时,需要先按端口扫描结果,判断主机中TCP 端口的情况,除正常开放的TCP 端口外,还要有一个关闭的TCP 和UDP 端口[7]。随后系统会自行构造出一种格式特定的数据包,并发送给目标主机,检测目标主机对数据包的响应情况,用返回的结果与指纹数据匹配,找出目标主机操作系统的具体类型。操作系统的探测方法实质上就是通过发送不同的套接字包作为探测数据包,再通过端口将有利用价值的数据包过滤出来,并加以分解,最后将这些数据与指纹数据库内的数据做匹配,获取操作系统信息,实现探测目标主机操作系统的目的。

2.4.3 漏洞扫描的实现

在漏洞扫描时,需要借助相应的插件,由此使得扫描插件的选取成为重点内容。通过扫描引擎,对封装有漏洞扫描方法的插件进行调用,便可快速完成网络安全漏洞扫描。当需要添加新的功能时,对更多的漏洞进行扫描,则可安装更多的插件。本系统设计时,选用NASL 语言作为扫描插件,这是一款专为漏洞编写开发的具有解释性功能的扫描脚本,可以提供非常丰富的函数,用于网络操作,由此使编写出的扫描脚本代码比较精炼,仅有数十行,为新扫描脚本的编制和旧脚本的维护带来极大便利。按照NASL 的结构以及该语言所提供的函数情况,在已知网络脆弱性的前提下,可编写安全漏洞扫描插件,对目标主机中的漏洞进行检测[8]。

2.5 系统测试

2.5.1 测试用例

为进一步验证本次设计的测评系统的可用性,对已知拓扑结构的计算机网络开展安全等级保护测评。待测网络中包含路由器(1 个)、防火墙(1 个)、Web 服务器(1 个)、客户端设备(3 台)。安全漏洞扫描参数的设定情况如下:对整个网络中的所有安全漏洞进行测试,最大并发线程为100 个,主机数量10 个[9]。

2.5.2 测试结果

网络安全漏洞扫描用时为77 分12 秒,存活的主机数量为6 个,安全漏洞数量为3 个,警告数量为5个,提示数量为7 个。经渗透测试后,获取到的网络安全漏洞信息如下。主机一:发现安全警告;主机二:发现安全漏洞、安全警告和安全提示;主机三:发现安全漏洞和安全提示;主机四:发现安全漏洞和安全提示;主机五:发现安全漏洞和安全提示;主机六:发现安全警告。由上述检测结果可以看出,本次设计的测评系统,在网络安全等级保护测评中具有良好的应用效果,能够发现网络存在的安全问题。系统采用多进程和多线程设计,扫描速度大幅度提升,插件技术的运用,使系统具备可扩展性,评估方法合理可行,结果准确,可在计算机网络安全评估中推广应用。

3 结束语

综上所述,网络安全等级保护测评是一项非常重要的工作,为提高测评结果的准确性,可以运用渗透测试构建测评系统。本文所设计的基于渗透测试的网络安全等级保护测评系统,在网络安全评估方面具有良好的应用效果,具备一定的推广使用价值。未来一段时期,可对系统逐步改进,使其性能更加完善,更好地为网络安全服务。