时间:2024-05-04
张昊 贺江敏 屈晔
摘 要:网络安全漏洞检测在网络信息系统保障中发挥着重要的基础作用。文章首先对漏洞扫描器的原理和漏洞数据库进行了分析,接着介绍了模拟攻击脚本定制和插件技术两种常见技术,最后给出了软件实现和利用该工具对系统进行安全分析得到的检测结果。实践证明,在该工具软件在已实现功能的基础上,及时进行漏洞和插件更新,就可用于网络系统安全检测。
关键词:网络安全;漏洞;数据库;测评工具
中图分类号: TP309.2 文献标识码:A
Abstract: The cyberspace security vulnerability detection plays an important basic role in network information system guarantee. This paper first analyzes the principle of vulnerability scanner and vulnerability database, then introduces two common technologies, i.e. simulation attack script customization and plug-in technology, finally, the software implementation and the test results of the system security analysis by using the tool are given. It has been proved that, on the basis of the realized function of the tool software, the vulnerability and plug-in update in time can be used for network system security detection.
Key words: cyberspace security; vulnerability; database; evaluation tools
1 引言
进入新时代,全球迎来了新一轮信息技术革命,以互联网为核心的信息通信技术及其应用和服务正在发生质变。人类社会的信息化、网络化达到前所未有的程度,信息网络成了整个国家和社会的“中枢神经”。然而网络化趋势却带来了两个矛盾:一是攻击技术永远领先于防御技术;二是信息技术和应用越复杂、功能越全面,其脆弱性、漏洞和安全隐患就越大。从技术发展趋势看,这两个矛盾会越来越突出,网络与信息安全形势不容乐观。保障网络信息安全中非常重要的一项措施就是消除信息系统中已知的安全隐患。
网络安全检测评估,通过对信息网络及其相关设施设备的安全风险进行检测评估,及时发现安全隐患,提出防护措施,对确保信息网络安全运行具有重要关口作用。研究网络安全漏洞检测技术,开发和使用漏洞扫描器,及时发现所维护的系统开放的各种TCP端口、提供的服务、软件版本和这些服务及软件呈现在网络及信息系统中的安全漏洞,从而在计算机网络系统安全保卫战中做到“有的放矢”,及时修补漏洞,是网络安全保障工作的关键步骤之一,为网络安全保障工作提供技术支撑,具有现实意义。
2 网络安全检测工具
2.1 漏洞扫描器的原理
漏洞扫描器是常见的网络安全检测工具,漏洞扫描器分为主机漏洞扫描器和网络漏洞扫描器。前者基于主机,通过在主机系统本地运行代理程序来检测系统漏洞,例如操作系统扫描器和数据库扫描器;后者基于网络,通过请求/应答方式远程检测目标网络和主机系统的安全漏洞。针对检测对象的不同,漏洞扫描器还可分为网络扫描器、操作系统扫描器、WWW服务扫描器、数据库扫描器以及无线网络扫描器。
漏洞扫描器通常以三种形式出现:(1)单一的扫描软件,安装在计算机或掌上电脑上,例如ISS Internet Scanner;(2)基于客户机(管理端)/服务器(扫描引擎)模式或浏览器/服务器模式,通常为软件,安装在不同的计算机上,也有将扫描引擎做成硬件的,例如Nessus;(3)其他安全产品的组件,例如防御安全评估就是防火墙的一个组件。
网络漏洞扫描可分为ARP扫描、ICMP扫描、端口扫描、OS探测、脆弱点探测等。按照TCP/IP协议分层模型,ARP扫描工作在数据链路层,可以基于ARP协议在局域网内对目标主机进行扫描,来判断目标主机是否启用。ICMP(Ping)扫描工作在互联网络层;端口扫描工作在传输层;0S探测、脆弱点探测工作在网络层、传输层和应用层。通过ARP扫描、ICMP扫描确定目标主机的IP地址,利用ICMP扫描可以探测是否有防火墙或者其他过滤设备存在,可以获得防火墙的ACL(access control list),甚至整个网络拓扑结构。端口扫描分为TCP扫描和UDP扫描,通过远程检测目标主机不同端口的服务,记录目标给予的应答,来搜集目标主机上的各种信息。基于端口扫描的结果,可以进行OS探测,然后根据系统的漏洞库进行分析和匹配,进行脆弱点探测,如果满足匹配条件,则认为安全漏洞存在;或者通過模拟黑客的攻击手法对目标主机进行攻击,如果模拟攻击成功,则认为安全漏洞存在。
在匹配原理上,目前漏洞扫描器大都采用基于规则的匹配技术,即通过对网络系统安全漏洞、黑客攻击案例和网络系统安全配置的分析,形成一套标准安全漏洞的特征库,在此基础上进一步形成相应的匹配规则,由扫描器自动完成扫描分析工作。
2.2 安全漏洞数据库
目前,漏洞扫描器多数采用基于特征的匹配技术,与基于误用检测技术的入侵检测系统相类似。扫描器首先通过请求/应答,或通过执行检测脚本,来搜集目标主机上的信息,然后在获取的信息中寻找漏洞特征库定义的安全漏洞,如果有,则认为安全漏洞存在。可以看到,安全漏洞能否发现很大程度上取决于漏洞特征的定义。
漏洞特征库的多少决定了漏洞扫描器能够发现安全漏洞的数量,所以这是衡量一个漏洞扫描产品功能强弱的重要因素,这需要引出漏洞特征库升级(即产品升级)问题。由于每天都有可能出现新的安全漏洞,而基于特征匹配的漏洞扫描技术不可能发现未知的安全漏洞,所以特征库的及时升级就显得尤为重要。
MITRE公司建立的CVE(Common Vulnerabilities and Exposures,公共弱点/风险)列表解决了这个问题。CVE是一个行业标准,为每个弱点/风险(漏洞)确定了唯一的名称和标准化的描述,可以成为评价相应入侵检测和漏洞扫描等工具产品和数据库的基准。
当MITRE发现一个潜在的新的安全漏洞后,MITRE的CVE编辑审查部门将授予这个新问题一个候选名称以及一个号码(CAN编号)。然后审查小组将对这个问题进行审查,以确定它是全新的问题,而不是CVE列表中已有的问题,也不是另一个正在等待审查的问题,然后投票决定是否接受这个问题为一个正式的CVE项。MITRE的审查小组由计算机安全问题专家组成,这些专家不仅仅来自MITRE公司,有些来自其他的安全技术组织或者安全问题咨询公司。通过收集和分析安全漏洞,开发相应漏洞检测插件或脚本,可以扩展漏洞扫描器可发现的漏洞扫描类型和数量,一个网络安全漏洞数据库的维护系统如图1所示。
3 网络安全检测工具开发
3.1 模拟攻击脚本定制
模拟攻击脚本的定制对于安全扫描和安全漏洞的验证都十分关键,也是扫描器的关键技术之一。模拟攻击脚本与漏洞特征库紧密相关,需要获取包含漏洞特征的信息。事实上,模拟攻击脚本是实际攻击的一个简化版或弱化版,达到获取信息的目的即可,而不需要把目标攻瘫或获取根权限。例如,模拟的拒绝服务攻击脚本,一旦发现系统出现异常时就会立刻停止攻击。探测弱口令之类安全漏洞的脚本,则会利用账户名称简单变换、长度较短和易猜解的口令进行尝试,而不会像口令破解程序那样会去穷尽整个搜索空间。通常,模拟攻击脚本越多,扫描器能够发现的安全漏洞种类就越多,功能也就越强大。
3.2 插件技术
插件就是信息收集或模拟攻击的脚本,每个插件都封装着一个或者多个漏洞的测试手段。通常,漏洞扫描器是借助于主扫描程序通过用插件的方法来执行扫描,通过添加新的插件就可以使扫描器增加新的功能,扫描更多的漏洞。如果能够格式化插件的编写规范并予以公布,用户或者第三方就可以自己编写插件来扩展扫描器的功能。插件技术可使扫描器的结构清晰,升级维护变的相对简单,并具有非常强的扩展性。
4 网络系统安全检测工具软件实现
4.1 存活主机探测
在漏洞扫描之前,首先要进行存活主机的探测,特别是大范围的网络漏洞扫描,若进行全IP段的盲扫,将耗费大量的无用时间。进行存活主机探测目前主要有两种方法:(1)Ping探测。是向特定的目的主机发送ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo请求报文,测试目的主机是否可达及了解其有关状态。如果收到了目标主机类型字段为0的应答数据包,说明目标主机是存活的,接下来就可以针对存活的目标主机进行下一步的扫描,如果在规定的时间内,源主机没有接收到ICMP的应答包,则说明目标主机不可达。(2)开放端口探测。由于安全的原因,目前很多主机或者防火墙都禁用了Ping,这导致即使是存活的主机也没法连通,因此使用Ping方法没法百分百判断主机的存活状态,这就要结合开放端口判定主机的存活状态。一般通过扫描常见的端口,如Web服务80、8080、443端口,FTP21端口,Windows常见的135、139、445端口、Linux常见的22端口等。
4.2 端口扫描技术
网络漏洞扫描是建立在端口扫描的基础上的,支持TCP/IP协议的主机和设备,都是以开放端口来提供服务,端口可以说是系统对外的窗口,安全漏洞也一般通过端口暴露出来。因此,网络漏洞扫描器为了提高扫描效率,首先需要判断系统的哪些端口是开放的,然后对开放的端口执行某些扫描脚本,以进一步寻找安全漏洞。扫描器一般集成了六种主要的端口扫描技术。
(1)TCP SYN扫描:扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不发送ACK应答而是发送RST包请求断开连接。这样“三次握手”就没有完成,无法建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志中。
(2)TCP FIN扫描:扫描器发送一个设置了FIN位的数据包,若响应RST数据包,则表示端口关闭,没有响应则表示开放。
(3)TCP connect扫描:扫描器试图与每一个TCP端口进行“三次握手”通信。如果能够成功建立接连,则证明端口开放,否则为关闭。准确度很高,但是最容易被防火墙和IDS检测到,并且在目标主机的日志中会记录大量的连接请求以及错误信息。
(4)FIN+URG+PUSH扫描:也叫TCP Xmas Tree扫描,扫描器向目标主机发送一个FIN+URG+PUSH分組,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个RST标志。
(5)NULL扫描:将一个没有设置任何标志位的数据包发送给TCP端口,在正常的通信中至少要设置一个标志位,根据FRC 793的要求,在端口关闭的情况下,若收到一个没有设置标志位的数据字段,那么主机应该舍弃这个分段并发送一个RST数据包,否则不会响应发起扫描的客户端计算机。也就是说,如果TCP端口处于关闭状态则响应一个RST数据包,若处于开放状态则无响应。
(6)UDP ICMP端口不能到达扫描:扫描器向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误,这样就能发现哪个端口是关闭的。
4.3 指纹探测技术
所谓指纹探测就是为了精确收集扫描目标的各种信息,如探测操作系统、数据库、中间件等的类型和具体版本,为下一步的漏洞探测提供准确信息,提高漏洞扫描结果的准确率。很多应用软件都会在其banner中返回其软件名称、版本号等关键信息。图2是一个连接FTP服务器时,服务器返回相关信息的一个例子。
HTTP访问返回数据的HTTP头中通常也会包括HTTP服务器软件相关信息,如通过图3的返回信息可以知道服务器为“Apache-Coyote”,版本为1.1。
针对软件banner信息泄露的情况,有的系统管理员会修改banner以迷惑恶意攻击者或扫描软件。另外一个相对简单的指纹探测方法就是通过主机开放的端口号进行判断。互联网上知名的服务都有对应的端口号,如HTTP服务对应80、FTP服务对应21、SSH服务对应22等,当然这个规范也不是强制要求的。一些早期的漏洞扫描软件直接通过端口号判断目标主机开放的服务并进行下一步的漏洞扫描,比如oracle默认的端口号是1521,当oracle以默认端口部署时,漏洞扫描软件会通过oracle漏洞库匹配发现数据库的相关漏洞,当oracle的端口号修改为非1521端口后,漏洞扫描软件就会认为目标主机没有安装oracle数据库,不会进行相关漏洞扫描,修改服务的默认端口也是系统安全配置的基线之一。
4.4 软件主要功能
扫描模块在工作时,首先进行初始化,在初始化阶段,主要是读取所需的参数。比如从基本信息探测子模块得到操作系统类型,由此来决定在扫描中需要使用的漏洞库,还有一些用户自己配置的参数。除了读取参数外,还要建立一些文件以供以后使用。初始化后,建立非阻塞socket并连接,然后根据得到的相关端口及对应的服务,来调用相应的漏洞扫描子模块。
Windows下网络编程规范Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数,也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Windows Sockets规范本意在于提供应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。
网络安全检测工具使用VC++ 6.0进行开发,在实现中采用了插件技术和多线程编程技术,由于CSocket类封装了大量网络基础应用低层语句,可以很方便地进行网络编程,而无需对底层进行直接操作。图4给出了软件实现界面,图5给出了使用该工具进行检测得到的安全分析结果。
4.5 小结
针对目前TCP/IP网络和各种网络主机的安全现状,设计并实现了一个网络漏洞扫描检测工具,可以扫描分析Linux、UNIX、Windows 2000/NT/7/2008等多种操作系统,以及Sql Server、Oracle等主流数据库、Web应用系统等多种对象的安全漏洞。该网络安全漏洞扫描器具有五个特点。
(1)能够多方位、多角度对处于网络环境中的重要网络主机进行安全扫描;
(2)扫描覆盖面广:能对多种操作系统、数据库进行隐患扫描;
(3)扫描速度快:利用多进程并发和TCP的非阻塞连接等技术加快了扫描的速度;
(4)可配置性好:通过友好的图形化界面,用户可以十分方便地配置本系统的主要参数,以便于灵活的适应各种各样的实际网络应用环境;
(5)可扩展性好:采用插件技术,并可以对漏洞库进行升级。
5 结束语
网络安全工作是防守和进攻的博弈,及时和准确地识别网络信息系统弱点和漏洞,才能在网络安全保障工作中处于先机,立于不败之地。网络安全漏洞检测技术对网络信息系统的保障有着非常重要的作用,不仅可以借此提高整体技术水平、质量水平,还可以加强安全性能。降低网络信息系统出现安全问题的概率,已经成为网络安全领域的关注重点。网络漏洞检测的目的在于发现漏洞、修补漏洞,进而从根本上提高信息系统的安全性,减少安全事件的发生。加强网络安全漏洞检测技术研究,开发漏洞检测扫描分析软件工具,对于保障网络安全,提高整体网络安全防护能力具有十分重要的意义。
参考文献
[1] 屈晔,张昊. Bugscam自动化静态漏洞检测的分析[J]. 信息安全与通信保密,2007.3.
[2] 付灵丽,柴欣.Visual C++程序设计基础[M].北京:中国铁道出版社,2004.
[3] David Simon. Visual C++ 6 编程宝典[M].北京:电子工业出版社,2005.
[4] 张昊,屈晔,杨春晖. Web应用系统软件信息安全技术研究[J]. 电子产品可靠性与环境试验,2008,26(1) :P45-475.
[5] 張昊,黄晓昆. 信息安全等级保护测评工作实践与探讨[C]. 公安部第三研究所.第二届全国信息安全等级保护测评体系建设会议论文集.公安部第三研究所:《信息网络安全》北京编辑部,2012:32-33.
[6] GB/T 22239-2019,信息安全技术 网络安全等级保护基本要求[S]. 北京:中国质检准出版社,2019.
[7] 贺江敏,相里鹏. 代码安全性审查方法研究[J]. 信息安全研究,2018,11(4):p977-986.
[8] 张昊,贺江敏. 网络安全测评机构能力建设研究[J]. 网络空间安全,2020,11(3):P18-23.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!