范围界定(Target Scoping)是收集被测单位的评估项目需求的经验过程。这个阶段的工作把评估项目的毎一个需求参数都落实到项目的测试计划、限定因素、业务指标和进度安排中。该流程旨在明确安全评估项目的具体目标,对整个项目起着举足轻重的重要作用。待明确项目的关键目标之后,评估人员就可以整理出工作路线图。这份路线图会涵盖测试目标、测试方式、所需资源、限制因素、业务指标,以及项目的计划和调度安排。我们把上述这些要素统称为评估项目的范围界定流程(scope process)。本章将介绍与之有关的几个概念,分别如下。
● 收集需求(gathering client requirements):以口头交流或书面询问的形式,积累目标环境的有关信息。
● 筹划工作(preparing test plan):测试计划的准备工作受许多因素的影响。这些因素包括:结构化测试流程按照实际需求进行的相应调整、合同和协议、成本分析以及资源分配。
● 边界分析(profiling test boundaries):明确渗透测试任务限制因素的工作。这些限制因素可能来自于技术上的限制、信息方面的限制或者是客户 IT 规章条例里的有关要求。
● 明确业务指标(defining business objectives):在渗透测试项目中,该阶段工作使技术目标与业务目标保持一致。
● 项目管理和统筹调度(project management and scheduling):该项工作旨在使渗透测试过程中的每个步骤与其他步骤形成时间上的配合。很多些先进的项目管理工具,都可以用做项目管理和项目调度的工具。
为了保证测试结果的一致性,提高测试工作的成功几率,强烈建议您遵循评估项目的范围界定流程。此外,您也可以根据实际情况和测试要素对该流程进行调整。如果脱离范围界定流程,收集到的需求将不够确切,工作的流程难以合理,而这都可能会导致测试项目的最终失败。这不仅会危及整个渗透测试项目的成败,并且有可能会意外中断被测单位的正常业务。充分重视范围界定阶段的工作,会给后续各阶段的工作带来极大的帮助,并且有助于明确技术方面和管理方面的有关需求。范围界定的关键在于,要在开始渗透之前尽可能的从客户那里收集信息,以形成一个充分满足客户各个层面需求的渗透测试策略。这一策略应能顾全法律条款、合同协议、资源分配、测试限制、核心竞争力、基础设施信息、时间指标以及规则约定。渗透测试的最佳实践表明,唯有遵循范围界定流程,在这一阶段解决所有必要的问题,才是启动渗透测试项目的专业方式。
范围界定流程的各个步骤负责生成不同类型的信息。为了保障渗透测试的最终成功,范围界定流程按照逻辑的顺序把这些步骤有机地组合成一体。我们也要在这个阶段尽早地处理好与法律有关的问题。在本章后续的小节里,我们将详细解释这些阶段的各个步骤。请注意,如果能够条例清晰地整理好所有收集到的信息,那么客户和渗透测试顾问都能够深入理解安全测试的工作过程。
这一步通常以问卷调查的形式从客户那里收集目标基础设施的所有相关信息。接受问卷调查的对象可以是经被测单位正式授权的个人和业务伙伴。因此,要保证顺利完成渗透测试项目,关键是要在项目的早期找到所有内部和外部的干系人(stake holder),尽早分析他们对项目的关注程度、期望程度、重要程度和影响程度。然后,依据各个干系人的需求和参与程度制定测试策略,以在最大限度地发挥渗透测试的正面影响的同时,尽可能地避免潜在的负面影响。
在开展工作之前,事先验证合同缔约方的真实身份是测试人员的责任,而不是被测单位的责任。
收集需求的基本作用是:帮助渗透测试人员通过真实可信的渠道获取测试工作所需的必要信息。当完成明确需求的工作之后,应把测试需求分析书交给客户审查,以免受到错误信息的误导。审查步骤可以保证最终测试结果的一致性和完整性。
我们整理出部分常见问题,这些问题可以用作常规客户需求调查问卷的制作基础。需要注意的是,您需要根据客户的需求扩展或精简其中的问题。
● 收集公司的基本信息,例如公司名称、注册地址、企业网站、联络人的详细资料、电子邮件地址以及电话号码。
● 了解客户启动渗透测试项目的主要动机。
● 确定渗透测试的具体类型(包含或者不包含特定标准)。
○ 黑盒测试
○ 白盒测试
○ 外部测试
○ 内部测试
○ 需要进行社会工程学测试
○ 不进行社会工程学测试
○ 调査员工背景信息
○ 使用伪造的员工信息进行测试(可能需要咨询律师)
○ 进行DoS(拒绝服务攻击)测试
○ 不进行DoS 测试
○ 渗透业务合作伙伴的系统
● 测试项目涉及多少服务器、工作站和网络设备?
● 基础设施架构支持什么操作系统技术?
● 需要测试什么类型的网络设备?防火墙、路由器、交换机、调制解调器、负载平衡器、IDS、IPS,还是其他类型的硬件设备?
● 是否有灾难恢复计划?如果有,谁是测试人员应当联系的紧急联系人?
● 是否有在岗的网络管理员?
● 是否需要遵循什么特定的工业标准?如果有,请列出来。
● 当前渗透测试项目的联络人是谁?
● 这个项目的时间周期是多久?
● 这个项目的预算是多少?
● 如果必要,应全面掌握客户在其他方面的需求。
下述列表是可交付成果的需求调查表(deliverable assessment form)。这个调查表的内容并不全面,您应该根据客户的需求进行相应添增或删减。
● 您期望得到哪种类型的报告?
○ 执行报告
○ 技术评估报告
○ 开发人员报告
● 您希望项目报告采用哪种文件格式? PDF、HTML 还是DOC。
● 提交报告的方式,应当是加密邮件还是纸质文档?
● 负责收取这些报告的责任人是谁?
○ 员工
○ 股东
○ 干系人
这种简洁而全面的调査表,有助您毫不费力地掌握客户的需求,有助于顺利完成测试计划。
在收集完客户需求并由客户验证过这些需求之后,就可开始正式测试计划的准备工作。测试计划必须能够反映客户的全部需求,应能全面解决测试工作在法律和商业领域会涉及的各种问题。筹划测试工作的有关计划,关键是要制定一种严谨的测试流程,解决好人员配置、成本分析、保密协议、渗透测试合同以及操作规则的问题。下面将具体讨论这些方面的工作。
● 制定严谨的测试流程:在分析完客户反馈的详细资料之后,您可能需要适度调整现有的测试方法论。例如,如果客户不希望进行社会工程学测试,那么正式的测试流程就不得有该项测试。有些人把这种调整工作称为测试过程验证(Test Process Validation)。这种调整工作往往需要进行多次;每当客户改动了他们的需求,测试人员都需要重新进行相应的调整工作。如果测试计划里包含任何客户需求范围之外的测试,将有可能违反单位的制度,甚至造成严重后果。此外,测试人员通常还要按照测试类型的区别对测试流程进行一定的调整。例如,白盒测试的测试计划就不应该包含信息收集和目标识别的相关阶段,因为测试人员事前能够掌握目标内部架构的详细情况。
无论进行何种类型的测试,测试人员都应当验证网络信息和实际环境。毕竟,客户自己可能并不知道他们的网络结构到底是什么情况。
● 人员配置:测试人员的知识结构和专业水准是影响测试工作成败的重要因素之一。因此,为既定任务指定一名水平相当的专业渗透测试人员,可提高安全评估结果的质量。例如,要开展针对应用程序的渗透任务,我们就需要应用安全方面的测试人员。这项工作对于渗透测试任务的成功完成具有非常重要的作用。
● 成本分析:渗透测试的成本取决于很多因素。可能影响成本的因素包括:分配给整个项目的天数、客户要求的额外服务(如社会工程学和物理安全评估)、评估特定技术所要求的专业能力。以行业的观点来看,成本取决于测试项目的性质(种类)和数量(工作量)。
● 保密协议(Non-disclosure Agreement,NDA):在渗透测试开始之前,合同双方需要签订符合双方利益的协议。这份保密协议用来明确测试工作中各方应该遵循的条款和条件。在整个测试过程中,渗透测试人员必须遵守这些条款。违反保密协议任何条例的责任人都将受到严惩,甚可能因此失去工作。
● 渗透测试合同:客户和渗透测试人员之间的所有技术事宜和业务事宜,都应落实为书面合同。这类合同主要约定测试服务的具体内容、服务的主要目标、测试方法、收费标准,旨在维护整个项目的保密性。因为这种合同全面影响您的渗透测试活动,所以建议您聘请专业律师或法律顾问起草这类合同。
● 操作规则:因为渗透测试可能形成实质性的攻击,所以测试人员必须清楚地理解评估的需求、客户配合的范围,以及每种评估技术可能会造成的影响或后果。此外,渗透测试涉及的测试工具必须配有明确的用途说明,以便测试人员可进行相应的选择。操作规则非常详细地明确了上述所有内容,是测试人员在测试过程中必须遵循的技术规范。这一规则的制定依据是事先测算好的资产收益率(ROE)。测试人员不得越过该规则所明确的行为界限。
通过测试计划的上述各项准备工作,您能够保证渗透测试流程的统一性。这也有助于测试人员依据客户需求确定出评估计划里的更多细节。我们同时建议您事先准备好测试计划检查清单,以验证评估条款和有关指标。
测试计划检查清单
在开始范围界定的后续工作之前,应当检查一下您是否完成了先前阶段的任务。此时,您可以参考下述这个清单。
● 是否满足了客户需求建议书(RFP)的所有需求?
● 是否清晰地描述了测试范围?
● 是否已经明确了所有参与测试的有关单位?
● 是否已经单独列出了所有不参与测试的单位?
● 是否需要遵循特定的测试流程?
● 是否正确拟定了测试流程?
● 测试完成后能否交付相应的预期成果?
● 是否书面描述、研究过整个测试环境?
● 是否给所有的测试项目都制定了相应的角色和职责?
● 在涉及特定技术的评估工作中,是否会涉及第三方承包商?
● 有没有采取让项目能够完美结束的措施?
● 对方是否有灾难恢复计划?
● 是否已经正式测算过整个项目的成本?
● 是否已经找到了批准测试计划的责任人?
● 是否已经找到了接受渗透测试的责任人?
客户提出的项目需求,可能有意或无意地提示出被测环境的局限条件和测试边界。这些局限条件和测试边界,可分为技术上的、知识上的或者由客户设定的正规限制。因为这些约束条件可能会对测试造成重大影响,所以测试人员得通过其他可行方案规避这些问题。必须注意的是,有些限制是无法通融或修改的,因为客户要通过这些限制来管控整个渗透测试的过程。下文将会介绍常见的限制类型和相应的案例。
● 技术限制:在定义了合适的测试边界之后,审计人员可能发现目标网络基础设施中使用了一种无法测试的新型技术,这种类型的限制就是技术限制。发生这种情况的原因是缺乏评估这种新技术的渗透测试工具。例如,XYZ公司引进了一款性能优异的GZ型网络防火墙,他们把GZ部署在网络入口以保护整个内部网络。然而,GZ防火墙运用的专利技术,导致了现有的任何一款防火墙评估工具都无法评估该产品。因此,测试单位需要及时更新解决方案,以解决新技术带来的评估障碍。
● 知识限制:渗透测试人员在知识能力方面的局限会对整个项目产生负面影响。例如,专门从事数据库渗透的测试人员,无法负责网络基础设施的物理安全评估。因此,为了顺利完成项目任务, 最好能够依据人员的知识结构和技能水平分配他们相应的角色和职责。
● 基础设施有关的其他方面的限制:为了控制评估的实施过程,客户也可能会添加特定的测试限制。为了实现这种控制,他们可能会限制测试人员仅接触那些需要被评估的网络设备和技术,而不让他们接触 IT 基础设施的其他部分。通常,需求收集阶段的工作应能明确这些限制。例如,客户可能会要求测试网段A里的所有设备,但是他们还会同时要求不得测试第一个路由器。客户需求里的这种限制,会无法衡量第一个路由器的安全性;即使彻底检查了网络里的其他所有设备并保证了其安全,还是这个路由器的问题很有可能引发整个网络的安全事故。 因此,在接受这类限制之前,必须认真地考虑全局问题。
评估人员务必在用户需求收集阶段,仔细观察、深入分析所有的局限条件和限制要求。优秀的渗透测试人员应能仔细分辨每一个相关需求,应能与客户进行讨论,取消或者改变所有可能造成测试流程意外中断,或者造成测试结果歧义的限制。虽然本质上说,无法规避某些技术上的限制,而且需要额外的时间来开发克服相应限制的测试方案,但是引入高水平的测试人员,使用先进的测试工具和技术,也可能克服这些限制。
在明确评估需求和签署服务协议之后,下一步工作就是定义业务指标。这将保证测试结果能够给客户的业务带来各个方面的好处。每一项业务指标都对应着相应的评估需求,把安全评估的成果展现为业务的业绩。我们整理出一些普遍适用于各类渗透测试项目的业务指标。然而,您也可能根据客户的需求重新设计这份清单。这个工作十分重要,审计人员应当能够观察、理解客户的业务出发点,在测试前、测试中、测试后都满足最低程度的指标。管理团队和技术团队通力合作,以保证业务可靠性为命题,以增强信息系统安全性为着手点,共同制定业务指标。无论何种类型的安全评估项目,均可参考下述这个通用的业务指标。
● 通过常规安全检査,提髙企业形象和业内认可程度。
● 以保证业务完整性为契机,达到必要的标准和规范。
● 提高存有客户、员工和其他业务单位信息的机要系统的安全性。
● 在网络基础设施中排查现有的威胁和已知漏洞,协助建立安全制度以及可对抗已知和未知风险的工作流程。
● 提供一个可平滑过渡的、健全的业务组织架构,从而使合作伙伴和客户能够受益。
● 把维护 IT 基础设施安全性的费用降到最低。安全评估业务可衡量业务系统的保密性、完整性和可用性。
● 帮助客户消除所有尚未被对手恶意利用的潜在风险,避免潜在事故可能造成的损失,从而提高了投资回报率(ROI)。
● 评估人员向客户技术团队推荐的详细的安全流程,可帮助客户消除有关的安全隐患,最终减少客户的运营负担。
● 根据目标信息系统所采用的底层技术,以业内相应的最佳安全实践为蓝本,配合最佳组合的工具和技术,对被测单位的信息系统进行安全评估。
● 推荐所有可用于保护经营性资产的安全解决方案。
要管理好渗透测试项目,就要彻底了解范围界定流程中的各个部分。一旦明确了范围目标,项目主管就可以与渗透测试人员协作,共同开发一个拟定好项目计划和时间进度的正式大纲。虽然渗透测试人员通常可以独立完成这个任务,但是让客户参与进来更好,因为他们会在有关的日程安排上给予积极的配合。项目管理和进度安排非常重要,因为在执行测试任务时必须精确保持进度,避免超出预定的时间。在渗透测试过程中,一旦给相关任务明确指派了合适的资源之后,就更有必要给与之有关的关键任务拟定进度安排。
所谓“任务”,就是由渗透测试人完成的一部分工作。而“资源”可以是安全评估中涉及的人员,也可以是在测试过程中的普通资源,例如实验器材。我们可以使用许多现有的项目管理工具,把项目管理得高效而划算。下文列出了一些项目管理工具。您可根据实际环境和客户需求来选择最佳的工具。
上述每个工具的功能都很强大。应用这些工具,参照预定任务和时间规划,项目管理主管可以轻松地追踪、管理渗透测试人员的工作进度。此外,这些工具都提供了非常高级的功能。例如,在任务完成和超过期限时,这些工具可以给项目主管发送警报信息。实际上,在渗透测试工作中应用项目管理工具的好处有很多。例如能够促进人们按时完成任务,提高测试生产力和客户满意度,改善工作的质和量,灵活地控制工作流程等。
本章介绍了渗透测试工作里与范围界定有关的部分。如果您准备启动专业的渗透测试项目,就应当充分重视这部分工作。本章介绍的内容主要是确定测试需求方面的必要规范。基于这个目的,本章强调并详细描述了范围界定流程的每一个相关步骤。这些步骤构成了实施测试所需的过程控制路线图。范围界定流程由 5 个独立的元素组成:收集需求、筹划工作、边界分析、明确业务指标、项目管理和统筹调度。范围界定流程的工作,旨在于获取、管理尽可能多的与目标环境有关的信息,这部分信息在整个渗透测试的过程里都将起到举足轻重的作用。下面,我们总结一下范围界定流程工作的每个组成部分。
● 收集需求:从客户或者用户那里收集什么信息才能成功完成渗透测试任务?这部分内容提供一个可行的通用准则。在这个阶段的工作应当明确渗透测试的类型、基础设施信息、组织结构关系、预算概要、时间分配和交付成果的具体类型。
● 筹划工作:这个阶段的工作分为制定严谨的测试流程、解决人员配置、成本分析、保密协议、渗透测试合同以及操作规则的问题。这些工作内容本身就够成了制定正式测试计划所需的各个流程。最终制定的测试计划应能准确反映客户需求,应能全面解决测试工作会涉及的法律层面和业务领域的各种问题,应能合理分配资源,适当控制成本,并明确操作规则。另外,本章还有一个测试计划检査清单的样本,它会有助于保证测试计划的完整性。
● 边界分析:介绍了在解读客户需求时,需要注意何种的局限条件和测试边界。它们主要分为技术上的限制、知识限制,或者客户为了控制渗透测试流程而提出的基础设施有关的其他方面的限制。专业人员应能根据客户的需求,准确清晰地判断出各种测试边界。有一些特定的流程可用于克服这些问题。
● 明确业务指标:这个阶段的工作主要关注渗透测试服务能够给客户带来的关键效益。本章的这一小节提供了一系列的业务指标,这些指标结合了评估准则和评估服务的专业效果。
● 项目管理和统筹调度:在范围界定流程里,这个阶段的工作至关重要。当收集好全部需求,并将之整理为测试计划的有关内容之后,就需要为每项任务分配适当的资源和时间。我们可以通过使用先进的项目管理工具,毫不费力地跟踪这些任务的进度状况和资源状态。这些工作有助于提髙测试的生产力和工作效率。
下一章将介绍在渗透测试中扮演重要角色的侦察流程。它包括探测公共资源、DNS 服务器、搜索引擎以及其他有关目标基础设施的逻辑信息。