Skip to content

Latest commit

 

History

History
288 lines (155 loc) · 15 KB

File metadata and controls

288 lines (155 loc) · 15 KB

七、将 Metasploit(Nessus)用于漏洞评估

在本章中,我们将介绍使用 Metasploit 框架的 Nessus 桥执行漏洞评估的一些方法。Nessus 是 Tenable,Inc.建造的漏洞扫描程序。它广泛用于执行网络安全评估。Nessus 桥允许 Metasploit 解析 Nessus 的扫描结果并将其导入自己的数据库,以便进一步分析和利用。我们甚至可以使用桥接器从 Metasploit 内部启动 Nessus 扫描。

在本章中,我们将介绍以下主题:

  • 奈索斯简介
  • 将 Nessus 与 Metasploit 一起使用
  • 基本命令
  • 修补 Metasploit 库
  • 通过 Metasploit 执行 Nessus 扫描
  • 使用 Metasploit DB 进行 Nessus 扫描
  • 在 Metasploit 数据库中导入 Nessus 扫描

技术要求

以下是本章的先决条件:

  • 元 Sploit 框架
  • *主机的基于 nix 的系统/Microsoft Windows 系统
  • Nessus 家庭版还是专业版

奈索斯简介

Nessus 是 Tenable 开发的最常见、最易于使用的漏洞扫描工具之一。该漏洞扫描器通常用于对网络进行漏洞评估,Tenable Research 发布了 138005 个插件,涵盖 53957 个 CVE ID 和 30392 个 Bugtraq ID。大量 Nessus 脚本(NASL)集合有助于测试人员扩大发现漏洞的范围。Nessus 的一些特征如下:

  • 漏洞扫描(网络、web、云等)
  • 资产发现
  • 配置审核(MDM、网络等)
  • 目标轮廓
  • 恶意软件检测
  • 敏感数据发现
  • 补丁审核和管理
  • 策略遵从性审核

Nessus 可从下载 https://www.tenable.com/downloads/nessus 。一旦安装完成,我们必须激活该工具。可使用中的代码完成激活 https://www.tenable.com/products/nessus/activation-code

将 Nessus 与 Metasploit 一起使用

Nessus 被许多戊酯使用,因为它可以与 Metasploit 一起使用。我们可以将 Nessus 与 Metasploit 集成,通过 Metasploit 本身执行扫描。在本节中,我们将通过以下步骤将 Nessus 与臭名昭著的 Metasploit 集成:

  1. 在继续之前,请确保您已成功安装 Nessus,并且可以从浏览器访问 Nessus web 界面:

  1. 在 Metasploit 中,我们首先必须使用 msfconsole 中的load nessus命令加载 Nessus 插件。这将为 Metasploit 加载 Nessus 桥,如下所示:

  1. 要查看插件提供的命令,请在 msfconsole 中执行以下nessus_help命令:

在对 Nessus 执行漏洞扫描之前,我们需要首先对其进行身份验证,这将在下一小节中完成。

通过 Metasploit 进行 Nessus 身份验证

Metasploit 使用 Nessus RESTful API 与 Nessus 核心引擎交互,这只能在成功身份验证后完成。这可以通过以下方式完成:

  1. 我们可以使用以下命令语法向 Nessus 进行身份验证:
nessus_connect username:password@hostname:port <ssl_verify/ssl_ignore> 

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

usernamepassword是我们用来登录 Nessus web 前端的。hostname可以是 Nessus 服务器的 IP 地址或 DNS 名称,port是 Nessus web 前端运行的 RPC 端口。默认为 TCP 端口8834

ssl_verify验证 Nessus 前端使用的 SSL 证书。默认情况下,服务器使用自签名证书,因此用户应使用ssl_ignore。如果我们不想一次又一次地使用同一个命令,我们可以将凭据保存在配置文件中,Metasploit 可以使用该文件与 Nessus 进行身份验证。

  1. 为了保存凭证,我们可以执行nessus_save命令。这将以 YAML 文件格式保存凭据,如下所示:

此 YAML 配置文件的内容如下:

如果要注销,可以在 msfconsole 中执行nessus_logout命令,如下所示:

现在,我们已经成功地使用 Nessus RESTful API 进行了身份验证,我们可以执行一些基本命令来开始。

基本命令

假设我们在一个组织中工作,我们只获得了通过 Metasploit 终端访问 Nessus 的凭证。在这种情况下,最好运行一些基本命令来了解我们可以做什么和不能做什么。让我们通过以下步骤了解这些命令:

  1. 我们可以执行的第一个命令是 msfconsole 中的nessus_server_properties。此命令将为我们提供有关扫描仪的详细信息(类型、版本、UUID 等)。根据扫描仪类型,我们可以设置扫描首选项,如下所示:

  1. nessus_server_status命令用于确认扫描仪的状态,以便我们确定扫描仪是否准备就绪。这在组织使用基于云的 Nessus 和分布式扫描代理的情况下非常有用。命令的输出显示在以下屏幕截图中:

  1. nessus_admin命令用于检查认证用户是否为管理员,如下图:

  1. nessus_folder_list命令用于查看 Nessus 中可供我们使用的目录。运行该命令将提供如下所示的输出:

  1. nessus_template_list命令用于列出 Nessus 中可用的所有模板。(:我们可以使用-h标志查看该命令的帮助部分)。可访问的模板仅将订阅设置为TRUE。要使用所有模板,我们必须在线查找订阅。上述命令的输出显示在以下屏幕截图中:

前面屏幕截图中的-h标志用于查看命令的帮助部分。

  1. 要查看 Nessus 中配置的类别列表,我们执行nessus_family_list命令。执行此命令后,我们将看到所有可用类别(族名称)及其各自的族 ID 和插件数量,如下所示:

  1. 要列出一个系列中的所有插件,我们可以执行nessus_plugin_list <family ID>命令。这将向我们展示 Nessus 中可用的所有插件,如以下屏幕截图所示:

  1. 要详细了解该插件,我们可以在 msfconsole 中执行nessus_plugin_details <plugin ID>命令,如下所示:

  1. 要列出所有可用的自定义策略,我们可以执行nessus_policy_list命令。这将为我们提供策略 UUID,我们将使用它来执行漏洞扫描。这些策略用于执行自定义扫描。策略 UUID 可用于区分使用多个策略执行的不同扫描,如下所示:

要开始扫描,我们首先需要修补 Metasploit Gem,它负责与 Nessus RESTful API 通信(因为官方修补程序尚未发布),以了解我们在运行扫描时可能遇到的错误。这是由@kost开发的解决方案 https://github.com/kost 。如果未修补,Metasploit 将抛出错误,如以下屏幕截图所示:

在下一节中,我们将研究如何修补 Metasploit 库。

修补 Metasploit 库

自 Nessus 7.0 版以来,状态更改请求(例如,创建/启动/暂停/停止/删除扫描)受到新身份验证机制的保护。为了让 Metasploit 遵循最新更新的用户身份验证机制,我们需要修补nessus_restRubyGem。为此,只需在RubyGems目录中搜索nessus_rest.rb文件。不与 Nessus 新认证机制交互的代码可以在行 152找到:

我们需要将第 152行的代码替换为此处给出的代码:

代码可在此处找到:https://github.com/kost/nessus_rest-ruby/pull/7/files

接下来,我们将执行 Nessus 扫描。

通过 Metasploit 执行 Nessus 扫描

现在我们已经修补了 Metasploit 库,让我们使用 Metasploit 执行 Nessus 扫描:

  1. 修补 gem 后,我们现在可以使用nessus_scan_new <UUID of Policy> <Scan name> <Description> <Targets>命令创建漏洞扫描任务,如下所示:

  1. 任务创建完成后,我们可以通过执行nessus_scan_list命令进行确认。Scan ID将用于启动任务,我们将其记录下来,如下所示:

  1. 让我们通过访问 Nessus web 界面来确认这一点:

正如我们在前面的屏幕截图中看到的,扫描任务已创建,但尚未启动。

  1. 要启动扫描任务,需要执行nessus_scan_launch <scan ID>命令:

我们已经成功地启动了扫描任务。

  1. 让我们在 Nessus web 界面上确认一下:

  1. 通过执行nessus_scan_details <scan ID> <category>命令,我们可以在 msfconsole 中看到前面的屏幕截图中的相同细节:

可用于查看扫描详细信息的可用类别如下:

  • 信息:一般扫描信息,包括扫描状态、用于扫描的策略、扫描名称、扫描目标、扫描开始和结束时间
  • 漏洞:Nessus 在给定目标上发现的漏洞列表,包括用于扫描目标及其插件 ID 的插件名称、插件系列(类别)以及在目标上发现的实例总数

以下屏幕截图显示了漏洞命令的输出:

  • 历史记录:这是最后一次启动相同的扫描任务。这包括历史 ID、扫描的状态创建日期上次修改日期

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

  1. 让我们从 Nessus web 界面确认扫描细节:

  1. 现在我们执行nessus_report_hosts <scan ID>命令,查看扫描的总体摘要,如下所示:

  1. 要获得已识别漏洞的列表,我们可以执行nessus_report_vulns <scan ID>命令,如下所示:

从 Metasploit 使用 Nessus 有一个好处:能够使用 Metasploit DB 进行扫描。如果我们在 Metasploit DB 中存储了目标列表,并且希望对这些目标执行漏洞扫描,那么这将非常有用。

使用 Metasploit DB 进行 Nessus 扫描

可以使用nessus_db_scan <policy ID> <scan name> <scan description>命令将存储在 Metasploit DB 中的所有目标传递给 Nessus。在我们的例子中,目标192.168.2.1IP 存储在 Metasploit DB 中;执行此命令后,Nessus 将在目标 IP 上启动扫描(不仅创建任务,还启动任务),目标 IP 存储在 Metasploit DB 中:

遵循以下步骤:

  1. 让我们从 Nessus web 界面确认前面的执行:

  1. 正如我们在前面的屏幕截图中所看到的,扫描已启动并运行。在管理 Metasploit 工作区的情况下,可以使用nessus_db_scan_workspace命令。在下面的屏幕截图中,我们在NESSUS-WEB工作区中存储了一个目标 IP:

  1. 让我们执行nessus_db_scan_workspace <policy ID> <scan name> <scan description> <workspace>命令在192.168.2.1上运行扫描,该扫描存储在NESSUS-WEB工作区中:

正如我们在前面的屏幕截图中所看到的,我们已经成功创建了一个扫描任务,该任务将扫描NESSUS-WEB工作区中存储的所有主机。

如果执行nessus_db_scan_workspace命令,我们必须手动启动扫描任务。

  1. 让我们使用nessus_scan_launch <scan ID>命令启动扫描。扫描任务成功启动后,我们将再次使用nessus_scan_details命令获取扫描状态:

从前面的屏幕截图可以看出,扫描已经完成。

The scanning result is not saved in the workspace; rather, we can either import the result manually or by using the nessus_db_import command. Keep in mind that some of the features are only accessible if we're using Nessus Manager.

既然我们已经提到了如何使用 Metasploit DB 执行 Nessus 扫描,那么让我们继续下一节,并介绍如何将 Nessus 扫描结果导入 Metasploit DB。

在 Metasploit 数据库中导入 Nessus 扫描

当我们无法访问 REST API 时,使用此方法,REST API 负责将结果直接导入数据库。简单的解决方法如下所示:

  1. 首先,将 Nessus 结果导出到一个文件中,下载该文件,然后使用db_import命令导入相同的文件。
  2. 要导出结果,请使用nessus_scan_export <scan ID> <export format>命令。(可用的导出格式为 Nessus、HTML、PDF、CSV 或 DB)。在此过程中将分配一个文件 ID。
  3. 导出完成后,执行nessus_scan_report_download <scan ID> <file ID>命令:

正如我们在前面的屏幕截图中所看到的,我们已经将结果导出为 Nessus 格式并下载了该文件。

  1. 现在,使用db_import命令导入相同的文件。
  2. 接下来,我们执行vulns命令,确认 Nessus 结果是否成功导入 DB:

  1. 我们还可以通过执行hosts services命令来确认前面的方法是否有效,如下所示:

如果使用得当,我们只需点击一个按钮就可以非常高效地管理 VA 项目(当然,还可以包括用于管理项目和自动化的自定义 Metasploit 脚本)。

总结

在本章中,我们首先介绍了内苏斯大桥。然后,我们学习了如何配置网桥。接下来,我们了解了如何从 Metasploit 控制台启动 Nessus 扫描,最后,我们了解了如何将扫描结果导入 Metasploit 数据库以供进一步使用。

在下一章中,我们将学习如何在内容管理系统CMS)上执行渗透测试,从流行的系统 WordPress 开始。

问题

  1. 我的系统上是否需要安装 Nessus 才能使用 Metasploit 运行它?

  2. 我可以在 Metasploit 中使用其他漏洞扫描程序而不是 Nessus 吗?

  3. Nessus Professional 可以与 Metasploit 一起使用吗?

  4. 我可以通过 Metasploit 扫描多少个 Nessus 系统?

进一步阅读

以下链接是一篇关于 Nessus 的官方博客文章,解释了 Nessus 与 Metasploit 一起使用的原因和方式:

https://www.tenable.com/blog/using-nessus-and-metasploit-together