如何撰写出色的渗透测试报告:从科学方法到故事叙述

本文详细介绍了撰写高质量渗透测试报告的关键要素,包括科学方法的应用、故事叙述技巧、实时记录、组织结构、插图使用、语态和时态一致性、语法拼写检查以及反馈机制,旨在帮助测试人员提升报告质量,确保客户能清晰理解漏洞影响和修复建议。

如何不搞砸报告撰写(或如何写出出色的渗透测试报告)

报告是渗透测试中一个不太受欢迎的话题。人们很难有灵感去写关于他们参与的技术细节。在某些情况下,测试人员只浅尝辄止地识别测试的成功部分。在其他情况下,测试人员只是 regurgitate 一些扫描工具的输出,将结果称为最终报告。

然而,有时你会发现一个测试人员创作了一件艺术品。它涵盖了成功的利用、未成功的事项,以组织能理解的方式识别漏洞的影响,推荐纠正措施,并以讲述故事的方式呈现,使得组织可以从报告本身重现结果或直接重新测试。正是这种类型的报告,我们在 BHIS 为每次参与努力创作。

接下来的几段将解释我认为良好报告的最重要方面。我按我认为对为客户提供价值最关键的顺序排列。所以让我们开始吧……

1. 科学方法

所有步骤对我们的成功都至关重要,因为它们 feed into 最后一步——分享。

大多数人会熟悉科学方法概述的步骤:提问、假设、实验、观察和记录、分析以及分享结果。这种方法的应用在工程学校中被灌输给我,因为我被迫以这种风格写实验报告,至少每周一次,持续四年。在报告渗透测试时,我们可以将这种方法应用于我们在环境中发现的每个漏洞。让我们分解每个步骤:

  • 提问 – 我们的许多问题通常由漏洞扫描器提前提出。然而,我们应该准备好一旦处理了扫描结果就提出额外的问题。例如,“网络上不太常见的监听端口是什么?”、“我可以在哪里使用默认凭据?”或“当……时会发生什么?”
  • 假设 – 通常,这一步涉及解释扫描结果或我们正在交互的应用程序或服务的响应。这可能包括选择我们相信可能对特定服务或主机成功的工具或技术。
  • 实验 – 这是执行我们在假设步骤中识别的实际利用或工具。
  • 观察和记录 – 在这里,我们记录我们的利用努力的结果。
  • 分析 – 它是否有效,是否失败,为什么?我们可以从中学到什么?此时,我们可能会改变我们的假设或识别不同的方法或工具进行实验。
  • 分享 – 在这里,我们记录过程的结果。

分享是工程学科中最强调的步骤。如果结果不能独立验证,实验就毫无意义。可重复性是我们测试中追求的目标,一个关键元素是我们的客户可以独立验证我们的结果。

2. 讲述故事

你调查的每个漏洞都应该有一个故事 attached to it。你应该尝试为你调查的每个漏洞回答以下问题:

  • 什么吸引你到这个元素(漏洞扫描结果、未识别的监听服务、不常见的开放端口)?
  • 漏洞是什么?
  • 它对组织有什么影响?
  • 你尝试利用它了吗?
  • 构建利用有多难?
  • 利用尝试的结果是什么?
  • 能否获得进一步利用?
  • 组织可以做什么来修复问题?
  • 组织可以做什么来缓解问题?

报告通常有全面覆盖和简洁性的竞争优先级。然而,你的报告应该包括失败利用尝试的细节,就像成功的一样。这向目标组织展示了防御在哪里起作用,并帮助他们理解你执行测试的方法。

3. 实时写作

与其收集工件并在测试完成后组装故事,你应该尝试在测试过程中写报告的方法论部分。这允许你记录你的行动、截图,并以意识流的方式识别潜在发现。你的测试活动的这个账户不需要完美。然而,它在完成你的报告方面大有帮助,因为它只需要少量抛光和对其中识别的任何发现的完整撰写。

4. 组织

报告中有几种组织方式,没有一种是错误的。最简单的可能是按时间顺序。通过测试时记录,你确保所有相关细节都被捕获,并且你的测试不需要完成两次。由于大多数扫描工具按相对风险评级记录漏洞,时间顺序很可能也与风险评级顺序一致。这确保最重要的材料在你方法论部分的开头。

然而,明智的做法可能是按意义添加内容到部分。许多高风险漏洞将在探索漏洞扫描时在“信息性”发现中被识别。将这些信息移到报告的开头可能最有意义。此外,将类似漏洞分组在一起可能是合适的。例如,TLS、SSH 和 RDP 服务中的错误配置有类似的影响,因此将它们保持在报告的同一区域是有意义的。

5. 插图

确保包括许多说明性的截图,展示你正在调查的条件、用于利用的工具以及利用的结果。在每个截图中,你还应该放大兴趣点,并有指示器突出显示行动。如果你的观众无法理解它试图传达什么,截图就没有帮助。然而,一个经过深思熟虑的情况图像可以在帮助重现结果和强调活动影响方面大有帮助。

当你组装这些插图时,注意你显示的信息。在许多情况下,驱动业务影响的测试元素本质上是敏感的。有些可能模糊,如密码哈希,但其他更直接,如个人可识别信息或受保护的健康信息。作为渗透测试人员,我们永远不知道我们的报告可能最终在哪里,在谁的手中,或阅读者的动机。因此,我们必须绝对确保图形被适当 redacted。

6. 语态和时态

尽可能,报告应该使用过去时。由于渗透测试是时间点评估,适当识别测试时环境中存在的漏洞。这有助于提醒读者,环境中可能发生了变化,影响报告中识别的漏洞。这些变化可能导致环境整体态势的退化或改进。

第三人称是官方技术和工程写作中几乎 universal 的要求。渗透测试报告也不例外。因此,你应该避免使用第一和第二人称代词,如 I、we 和 you。相反,用第三人称名词和代词替换它们,如“testers”、“the tester”、he、she、him、her 和 it。

主动语态与被动语态在科学界有一个长期的 flame war,类似于“vi versus emacs”。有些人认为主动语态更简洁和清晰。其他人指出被动语态有助于避免第一人称代词并强调所完成的事项。就像你最喜欢的编辑器问题一样,这是一个个人选择,由你决定。关于这个主题的完整处理可以在以下 URL 找到: https://cgi.duke.edu/web/sciwriting/index.php?action=passive_voice

无论你的选择是什么,只需确保在整个写作中一致使用它。

7. 一致性

许多渗透测试报告最终不是由单个人撰写的。通常,就像渗透测试本身一样,报告由测试团队的几个成员撰写的单独子元素组成。因此,一个单一编辑应该审查报告的整体,以确保所有单独部分以一致的方式应用相同的时态、语态和风格。否则,报告在客户阅读时会感觉 fragmented。单独部分不必是彼此的完美镜像,但它们应该努力避免相互冲突的 wild contrasts。

8. 语法和拼写

语法和拼写可能似乎有点 nit picky。然而,我们在一个强调注意细节的领域操作。因此,我们应该在报告中展示同样的注意细节。拼写检查器在几乎所有应用程序中 ubiquitous,所以拼写错误的单词很少被原谅。一些你应该总是仔细寻找的事情是:

  • 误用单词 – 一个正确拼写但给定上下文有错误含义的单词。
  • 缩略词 – 除非你必须,否则不要使用它们,但如果你使用,确保你使用正确的 – your 和 you’re 不是同一件事。
  • 首字母缩略词 – 确保在报告中首次使用前扩展它们。
  • 数字 – 一致使用数字或根据大小或值拼写值。

我经常使用的一种技巧是旧的倒读技巧。当你读你写的句子时,你会倾向于应用你 intended 的含义并跳过单词。通过倒读,你避免应用自己的上下文,专注于页面上的单词。

9. 争取反馈!!!

在你读完报告并对内容满意后,把它给你团队中的其他人。确保它被审查技术准确性和 adherence 到你的报告标准(语态、时态、人称、语法和拼写)。

在 BHIS,我们采用一个两层级审查过程, mirror 这个推荐。在测试人员对他们的 offering 满意后,它被发送进行同行评审以确定技术准确性。报告被返回给原始测试人员进行编辑。一些被 incorporated,其他被丢弃。我们让决定权留给原始作者。

在初始编辑轮完成后,测试人员将报告转发给我们自己的语法警察。他们确保一个真实的人(相对于技术爱好者测试人员)可以阅读和理解报告的内容。原始作者再次接受或拒绝更改,然后交付给客户。这个过程有助于确保我们的报告是顶级的。

结论

确保我们的客户能掌握我们渗透测试报告中说明的概念是我们的责任。应用上述概述的技术可以帮助确保我们理解并满足那个责任。我们的报告通常是测试完成后唯一剩余的工件。它们向我们测试的组织说明业务价值。通过通过全面和准确的报告区分自己,我们可以让企业回来服务。

如果你对优秀的写作参考感兴趣,查看“The Tongue and Quill”。它是一个非常全面的写作风格指南,由美国空军出版。自 1993 年以来,我书架上有一份副本,我经常参考它。PDF 文件可在以下位置获得: http://static.e-publishing.af.mil/production/1/saf_cio_a6/publication/afh33-337/afh33-337.pdf

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计