0x00 前言
这一节将来看看杀毒软件相关的概念,毕竟知己知彼才能百战不殆,最后会介绍一下常见的免杀方法。
0x01 目的
常规杀毒软件的目的就是发现已知病毒并中止删除它,而作为攻击者则需要对病毒文件进行免杀处理,从而使杀毒软件认为我们的文件是合法文件。
0x02 杀软受到的限制
1、杀毒软件不能把可疑文件删除或者结束运行,否则用户的正常操作可能就会受到影响,同时也会对杀毒软件公司的声誉、口碑产生影响。
2、杀毒软件不能占用太多的系统资源,否则用户可能会考虑卸载杀毒软件。
3、大多数杀毒软件的一个弱点就是只会在浏览器下载文件或者文件被写入磁盘时才会检查这个文件的特征码,也就是说在这种情况下才会检查文件是否是病毒。
0x03 如何工作
1、在大多数杀毒软件背后都会有一个已知病毒的签名数据库,通过将当前文件的特征码与病毒签名数据库进行比对,如果一致则说明该文件是病毒。
2、同时一些杀毒软件也会去发现用户的一些可疑行为,而且杀毒软件对这种可疑行为的判定会下比较大的功夫。因为如果误杀,造成的后果可能对用户来说是比较严重的。
3、一些杀毒软件会在沙箱环境中去运行可疑文件,然后根据该可疑文件的行为判断是否为病毒。
0x04 如何免杀
首先要判断目标使用了哪款杀毒软件,然后自己在虚拟机中去尝试绕过它。
其次可以使用 Cobalt Strike 的 Artifact Kit 组件制作免杀可执行文件。Artifact Kit 是一个制作免杀 EXE、DLL 和 Service EXE 的源代码框架,在 Cobalt Strike 的 Help --> Arsenal
处可下载 Artifact Kit。
Artifact Kit 的工作原理大概如下:
1、将病毒文件进行混淆处理,使杀毒软件将其判定为可疑文件而不是病毒文件。这种混淆可以逃避那些使用简单字符串搜索来识别恶意代码的杀毒软件。
2、对病毒文件进行一些处理,以绕过沙箱检测。比如 Artifact Kit 中的 src-common/bypass-pipe.c 会生成可执行文件和DLL,它们通过命名管道为自己提供shellcode。如果防病毒沙箱不能模拟命名管道,它将找不到已知的恶意 shellcode。
Artifact Kit 的使用步骤大概如下:
1、下载 Artifact Kit
2、如果需要的话就修改/混淆病毒文件
3、构建
4、使用 Artifact Kit 加载脚本
0x05 Artifact Kit 使用演示
首先来看看未进行免杀处理的效果,这里采用 virustotal 进行检测,发现被 42 个引擎检测到。
接下来就试试 Artifact Kit 进行免杀的效果,有条件的可以去官网下载支持一下正版。
当然 Github 上也有人上传了,项目地址:https://github.com/Cliov/Arsenal
这里使用 Artifact Kit 中的 dist-peek 方法进行测试。
来到 Cobalt Strike 下打开 Cobalt Strike -> Script Manager
,Load 加载 /Arsenal/artifact/dist-peek/artifact.cna
插件,之后在 Attacks -> Packages -> Windows Executable
中生成木马文件。
使用 VT 检测发现仅有 8 个引擎检测到,感觉效果好像还行。
把每个杀软的病毒库升级到最新后,实测可以过腾讯电脑管家、火绒,但 360 安全卫士 、 360 杀毒不行。
说句题外话,至于为什么用了两款 360 的产品,主要就是为了截图好看些。
0x06 Veil Evasion 使用演示
此外,也可以使用 Veil Evasion 框架,Veil Evasion 的安装也是比较简单的,Veil-Evasion 在 Kali 2020以前是自带的,但 Kali 2020 中是需要独立安装的。在 Kali 中可以直接使用 apt-get 进行安装。
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
apt-get install veil-evasion
veil
其他系统可以使用 veil-evasion 项目中的介绍进行安装,项目地址:https://github.com/Veil-Framework/Veil-Evasion
由于 Veil Evasion 有 200 多 M ,因此建议挂上代理进行下载安装。
安装完成之后,在 Cobalt Strike 里的 Attacks -> Packages -> Payload Generator
中选择 Veil 输出生成一个 payload.txt 文件
随后来到 Kali 下,输入 veil
启动,输入 use Evasion
使用 Evasion 工具,list
查看当前可用的 Payload
veil
use Evasion
list
这里使用第 17 个即 go/shellcode_inject/virtual.py
Payload 作为示例,因为 go、c 等编译性语言语言相对于 python 等脚本语言来说免杀效果会好些。
use 17
之后输入 generate
,选择第三项 Custom shellcode string
,粘贴刚生成的 payload.txt 文本内容,输入要生成的 exe 文件名,即可生成一个免杀木马。
generate
3
粘贴 payload.txt 内容
bypass_go #生成文件的名称
使用 virustotal 查杀了一下生成的 bypass_go.exe,发现被 40 个引擎检测到,不得不说这效果很一般。
实测可以过360 安全卫士、 360 杀毒,但腾讯电脑管家、火绒不行。
看到 VT 的检测结果后,我还以为四款杀软都能检测到呢,没想到啊。
0x07 免杀插件
后来又在 GitHub 上发现一款免杀插件,2 个月前更新的,项目地址:https://github.com/hack2fun/BypassAV
使用方法可以参考项目中的介绍,目前效果感觉还是可以的,在 virustotal 上只被 10 个引擎检测到。
实测可以过 360 安全卫士、360 杀毒、腾讯电脑管家,但火绒不行。
0x08 总结
在测试完成之后,开始体会到为什么要判断目标使用了哪款杀软的目的了,就上面测试的情况来说,每一家都出现未检测到的情况。在实际的环境中,还是要根据目标的具体情况具体分析。
Emm,浏览器首页又被 360 改成 360 导航了。
另外不得不说一句,从使用的角度来说,火绒是这里面最乖的,没有其他杀毒软件那么多花花肠子。
参考链接:
https://www.bilibili.com/video/BV16b411i7n5
https://www.secpulse.com/archives/127186.html
https://www.cnblogs.com/backlion/p/10616308.html
https://lunamoore.github.io/2020/08/18/veil-evasion%E5%AE%89%E8%A3%85/
更多信息欢迎关注我的微信公众号:TeamsSix