将外部 Nmap 扫描结果导入 Metasploit

Kali LinuxBeginner
立即练习

引言

在本实验中,你将学习如何将 Nmap 强大的网络扫描能力与 Metasploit Framework 集成。虽然 Metasploit 自身也具备内置的扫描功能,但你通常需要导入来自 Nmap 等外部工具的扫描结果。这是渗透测试中常见的流程,因为它允许你在 Metasploit 的数据库中集中管理所有的侦察数据。

通过导入 Nmap 扫描结果,你可以利用 Metasploit 的数据管理和利用(exploitation)功能来处理由 Nmap 发现的主机和服务的相关信息。你将执行一次 Nmap 扫描,将输出保存到 XML 文件,然后使用 Metasploit 控制台中的 db_import 命令来填充其数据库。

在 Metasploit 外部运行 Nmap 扫描并保存为 XML

在此步骤中,你将执行一次基本的 Nmap 扫描,并将其结果保存到 XML 文件中。XML 格式非常适合导入到其他工具中,因为它结构化且易于解析。我们将扫描 localhost 以识别正在运行的服务及其版本。

首先,请确保你位于默认项目目录 /home/labex/project

在你的终端中运行以下 nmap 命令。以下是选项的详细说明:

  • -sV: 探测开放端口以确定服务/版本信息。
  • -oX nmap_scan.xml: 以 XML 格式将扫描结果输出到名为 nmap_scan.xml 的文件中。
  • localhost: 我们扫描的目标。
nmap -sV -oX nmap_scan.xml localhost

扫描完成后,你将看到类似以下的输出,总结了扫描结果。实际开放的端口可能会有所不同。

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
...

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.43 seconds

此命令将在你当前目录 (~/project) 中创建一个名为 nmap_scan.xml 的文件。

在 msfconsole 中使用 db_import 命令

在此步骤中,你将启动 Metasploit Framework 控制台。msfconsole 是与 Metasploit 交互的主要界面,它允许你访问其模块、管理数据和发起攻击。

我们将使用 -q(quiet,安静)标志启动 msfconsole,以隐藏启动横幅,获得更简洁的界面。数据库连接将自动建立。

执行以下命令启动 Metasploit 控制台:

msfconsole -q

片刻之后,你的终端提示符将变为 msf6 >,这表明你已进入 Metasploit 控制台。

msf6 >

msfconsole 中,你可以使用许多命令来管理你的渗透测试工作流程。其中之一就是 db_import,我们将在下一步中使用它来加载我们的 Nmap 扫描数据。

指定 Nmap XML 文件的路径

现在你已进入 Metasploit 控制台,可以导入 Nmap 扫描结果了。db_import 命令用于此目的。你需要提供在第一步创建的 XML 文件的完整路径。

由于你是在 /home/labex/project 中创建的文件,你将使用该路径。

msfconsole 提示符下运行 db_import 命令:

db_import /home/labex/project/nmap_scan.xml

Metasploit 将解析 XML 文件并将数据导入其数据库。你应该会看到确认数据正在导入的输出。

msf6 > db_import /home/labex/project/nmap_scan.xml
[*] Importing 'Nmap XML' data from /home/labex/project/nmap_scan.xml
[*] Importing host 127.0.0.1
[*] Successfully imported /home/labex/project/nmap_scan.xml

此消息确认来自你的 Nmap 扫描的主机、端口和服务现已存储在 Metasploit 数据库中。

使用 hosts 命令验证导入的主机

在此步骤中,你将验证主机信息是否已成功导入 Metasploit 数据库。msfconsole 中的 hosts 命令会列出 Metasploit 在当前工作区中已知的所有主机。

导入扫描数据后,运行 hosts 命令应该会显示你扫描的目标,即 localhost (127.0.0.1)。

msfconsole 提示符下,输入 hosts 命令并按 Enter:

hosts

输出将是一个列表,显示数据库中的主机,包括它们的 IP 地址、MAC 地址(如果可用)、名称和操作系统。

msf6 > hosts

Hosts
=====

address      mac  name       os_name        os_flavor  os_sp  purpose  info  comments
-------      ---  ----       -------        ---------  -----  -------  ----  --------
127.0.0.1         localhost  Ubuntu Linux   Linux             device

在列表中看到 127.0.0.1 确认来自你的 Nmap 扫描的主机数据已正确添加到数据库中。

使用 services 命令查询导入的服务

在最后一步,你将检查导入主机上发现的服务。msfconsole 中的 services 命令会列出所有已添加到数据库的开放端口和运行中的服务。这对于识别潜在的攻击向量至关重要。

msfconsole 提示符下运行 services 命令:

services

这将显示一个详细的表格,列出所有服务,包括它们运行的主机、端口、协议、服务名称和版本信息。

msf6 > services

Services
========

host       port  proto  name  state  info
----       ----  -----  ----  -----  ----
127.0.0.1  22    tcp    ssh   open   OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)

此输出显示了 Nmap 发现的特定服务,现在已整齐地组织在 Metasploit 中。你现在可以使用这些信息在框架内搜索相关的漏洞利用(exploits)或辅助模块(auxiliary modules)。

要退出 Metasploit 控制台,只需键入 exit

exit

总结

在此次实验中,你已成功掌握了将外部工具与 Metasploit Framework 集成的基本工作流程。

你已学会如何:

  • 运行带有版本检测的 Nmap 扫描,并将结果保存到 XML 文件。
  • 启动 Metasploit 控制台,并使用 db_import 命令加载 Nmap 扫描数据。
  • 使用 hosts 命令查看发现的主机,以验证导入的数据。
  • 使用 services 命令查询数据库以获取详细的服务信息。

在渗透测试过程中,导入扫描数据的这个过程对于有效的数据管理至关重要,它允许你将来自不同来源的信息整合到一个强大的平台中,用于分析和漏洞利用。