Skip to content

Latest commit

 

History

History
458 lines (247 loc) · 21.7 KB

File metadata and controls

458 lines (247 loc) · 21.7 KB

十五、编写渗透测试报告

众所周知,一份好的报告必须包含有关系统漏洞的所有必要细节。所有渗透测试标准都强调编写一份结构良好的报告。在本章中,我们将学习一些可以用来制作良好报告的工具。

以下是报告中必须包含的要点:

  • 漏洞的详细信息
  • CVSS 分数
  • 缺陷对组织的影响
  • 修补错误的建议

报告应分为两部分:一部分为技术团队,另一部分为管理层。

在本章中,我们将介绍以下主题。这些主题将涵盖报告生成过程中常用的工具:

  • 报告写作导论
  • Dradis 框架简介
  • 与 Serpico 合作

技术要求

本章的技术要求如下:

报告写作导论

报告是渗透测试最重要的阶段之一,因为报告的漏洞不仅可供技术团队使用,还可供管理层使用。通常有两种类型的报告需要提交给客户,一种是执行报告详细技术报告DTR

执行报告面向组织/公司的最高管理层,以便他们能够根据报告中提到的业务影响做出决策。另一方面,顾名思义,DTR 是一份详细的报告,概述了发现的所有漏洞。这包括帮助技术(内部安全操作和开发团队)团队修补漏洞的建议步骤。总体而言,报告应包含以下详细信息:

  • 目的和范围
  • 所采用的方法和方法
  • 使用**通用漏洞评分系统(CVSS)**版本
  • 执行摘要
  • 调查结果摘要(发现的漏洞列表)
  • 漏洞详细信息
  • 结论
  • 附录

现在我们已经简单介绍了报告编写,让我们了解如何编写一份好的执行报告。

撰写执行报告

正如我们在导言中提到的,执行报告供 C 级执行官和管理层使用,以便根据已执行的风险评估(包括漏洞评估和渗透测试)了解风险。由于 C 级主管是忙碌的人,因此报告应尽可能清晰,并包含他们做出明智决策所需的所有信息。让我们来看看执行报告的一般结构。

标题页

顾名思义,标题页包含有关项目、供应商和客户的信息。

文档版本控制

本小节也在 DTR 报告中定义。当进行渗透测试时,报告不是一次性完成的。双方都需要进行大量更改,以便创建客户和测试人员都能接受的平衡报告。将编制报告初稿并发送给客户。本小节记录从初稿开始对报告所做的更改数量。每次更改都定义了一个新版本。报告定稿时,报告中还提到了版本号。

目录

本小节是报告中最重要的部分之一。目录ToC)对报告文档进行了组织,便于 C 级主管理解。

客观的

本小节向管理人员介绍渗透测试项目和定义的时间表。

限定范围

在报告的这一小节中,应提及范围内定义的所有 URL、IP、端点等。此信息有助于 C 级主管快速注意到受影响的资产,这可能会对组织产生关键业务影响

主要调查结果(影响)

报告的这一小节列出了每个漏洞的影响;也就是说,攻击者可以对组织的资产做什么。这些指针帮助组织评估业务资产的安全级别。C 级主管将立即知道组织的哪些资产需要关键修复。

问题概述

本小节使最高管理层能够深入了解所发现漏洞的严重性。这里可以使用美观的饼图或条形图来显示发现的漏洞,并根据严重性进行分类。

战略建议

本小节向最高管理层提供了他们可以遵循的建议,以修复本质上至关重要的漏洞,如果被利用,可能会给业务带来问题。

报告中的所有细节都应简要提及,因为执行报告的主要目的是向最高管理层提供评估概述。任何不必要的内容都应从报告中删除。现在,让我们看一下 DTR 报告。

撰写详细的技术报告

有关漏洞的所有技术细节将包含在本报告中。DTR 是为客户端的技术团队准备的。让我们来看看 DTR 的一般结构。

标题页

顾名思义,标题页包含有关项目、供应商和客户的信息。

文档版本控制

本小节也在执行报告中进行了定义,所包含的细节相同。

目录

本小节是报告中最重要的部分之一。ToC 组织报告文档,以便客户的技术团队能够轻松理解。

报告摘要

报告的这一小节概述了渗透测试项目,并向客户显示了已发现漏洞的总数,按其严重性级别的顺序显示。我们可以添加一些漏洞统计信息,如饼图或面积图,并将漏洞定义为严重、高、中、低或信息性漏洞。作为 pentester,我们可以添加一个攻击叙述,告诉我们攻击者如何发现这些漏洞,以及攻击者可以在多大程度上利用这些漏洞。报告摘要有助于技术团队以及 C 级主管了解项目的总体成功情况

限定范围

在与客户的启动会议上,将确定项目范围和范围内目标。在报告的这一小节中,应提及范围内定义的所有 URL、IP、端点等。此信息有助于技术团队快速管理手头的漏洞,并与负责范围中提到的 URL/IP 的开发人员/管理员团队进行沟通

将范围添加到报告中还有另一个原因——它有助于渗透测试人员顺利完成项目流程。在范围未定义的情况下,pentester 将无法估计需要完成的工作量,或完成项目所需的天数。众所周知,负责计算渗透测试项目价值的核心实体之一是人工天数。

当渗透测试项目处于初始阶段(即与客户进行项目讨论)时,将根据客户共享的范围以及在给定范围内执行测试所需的人工天数计算项目价值。请注意,这些并不是定义项目价值的唯一要素——资产、时间表、分配给项目的资源数量、差旅费(如有)以及渗透测试人员的初始要求也是一些关键要素。

此定义的范围有助于 pentester 将其团队的资源分配给项目,并定义时间表,以确保项目流程顺畅。如果有许多子项目(如内部网络或外部网络渗透测试)与同一客户一起执行,则定义范围可确保双方具有相同的期望。

使用的方法

报告的本小节应包含渗透测试人员在安全评估期间遵循的方法。最好使用图表显示此流程,并向客户解释每个流程,以便客户方的技术团队了解如何测试他们的组织资产

无论渗透测试仪是否遵循 NIST-800 标准、PTES 标准或他们自己公司的标准,他们都必须在本小节中解释该过程

CVSS

CVSS 是一个自由开放的行业标准,用于确定漏洞的严重性。在根据其严重性定义漏洞时,我们需要根据 CVSS 分数计算对漏洞进行分类。本小节将向客户介绍 CVS 以及我们将在报告中使用的版本。在撰写本文时,CVSS 的版本为 CVSS v3.1,于 2019 年 6 月发布。

漏洞摘要

渗透测试人员应在报告的本小节中添加漏洞描述、CVSS 分数、漏洞严重性、受影响端点/IP、概念证明PoC)、复制步骤、影响、建议和参考。

结论

在本小节中,渗透测试人员从攻击者的角度总结了报告中项目的总体难度。本小节增加了任何额外建议。

附录

任何其他信息,如屏幕截图、服务枚举、CVSS 计算公式以及客户可能需要的任何其他信息,都会添加到报告的这一小节中。

现在,您知道如何编写执行报告以及 DTR。报告期间出现的主要问题是收集所有技术细节。作为 pentester,我们必须确保在渗透测试期间收集所有屏幕截图、URL、使用的有效负载等,以便将这些详细信息输入 DTR 报告。

如果范围是几个 IP 或 URL,则不会有问题,但如果项目很大,则收集数据有时会成为麻烦。为了解决这些问题,我们可以选择在 GitHub 上公开提供的报告框架。这些框架可以自动解析输出扫描文件和 Nmap 端口扫描结果,并根据提供给它的详细信息向我们提供报告。在下一节中,我们将讨论一个这样的框架——Dradis。

Dradis 框架简介

Dradis 是一个基于浏览器的开源应用,可用于聚合不同工具的输出并生成单个报告。它可以连接到超过 15 个工具,包括 Burp Suite、Nessus、Acunetix 和 Nmap。

安装前配置

要安装 Dradis,我们需要安装几个依赖软件包。它非常易于使用,并预装了 Kali Linux。因此,我们将重新安装它,然后学习如何使用它。

首先,我们需要通过运行以下命令来安装依赖项:

 apt-get install libsqlite3-dev
 apt-get install libmariadbclient-dev-compat
 apt-get install mariadb-client-10.1
 apt-get install mariadb-server-10.1
 apt-get install redis-server

接下来,我们将继续安装。

安装和设置

我们可以使用以下命令下载 Dradis 社区版的 GitHub 存储库:

git clone https://github.com/dradis/dradis-ce.git

上述命令的输出如下所示:

现在,我们需要运行以下命令:

bundle install –path PATH/TO/DRADIS/FOLDER

以下屏幕截图显示了前面命令的输出:

现在,我们需要移动到 Dradis 文件夹。要安装 Dradis,我们需要通过键入以下命令在 bin 文件夹中运行安装文件:

./bin/setup

安装完成后,我们可以运行以下命令启动 Dradis 服务器,如以下屏幕截图所示:

bundle exec rails server

以下屏幕截图显示了前面命令的输出:

可通过https://localhost:3000访问 Dradis。

我们甚至可以为 Dradis 使用 Docker 映像,以避免安装步骤以及在此过程中可能出现的任何错误。

现在,我们需要设置密码,以便访问框架并登录,如以下屏幕截图所示:

现在,让我们从 Dradis 开始。

开始使用 Dradis

成功登录后,我们将被重定向到仪表板,如以下屏幕截图所示:

Dradis 框架的免费版本支持各种工具的插件,如 Nmap、Acunetix、Nikto 和 Metasploit。它还允许我们创建可在渗透测试活动中使用的方法。在平台的左窗格中,我们可以看到有助于报告开发过程的三个主要部分–所有问题、方法和垃圾:

所有问题:此页面允许我们创建渗透测试活动期间发现的问题,可以手动创建,也可以通过从不同工具(如 Nmap、Nikto 和 Nessus)导入输出创建。单击此选项将重定向到以下页面:

现在,让我们学习如何将第三方报告导入 Dradis。

将第三方报告导入 Dradis

要从工具的输出中导入问题,请执行以下步骤:

  1. 选择第三个选项上载工具的输出,这将带我们进入以下页面:

  1. 向下滚动将显示已安装插件的列表及其工具的名称,如以下屏幕截图所示:

  1. 上传报告将向我们显示解析后的输出,如以下屏幕截图所示:

  1. 完成导入后,我们将在左侧窗格的 plugin.output 下看到结果,如以下屏幕截图所示:

  1. 我们刚刚导入的扫描结果的输出如下:

现在,我们需要定义安全测试方法。

在 Dradis 中定义安全测试方法

方法学部分允许我们定义我们将在活动期间遵循的方法学。最常用的方法是开源安全测试方法手册OSSTMM)、渗透测试执行标准PTES)和国家标准与技术研究所。我们甚至可以通过定义清单来创建自己的方法,如下所示:

  1. 要创建检查表,请转到“方法”并单击“添加新”。您将看到以下屏幕:

  1. 然后,我们需要为其指定一个名称并单击“添加到项目”:

  1. 我们应该看到已经为我们创建了一个示例列表。单击右侧的“编辑”按钮可对其进行编辑:

  1. 在这里,我们可以看到列表位于一个 XML 文件中。我们可以通过单击更新方法来编辑和保存它:

现在,让我们组织我们的报告。

使用 Dradis 组织报告

现在,让我们学习如何组织扫描报告。节点允许我们为不同的子网、网络和办公地点创建单独的部分,然后将所有问题或屏幕截图放在那里。让我们快速了解如何创建节点:

  1. 转到左侧菜单中的节点选项并单击+符号;将打开一个弹出框,在其中添加网络范围。完成此操作后,单击添加:

  1. 要添加新的子节点,我们需要从左侧窗格中选择节点,然后选择添加子节点选项。子节点用于进一步组织网络。我们甚至可以添加注释和屏幕截图,作为我们在特定节点中可能发现的 bug 的证据:

最后,让我们学习如何在 Dradis 中导出报告。

在 Dradis 中导出报告

可以使用 Dradis Framework 将不同的扫描导入、组合并导出为一个报告,如以下屏幕截图所示:

Note: More information on Dradis can be found on their official website at https://dradisframework.com/

到目前为止,我们已经学习了如何安装和设置 Dradis 框架。我们还研究了在 Dradis 中导入、组织和导出报告。在下一节中,我们将研究另一个名为 Serpico 的工具。

与 Serpico 合作

Serpico简单报表编写与协作工具,是一个用 Ruby 开发的工具,用于加速报表编写过程。它是开源的,独立于平台,可以在 GitHub 上使用。在本节中,我们将介绍 Serpico 的基本安装和使用。

安装和设置

对于 64 位 Linux 系统,安装非常简单–我们只需从工具的发布部分下载并安装该文件,位于https://github.com/SerpicoProject/Serpico/releases

因为 Serpico 有一个 Docker 映像,所以我们将在用例中使用它。

首先,我们需要设置一个数据库以及用户名和密码。要执行此操作,请运行以下命令:

ruby first_time.rb

以下屏幕截图显示了前面命令的输出:

然后,我们使用ruby serpico.rb运行工具:

就是这样——现在,我们都准备好开始使用该工具,现在可以在http://127.0.0.1:8443访问该工具。

Serpico 入门

以下屏幕截图显示了 Serpico 的登录屏幕:

使用用户名和密码登录后,您将看到一个类似于以下内容的仪表板:

登录后,我们将看到各种可用选项,如添加用户、添加模板等,如前一个屏幕截图的左侧窗格所示。

要创建新报告,请执行以下步骤:

  1. 单击顶部菜单中的“新建报告”选项。我们将被重定向到以下页面:

在这里,我们可以填写各种详细信息,例如完整的公司名称、评估类型等。

  1. 点击保存按钮将带我们进入下一页,在那里我们可以填写其余的详细信息,如联系电子邮件等。所有这些信息将打印在最终报告上。
  2. 下一步是将我们的模板数据库结果添加到工具中。如果要遵循常见的发现模板(如 SQLi 和 XSS),我们可以选择添加来自模板的发现,也可以选择创建新的发现:

  1. 单击模板将下载相应的 Word 文档。其外观应类似于以下内容:

  1. 要为特定 bug 添加模板,我们只需勾选复选框并选择位于页面底部的 add 按钮。

当我们不断用 bug 填充报告时,我们将看到我们的结构正在形成,并且图形现在变得更有意义。我们甚至可以直接从 Metasploit 数据库添加附件和管理主机。

稍后,可以使用“导出报告”功能将其导出为单个报告。Serpico 还支持各种插件,可用于从 Burp Suite 和 Nessus 等不同工具导入数据。

将数据从 Metasploit 导入 Serpico

让我们看看如何将 Serpico 连接到 Metasploit 以导入数据。首先,我们需要编辑要连接到 Metasploit 的报表。我们将被重定向到新页面。从左侧菜单中,选择附加功能。将打开以下页面:

现在,让我们启动 Metasploit RPC 服务,如以下屏幕截图所示:

完成此操作后,我们需要在浏览器中切换回 Serpico 并单击 Configure Metasploit RPC connection,这将带我们进入以下页面:

填写连接详细信息并保存这些设置将 Serpico 连接到 Metasploit。这样,所有调查结果都将添加到报告中。

将第三方报告导入 Serpico

与 Dradis 类似,我们还可以将其他工具的发现导入 Serpico 的报告中。让我们快速了解如何从 Nessus 以及 Burp Suite 导入结果

在“附加功能”页面上,编辑报告时,我们可以从 Nessus XML 选项中选择自动添加结果,如以下屏幕截图所示:

我们将被重定向到一个新页面,在那里我们可以上传 Nessus 的 XML 文件,如以下屏幕截图所示:

选择“从打嗝扫描仪报告自动添加结果”选项时,我们可以选择上载打嗝扫描仪的报告,如以下屏幕截图所示:

然后将 Burp Suite 报告解析为 Serpico 格式,报告结果将显示在 Serpico 的主面板上,如以下屏幕截图所示:

现在我们知道了如何将扫描报告从第三方工具导入 Serpico,让我们学习如何管理用户。

Serpico 中的用户管理

用户管理对于组织来说是必要的,尤其是当渗透测试团队庞大时。Serpico 还允许我们管理用户,如以下屏幕截图所示:

Serpico 支持两种类型的用户授权:本地授权和**基于 Active Directory(AD)的授权。**添加用户后,可以通过单击左侧窗格中的“用户列表”链接查看当前用户列表,如下图所示:

除了用户管理,Serpico 还允许我们管理报告模板。

在 Serpico 中管理模板

Serpico 还允许我们使用从 Microsoft Word 派生的元语言创建自定义报告模板。我们可以从添加报告模板页面定义和上载自定义报告模板,如以下屏幕截图所示:

互联网上也有许多预构建的模板,这些模板是由其他用户创建和共享的。

以多种格式生成报告

Serpico 允许我们以不同格式生成报告:

  • 纯文本格式

  • CSV 格式

  • ASCII 文档格式

  • 演示格式(含 PDF)

  • HTML 格式

这就结束了我们对 Dradis 框架和 Serpico 的快速演练。

有关 Serpico 的更多信息,请访问https://github.com/SerpicoProject/SerpicoPlugins/wiki/Main-Page

总结

在本章中,我们介绍了报告写作及其两种类型。我们还使用了两种工具——Dradis 和 Serpico。现在您已经熟悉了它们的框架,可以使用它们生成和组织报告了。

这将我们带到另一个奇妙旅程的终点。我们希望你喜欢这本书。我们始终欢迎您的反馈,因为它有助于我们改进和创建更好的内容。如果您有任何疑问,请随时联系我们,别忘了向您的朋友推荐这本书!

问题

  1. Serpico 支持的元语言是什么?

  2. 渗透测试报告中应包括哪些必要项目?

  3. 还有哪些其他工具可用于自动报告编写?

  4. Microsoft Windows 是否支持 Dradis 和 Serpico?

进一步阅读

以下链接提供了有关 Dradis 和 Serpico 的更多信息: