8.6 工作说明书(SOW)

在开始进行渗透测试之前,你可能需要编写一份工作说明书(SOW,Statement of Work),说明将要执行的工作内容。在项目开始之前,你和利益相关者需要完成的第一件事情通常就是确定工作说明书。

在编写工作说明书时,我们建议你使用和最终的报告结构一致的格式。工作说明书的基本格式包括如下内容。

以下是一个工作说明书的执行摘要样例。

服务提供商 很高兴为客户 介绍我们进行安全评估的方法。客户 发起这项工作的主要目的是对组织内当前的风险度进行详细评估,旨在制定和/或实施应对方案,以减少严重的安全问题,最终缓解相关风险。

为满足客户 需求,服务提供商 提供了有效的安全评估策略,这一策略已经在多个类似组织的安全评估中使用,效果令人满意。我们将首先了解与此项评估相关的业务需求,接着对评估范围内的现有基础设施绘制拓扑结构图,收集基线数据。在完成对基础设施的考察后,我们将对核心系统和关键网络设备进行系统的安全漏洞评估,以发现可能被利用的入侵载体。之后我们将制定周密的利用方法,经审查后执行,以确定此前发现的漏洞是否存在。在这一阶段,我们将使用渗透测试和社会工程等技术。最后,在此次工作过程中我们每周都将举行工作进度会议,回顾一周工作,确定下一步工作的主要目标。客户 可以通过每周工作进度会议,告知我们的工程师有哪些正在进行的系统升级需要特别予以关注。服务提供商 将提供可靠的专业项目管理人员,以确保运营质量,提供良好的用户体验。

服务提供商 深知,要保持业务稳定,组织的安全状况需要持续评估和改进。我们相信,此次工作将使系统风险降至最低,将业务暂停时间缩至最短,从而降低运营费用,同时还能提供数据保护,提升客户 的品牌信誉。

此外,安全评估的结果还能帮助客户进行未来服务的规划,获得更好的业务性能和盈利能力。安全评估带来的这些益处与客户 的目标高度一致。

8.6.1 外部渗透测试

从外部进行渗透测试应该进行特别的考虑。一个外部渗透测试工作说明书需要指明测试攻击的目标,攻击中可能使用的步骤,还要定义测试何时停止,或者哪些情况超出了测试范围。换言之,工作说明书定义了测试的范围。

下一段是外部渗透测试摘要的一个样例。这个样例概括了测试流程,给出了详细的执行步骤,还说明了客户和应用程序所有者的职责。

外部Web测试工作说明书样例:
我们进行外部Web渗透测试,主要目的是利用网络边界、Web域以及Web应用中固有的安全弱点。相关的应用(包括后台数据库和中间件)也属于测试的范畴,也会进行评估。在这一阶段,我们主要关注的是与缓存溢出、SQL注入以及跨站脚本相关的常见漏洞。我们的工程师也会以手工方式浏览Web域,以获取其他敏感信息和关键数据。此外,应客户 的要求,此次渗透测试还会对DMZ设备进行测试,尝试消除Web应用程序域的逻辑安全防护。

具体测试流程如下。

服务提供商 将对Web应用程序域完成如下测试流程:

  • 根据客户的网站信息,确认待测试的服务器,同时抓取网站上发布的网址;
  • 利用主流的搜索引擎获取指定域的地址;
  • PGPWHOIS 数据库中找到地址;
  • 同时发起多个攻击,以加速渗透测试过程;
  • 通过安装在系统内存中的离散代理,与被侵入的机器进行交互;
  • 运行本地攻击,从机器内部(而非通过网络)进行攻击;
  • 分析客户的、定制的以及标准的Web应用程序,寻找安全弱点;
  • 使用动态生成的攻击,模拟一个攻击者,尝试使用各种路径和方法进行攻击,验证安全漏洞;
  • 使用命令行和数据库控制台,与Web服务器文件系统以及数据库进行交互,演示攻击造成的后果;
  • 在不破坏Web应用程序或在目标机器上运行代码的情况下,执行渗透测试。

客户职责如下。

  • 确认需要进行评估的Web域。在渗透测试期间告知用户服务进行维护以及/或服务受到的影响。
  • 如果待测试的Web域和边界设备不允许公共访问,确保测试获得访问权限。

8.6.2 工作说明书附加材料

在编写工作范围说明时,你还应该考虑其他一些方面。我们推荐你在工作说明书中包含如下一些常见内容。

  • 法律和测试免责  通常这部分内容是由律师预先批准的标准文字,使应用程序所有者放弃追究服务提供商在渗透测试中造成任何损失的责任。
  • 方法和手段  即你计划如何执行渗透测试(测试规则),客户如何获知项目进度和时间表,以及客户如何提供测试输入。下面的图表提供了一个工作说明书的方法样例。

  • 收费标准  工作时间以及费用。这部分内容可以按项目阶段细分,如果预期时间可能超过预计价格,应该在文档中注释说明。

  • 期望和职责  在项目生命周期中,服务提供商和客户各自的任务。如果服务提供商或者客户负责的步骤是项目未来阶段的先决条件,应该在文档中注释说明。
  • 资质和工具  客户通常会审查审计人员的资质,以及用于完成任务的工具。在工作说明书中提供这些信息会提高你的可信度和专业度。如果在项目开始就提供了可能用到的工具信息,那么在项目过程中如果因为工具的使用造成负面影响,客户也较少会做出负面的反应。

下面的表格样例不仅列出了测试中将使用的工具,还给出了渗透测试人员的专业技能和证书:



 

认证和证书 

 

测试工具 

 

ISC2信息系统安全认证专家(CISSP,ISC2 Certified Information Security Professional) 

 

Kali Linux 

 

国际电子商务顾问(CEH,International Council of E-Commerce Consultants) 

 

Bactrack 5 RC3 

 

信息系统审计与控制协会(ISACA,Information Systems Audit and Control Association) 

 

AirSnort 

 

国际信息系统审计师(CISA,Certified Information Systems Auditor) 

 

AirCrack 

 

RSA认证管理器8.0(RSA Authentication Manager v8.0) 

 

Airsnarf 

 

RSA DLP套件认证系统工程师(CSE,RSA DLP Suite Certified Systems Engineer) 

 

Airmagnet 

 

RSA SecurID Choice/Product 

 

Core Impact 

 

思科认证互联网专家(CCIE-RS,Security,Voice,Storage,SP) 

 

Saint 

 

SAINT认证工程师(SAINT Certified Engineers) 

 

Rapid 7 

 

Qualys认证工程师(Qualys Certified Engineers) 

 

Qualys 

 

思科高级无线局域网设计专家(Cisco Advanced Wireless Design Specialist) 

 

Metasploit 

 

PMI项目管理专家(PMP) 

 

Plisade 

 

思科高级安全售后专家(Cisco Advanced Security Field Specialist) 

 

eEye Retina 

 

思科高级无线局域网售后专家(Cisco Advanced Wireless Field Specialist) 

 

Threat Guard 

 

思科安全大师专业伙伴(Cisco Master Security Specialized Partner) 

 

  

有一点很重要:你应该及早解决可能发生的问题。我们的同事和朋友Willie Rademaker有一句名言:“要把事情放在桌面上。”也就是说,在定义项目范围时,要避免意外情况。如果你觉得有什么内容可能会引起争议,就要立刻解决。生日可以充满惊喜,工作中最好还是不要出现任何计划外的情况。