引言
在本实验中,你将学习如何使用 Metasploit Framework 执行 Server Message Block (SMB) 枚举。SMB 是一种网络协议,用于在网络节点之间提供对文件、打印机和串行端口的共享访问。枚举 SMB 版本是渗透测试中的关键第一步,因为它有助于识别目标上运行的特定软件和版本,然后可以将其与已知漏洞进行交叉引用。
我们将使用 Metasploit 的一个辅助扫描器模块,具体是 auxiliary/scanner/smb/smb_version,来扫描目标并确定其 SMB 版本。Metasploit 是一个强大的渗透测试框架,可以轻松查找、利用和验证漏洞。
在本实验结束时,你将熟悉启动 Metasploit、搜索模块、配置模块选项以及运行扫描器来收集目标系统信息。
搜索 smb_version 辅助模块
在此步骤中,我们将启动 Metasploit Framework 控制台并搜索执行 SMB 版本扫描的合适模块。msfconsole 是与 Metasploit 交互的主要界面。
首先,打开一个终端并运行以下命令来启动 Metasploit 控制台。初始化可能需要一些时间。
msfconsole -q
-q 标志使启动横幅静默。加载完成后,你将看到 Metasploit 提示符,它看起来像 msf6 >。
现在,让我们找到 SMB 版本扫描模块。我们可以使用 search 命令来查找与 smb_version 相关的模块。
search smb_version
你将看到一个匹配模块的列表。我们感兴趣的是一个辅助扫描器。输出应该与此类似:
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/smb/smb_version normal No SMB Version Detection
1 exploit/windows/smb/smb_doublepulsar_eternalblue 2017-04-14 extraordinary Yes SMBv1/SMBv2 DoublePulsar/EternalBlue Unauthenticated RCE
从输出中,我们可以看到 auxiliary/scanner/smb/smb_version 是我们需要的模块。
选择 smb_version 模块
在此步骤中,你将选择在上一步中找到的模块。在确定了正确的模块后,你需要使用 use 命令将其加载到框架的上下文中。
在你的 msfconsole 提示符下,输入以下命令来选择 smb_version 扫描器:
use auxiliary/scanner/smb/smb_version
你将注意到你的提示符已更改,以反映当前加载的模块:
msf6 auxiliary(scanner/smb/smb_version) >
这表明该模块现在已激活。要查看我们可以为该模块配置哪些选项,请使用 show options 命令:
show options
这将显示一个你可以为模块设置的参数表。
Module options (auxiliary/scanner/smb/smb_version):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
THREADS 1 yes The number of concurrent threads (max one per host)
请密切关注 RHOSTS 和 THREADS 选项,因为我们将在接下来的步骤中配置它们。Required 列显示在运行扫描器之前必须设置 RHOSTS。
将 RHOSTS 选项设置为目标 IP 范围
在此步骤中,我们将配置扫描的目标。RHOSTS 选项(远程主机)告诉 Metasploit 要扫描哪些机器。对于本次实验,我们在本地机器上安装了一个 Samba 服务器作为我们的目标。因此,我们将 RHOSTS 设置为回环 IP 地址 127.0.0.1。
使用 set 命令为 RHOSTS 赋值:
set RHOSTS 127.0.0.1
Metasploit 将确认更改:
RHOSTS => 127.0.0.1
你可以通过再次运行 show options 来验证该选项是否已正确设置。你将看到 127.0.0.1 现在已列为 RHOSTS 的 Current Setting。这是一个强制性步骤,因为扫描器需要知道其目标。
设置 THREADS 选项以加快扫描速度
在此步骤中,我们将调整 THREADS 选项。此选项控制 Metasploit 将使用多少并发扫描线程。当你针对大量主机进行扫描时,增加线程数可以显著加快扫描速度。
虽然扫描单个主机(127.0.0.1)不会从多线程中获得性能优势,但学习如何配置此选项是一个好习惯。让我们将线程数设置为 50。
再次使用 set 命令更改 THREADS 值:
set THREADS 50
Metasploit 将确认设置:
THREADS => 50
现在扫描器已配置为使用最多 50 个线程,这对于扫描像 192.168.1.0/24 这样的网络范围会非常有效。
运行扫描器并分析输出
在此步骤中,所有选项都已配置完毕,我们已准备好执行扫描器。run 命令(或其别名 exploit)将针对指定目标启动模块。
在你的 msfconsole 提示符下,执行扫描器:
run
模块现在将尝试连接到 127.0.0.1 的 445 端口并确定 SMB 版本。输出将类似于以下内容:
[*] 127.0.0.1:445 - Sending SMBv1 request
[+] 127.0.0.1:445 - Host is running Samba 4.15.13-Ubuntu (Samba 4.15.13-Ubuntu)
[*] 127.0.0.1:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
让我们分析一下输出:
[+]符号表示成功的结果。Host is running Samba 4.15.13-Ubuntu这行告诉我们 SMB 服务器软件的确切版本。对于渗透测试人员来说,此信息非常有价值,他们现在可以搜索针对此版本的特定漏洞。- 最后几行确认扫描已完成。
你已成功枚举了目标上的 SMB 版本。要退出 Metasploit 控制台,只需键入 exit。
exit
总结
在此实验中,你已成功使用 Metasploit 辅助扫描器执行了 SMB 枚举。你已掌握了在 Metasploit Framework 中使用模块的基本工作流程。
你练习了以下关键技能:
- 启动 Metasploit 控制台(
msfconsole)。 - 使用
search命令搜索模块。 - 使用
use命令选择和加载模块。 - 使用
show options和set查看和配置模块选项,如RHOSTS和THREADS。 - 使用
run命令执行模块。 - 分析输出以收集关于目标的关键信息。
这种信息收集过程是任何安全评估或渗透测试的基础要素。恭喜你完成此实验!


