探索 Metasploit Framework 基础

Beginner

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将探索 Metasploit Framework 的基本概念和用法,这是一个功能强大的开源渗透测试工具。Metasploit 提供了一个全面的平台,用于识别和利用各种系统和应用程序中的漏洞。本实验的目标是让你熟悉 Metasploit 的核心组件、其攻击方法以及基本的使用技巧。


Skills Graph

理解 Metasploit Framework

在这一步中,我们将介绍 Metasploit Framework 的架构和核心概念。

Metasploit 是一个功能强大且广泛使用的渗透测试框架,使用 Ruby 开发。它由多个组件组成,包括模块、接口、插件、工具和库。该框架设计为模块化,支持代码重用和扩展性。

Metasploit Framework 主要分为以下几个关键模块:

  1. Exploits(漏洞利用模块):这些是代码模块,利用目标系统中的漏洞来获取未授权访问或执行任意代码。
  2. Auxiliary(辅助模块):该模块包含各种支持工具,例如扫描器、模糊测试工具和协议操作工具。
  3. Encoders(编码器模块):这些模块用于混淆或编码有效载荷,以绕过安全机制,如防病毒软件或防火墙。
  4. Payloads(有效载荷模块):这些模块包含在成功利用漏洞后在目标系统上执行的代码。
  5. Post-Exploitation(后渗透模块):这些模块提供在受攻击系统上维持访问权限和进一步操作的功能。

Metasploit 提供了多种与框架交互的接口,包括命令行界面(msfconsole)、基于 Web 的界面(Metasploit Web UI)和命令行界面(Metasploit Command Line)。

首先,让我们启动实验环境。通过双击桌面上的 xfce 终端启动 Metasploitable2,并在终端中输入以下命令:

sudo virsh start Metasploitable2

等待目标机器启动,可能需要 1-3 分钟。

通过 ping 目标机器确保其正在运行(按 Ctrl-C 退出 ping):

ping 192.168.122.102

然后,启动 Kali 容器并进入 bash 界面,执行 ping 操作以验证网络连通性:

docker run -ti --network host b5b709a49cd5 bash

现在,我们可以执行 ping 操作以验证网络连通性(按 Ctrl-C 退出 ping):

ping 192.168.122.102

接下来,启动 Metasploit 控制台:

cd ~
msfconsole

在接下来的步骤中,我们将探索 Metasploit 控制台的基本用法并执行各种任务。

基本导航与模块探索

在这一步中,我们将学习如何导航 Metasploit 控制台并探索可用的模块。

Metasploit 控制台提供了一个命令行界面,用于与框架交互。以下是一些基本命令:

  • help:显示可用命令及其描述的列表。
  • search [keyword]:根据提供的关键字搜索模块。

让我们在 Metasploit 控制台中搜索与 Linux 相关的模块:

search linux

此命令将列出所有与 Linux 漏洞和利用相关的模块。

要选择特定模块,请在 Metasploit 控制台中使用 use 命令,后跟模块路径:

use auxiliary/analyze/jtr_linux

选择模块后,你可以使用 show options 命令查看其选项和所需参数:

show options

以下是你可能会看到的输出示例:

Module options (auxiliary/analyze/jtr_linux):

   Name                  Current Setting  Required  Description
   ----                  ---------------  --------  -----------
   BLOWFISH              false            no        Include BLOWFISH hashes (Very Slow)
   BSDI                  true             no        Include BSDI hashes
   CONFIG                                 no        The path to a John config file to use instead of the default
   CRACKER_PATH                           no        The absolute path to the cracker executable
   CUSTOM_WORDLIST                        no        The path to an optional custom wordlist
   DES                   true             no        Indlude DES hashes
   FORK                  1                no        Forks for John the Ripper to use
   INCREMENTAL           true             no        Run in incremental mode
   ITERATION_TIMEOUT                      no        The max-run-time for each iteration of cracking
   KORELOGIC             false            no        Apply the KoreLogic rules to John the Ripper Wordlist Mode(slower)
   MD5                   true             no        Include MD5 hashes
   MUTATE                false            no        Apply common mutations to the Wordlist (SLOW)
   POT                                    no        The path to a John POT file to use instead of the default
   SHA256                false            no        Include SHA256 hashes (Very Slow)
   SHA512                false            no        Include SHA512 hashes (Very Slow)
   USE_CREDS             true             no        Use existing credential data saved in the database
   USE_DB_INFO           true             no        Use looted database schema info to seed the wordlist
   USE_DEFAULT_WORDLIST  true             no        Use the default metasploit wordlist
   USE_HOSTNAMES         true             no        Seed the wordlist with hostnames from the workspace
   USE_ROOT_WORDS        true             no        Use the Common Root Words Wordlist
   WORDLIST              true             no        Run in wordlist mode


Auxiliary action:

   Name  Description
   ----  -----------
   john  Use John the Ripper

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

设置模块选项

在这一步中,我们将学习如何在 Metasploit 中为选定的模块设置选项。

首先,如果你不在 Metasploit 控制台中,请启动 Metasploit 控制台:

cd ~
msfconsole

选择一个模块:

use auxiliary/analyze/jtr_linux

许多模块在执行之前需要设置特定的选项。你可以使用 set 命令来设置选项,后跟选项名称及其值,例如 set OPTION_NAME value

例如,让我们为 jtr_linux 模块设置 JOHN_PATH 选项:

set JOHN_PATH /usr/share/metasploit-framework/data/wordlists/password.lst

你也可以使用 setg 命令来设置一个全局选项,该选项在模块切换时仍然有效。

设置完所需的选项后,你可以根据模块类型使用 runexploit 命令来执行模块:

run

exploit

要返回上级上下文或退出当前模块,请使用 back 命令。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

利用漏洞

在这一步中,我们将模拟一个真实场景,并尝试利用目标系统上的漏洞。

首先,如果你不在 Metasploit 控制台中,请启动 Metasploit 控制台:

cd ~
msfconsole

假设我们在目标 IP 地址 192.168.122.102 上发现了一个存在漏洞的 MySQL 服务器。我们可以使用 mysql_login 模块尝试对 MySQL 凭据进行暴力破解。

在 Metasploit 控制台中选择 mysql_login 模块:

use auxiliary/scanner/mysql/mysql_login

接下来,在 Metasploit 控制台中设置所需的选项:

set RHOSTS 192.168.122.102
set user_file /path/to/usernames.txt
set pass_file /path/to/passwords.txt

最后,在 Metasploit 控制台中执行模块:

exploit

Metasploit 将尝试使用指定文件中的用户名和密码组合登录 MySQL 服务器。我们提供的用户名和密码仅为示例,登录可能会失败,你应该将其替换为真实的用户名和密码。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

后渗透任务

在这一步中,我们将探索 Metasploit 中可用的后渗透模块,这些模块可用于在受攻击的系统上维持访问权限并执行额外操作。

成功利用漏洞并获取目标系统的访问权限后,你可以使用后渗透模块执行各种任务,例如:

  • 收集系统信息
  • 提升权限
  • 维持持久访问
  • 横向移动到其他系统

首先,如果你不在 Metasploit 控制台中,请启动 Metasploit 控制台:

cd ~
msfconsole

要使用后渗透模块,请按照与其他模块类型相同的步骤操作:

use post/windows/gather/enum_logged_on_users
show options

以下是你可能会看到的输出示例:

Module options (post/windows/gather/enum_logged_on_users):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   CURRENT  true             yes       枚举当前登录的用户
   RECENT   true             yes       枚举最近登录的用户
   SESSION                   yes       运行此模块的会话
set SESSION 1
exploit

此示例模块枚举了 Windows 系统上登录的用户,但 Metasploit 提供了许多其他后渗透模块,适用于各种平台和任务。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

总结

在本实验中,我们探索了 Metasploit 框架,这是一个用于渗透测试和漏洞评估的强大工具。我们了解了 Metasploit 的核心组件,例如漏洞利用(exploits)、有效载荷(payloads)和辅助模块(auxiliary modules)。我们还练习了如何导航 Metasploit 控制台、搜索模块、设置选项以及执行模块来利用漏洞并完成后渗透任务。

Metasploit 为道德黑客、安全专业人员和研究人员提供了一个全面且多功能的平台,用于识别和缓解安全漏洞。通过理解并实践 Metasploit,你可以提升在渗透测试、漏洞分析和整体安全评估方面的技能。