引言
在本实验中,你将学习如何在 Metasploit Framework 中使用辅助扫描模块来执行 SSH (Secure Shell) 版本枚举。Metasploit 是一个强大的渗透测试工具,包含大量的漏洞利用 (exploits)、载荷 (payloads) 和辅助模块。
辅助模块不用于直接漏洞利用,而是用于其他目的,例如扫描、模糊测试 (fuzzing) 和信息收集。SSH 枚举是安全评估侦察阶段的关键部分。通过识别 SSH 服务器的具体版本,攻击者可以查找与该版本相关的已知漏洞。
你将学习如何启动 Metasploit 控制台,搜索合适的模块,配置其选项,并在目标上运行它以发现其 SSH 版本。
搜索 ssh_version 辅助模块
在此步骤中,你将启动 Metasploit Framework 控制台并搜索能够扫描 SSH 版本的模块。
首先,打开一个终端。Metasploit 控制台是框架的命令行界面。你可以通过输入 msfconsole 来启动它。我们将使用 -q 标志进行“安静”启动,该标志会抑制启动横幅。
执行以下命令来启动 Metasploit 控制台:
msfconsole -q
控制台加载后,你将看到 Metasploit 提示符,它看起来像 msf6 >。现在,你可以使用 search 命令来查找模块。我们正在寻找一个与 SSH 版本扫描相关的模块。
在 Metasploit 控制台中输入以下命令并按 Enter:
search ssh_version
Metasploit 将搜索其模块数据库并显示所有匹配项。输出将显示 auxiliary/scanner/ssh/ssh_version 模块,这正是我们需要的。
msf6 > search ssh_version
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_version normal No Detect SSH Version
Interact with a module by name or index. For example info 0, use 0 or use auxiliary/scanner/ssh/ssh_version
msf6 >
选择 ssh_version 模块
在此步骤中,你将选择找到的 ssh_version 模块并查看其可用选项。
既然你已经确定了正确的模块,就需要将其加载到框架的上下文中。这可以通过 use 命令后跟模块的完整名称来完成。
在 msfconsole 提示符下,输入以下命令:
use auxiliary/scanner/ssh/ssh_version
执行命令后,你会注意到提示符发生了变化。它现在包含了活动模块的名称,表明它已准备好进行配置。新的提示符将如下所示:msf6 auxiliary(scanner/ssh/ssh_version) >。
要查看此模块可以配置的参数,请使用 show options 命令:
show options
此命令将显示 ssh_version 模块所有选项的表格,包括它们的当前设置、是否必需以及简要说明。请密切关注 RHOSTS 和 THREADS 选项,因为我们将在下一步配置它们。
msf6 auxiliary(scanner/ssh/ssh_version) > show options
Module options (auxiliary/scanner/ssh/ssh_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 22 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads (max one per host)
TIMEOUT 30 yes Timeout for the SSH probe
...
将 RHOSTS 选项设置为目标子网
在此步骤中,你将配置扫描的目标。RHOSTS 选项指定了 Metasploit 将要扫描的远程主机或主机。
对于本次实验,我们将扫描本地机器本身,因为设置脚本已在其上安装并启动了 SSH 服务器。本地机器的 IP 地址始终是 127.0.0.1。
你可以使用 set 命令来设置模块选项,后跟选项名称和你想要赋给它的值。
要将目标设置为你的本地机器,请在 msfconsole 提示符下执行以下命令:
set RHOSTS 127.0.0.1
Metasploit 将通过打印选项及其新值来确认更改。
RHOSTS => 127.0.0.1
你现在已经告诉了扫描器要针对哪台机器。如果你要扫描一个网络,可以在此处提供一个 IP 地址范围(例如 192.168.1.0/24)。
设置并发线程数
在此步骤中,你将调整扫描器的并发线程数。此选项控制同时扫描多少台主机。
虽然像我们现在这样扫描单个主机从多个线程中获益不大,但它对于扫描大型网络以加快进程来说是一个关键设置。学习如何配置它是一个好习惯。
默认值为 1。让我们将其增加到 10。我们将再次使用 set 命令。
在你的 msfconsole 提示符下,输入以下命令:
set THREADS 10
Metasploit 将确认设置已更新。
THREADS => 10
现在扫描器已配置为使用最多 10 个线程,这将在扫描 IP 地址范围时显著加快速度。
运行模块并审查发现的 SSH 版本
在此步骤中,在配置好所有选项后,你将执行扫描器模块并分析输出。
run 命令(或其别名 exploit)将使用当前加载的模块及其配置的设置来执行。
要开始扫描,只需在你的 msfconsole 提示符下输入 run 并按 Enter:
run
模块现在将尝试连接到 127.0.0.1 的 22 端口。如果它找到一个活动的 SSH 服务,它将获取版本横幅(banner)并显示它。输出应类似于以下内容:
[*] 127.0.0.1:22 - Scanned 1 of 1 hosts (100%)
[+] 127.0.0.1:22 - SSH server detected: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
[*] Auxiliary module execution completed
[+] 符号表示成功。输出显示在 127.0.0.1 的 22 端口检测到了一个 SSH 服务器,并且它报告的版本是 Ubuntu 系统上的 OpenSSH_8.9p1。此信息对于渗透测试的后续步骤非常有价值,例如搜索针对此版本的特定漏洞。
总结
在本实验中,你已成功使用 Metasploit 的辅助扫描器执行了 SSH 版本枚举。
你已学会如何:
- 启动 Metasploit Framework 控制台。
- 使用
search命令搜索特定模块。 - 使用
use命令选择并加载模块。 - 使用
set命令配置RHOSTS和THREADS等模块选项。 - 使用
run命令执行模块。 - 解释结果以识别目标上的 SSH 服务器版本。
这个过程是网络安全和渗透测试领域信息收集和侦察的一项基本技能。


