在 Metasploit 中搜索模块

Kali LinuxBeginner
立即练习

引言

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: 模块的可靠性评级(例如,excellentgreatgood)。
  • 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)过滤搜索结果

在此步骤中,你将学习如何通过过滤特定模块类型来缩小搜索结果范围。之前的搜索返回了各种类型的模块,例如 auxiliaryexploitpost。通常,你知道你需要哪种类型的模块。

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/

此输出为你提供了关键信息,包括必需的选项(RHOSTSUSER_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 来配置它们,最后使用 runexploit 来执行模块。我们不会在这个实验中运行该模块,但选择它是在搜索过程中必不可少的最后一步。

要返回到主 msf6 > 提示符,你可以使用 back 命令。

总结

在这个实验中,你学习了在 Metasploit Framework 中查找模块的基本技能。你现在能够精确而高效地浏览数千个可用模块。

你练习使用了这个过程的核心命令:

  • search: 使用关键词(如服务名称)来查找模块。
  • search type:<type>: 过滤结果以查找特定模块类型,如 exploitauxiliary
  • search cve:<cveid>: 精准查找与特定 CVE 漏洞相关的模块。
  • info: 检查模块的详细信息、选项和用途。
  • use: 选择并将模块加载到框架的上下文中。

掌握这些搜索技巧是成为 Metasploit 熟练用户的基础步骤。你现在已经具备了为未来的渗透测试任务找到合适工具的能力。