引言
Metasploit Framework 是安全专业人员用于渗透测试和漏洞评估的强大工具。它包含一个庞大的模块数据库,包括 exploits、auxiliary scanners、payloads 等。拥有数千个可用模块,了解如何高效地搜索正确的模块是一项关键技能。
在本实验中,你将学习在 Metasploit 中搜索模块的基本技术。我们将从基本的关键词搜索开始,然后探讨如何使用模块类型和特定 CVE 标识符的过滤器来优化搜索。最后,你将学习如何检查模块的详细信息并选择它以供使用。
使用服务名称(如 ssh)进行搜索
在此步骤中,你将首先启动 Metasploit 控制台,并对与特定服务相关的模块执行基本搜索。search 命令是你浏览 Metasploit 庞大模块库的主要工具。
首先,打开你的终端并运行 msfconsole 命令来启动 Metasploit Framework 控制台。这可能需要一些时间来加载。
msfconsole
你将看到一个横幅和 Metasploit 命令提示符,它看起来像 msf6 >。
现在,让我们搜索所有与 SSH (Secure Shell) 服务相关的模块。在 Metasploit 控制台中输入以下命令并按 Enter:
search ssh
Metasploit 将显示一个列表,其中包含名称或描述中带有“ssh”的所有模块。输出将是一个包含多个列的表格:
- #: 搜索结果中模块的索引号。
- Name: 模块的完整路径和名称。
- Disclosure Date: 漏洞公开披露的日期。
- Rank: 模块的可靠性评级(例如,
excellent、great、good)。 - Check: 指示模块是否具有检查方法,用于在不利用目标的情况下查看目标是否易受攻击。
- Description: 模块功能的简要概述。
你的输出将类似于此(列表可能更长,版本可能不同):
msf6 > search ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_login 1999-01-01 normal No SSH Login Check Scanner
1 auxiliary/scanner/ssh/ssh_login_pubkey 2002-07-23 normal No SSH Public Key Login Scanner
2 exploit/linux/ssh/libssh_auth_bypass 2018-10-16 great Yes LibSSH Authentication Bypass
3 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
4 post/linux/manage/ssh_authorized_keys normal No Linux Manage SSH Authorized Keys
...
这个简单的搜索为你提供了所有可用的 SSH 相关模块的广泛概览。
按模块类型(如 exploit 或 auxiliary)过滤搜索结果
在此步骤中,你将学习如何通过过滤特定模块类型来缩小搜索结果范围。之前的搜索返回了各种类型的模块,例如 auxiliary、exploit 和 post。通常,你知道你需要哪种类型的模块。
Metasploit 允许你使用 type 等关键词来过滤搜索。最常见的类型是:
exploit: 利用漏洞来获得控制权的模块。auxiliary: 用于扫描、fuzzing、嗅探和其他非直接 exploit 操作的模块。post: 在受损系统上运行的后渗透模块。
让我们优化之前的搜索,只查找与 SSH 相关的 exploit 模块。在你的搜索查询中使用 type: 过滤器:
search type:exploit ssh
输出现在将仅限于被归类为 exploits 的模块:
msf6 > search type:exploit ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/ssh/libssh_auth_bypass 2018-10-16 great Yes LibSSH Authentication Bypass
1 exploit/multi/ssh/sshexec 2004-01-01 manual No SSH Exec
...
类似地,如果你正在寻找一个扫描器来收集有关 SSH 服务的信息,你将搜索 auxiliary 模块:
search type:auxiliary ssh
此命令将返回用于 SSH 的扫描器和其他非 exploit 工具的列表。
msf6 > search type:auxiliary ssh
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_login 1999-01-01 normal No SSH Login Check Scanner
1 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
...
使用类型过滤器是快速找到所需工具的强大方法。
搜索特定的 CVE 标识符
在此步骤中,你将学习如何搜索与特定通用漏洞披露 (CVE) 标识符相关的模块。当你知晓想要针对的漏洞的 CVE ID 时,这是查找相应 exploit 的最直接方法。
CVE 是一个已公开的、已知的网络安全漏洞的唯一标识符。Metasploit 模块通常会标记它们所处理的 CVE。
你可以使用 cve: 过滤器按 CVE 进行搜索。例如,让我们搜索一个与 CVE-2018-15473 相关的模块,这是一个在某些 OpenSSH 版本中存在的用户枚举漏洞。
search cve:2018-15473
此搜索非常具体,应该只返回旨在针对此确切漏洞的模块。
msf6 > search cve:2018-15473
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/ssh/ssh_enumusers 2018-08-20 normal No OpenSSH User Enumeration
如你所见,搜索精确地定位了此 CVE 的辅助模块。当你从漏洞扫描报告或安全公告中获取信息时,按 CVE 进行搜索是一项基本技术。
使用 info 命令查看详细的模块信息
在此步骤中,你将学习如何在实际使用模块之前获取其详细信息。在找到一个有潜力的模块后,了解它的功能、所需选项以及开发者是谁非常重要。info 命令提供了所有这些信息。
你可以使用模块的完整名称或上次搜索结果中的索引号来使用 info 命令。让我们获取更多关于我们在上一步中找到的 ssh_enumusers 模块的信息。
你可以使用其完整名称:
info auxiliary/scanner/ssh/ssh_enumusers
或者,如果它是你上次搜索中的第 0 项,你也可以简单地使用 info 0。通常使用完整名称更可靠。
该命令将显示关于该模块的详细页面:
msf6 > info auxiliary/scanner/ssh/ssh_enumusers
Name: OpenSSH User Enumeration
Module: auxiliary/scanner/ssh/ssh_enumusers
License: Metasploit Framework License (BSD)
Rank: Normal
Disclosed: 2018-08-20
Provided by:
Justin Gardner
Check supported:
No
Basic options:
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)
USER_FILE yes File containing usernames, one per line
Description:
This module enumerates valid usernames on OpenSSH servers by exploiting
a subtle timing discrepancy in the C library's handling of password
authentication.
References:
https://nvd.nist.gov/vuln/detail/CVE-2018-15473
https://www.exploit-db.com/exploits/45233/
此输出为你提供了关键信息,包括必需的选项(RHOSTS、USER_FILE 等)、模块功能的完整描述以及指向原始漏洞披露链接。在使用模块之前,请务必查看这些信息。
使用 use 命令选择一个模块以供使用
在最后这个步骤中,你将学习如何选择一个模块使其变为活动状态。一旦你识别并研究了一个模块,就需要将其加载到框架的上下文中进行配置和运行。这可以通过 use 命令完成。
与 info 命令类似,use 命令后面可以跟模块的完整名称或其在搜索结果中的索引号。让我们选择 ssh_enumusers 模块。
use auxiliary/scanner/ssh/ssh_enumusers
运行此命令后,你会注意到你的 Metasploit 提示符发生了变化。它现在包含了活动模块的名称,表明该模块已加载并准备好进行配置。
msf6 > use auxiliary/scanner/ssh/ssh_enumusers
msf6 auxiliary(scanner/ssh/ssh_enumusers) >
新的提示符 msf6 auxiliary(scanner/ssh/ssh_enumusers) > 确认了模块已加载。从这里开始,你通常会使用 show options 等命令查看需要设置的参数,使用 set 来配置它们,最后使用 run 或 exploit 来执行模块。我们不会在这个实验中运行该模块,但选择它是在搜索过程中必不可少的最后一步。
要返回到主 msf6 > 提示符,你可以使用 back 命令。
总结
在这个实验中,你学习了在 Metasploit Framework 中查找模块的基本技能。你现在能够精确而高效地浏览数千个可用模块。
你练习使用了这个过程的核心命令:
search: 使用关键词(如服务名称)来查找模块。search type:<type>: 过滤结果以查找特定模块类型,如exploit或auxiliary。search cve:<cveid>: 精准查找与特定 CVE 漏洞相关的模块。info: 检查模块的详细信息、选项和用途。use: 选择并将模块加载到框架的上下文中。
掌握这些搜索技巧是成为 Metasploit 熟练用户的基础步骤。你现在已经具备了为未来的渗透测试任务找到合适工具的能力。


