返回首页
当前位置: 主页 > 其他教程 > 电脑教程 >

VulTracker漏洞管理与自动化跟踪平台实践教程

时间:2018-04-16 22:56来源:Office教程学习网 www.office68.com编辑:麦田守望者

本文描述了一个漏洞管理管理和自动化追踪系统的设计、实现与部署。对于学校改善信息安全提供了很好的参考。该系统不仅可以使用自行开发的漏洞检测代码,还可以利用现有漏洞扫描器加大扫描力度。其自动化追踪系统可大大降低管理人员劳动强度,提供工作效率。

  实际部署已经验证了其有效性。

  1 引言

  漏洞管理是信息安全管理中的一项重要工作。漏洞管理涵盖了资产发现、漏洞扫描、漏洞评估、漏洞修复、补丁管理、合规检查等全过程[1],面对不断涌现的新漏洞,漏洞管理工作面临着前所未有的压力,通过自动化的手段提高漏洞管理效率成为众多企业和机构的迫切需求。

  端口扫描和服务发现技术已相当成熟,一些开源和商业软件也已能做到对主机漏洞和Web漏洞的自动化检测,但对于漏洞发现之后的修复管理和进度跟踪仍然十分欠缺[2]。一些商业产品在主机漏洞扫描软件基础上增加了漏洞管理功能,但可扩展性受制于其单一的检测引擎。由于漏洞来源和种类的多样性,使用现有方案很难在一个统一的平台上对所有漏洞进行有效管理。

  本文针对漏洞管理工作面临的困境,设计并实现了Vul Tracker漏洞自动化跟踪平台。基于此平台可使用任意语言编写的测试程序对已知漏洞进行复测,无需人工介入即可自动跟踪漏洞修复状态,并可对接IT资产数据库实现责任人归属和通报流程全面自动化,大幅提升漏洞处置效率。

  2 技术背景

  2.1 漏洞扫描

  信息系统安全漏洞是长久以来一直存在的问题,围绕着漏洞检测出现了众多工具和系统,为安全研究和管理提供了极大便利。

  漏洞扫描过程通常分为服务发现和漏洞检测两个阶段。服务发现即通过ping、SNMP和端口扫描等方法搜索网络中的主机和设备,以及它们开放的端口和服务种类。漏洞检测一般又分为主机漏洞检测和Web漏洞检测。主机漏洞检测发现操作系统及服务器软件漏洞,通过对服务端口远程测试,或在提供系统登录口令的情况下进行认证扫描。Web漏洞检测针对网站进行爬取,然后对各页面做SQL注入等常见Web漏洞利用测试。

  最知名的主机漏洞扫描软件有Nessus、Nexpose和开源的OpenVAS,他们都具备从服务发现到漏洞检测全过程自动化的能力,支持认证和非认证扫描,且具备一定的Web漏洞检测功能。而针对网站漏洞,专业的Web漏洞扫描器具备更强的检测能力,常用的有Acunetix WVS和IBM Security AppScan等。尽管这些自动化工具极大简化了漏洞扫描工作,但它们普遍存在较高的漏检[3, 4],且在结果中包含众多低优先级的问题和误报,后续对报告解读处理的工作量庞大。

  除了准确率偏低以外,性能是现有自动化扫描软件的另一大瓶颈,它们通常无法适用百万目标甚至更大范围的扫描,利用开源软件自行构建漏洞扫描流程成为必需。服务发现阶段,ZMap提供了极佳的端口扫描性能,利用千兆链路甚至可在45分钟内遍历整个IPv4空间的特定端口[5],而Nmap丰富的NSE脚本则可实现强大的服务探测、信息获取、密码穷举和部分漏洞利用功能。

  新的漏洞公开后,许多安全研究人员会编写相应的验证或漏洞利用程序,所用的语言五花八门[6],常见的有Python、C,以及在Metasploit框架下开发使用的Ruby。Web类型的漏洞则通常直接给出攻击所用的HTTP请求。对这些漏洞利用代码修改定制后,可用作无害的漏洞检测。

  2.2 漏洞管理

  尽管漏洞扫描是漏洞管理中的一个重要环节,但从漏洞被发现到修复仍有很长的距离。漏洞扫描结果通常根据漏洞类型和CVSS评分确定优先级,而漏洞的实际影响与访问控制、防护体系、业务及价值密切相关,合理的漏洞评级一般需要人工评定。漏洞修复工作则更为复杂,需由开发和运维团队共同配合实施,此过程也需要密切的进度跟踪[7]。

  安全公司已推出的漏洞管理产品大多基于各自的漏洞扫描软件进行延伸,如Rapid7的Nexpose和以Nessus为核心的Tenable SecurityCenter,通过按计划执行扫描任务记录变化趋势,漏洞修补则以工单形式派发。Qualys基于云的SaaS漏洞管理服务,可对其扫描到的漏洞自动测试修复状态。尽管这些商业解决方案将漏洞扫描与管理集成简化了用户操作,但也将其漏洞管理能力限制在了由其单一的扫描引擎所能发现的漏洞范围。软件自动化所能发现的漏洞仅占所有漏洞的一小部分,当下漏洞信息来源多种多样,除了企业自身利用各种安全工具发现的以外,许多第三方平台,如乌云、补天、漏洞盒子和CNVD,汇聚了众多白帽黑客提交的各式漏洞。漏洞种类也不再局限于服务器软件漏洞和弱口令等,信息泄露、逻辑缺陷、后门植入等已超出传统漏洞扫描范畴。现有漏洞管理产品与第三方集成侧重资产、工单和防火墙设备,即将其漏洞扫描结果输出而非整合第三方的漏洞检测能力和漏洞信息。

  正因为目前没有一个很好的漏洞管理解决方案,许多企业仍使用Excel表格人工记录漏洞并跟踪处理进度[2],或者使用服务工单系统和软件开发常用的缺陷跟踪系统来管理漏洞。这些系统并非为漏洞管理设计,缺乏必要的自动化和集成,增加了人工投入。一些开源软件已尝试整合扫描器资源,如Dradis[8]能解析十多种漏洞扫描器的输出,生成合并的报告,但它无法主动调用扫描器进行扫描,Seccubus[9]则可主动调动多款扫描器定期执行扫描任务并比较结果,但它所能对接的扫描器种类较少,且不能复测单个漏洞,重复执行整个任务的时间和资源花销决定了其重复频率不可能太高。此外,两款软件仍然没有解决扫描器之外其他渠道获得的漏洞信息管理问题。

  3 系统设计与实现

  3.1 设计要求

  针对企业信息系统漏洞管理的现实需求和现有解决方案的缺陷,我们设计并开发了Vul Tracker漏洞管理和自动化跟踪平台,平台设计的基本要求如下:

  1)能够管理和跟踪各种来源提交的安全漏洞,包括使用扫描器自动检测的、人工渗透测试发现的,以及乌云、补天、CNVD等第三方渠道报告的漏洞;

  2)通过程序自动检测漏洞是否已修复,或者已消失的漏洞是否再次出现;具有较高的检测频率,及时反映漏洞状态变化,并且能够适应不断增长的漏洞数量,检测性能具有可伸缩性;

  3)具备开放的接口,能够与现有的IT管理系统和流程对接;

  不同于现有漏洞管理系统侧重于对扫描器的集成,Vul Tracker旨在解决已发现漏洞的跟踪处置问题。

  3.2 系统架构

  Vul Tracker平台整体架构如图1。漏洞数据库记录所有已知的信息系统漏洞及其相关信息,漏洞信息可通过Web界面录入、编辑和查询。

  每个漏洞对应一个用于检测其是否已修复的检测程序路径和启动参数,任务管理程序自动执行检测程序并将结果更新到数据库中。未修复状态的漏洞每两小时复测一次,而已修复状态的漏洞系统也仍会每12小时回访一次以防在之前测试中认为已修复的漏洞再次出现,这种情况在网络和服务不稳定时较为常见。任务管理程序以多进程方式实现并行,从而容易扩展到多机分布式运行,只需能够访问共享的数据库即可。各进程每次获取一个等待执行的检测任务,进程间的互斥由数据库锁机制保证。

  一系列数据接口实现漏洞数据库与外部系统的对接,已实现的接口程序包括:1)依据IT资产数据库中的IP地址分配和域名注册信息自动识别漏洞所在的信息系统、服务器或设备所在位置、归属部门及负责人;2)根据各部门登记的信息安全联络人自动发送邮件提醒;3)通过API进行漏洞批量导入;4)提供接口允许其它IT管理系统访问本平台维护的漏洞数据,以便查询和生成统计报表。

  Vul Tracker完全使用PHP语言开发,数据存储在MySQL数据库中,因而具有跨平台的特性,但考虑到大多数漏洞检测程序更便于在Linux环境下开发和运行,一般使用Linux系统部署本平台。

  图1 Vul Tracker系统架构

 3.3 漏洞检测程序

  漏洞检测程序是Vul Tracker漏洞跟踪自动化的核心。根据适用范围,可将漏洞检测程序分为两类:可复用的通用型检测程序,和为特定目标开发的专用检测程序。通用型检测程序针对通用型漏洞,例如各种协议的弱口令、OpenSSL心脏出血、Bash破壳漏洞和Apache Struts 2远程代码执行等,也用于实现一些普遍适用的检测逻辑,在设置相应的启动参数后,可直接用于众多具有相似漏洞和测试方法的目标的检测,重复利用率高。极少数通用方法无法覆盖且又仅存在于单个应用系统的漏洞,为其专门开发的检测逻辑则通常无法在其他场合再次利用。

  为了让各种技术背景的开发和安全管理人员都能快速上手,不同于Nessus和Nexpose必须使用其特有的NASL和XML语言开发插件,Vul Tracker的漏洞检测程序可使用任何能在部署所用的操作系统上运行的语言编写。Vul Tracker的任务管理程序执行漏洞检测程序命令后,依据特定的程序退出代码来判断漏洞检测结果。用户可直接将互联网上公开的各种语言的漏洞利用代码直接用在本平台的检测,只需修改利用成功和失败后的返回代码即可。

  相当一部分Web漏洞可通过发送一个特定的HTTP请求,然后根据服务器响应内容判断漏洞是否存在,利用cURL和grep命令的管道串联即可实现。例如网站漏洞中最常见的SQL注入,我们从sqlmap测试过程提取攻击载荷并使用cURL重放即可判断漏洞是否仍然可以利用。稍复杂一些的Web漏洞验证需要多步交互,或者有CSRF保护的表单提交需解析Cookie和表单内容,甚至依赖JavaScript执行,这种情况我们借助PhantomJS完整的WebKit浏览器环境进行网页自动化操作。

  除了自行编写检测代码外,也可直接调用现有的漏洞扫描器。Nessus的nasl命令行工具可以直接执行Nessus自带的6万多个检测插件,通过指定插件名称,仅运行与已知漏洞对应的单个测试效率极高[10]。Metasploit渗透测试框架的数千个模块,也可编写资源文件自动调用。Nmap则可以指定参数,只测试漏洞所在的端口、执行选定的一个NSE脚本,提高漏洞复测速度。直接调用漏洞扫描器进行复测,使得批量导入这些扫描器的检测结果成为可能。

  4 使用效果

  4.1 部署和使用

  Vul Tracker平台的原型于2016年1月开发完成并进行了两套的实际部署,一套用于上海交通大学校内信息系统漏洞管理和跟踪,另一套则被用于中国高等教育学会教育信息化分会网络信息安全工作组对全国高校的漏洞监测。

  在上海交通大学部署的平台,运行半年时间以来已录入各种来源的信息系统安全漏洞305个,其中300个通过程序自动跟踪,占所有漏洞的98.4%。23个通用型检测程序覆盖了298个自动跟踪的漏洞,仅有2个漏洞需要编写专用的检测脚本。表1统计了通用型检测程序的开发语言及对应的漏洞实例数,23个程序使用了4种不同的语言开发,应用漏洞实例最多的为调用cURL测试网站漏洞的Bash脚本,其中最基础的发送HTTP GET或POST请求并对响应作正则匹配的两个脚本被分别用于167个和50个漏洞的测试。

  绝大多数漏洞使用已有的通用检测程序即可跟踪,无需频繁开发新的检测代码,有效降低了平台维护工作量。平台上仍有5个漏洞无法通过程序自动跟踪,其原因归结于:1)漏洞触发要求用户登录而登录过程包含必须人工识别的验证码;2)应用系统依赖特殊的客户端环境如ActiveX插件。这两种情况目前仍需人工跟踪修复进度,但它们仅占漏洞总量的1.6%因而影响轻微。

  上海交通大学Vul Tracker平台管理的305个漏洞中186个(61.0%)已经修复。自动化的跟踪以两小时的间隔自动复测未修复的漏洞,精确记录漏洞修复完成的时间,利用该数据可准确评价漏洞管理指标,如各院系的漏洞修复率及响应时间。平台上线后修复的漏洞平均处置耗时15.7天,仍有较大的改进空间。

  Vul Tracker平台的另一套部署管理了教育信息化分会网络信息安全工作组监测发现的2,296个全国高校教育网内的安全漏洞,与工作组的基础数据平台对接,依据域名和IP地址将漏洞归属到755个不同的高校,并允许各校在基础数据库中登记的安全负责人登录查看本校的漏洞详情。平台管理的漏洞按类别统计如表2,100%利用通用型检测程序自动跟踪,目前已有1,116个(48.6%)得到修复,平均处置耗时61.1天。不同于学校内部容易建立起有效的通报渠道和督办机制,这些漏洞的处置明显较为迟缓。

  4.2 性能评估

  目前已部署的两套Vul Tracker平台分别使用一台具有8 vCPU和8 GB内存的虚拟机部署,各运行20个任务管理进程,即支持并发对20个漏洞同时进行复测。当前策略对未修复漏洞2小时测试一次,已修复漏洞12小时回访一次,两套系统一天执行的检测次数分别仅为2千和1.6万次,系统负载极低。

  我们的漏洞检测程序编写一般要求保证在1分钟内执行完毕,避免长时间等待造成任务积压,对超时时间不可控的检测程序使用timeout命令限制其运行时长。在管理有2,296个漏洞的网络信息安全工作组的平台上,我们要求系统对所有漏洞立即进行重新测试,系统在7分25秒内完成了对全部2,296个漏洞的复测,平均每个漏洞检测耗时仅3.9秒。据此估计,20个并发进程的情况下,系统可支持多达6.3万个漏洞的自动跟踪(假设未修复漏洞占50%),并且,通过增加任务管理的进程数,并在必要时将其分布到多台服务器可进一步扩展性能。

  5 总结

  漏洞管理平台在企业信息安全管理中发挥着重要的作用,本文实现的Vul Tracker平台突破了现有的漏洞管理系统与特定的商业扫描器绑定造成的局限性,能够在一个平台上对各种渠道获得的安全漏洞信息进行统一的管理,并利用检测脚本自动跟踪漏洞修复状态,大幅降低漏洞管理的工作量。Vul Tracker平台不限定漏洞检测程序的开发语言,具有很强的灵活性,并行、分布式的架构可支持大批量漏洞的快速复测,满足大型企业机构和大规模网络的漏洞管理需求。

  参考文献:

  [1]Nyanchama M. Enterprise Vulnerability Management and Its Role in Information Security Management[J]. Information Systems Security, 2005, 14(3): 29-56.

  [2]Turner T. Vulnerability Management That Works[EB/OL]. [2016-5-31]. https://www.owasp.org/images/2/2f/Vulnerability_Management_That_Works.pdf

  [3]Holm H, Sommestad T, Almroth J, et al. A Quantitative Evaluation of Vulnerability Scanning[J]. Information Management & Computer Security, 2011, 19(4): 231-247.

  [4]Doupé A, Cova M, Vigna G. Why Johnny Can’t Pentest: An Analysis of Black-Box Web Vulnerability Scanners[C]// Proceedings of the 7th International Conference of Detection of Intrusions and Malware, and Vulnerability Assessment. Germany: Springer Berlin Heidelberg, 2010: 111-131.

  [5]Durumeric Z, Wustrow E, Halderman J A. ZMap: Fast Internet-wide Scanning and Its Security Applications[C]// Proceedings of the 22nd USENIX Security Symposium. Washington, D.C.: USENIX, 2013: 605-620.

  [6]Offensive Security. Exploit Database[DB/OL]. [2016-6-3]. https://www.exploit-db.com/

  [7]Barrere M. Vulnerability Management for Safe Configurations in Autonomic Networks and Systems[D]. Nancy, France: Ecole Doctorale IAEM, University of Lorraine, 2014.

  [8]Martin D, Korinek R, Rilla J A, et al. Dradis[CP/OL]. [2016-6-7]. http://dradisframework.org/

  [9]Breedijk F, Launius S, Cate G, et al. Seccubus[CP/OL]. [2016-6-7]. https://www.seccubus.com/

  [10]Gula R. Using the ‘nasl’ Nessus Command Line Tool[EB/OL]. [2016-6-13]. http://www.tenable.com/blog/using-the-nasl-nessus-command-line-tool

  作者单位:上海交通大学网络信息中心

------分隔线----------------------------
标签(Tag):VulTracker漏洞管理 自动化跟踪平台
------分隔线----------------------------
推荐内容
猜你感兴趣