漏洞管理实战:网络风险管理的策略方法

978-7-115-59459-4
作者: 安德鲁·马格努森(Andrew Magnusson)
译者: 袁国忠谭乃星
编辑: 傅道坤

图书目录:

详情

本书分别从概念和实战两个角度对漏洞管理进行了剖析,其中涉及与漏洞管理相关的概念和漏洞管理过程的步骤,以及构建免费或低成本漏洞管理系统的实用方法。 本书共 15 章,具体内容包括漏洞管理的基本概念、信息来源、漏洞扫描器、自动漏洞管理、处理漏洞、组织支持和办公室规则、搭建环境、使用数据收集工具、创建资产和漏洞数据库、维护数据库、生成资产和漏洞报告、自动执行扫描和生成报告、如何生成 HTML 形式的高级报告、与漏洞管理相关的高阶主题,以及未来的安全发展趋势及其对漏洞管理过程的影响。 本书先理论后实战,编排顺序合理,可帮助信息安全从业人员(尤其是漏洞研究人员和漏洞管理人员)打造一个可用、实用的漏洞管理系统,从而为所在的组织提供保护。

图书摘要

版权信息

书名:漏洞管理实战:网络风险管理的策略方法

ISBN:978-7-115-59459-4

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    [美] 安德鲁•马格努森(Andrew Magnusson)

译    袁国忠 谭乃星

责任编辑 傅道坤

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e59459”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


Copyright © 2020 by Andrew Magnusson. Title of English-language original: Practical Vulnerability Management: A Strategic Approach to Managing Cyber Risk, ISBN 9781593279882, published by No Starch Press Inc. 245 8th Street, San Francisco, California United States 94103. The Simplified Chinese-edition Copyright © 2022 by Posts and Telecom Press Co., Ltd under license by No Starch Press Inc. All rights reserved.

本书中文简体字版由美国No Starch出版社授权人民邮电出版社有限公司出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。


本书分别从概念和实战两个角度对漏洞管理进行了剖析,其中涉及与漏洞管理相关的概念和漏洞管理过程的步骤,以及构建免费或低成本漏洞管理系统的实用方法。

本书共15章,具体内容包括漏洞管理的基本概念、信息来源、漏洞扫描器、自动漏洞管理、处理漏洞、组织支持和办公室规则、搭建环境、使用数据收集工具、创建资产和漏洞数据库、维护数据库、生成资产和漏洞报告、自动执行扫描和生成报告、如何生成HTML形式的高级报告、与漏洞管理相关的高阶主题,以及未来的安全发展趋势及其对漏洞管理过程的影响。

本书先理论后实战,编排顺序合理,可帮助信息安全从业人员(尤其是漏洞研究人员和漏洞管理人员)打造一个可用、实用的漏洞管理系统,从而为所在的组织提供保护。


安德鲁•马格努森(Andrew Magnusson),近20年以来始终奋战在信息安全领域。他以防火墙管理员的身份开启职业生涯,并涉足过安全工程、漏洞分析和咨询等领域,当前为StrongDM公司的客户工程团队负责人。他与妻子和女儿居住在罗得岛州,还有两只猫与他们相伴。


Daniel E. Dumond,久经沙场的安全人员和业务带头人,具有21年以上的从业经验。在其职业生涯中,他担任过很多信息安全领域的技术和高级主管职位,帮助过全球重要的组织安装并提供创新的安全产品和服务。他对编程和自动化充满激情,并使用它们来应对严峻的安全挑战。


本书得以付梓绝非一个人的功劳,在我构思、编写和出版本书的过程中,很多人提供了大力支持。

首先感谢我的父母Jan Slaughter和Phil Magnusson。要是没有他们的爱和支持,我便不会对文字和计算机产生兴趣,本书就不可能存在。

感谢我的妻子Jessica McKay-Dasent,她在我编写和修订本书期间一如既往地无条件支持我。在本书从构思到完稿期间,我们结婚、买房并生下了女儿Artemis。感谢她一直以来的支持。

感谢No Starch出版社的编辑和支持人员,这包括但绝不限于Zach Lebowski、Alex Freed、Annie Choi、Barbara Yien、Janelle Ludowise、Katrina Taylor、Bill Pollock和Athabasca Witschi。他们对我的初稿进行了大量的改进,将本书塑造成了现在的样子。

感谢Daniel E.Dumond为本书所做的出色的技术审稿工作,让本书的内容和结构组成更为清晰、适用。倘若本书的正文和代码还有错误,那都是我的责任。

感谢亦师亦友的Annie Searle,她帮助我养成了风险管理思维,还审阅了本书多章的手稿。 感谢前东家Mandiant 咨询公司的多位同事为本书的写作提供的大力支持,他们是Elliott Dorham、Mike Shingler、Dennis Hanzlik和Jurgen Kutscher。

最后,感谢现任东家StrongDM公司的同事给我的支持与帮助,尤其感谢Justin McCarthy、Elizabeth Zalman和Schuyler Brown。


关注引人注目的大问题,如高级持续性威胁(APT),是人的天性。与APT有关联的攻击者攻陷过大型零售商、金融机构甚至政府网络,但如果将全部注意力都放在APT或其他可能上新闻头条的问题上,就会忽略基本问题。即便有保护系统的新防火墙和强大的流量监控设备,如果不关注安全职责的重要方面,也可能导致系统的“盔甲”出现大量裂缝。忽略基本方面(如不确保系统是最新的)可能带来严重的后果。

来看一个例子。假设您是一家中型电子商务公司的信息安全经理,您搭建了防火墙来阻止入站流量,只允许隔离区(DMZ)内系统上的流量去往面向互联网的服务,还开启了出站过滤功能,以禁止未经授权的出站流量通过。在终端上,您启用了反病毒软件,并加固了服务器。您以为自己的系统是安全的。

但在DMZ中的一台Linux服务器中,一个旧的Web服务正运行在过期的Tomcat版本上。这是一次不明智的决策(尝试向一些业务合作伙伴销售宝贵的专用数据)留下的隐患。这种尝试虽然失败了,但由于已经有一些订单,而根据合同,公司必须让这个服务器再运行一年。到年底时,这个项目悄然结束了,但这个服务器还在运行,所有人都将它忘在脑后。但外面有人注意到了它,并通过一台位于摩尔多瓦的失陷服务器发起了攻击,而您这个未打补丁的Tomcat服务器存在一个5年前的Java漏洞。至此,攻击者在您的网络中建立了“桥头堡”,而您所有的保护措施都无法挫败它。问题出在什么地方呢?

本书将证明牢固掌握基本信息安全技术的重要性,这些基本技术是成功的信息安全计划的重要组成部分。可惜它们常常被忽略,进而让位于更有吸引力的主题,如流量分析和自动化恶意软件沙箱(automated malware sandboxing)。这些主题确实是信息安全领域的重大进展,但在没有牢固掌握基本技术的情况下,投资于更高级的工具和技术毫无意义。

本书是为肩负如下任务的安全从业人员编写的:在预算很少的情况下打造一个漏洞管理系统,它具备商用漏洞管理工具的功能,能够为组织提供保护。如果读者还熟悉漏洞管理过程,那就更好了。要自己动手打造漏洞管理系统,必须熟悉Linux和数据库概念,并具备一些编程语言(如Python)的使用经验。本书的脚本是使用Python编写的,但您可使用自己喜欢的现代脚本语言或编程语言来重新编写它们。

被视为基础的安全主题有很多,如认证管理、网络设计和资产管理。这些主题对分析人员来说可能不那么有趣,却至关重要。

漏洞管理是信息安全的基本概念之一。没有任何软件包是完美无缺的,软件不可避免地会出现bug,而很多bug都会带来安全隐患。处理这些软件漏洞是信息安全领域中一个永恒的主题;要部署更高级、更有针对性的工具,必须确保安全基准,而要确保安全基准,必须对漏洞进行管理。

漏洞会影响IT基础设施的各个层面,因此漏洞管理会影响IT安全计划的各个方面。要确保终端安全,必须将工作站和服务器中安装的软件升级到最新版,以最大限度地缩小攻击面。零日漏洞始终是重要的关注点,但通过消除易于利用的已知(有时是存在已久的)漏洞,可增大攻击者攻陷终端进而在环境中建立“桥头堡”的难度。网络安全旨在竭尽所能只让必要的流量穿过内部网段和进出互联网,但如果系统或网络设备存在已知的漏洞,即便原本合法的流量也可能包含基于网络的攻击(它们使用的是受信任的协议)。身份和访问管理(IAM)对用户进行限制,使其只能访问获得授权的系统和数据,但如果身份系统本身存在漏洞,攻击者便可轻松地绕过它们。

如果环境具备安全基准,那么采取的任何应对措施都不能通过利用已知的漏洞来轻易绕过。咱们来看一种类似的情况:第一次世界大战之后,法国为抵御德国的入侵,沿两国边界建造了大量的堡垒和壕沟,并按当时法国陆军部长姓名将其命名为马奇诺防线。但第二次世界大战爆发后,德国避开马奇诺防线,穿过法国与比利时的边界入侵法国。造价如此高昂的防御工事没有发挥任何作用。这个道理也适用于网络环境,如果没有基本的安全保障,任何额外的反制措施都无异于马奇诺防线,攻击者可轻松地避开它们,因为别的地方有更容易的进攻路径。但通过建立主动的漏洞管理计划来提供并维护基本的安全保障,便可信任额外的安全措施能进一步提高安全计划的实际价值。

补丁管理对整个企业中服务器和终端的软件版本与补丁等级进行跟踪,这可能是与完整的软件配置管理(SCM)系统一道完成的。它可远程推送补丁,以确保系统是最新的。虽然传统的补丁管理与本书将介绍的漏洞管理有很多相似之处,但它们背后的假设有着天壤之别。

在补丁管理中,假设有补丁可用,并且一个补丁管理系统能够管理网络中需要打补丁的所有设备,另外有足够的时间和人力来打上所有的补丁。然而,在实际环境中,满足上述所有条件的情况少之又少。有些设备不由SCM进行管理,如路由器和防火墙等网络设备、测试机、遗弃的服务器以及其操作系统不与SCM代理兼容的设备。对典型的SCM部署来说,所有这些设备都是不可见的,很容易变得过时却没有任何人注意到。即便对终端来说自动打补丁是可行的,通常也必须手工处理服务器和网络设备,因为自动给服务器打补丁可能给组织带来无法承受的停机时间。另一方面,手工给服务器和网络设备打补丁需要时间,这会让IT人员不堪重负。

漏洞管理采取的方法更为务实,它要解决的问题是,在资源有限的情况下,如何解决最严重的漏洞,从而最大限度地改善安全状况,而不是如何安装所有的补丁。漏洞管理从风险管理的角度看待问题。我们首先找出网络设备(无论是受管的还是不受管的)中存在的所有漏洞,并确定哪些漏洞给组织带来的风险最大。收集这些数据后,我们便有足够的信息,能够确定各种补丁安装和修复措施的轻重缓急。安装紧要的补丁并采取紧要的修复措施后,如果我们还能采取更多的更新和修复措施,那更好。但通过优先考虑风险最高的问题,并明智地分配有限的时间和资源,可在花费较少精力的情况下极大地改善系统的安全状况。

本书分两部分——概念部分和实战部分。第一部分(第1章~第6章)介绍了与漏洞管理相关的概念以及漏洞管理的步骤;第二部分(第7章~第15章)介绍了一种构建免费或低成本漏洞管理系统的实用方法。您可按顺序阅读本书,但最重要的是搞明白每个脚本背后的概念,这样才能根据实际情况修改它们。本书的最后介绍了那些在您的漏洞管理系统能够正常运行后可能会面对的主题,其中一个主题是在预算允许的情况下选购一款商用工具,以改善您的漏洞管理计划。

本书先理论后实战,内容的排列顺序合乎逻辑,但如果您是经验丰富的安全从业人员,可直接跳到自己最感兴趣的主题。同样,书中的脚本也是按合乎逻辑的顺序编写的,但您可分别使用它们,至于具体使用哪些,则取决于您的环境中已经有哪些工具和进程。

下面概述了各章的内容。

第1章,“基本概念”:介绍漏洞管理的基本概念以及漏洞管理与风险管理的关系。

第2章,“信息来源”:讨论为实施漏洞管理需要收集的各种数据。

第3章,“漏洞扫描器”:介绍如何扫描网络中的系统以找出其中的漏洞。

第4章,“自动漏洞管理”:阐述如何打造一个自动收集并分析数据的系统。

第5章,“处理漏洞”:介绍如何根据收集的漏洞信息采取相应的措施——打补丁、采取缓解措施或接受风险。

第6章,“组织支持和办公室规则”:介绍如何在组织中实施漏洞管理。

第7章,“搭建环境”:阐述如何安装操作系统和必要的包以及如何通过编写脚本来确保一切都是最新的。

第8章,“使用数据收集工具”:讨论如何使用Nmap、OpenVAS和cve-search来收集数据。

第9章,“创建资产和漏洞数据库”:演示如何将扫描结果导入数据库。

第10章,“维护数据库”:介绍如何在数据库中添加键及剔除过时的数据。

第11章,“生成资产和漏洞报告”:深入探讨如何为资产和漏洞创建基本的CSV报告。

第12章,“自动执行扫描和生成报告”:介绍如何通过编写脚本来自动执行Nmap和OpenVAS扫描以及定期地生成报告。

第13章,“高级报告”:讨论如何生成HTML格式的高级报告。

第14章,“高阶主题”:介绍如何创建API、自动利用漏洞以及支持云环境。

第15章,“结语”:介绍未来的安全发展趋势及其对漏洞管理过程的影响。

本书旨在引领漏洞管理新人打造一个行之有效的漏洞管理系统,以便能够生成准确且有用的漏洞情报。这些情报可加深您对组织漏洞状况的认识,进而改善组织的总体安全状况。通过阅读本书,读者可提高组织的漏洞管理能力,而这种能力是确保信息安全计划获得成功的基石之一。

本书提供了源代码下载等配套服务,请登录异步社区,搜索本书书名,进入本书页面,点击“配套资源”,跳转到下载页面,按提示进行操作即可。本书配置资源包含本书涉及的所有代码,还有一些可在环境中使用的示例配置文件。欢迎各位读者提出宝贵的建议。

与大多数计算机安全工具一样,本书介绍的工具和技术既可用于防御又可用于进攻。扫描可能成为充满恶意和敌对的行为,因此请只对您拥有或被授权扫描的系统和网络进行扫描。再重申一次,不要对并非属于您的系统进行扫描(准确地说是探测)。即便在妥善使用的情况下,这些扫描工具也可能带来负面后果,在极端情况下,可能会导致系统崩溃和数据丢失。采取扫描或与漏洞利用相关的行动前,务必对潜在的风险心中有数。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

要获得本书源代码等配套资源,请在异步社区本书页面中点击“配套资源”,跳转到下载页面,按提示进行操作即可。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e59459”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书技术审校等工作,可以发邮件给本书的责任编辑(fudaokun@ptpress.com.cn)。

如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号



要深入探究漏洞管理,必须先搞明白一些有关漏洞的基本信息。您可能熟悉漏洞及其风险等级,如果是这样的话,可将本章视为复习资料,通过阅读它,可为后面介绍的高阶主题做好充分准备。虽然本章不会详尽介绍各种信息安全概念,但涵盖的范围很广,足以确保您能够理解本书后面的内容。

在信息安全领域,存在3个主要的支柱,它们是信息的机密性(谁能访问数据)、信息的完整性(谁能修改数据)和信息的可用性(对获得授权的用户来说,数据是否可用)。这些支柱被称为CIA三要素。这个模型并非完美无缺,但对安全漏洞进行讨论和分类时,这些术语可提供极大的帮助。

无论是软件、固件还是硬件,都存在bug。虽然并非所有的bug都很严重,但很多都会带来安全隐患。在程序中,如果可以提供不正确的输入,进而导致程序崩溃,那么这不仅是bug,而且是漏洞。如果提供不正确的输入,只会导致屏幕上文本的颜色发生变化,但文本依然是可见的,那么这种bug就不是漏洞。准确地说,只要没有人能够利用这个bug来引发安全问题,它就不是漏洞。简而言之,漏洞是信息系统中可被攻击者利用进而带来安全隐患的弱点。通常,漏洞都是由bug导致的,但这些弱点也可能是由代码逻辑缺陷、糟糕的软件设计或不恰当的实现选择引发的。

仅当bug会影响数据的机密性、完整性或可用性(或者整个信息系统)时,它才被视为漏洞,主要的漏洞类型可直接对应于CIA三要素。这三大类分别是信息修改漏洞、信息泄露漏洞和拒绝服务(DoS)漏洞。信息泄露漏洞影响数据的机密性:这种漏洞让未经授权的用户能够访问他们原本不能访问的数据。信息修改漏洞让未经授权的用户能够修改数据,因此会影响数据的完整性。拒绝服务漏洞影响数据的可用性:如果获得授权的用户无法访问系统,他们就无法访问数据。

还有第四类漏洞,它们与代码运行和命令执行相关。这些漏洞让攻击者能够在系统中执行特定命令或运行任何代码。根据代码运行的用户等级,攻击者可获得对系统有限或全面的访问权,进而可能全面影响CIA三要素。如果攻击者能够执行命令,他就可能能够读取或修改敏感数据,甚至关闭或重启系统。这种类别的漏洞是最严重的。

有些漏洞可能属于多个类别,同时随着攻击者对漏洞有更深入的认识,进而能够更充分地利用它。漏洞所属的类别和严重程度可能发生变化,鉴于漏洞情况在不断变化,必须制定卓有成效的漏洞管理计划,才能紧跟发展的步伐。

漏洞管理指的是始终对环境中存在的已知漏洞心中有数,进而消除或缓解这些漏洞,以改善环境的总体安全状况。上述定义看似简单,但指出了大量相互依赖的措施。这些措施将在本书后面详细讨论,这里先来看一下漏洞管理生命周期的主要步骤,如图1-1所示。

第一步是洞悉当前的漏洞环境。为此,需要收集有关系统的数据,确定系统中存在哪些漏洞。第二步是对收集的数据以及从其他来源获得的与安全相关的数据进行分析。第三步是根据数据分析结果提出建议,指出需要采取哪些措施来改善安全状况。这些建议可能包括安装补丁或采取缓解措施(如添加防火墙规则或实施系统加固措施)。第四步是实施建议。这一步完成后,将启动下一个漏洞管理生命周期:再次收集系统数据,并找出前一个生命周期内未发现或还未出现的漏洞。

图1-1 漏洞管理生命周期

这个管理过程既不短暂也不简单。找出漏洞可能很容易,但处理漏洞并改善安全基准的过程永远没有终点。另外,这个过程还将牵涉组织中众多不同的角色和业务流程。

下面来详细介绍每个步骤。

数据收集分两大类——内部数据收集和外部数据收集,下面来依次介绍它们。

内部数据收集指的是收集有关组织环境的信息。这类数据包括网络中主机(终端和网络设备)的信息以及每台主机的漏洞信息。主机信息的来源包括使用网络映射工具(如Nmap)执行的探索性扫描、资产数据库工具以及配置管理数据库(CMDB)。仅有包含服务器和工作站数据的电子表格是不够的,漏洞管理要获得成功,首先必须有准确而完备的数据,而手工创建和更新的电子表格不能准确地反映环境中主机和网络的状态。

漏洞数据有一个来源,那就是漏洞扫描器,这些工具通过与设备交互(基于网络的扫描或基于主机的代理)来发现漏洞。网络扫描器扫描指定范围或列表中的每个IP地址,以确定哪些端口处于打开状态、这些端口上运行着哪些服务以及每台使用的操作系统(OS)版本、相关配置和运行的软件包。基于主机的代理不进行扫描,而直接向系统查询,以确定系统运行的服务和版本信息。这两种方法都有其优缺点,这将在第3章详细讨论。

收集的内部数据很快就会过时,漏洞信息尤其如此,因此必须定期收集。即便没有频繁地增删主机,漏洞信息也将每天发生变化:每天都可能安装新的软件包或执行更新,每天都有新的漏洞被发现并公布出来。为确保有关当前环境的数据准确而完备,必须定期地执行扫描并例行地更新扫描器,确保它包含最新的漏洞信息。然而,定期扫描可能带来负面影响,但您必须在承担风险和确保漏洞数据准确之间进行权衡,这将在第2章讨论。

对漏洞分析来说,网络配置等信息以及其他高级数据源可能很有用,但这些不在本书探讨的范围之内。对于这些信息,前面的警告也适用:如果信息不是最新而完备的,分析结果将没有太大的意义。最新的数据才是好数据。

外部数据收集指的是从组织外部的数据源获取数据。这种信息包括:美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)提供的通用漏洞披露(common vulnerabilities and exposures,CVE)中的公开漏洞详情;Exploit Database和Metasploit提供的公开漏洞利用程序的信息;诸如CVE Details等开放数据源提供的其他漏洞、缓解和漏洞利用详情;众多专用数据源(如威胁情报feed)提供的信息。

这种信息虽然来自组织外部,但也可确保它们始终是最新的,为此可直接查询在线数据源,也可建立本地数据仓库。内部数据收集可能给环境带来问题,而从第三方收集数据很容易,只需找到并获取它们即可。因此,除非为了节省数据传输费用,否则没有理由不每天更新来自这些数据源的数据,甚至始终连接到这些数据源(如威胁情报feed)。

收集内部数据和外部数据后,需要对其进行分析,以获得有用的有关环境的漏洞情报。

熟悉扫描器报告的人都会指出,即使在设备不多的环境,单单是漏洞信息就足以让人不堪重负。几乎在每台设备中,扫描器都会找出大量的漏洞,这可能导致您难以将重要的漏洞和不重要的漏洞区分开来。雪上加霜的是,如果扫描器报告长达上千页,您将难以决定该向早已不堪重负的系统管理员分配哪些修复任务。

要解决这个问题,有 2 种办法。一是尝试精简漏洞清单,使其更容易应对,这被称为剔除法(culling);二是尝试按重要性对漏洞进行排序,这被称为排名法(ranking)。

剔除法很简单,就是对每个漏洞做出非黑即白的决策。用于确定漏洞留下的标准可能是该漏洞在某个特定日期更新,该漏洞利用程序是已知的,或者该漏洞可以被远程利用。也可组合使用非黑即白的筛选器,对漏洞清单做进一步的剔除。仅当漏洞满足指定的条件时,您才花时间对其做进一步的分析。

排名法必须以某种形式的标量为标准。例如,要对一系列漏洞进行排名,可以采用它们对机密性、完整性或可用性的影响为标准,也可以采用通用漏洞评分系统(common vulnerability scoring system,CVSS)为标准,通用漏洞评分系统根据漏洞的严重程度以及对CIA三要素的影响给出了1~10的评分。如果您对组织面临的风险情况有深入认识,可根据组织内部制定的风险指标建立自己的评分系统。

虽然剔除法和排名法的侧重点不同,但可在它们之间进行转换。例如,可根据二元分类(如是否可被利用)进行排名(而不是剔除),从而将清单分成两组。反过来,也可通过指定阈值来对指标排名,从而进行剔除,例如,设置CVE评分为5分的剔除阈值,从而将评分低于这个数的所有漏洞都剔除。在给定一个对漏洞进行分类的指标后,需要决定将其作为排名指标、剔除指标还是兼而有之。

由于通过剔除法可缩小需要分析的数据集,而排名法本身是一种分析方法,因此应考虑结合使用它们。首先对漏洞集进行剔除,可减少接下来需要分析的漏洞数量,从而提高分析的速度和相关性。在确定哪些漏洞最重要后,可对它们进行排名,以便能够更轻松地判断它们的相对重要性。

本书的脚本使用了一个简单的剔除-排名配置文件,可根据组织的需求修改或替换它。这个配置文件将CVSS评分和可利用性作为指标,如图1-2所示。

图1-2 一个简单的将重要漏洞筛选出来的剔除-排名配置文件(profile)

首先剔除CVSS评分较低的漏洞,因为它们没有严重到需要做进一步分析的程度。接下来,根据可利用性及CVSS评分(从高到低)对余下的漏洞进行排名。可将这个清单与资产清单合并,再根据可利用的漏洞数以及漏洞的总体严重程度对系统进行排名。在这样得到的清单中,风险最高的系统将排在最前面。

下面通过一个真实场景看看剔除-排名分析过程是如何工作的。假设您刚才对主网段进行了漏洞扫描,这个网段是一个C类网络,总共有256个IP地址,其中254个IP地址是可用的。这个网段中有大量的Windows主机,还有几台打印机和其他设备。扫描结果表明,总共发现了大约2000个漏洞,分布在84台不同的设备中。

首先对漏洞清单进行处理,将CVSS评分低于5的漏洞剔除,最终留下大约500个漏洞,它们分布在63台设备中。在大约500个漏洞中,只有38个是各不相同的(因为大部分漏洞都出现在了多台主机中),这意味着您只需研究这38个漏洞。通过采取这种措施,将需要研究的漏洞数量缩减了大约92%。为确定需要对余下的哪些漏洞进行研究,您将根据多个标准对它们进行排名。

接下来,对于余下的每个漏洞,确定是否有已知的漏洞利用程序。如果有,就需要优先处理。其次,确定每个漏洞的CVSS严重程度。严重程度越高,意味着被利用带来的后果越严重,因此应将重点放在较严重的漏洞上。

按第3个标准进行排名前,咱们先来看看此时留下的漏洞有哪些。在这38个不同的漏洞中,有3个漏洞存在已知的漏洞利用程序,并对余下的35个漏洞按CVSS严重程度进行了排序。

最后,将漏洞清单与主机合并,即对于每台主机,确定它有多少个漏洞以及这些漏洞的严重程度。这样做后,您将清楚地知道应重点将修复精力放在哪些地方。

在这个示例中,有63台主机存在漏洞,其中有48台主机只有一两个漏洞,且这些漏洞的严重程度不超过7,还有11台主机存在的漏洞多达15个,且其中有一两个的CVSS严重程度不低于9。余下的漏洞全部出现在余下的4台主机中(每台主机的漏洞数量平均高达125个,包括3个可利用的漏洞)。显然,这些系统是关注的重点,必须先修复它们。

有了主机和漏洞清单,并根据风险对其进行排序后,接下来需要提出建议,指出要采取的漏洞修复措施。您将从最高的风险着手,并沿清单向下进行处理。如果处理的网络环境不大,这项工作可能由您负责;但在大型组织中,这个过程可能更漫长,涉及系统、应用程序所有者以及其他利益相关方。

修复措施分两大类:打补丁和缓解措施。

打补丁很简单,只需安装消除漏洞的补丁即可,而缓解措施更复杂,且随具体情况而异。

如果没有补丁或打补丁不可行,就需考虑其他消除风险的方式。比如修改配置以防止特定漏洞被利用。再比如在特定IP地址范围外不需要存在漏洞的服务,因此可使用防火墙规则或路由器访问控制列表(ACL)对其进行保护,以减小暴露面。还可以给既有的入侵检测系统(IDS)或入侵防范系统(IPS)添加额外的规则,以检测并挫败攻击者利用特定漏洞的企图。所有这些都属于漏洞缓解措施,该采取什么样的措施随具体情况而异。

有了漏洞修复的建议后,便可与系统和应用程序的所有者联系,要求他们实施修复措施。如果他们参与了建议提出过程,这一步将很简单;如果建议在他们的预期之外,您就需要向他们阐明安全风险并提出如此建议的原因,这将在第6章讨论。至此,双方应就建议实施时间表达成一致。

相关责任人实施建议(打补丁或采取缓解措施)后,最后一步是核实变更已实现且变更是有效的。由于缓解措施可能千差万别,因此在大多数情况下,都需要手工核实这些措施是否已就绪且有效,但对于补丁,要核实是否做了相关的变更,可再次扫描并看看漏洞是否依然存在。接下来,将进入第1个阶段——收集数据。这将重新开始漏洞管理生命周期,通过再次扫描来验证修复措施并发现新的漏洞。

漏洞管理与企业的风险管理目标联系紧密,本书的重点并非整体的信息风险管理,但明白漏洞管理在风险管理中所处的位置至关重要。如果没有有效的漏洞管理计划,企业的IT风险管理目标将难以甚至无法实现。

IT风险管理的总体框架类似于漏洞管理框架。IT风险管理通常包括如下几个阶段:找出关键资产、找出风险并对其进行排名、确定控制措施、实施控制措施以及监视控制措施的有效性。风险管理也是一个持续不断的过程,而非有明确终点的一次性事件。在风险管理过程中,漏洞管理处于什么位置呢?

漏洞管理的不同阶段对应于风险管理过程的不同阶段,如表1-1所示。例如,风险管理框架中的“找出关键资产”阶段直接对应于收集资产和漏洞数据。

表1-1 漏洞管理阶段与IT风险管理阶段的对应关系

漏洞管理

IT风险管理

收集数据

找出关键资产

分析数据

找出风险并对其进行排名

提出建议

确定控制措施

实施建议

实施控制措施

收集数据

监视控制措施

但这些对应关系只说明了风险管理过程的一部分。通过漏洞管理过程发现与漏洞相关的风险后,组织可能考虑采取那些并不能直接消除漏洞的控制措施,如实施一个能够识别协议的防火墙。类似这样的措施不仅能有效地挫败某些漏洞利用程序,也能缓解其他类型的风险。另外,定期地进行漏洞管理数据收集不仅有助于找出关键资产和风险,还有助于监视控制措施的有效性。例如,在设置防火墙后,下一次扫描时可能发现其配置不正确,未能将其要阻断的流量过滤掉。

由于本书并非信息风险管理指南,因此有关信息风险管理的讨论到此结束,接下来将更深入地探讨漏洞管理。如果您对信息风险管理方法和流程感兴趣,推荐您阅读NIST 800-53、ISO/IEC 27003、ISO/IEC 27004和ISO/IEC 27005,这些资料都可通过搜索引擎找到。

本章简要地介绍了漏洞管理及其在IT风险管理框架中所处的位置,带您学习了本书都将遵循的漏洞管理总体流程,并预览了在持有漏洞情报后将采取的步骤。

第2章将更深入地探索漏洞管理过程,让您离实现自己的漏洞管理系统更近一步。

微信扫码关注【异步社区】微信公众号,回复“e59459”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


漏洞管理计划要取得成功,需要有来自多个数据源的信息。本章会介绍这些数据源,而第3章将演示如何结合使用它们来获悉组织的漏洞情况。

资产信息很重要,但很多组织(有大型的,也有小型的)都对其网络资产没有全面认识(甚至连片面的认识都没有)。您可能使用电子表格来记录资产信息,多位网络管理员共享这个电子表格,并时不时地更新它;您也可能有一个记录资产信息的Windows桌面数据库,这个数据库是使用CMDB或终端管理产品创建的。然而,要进行漏洞管理,必须有完整的联网设备清单,以及能够收集到的有关每台主机的其他信息。虽然非联网设备对整个风险管理来说很重要,但不在自动漏洞管理计划的范畴之内。

要想轻松地获取主机清单(以及众多其他的信息),可使用网络扫描工具(如Nmap)或漏洞扫描器(如Nessus或Qualys)来执行网络扫描,并找出活跃的主机。要想收集漏洞数据,漏洞扫描器必不可少。然而,这些扫描可能是侵入型的,可能导致应用程序乃至操作系统崩溃。因此,对于信息收集扫描,需要细心地规划。

组织经常需要在网络中添加新设备,虽然大多数组织都制定了变更策略,但并不能保证这些策略能够得到遵守。为确保资产信息是最新且可信的,必须定期地对整个网络执行发现扫描。

理想情况下,应按计划执行这些扫描,但定期扫描(这将在2.2节中介绍)的风险在于,在组织中执行这些扫描时,可能需要有人监控,以便出现问题时停止扫描。如果是这样的,就需要减少发现扫描的次数,以手工方式进行扫描并将得到的数据导入到数据存储中。

变更管理

实施了风险管理的组织都配置了变更管理系统,这旨在确保系统和网络处于稳定状态,并将所有的状态变更记录下来。变更管理系统可能是由变更请求、批准、协调组成的邮件链,也可能是包含工单和配置管理的商用变更管理系统。

变更控制本身不是,也不能是唯一的IT变更控制措施,而且总是有办法被规避。管理员可能安装补丁(这个过程可能成功,也可能失败)、为排除故障而添加或修改网络路由、购买并连接新的网络设备或为满足迫切的业务需求而启用新服务,且不创建必要的变更控制书面记录。因此,对于变更管理系统提供的有关IT基础设施状态的信息,不能盲目相信。

完整记录网络中所有的设备后,需要配置漏洞扫描仪,使其对每台设备执行深度扫描,以找出所有已知的主机漏洞。例如,扫描器可能发现一台Windows服务器正运行着特定版本的Web服务器IIS,而这种版本的IIS容易遭受目录遍历攻击,进而可能导致信息泄露。

配置和安排扫描时,务必仔细查看可用的扫描器选项,并根据环境及其风险承受能力定制设置。指定扫描时间和扫描范围时,也应该这样做。例如,对于某些网段,如终端网段,可每天扫描,这是因为用户工作站宕机的风险有限,短暂脱机带来的后果不那么严重。然而,对于关键系统,如核心生产数据库,在计划的维护窗口外进行扫描可能风险太大。您必须在获取最新数据和冒宕机风险之间进行权衡。

从本质上说,网络漏洞扫描器只能找出可通过网络连接发现的漏洞。因此,在Windows终端的桌面应用程序中,如果存在可利用的本地漏洞,网络扫描器是发现不了的。例如,网络扫描器发现不了CVE-2018-0862(这是Microsoft公式编辑器中的一个漏洞,攻击者只能通过打开精心制作的Word或WordPad文档来利用它),原因是通过网络扫描通常检测不到Microsoft Office应用程序。

为弥补这种缺憾,可使用终端扫描器(如非扫描代理Qualys)、软件配置管理(SCM)工具或CMDB,它们会搜集部署的软件及其版本的清单,进而通过与漏洞数据库比对,确定存在哪些已知的漏洞。网络扫描虽然存在这些局限性,但通过它来准确地获悉存在的漏洞是个不错的开始。

漏洞扫描器将在第3章更详细地讨论。

虽然每个漏洞都有很多可用的信息,但结合使用多个数据来源可走得更远。最容易获得的一种信息是漏洞利用数据。网上有很多有关公开可用的漏洞利用程序的信息,它们是被广泛访问的且通常是可搜索的,例如,Exploit Database网站提供了一个可搜索的索引,列出了已公开的漏洞利用程序。另外,Metasploit也列出了大量漏洞利用程序,并提供了一个命令行工具,让您能够轻松使用这些漏洞利用程序对目标系统发起攻击,这将在第14章讨论。大多数漏洞利用程序都通过CVE ID与特定漏洞相关联。您可根据CVE ID将漏洞利用程序信息与已收集的漏洞信息关联起来。

相比于还不知道被如何利用的漏洞,企业通常优先解决可被利用的漏洞。然而,并非所有的漏洞利用程序都是一样的,例如,相比于可发起DoS攻击乃至读取任意数据的漏洞利用程序,让攻击者能够运行任意代码的漏洞利用程序通常更严重。要以更细粒度的方式确定漏洞利用程序的优先级,知道它们将带来的后果会很有用。

CVE ID

MITRE公司尝试建立了一个CVE数据库,旨在囊括所有已知的信息安全漏洞并对其进行系统化和编目。对于每个新发现的漏洞,都指定了一个形如CVE-yyyy-xxxx的CVE ID,其中的yyyy为当前年份,而xxxx是一个不少于4位的数字。

CVE记录包含漏洞描述,还有数据来源的链接,如来自厂商的官方漏洞通告、第三方通知以及漏洞利用程序通告。要查看详细记录的漏洞的示例,请访问CVE网站并搜索CVE-2014-0160。CVE-2014-0160是心脏出血(Heartbleed)漏洞的标识符,这是一个非常令人讨厌的信息泄露漏洞,几乎所有的Web服务器都受其影响。这个漏洞的CVE页面包含100多个链接,涵盖了从邮件列表帖子到测试工具,再到数十个不同厂商的补丁通告的内容。

下面列出了几个专门的高级数据来源,它们虽然大都不在本书的讨论之列,但很有参考价值。

威胁情报feed:这些feed包含有关当前威胁情况的信息(威胁主体和组织、漏洞利用工具包最近使用的漏洞利用程序、存在还未公开的漏洞利用程序的漏洞)。根据这些信息可确定哪些漏洞给组织带来的风险较高。这些威胁feed包含最新的信息,您应及时地根据它们对新发现的威胁带来的风险进行评估。威胁feed有很多,如iSight Threat Intelligence、iDefense Threat Intelligence和针对特定行业的威胁feed(如FS-ISAC提供的威胁feed),它们可能是免费的,也可能是收费的。

专用漏洞利用程序:除可公开获得的漏洞利用程序的信息(如Exploit Database和Metasploit)之外,还应添置专用的漏洞利用数据(有时被称为漏洞利用工具包),虽然这种信息价格不菲,但扩大了可以与漏洞数据相匹配的漏洞利用程序的范围。有些商用威胁情报源只在灰色市场或黑市售卖其漏洞利用的研究成果,例如,一些独立研究者将其新发现的漏洞和漏洞利用程序的信息兜售给出价最高的竞价者。无论是何种数据源,专用漏洞利用程序的信息都能让您获悉原本无法获悉的漏洞利用程序,进而更好地确定漏洞数据的优先级。

网络配置:根据路由设备(如路由器、防火墙和受管交换机)提供的网络配置信息,可创建有关网络的模型。通过将这些信息(从各个子网可路由到哪些子网、可从哪些地方访问哪些端口)同漏洞和漏洞利用数据结合起来使用,可深入了解网络攻击面。例如,如果存在一个针对内部Web应用程序服务器的Tomcat漏洞利用程序,但路由器的配置表明,只能从几个有限的源IP地址访问这个服务器,则与从互联网都能访问这个服务器相比,这个问题就不那么严重了。您可能已经有了网络配置信息,在您有中央配置仓库(如SolarWinds)时尤其如此,但要将这些数据与既有的漏洞数据集成起来,需要做大量的工作。有鉴于此,有些商用漏洞管理产品内置了集成网络配置的功能。

通过利用本章讨论的数据来源,可向漏洞管理系统提供一系列重要的数据。表2-1详细说明了可从各个数据来源收集的数据。

表2-1 漏洞管理数据来源

数据来源

重要数据

主机/端口扫描器(Nmap)

IP地址、MAC地址、主机名、开放端口(TCP端口和UDP端口)、服务和操作系统指纹

网络漏洞扫描器

除上面列出的外,还有其他服务指纹和版本检测、网络漏洞以及本地漏洞(仅限获得授权的扫描)

基于主机的漏洞扫描器

本地漏洞

CMDB/SCM

操作系统详情、已安装的软件详情、配置详情、设备所有者、设备和应用程序的重要性

漏洞利用数据库

漏洞利用程序的信息、漏洞和漏洞利用程序之间的映射关系

威胁情报

有关攻击者及其目标行业的情报、新发现的、升级的或广泛传播的漏洞利用

漏洞利用工具包

专用的漏洞利用程序的信息

网络配置

网络拓扑和潜在的攻击路径

第3章将深入探讨漏洞扫描。

微信扫码关注【异步社区】微信公众号,回复“e59459”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。


相关图书

CTF快速上手:PicoCTF真题解析(Web篇)
CTF快速上手:PicoCTF真题解析(Web篇)
数字银行安全体系构建
数字银行安全体系构建
软件开发安全之道概念、设计与实施
软件开发安全之道概念、设计与实施
企业信息安全体系建设之道
企业信息安全体系建设之道
内网渗透技术
内网渗透技术
深入浅出密码学
深入浅出密码学

相关文章

相关课程