引言
在本实验中,你将学习如何将 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命令查询数据库以获取详细的服务信息。
在渗透测试过程中,导入扫描数据的这个过程对于有效的数据管理至关重要,它允许你将来自不同来源的信息整合到一个强大的平台中,用于分析和漏洞利用。


