Metasploit 是什么?

2025年3月17日 | 阅读 7 分钟

它是一个开源项目,为公众提供用于开发代码研究安全漏洞的资源。它允许网络管理员对他们的网络进行测试,以识别安全威胁,并记录需要首先解决的漏洞。

它是一种促进渗透测试 (Pen testing) 软件的项目。此外,它还提供了工具来自动化比较程序漏洞及其已修补(修复)版本。它还提供了先进的规避和反取证工具。其中一些工具被整合到 Metasploit 框架中。

让我们讨论一些关键点。

  • Metasploit 项目提供Shellcode 数据库、Opcode 数据库(目前已过时)、Metasploit ProMetasploit Express
  • Shellcode 是一种包含字节码以完成特定目标的漏洞利用代码。常见的 Shellcode 目标包括执行反向 telnet 或将 rootkit 添加到攻击者的机器上。
  • Metasploit 还提供 Payload 数据库,允许渗透测试人员试验漏洞利用目标和代码。

Metasploit 项目于 2009 年被计算机安全公司 Rapid7 收购。Metasploit Pro 和 Metasploit Express 是 Metasploit Framework 的开放核心版本,具有附加功能。开放核心是一种提供将专有软件和开源软件结合在一起的产品的方式。Rapid7 与开源社区合作,继续开发 Metasploit。

Metasploit 框架

Metasploit 项目最有效的成果之一是 Metasploit 框架。Metasploit 框架是一个用于开发、测试执行漏洞利用的软件环境。它可以用于创建安全测试工具、漏洞利用模块,以及作为渗透测试系统。最初,它于 2003 年由 HD Moore 开发,作为一种可移植的网络工具。

该框架是一个非常强大的工具。它可以被道德黑客和网络罪犯用于探测服务器和网络上的系统性脆弱性。由于它是一个开源框架,因此可以轻松地与各种操作系统一起使用和定制。

渗透测试团队可以使用自定义代码或现成代码,并在网络上进行部署,以使用 Metasploit 探测弱点。一旦发现并确认为另一种威胁狩猎形式的缺陷,这些信息就可以用于确定解决方案的优先级并解决系统性弱点。

Metasploit 简史

2003 年,HD Moore 试图使用 Metasploit 项目作为任何基于 Perl 的可移植网络工具,并得到Matt Millar 核心开发者的支持。2007 年,它完全转换为Ruby。2009 年,Rapid7 获得了该许可证,并将其作为波士顿公司在入侵检测系统签名演变、定向规避工具、反取证、模糊测试和远程漏洞利用产品组合的一部分。

  • Metasploit 框架中包含其他工具的部分。它是在Kali Linux OS 中创建的。
  • Rapid7 改进了两个主要的开放核心工具:Metasploit ExpressMetasploit Pro
  • 该框架是一个首选的漏洞利用缓解和开发工具。在没有 Metasploit 之前,许多渗透测试人员必须手动执行每次探测。这可能通过使用各种可能支持也可能不支持手动编写代码、手动部署到网络以及测试环境的工具来完成。

谁可以使用 Metasploit?

由于其广泛的开源可用性和应用,从不断增长的 DevSecOps 专业人士到许多黑客,几乎任何人都可以使用 Metasploit。它对那些需要可靠且易于安装的工具的人很有用。无论使用何种语言或平台,它都可以完成任务。

该软件因其广泛的黑客用户而广受欢迎。它强化了许多安全专业人员熟悉此框架的需求,即使他们不使用它。

现在,Metasploit 包含1677+ 个漏洞利用,涵盖25 个平台,包括Cisco、Java、Python、PHP、Android 等。此外,该框架还包含大约 500 个 Payload。其中一些 Payload 如下:

What is Metasploit
  • 命令 Shell Payload:命令 Shell Payload 允许用户对任何主机执行随机或脚本命令。
  • Meterpreter Payload:Meterpreter Payload 允许用户通过 VMC 控制设备监视器,并接管会话或下载上传文件。
  • 动态 Payload:这些 Payload 允许用户创建特定 Payload 以规避杀毒软件。
  • 静态 Payload:静态 Payload 允许用户在多个网络之间建立通信和端口转发。

Metasploit 模块

Metasploit 为我们提供了一些模块用于:

  • Payload:恶意的代码集
  • Exploits:用于利用系统弱点的工具
  • Auxiliary Functions:辅助命令和工具
  • Listeners:伪装以获取访问权限的恶意软件
  • Encoders:用于转换信息或代码
  • Shellcode:被编程为在目标中激活的代码
  • Nops:用于保护 Payload 免于崩溃的指令
  • Post-exploitation code:支持在内部进行更深入的渗透测试

Metasploit 命令

以下是一些我们应该了解的 Metasploit 控制台的常见 Metasploit 命令。这个 Metasploit 控制台也称为 msfconsole,它是启动程序的批处理文件名。

我们应该了解的命令包括:

  1. help:此命令显示 msfconsole 中所有可用的命令。
  2. show exploits:它显示我们可以执行的各种漏洞利用。例如,windows/smb/ms17_010_etern exploit;
  3. show payloads:它显示我们可以在被利用的系统上运行的 Payload 选项,例如上传程序执行、启动命令 Shell。例如,shell_reverse_tcp exploit;
  4. use [exploit name]:此命令指示 msfconsole 进入特定的漏洞利用环境。
  5. info:它显示我们正在使用的特定漏洞利用的描述,及其各种要求和选项。
  6. show options:此命令显示我们正在处理的特定漏洞利用的各种参数。
  7. set PAYLOAD:此命令允许我们为漏洞利用设置特定的 Payload。例如,set PAYLOAD
    generic/shell_reverse_tcp;
  8. show targets:它显示可以利用的目标应用程序和操作系统。
  9. set TARGET:此命令允许我们在某些漏洞利用允许的情况下选择特定的目标应用程序和操作系统。
  10. set RHOST:它允许我们设置目标主机的 IP 地址。例如,
    set RHOST
    1.1.208;
  11. set LHOST:它允许我们设置本地主机的 IP 地址,用于反向通信,以打开反向命令 Shell。例如,
    set LHOST
    1.1.214;
  12. back:此命令允许我们退出当前加载的漏洞利用平台,然后返回到主 msfconsole 提示符。
  13. exit:此命令允许我们退出 Metasploit 控制台。

msfupdate 是另一个重要的命令。Msfupdate 不仅仅是我们从控制台运行的命令,而是创建在 Metasploit Framework 内的外部程序。此命令也可以定义为位于 Metasploit Framework/bin 文件夹中的批处理文件,该文件可以下载并更新正在运行的 Metasploit 实例到当前版本。

Metasploit 架构

Metasploit 的架构包含多个重要组件。这些组件是完全利用 Metasploit 功能所必需的。

What is Metasploit
  • Tools:这些工具是一组合适的实用程序。
  • Plugins:在运行时,插件是一些可加载的扩展。
  • Interfaces:接口使用户能够以多种不同的方式访问 Metasploit(例如,Web 和 CLI)。
  • Libraries:这些库是合适的 Ruby 库。
  • Modules:模块用于实现特定任务。
  • REX:它处理几乎所有的核心功能,如设置格式、连接、套接字和其他功能。
  • MSF CORE:它提供了通用的 API 和定义框架的原始核心。

Metasploit 的优点

让我们讨论 Metasploit 的一些优点。

1. 开源

积极开发并且开源是我们选择 Metasploit 的最重要的原因。存在许多其他付费工具可以执行渗透测试过程。然而,Metasploit 允许用户添加自己的自定义模块并访问其代码。Metasploit Pro 版本是收费的,尽管为了获取,社区版通常更受欢迎。

2. 简单的命名约定和支持测试大型网络

Metasploit 易于使用。但是,这里的这个特性定义了许多命令的简单命名约定。Metasploit 在构建大型网络渗透测试时提供了便利。例如,假设我们要测试一个包含 200 台系统的网络。Metasploit 可以自动测试整个范围,而不是逐一测试所有系统。

通过诸如无类别域间路由(CIDR 的缩写)和子网值之类的参数,Metasploit 可以测试所有系统以利用漏洞。然而,在任何手动漏洞利用方法中,我们可能需要手动将漏洞利用部署到 200 台系统上。因此,Metasploit 节省了大量的精力和时间。

3. GUI 环境

Metasploit 提供第三方实例和友好的 GUI,如 Armitage。这些类型的接口可以通过提供诸如按一下按钮即可实现的功能、即时漏洞管理和易于切换的工作区等服务来简化渗透测试项目。

4. 更干净的退出

Metasploit 能够从系统中干净地退出。如果您知道该服务不会立即重启,这是一个重要的方面。此外,它还提供了许多用于后渗透的功能,如持久性,这有助于永久保持对服务器的访问。


下一主题释义工具