0x01前言
随着红蓝对抗的发展越来越完善,防病毒EDR的系统也越来越高级,厂商的杀毒软件每天也在不断更新病毒库。病毒免杀一直是一个老生常谈的问题,了解一下市面上基本的杀毒手法和工具
0x02起源
免杀技术全称为反杀毒技术简称“免杀”。免杀技术至少是在1989年以后才发展起来的。关于世界免杀技术的历史信息已无从考证,但从国内来讲,免杀技术的起步可以说是非常晚了。
0x03常见杀软
不同的厂商的杀毒软件都有属于自己的杀毒机制
卡巴斯基
卡巴斯基是来自俄罗斯的卡巴斯基实验室研发的,能查杀市面上几乎所有病毒,反病毒引擎也是全球数一数二的,基本上病毒免杀都围绕它来编写。
360杀毒
360有一个它特有的杀毒引擎(360核晶)
360核晶一般会搭配Intel-VT虚拟化技术,什么是VT虚拟化?
一般的,在宿主机里,可以对任意虚拟机进行操作而不影响宿主机。360核晶就是把自己当做宿主机,把系统当做虚拟机,它可以对内核做更深一步的个性化修改,来完成被PatchGuard阻止的行为,达到原先的保护效果。
一般来说,整体思路是以文件查杀和特征行为做核心。但是有X64系统patchguard存在,在内核层手段有限,对抗白加黑方法和内存马,几乎没有防范作用。
其中还有一个qvm引擎,是360在2011年首推的一个人工智能杀毒引擎,底层原理有空再研究下
火绒杀毒
火绒采取的是简单的特征码识别
火绒的反病毒引擎是通过通用脱壳工具,无视市面上一般的壳,还原为原始特征码,再与病毒库特征码对比,让木马无处遁形。
火绒里的火绒剑用处是比较大的,可以使用它进行一些专业操作,基本功能都是有的,包括hook检测,网络检测,驱动、文件检测等等
WindowsDefender
简称WD,是微软官方研发的一款杀毒防护,对修改注册表,联网行为等操作比较敏感。
采用特征码 + 可疑行为检测的方式扫描全盘
WD藏于Win10后台,当系统为安全的时候不会弹出任何窗口,但当有可疑木马时会自动启用后台全盘查杀
0x04检测方式
分为动态检测和静态检测,也就是主动防御和被动防御
主动防御就是检测系统敏感操作,如修改文件,网络外联请求,修改注册表等需要授权的操作
被动防御就是客户开启杀毒扫描功能,分为快速扫描,全盘扫描和自定义扫描,捕获程序特征码,并通过自身的病毒库特征码对比确认是否是恶意文件还是正常文件
0x05检测技术
1、深度学习检测木马样本
2、进程行为检测(沙盒模型)
3、文件和检测(CRC)
4、内存扫描
0x06免杀方法
目前常见的病毒免杀方法如下:
1、加花指令
花指令是汇编里无用的垃圾、拥塞指令,增加或删除不影响源程序的运行,但会影响杀毒软件的判断,一般有特定的指令格式
2、混淆加密
常见的有Go混淆,Python混淆,Rust混淆和小众语言的混淆
而加密方式则有AES加密,DES加密,RSA加密或特殊的有rc4加密,均为非对称加密,加大了病毒识别难度
3、源码分离免杀
使用shellcode加载器,与恶意代码分离
远程分离免杀也是其中一种,其表现为分为两种文件,一个A文件编写shellcode,并部署到远程服务器上,一个B文件用于访问该服务器的shellcode,并执行返回的数据。杀毒软件检测的是B文件,B文件只是简单的实现网络访问资源,并无可疑系统函数,绕过检测。
4、内存加载免杀
shellcode直接加载进内存,避免文件落地,可以绕过文件扫描。无文件落地可以规避下载的文件优先被扫描的策略。同时申请内存的时候采用渐进式申请,申请一块可读写内存,改成可读可写可执行。
6、修改特征码
每个病毒样本都有属于自己的一个特征码,杀毒软件会根据上传到它病毒数据库上的特征码来对文件进行比对,若符合前一小段特征码片段则默认该文件是木马文件
7、白加黑免杀
白即是白名单程序,黑则是黑进程。大体来说就是在受信任的程序里加载shellcode恶意代码,实现绕过杀毒检测
8、图片马
使用python读取图片hex码,并将一段恶意shellcode插入图片最末尾处,受害者点击图片时
1 | list = b"shellcode" |
9、加壳免杀
市面上有很多压缩壳、加密壳,有免费的也有收费的。比如常见的UPX就是压缩壳,缩小程序的体积,还有其他的有VMP壳,SE壳,这些都是商业版的强壳。破解这些壳都存在一些困难,需要一定的知识储备和实操能力。