免杀基础学习记录

前言

参考SecretTeam安全团队的学习记录

什么是免杀?

免杀(Bypass AV, Anti-Virus Evasion)是指恶意软件通过各种手段规避杀毒软件和安全检测系统的识别和拦截,从而在目标系统中成功执行。这种技术不仅用于恶意软件的传播,也被信息安全研究人员用来测试和提升安全防护系统的能力。根据有无源码,免杀可以分为以下两种情况:

  • 二进制免杀

直接对一个二进制程序进行免杀,通过修改数据,加壳加花,定位修改特征码等等黑盒方式

  • 源码免杀

通过修改源码来进行免杀(大概率成为今后免杀的主流)

直接对一个二进制程序来进行免杀技术难度较高,免杀效果也不好,所以通常将二进制程序转换成一段shellcode,使用加载器来执行shellcode的方式来进行从无源码免杀向有源码免杀的转换,根据免杀阶段还分为以下两个阶段:

  • 静态免杀

静态免杀主要是为了抵抗杀毒软件的静态扫描,杀毒软件的静态扫描一般会通过提取文件中的一段特征串来与自身的病毒库中的特征码进行对比来判断该文件是否为恶意文件,因此我们一般围绕修改或是掩盖文件的特征码来实现静态免杀

  • 动态免杀

动态免杀主要是为了抵抗杀毒软件的动态查杀,如内存扫描,行为分析等

杀软特性

360

360有点全能了,在国内基本各个方面都是顶尖

报毒特征

HEUR/Malware.QVM06.Gen 一般情况下加数字签名可过
HEUR/Malware.QVM07.Gen 一般情况下换资源
HEUR/Malware.QVM13.Gen 加壳了
HEUR/Malware.QVM19.Gen 杀壳 (lzz221089提供 )
HEUR/Malware.QVM20.Gen 改变了入口点
HEUR/Malware.QVM27.Gen 输入表
HEUR/Malware.QVM18.Gen 加花
HEUR/Malware.QVM05.Gen 加资源,改入口点

QVM07加资源一般加到2M会报QVM06
再加数字签名,然后再慢慢减资源,这个方法对大部分木马有效果。
QVM06 加数字签名
QVM12杀壳
QVM13杀壳
QVM27杀输入表
QVM19 加aspack
QVM20就加大体积/加aspack压缩

金山毒霸

金山走的是云安全,云防护,云鉴定这些云安全路线,所以,断了网后金山就是个废

江民

主要是对特征码和资源进行定位查杀

瑞星

主要是主动防御查杀

卡巴斯基

非常变态的一款杀软,误报低,查杀率高,特征码+输入表变态查杀+静动态启发式+强力的虚拟机脱壳技术。人类已经无法阻止卡巴斯基的输入表查杀了,在反汇编下,你无论对输入表怎么重建,移位都不行,需要进行手动异或加密。

小红伞,木伞

小红伞的特征码定位抗干扰技术和启发式比较好

火绒

主要是主动防御这块,静态查杀也比较严格,不过很好做免杀

Windows Defender

静态查杀能力较强,动态查杀较强,监控 HTTP 流量

杀软的查杀方式

特征码

特征码是什么?特征码就是病毒分析师从病毒中提取的不大众化的不大于64字节的特征串。通过判断是否有这个特征字符串从而确定是否为病毒。通常为了减少误报,一个病毒会取数个特征码。举个例子,一款很出名的木马,它的名字就能被当作特征码。

静态启发式

静态启发式即对整个软件进行分析,杀软会指定一系列的规则,然后对软件进行扫描,当扫描出匹配这些规则的字符串等等之类时,杀软会将软件标记成怀疑对象,匹配到的规则越多,软件的可疑程度越高,到一定程度,就成了恶意软件了

动态启发式

动态启发式又叫虚拟机查杀技术,会模拟出一个近似于windows的系统,杀软将软件放入这个虚拟机运行,监测它的行为,如果操作越可疑,就越容易被定为病毒

HIPS

HIPS可以说是主动防御,何为主动防御,一个病毒或木马如果通过了表面查杀,那么主动防御就是最后一道防线,HIPS主要是对一个软件运行时的操作进行检测,如果发现软件有注册表操作,加载驱动这些一般程序不应操作的操作时,那么他就会以他R0级的优势,拦截掉并将程序暂停运行,也就是挂起,询问用户是否进行该操作。

云查杀

杀软那里有一套规则,如果一个软件触犯了这些规则,则杀软会上报至云服务器,到了云服务器后,则会对上报文件进行鉴定,可能会是人工鉴定,这样的效果比杀软查杀效果要好得多。那么如果分析出这个程序是病毒,那么就会将这个程序的MD5发生至云中心,用户在联网状态下杀毒的话,就与云中心核对MD5,如果对上了,无条件认定为病毒。相当于安装了杀软的所有用户给云上提供素材,一旦素材在一台电脑上被认定为病毒,则所有安装了该杀软的用户都会查杀这个素材

免杀中的术语

API

泛指Windows的API函数,Windows编程中的内容。Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数,对Windows系统中的东西进行操作都会用到API,比如我移动个鼠标,点击个键盘都会有相对于的API函数

花指令

一段无意义的代码,用来迷惑杀软或则其它的反汇编工具,例如在汇编里:add eax, 1; sub eax, 1

就这种添加了代码,但对整体并无影响的代码就是花指令,当然我这里只是简单的示范,真正的花指令没有这么简单

输入表(导入表)

输入表就相当于EXE文件与DLL文件沟通的钥匙,形象的可以比喻成两个城市之间交流的高速公路,所有的导入函数信息都会写入输入表中,在PE 文件映射到内存后,Windows 将相应的DLL文件装入,EXE 文件通过"输入表"找到相应的DLL 中的导入函数,从而完成程序的正常运行,这一动态连接的过程都是由"输入表"参与的。

区段

PE结构中的区段,.data .text等等,保存代码,数据等等

加壳

加壳分为加压缩壳和保护壳〔加密壳〕压缩壳是目的是使程序变小,但没有防止被反破解的作用。保护壳恰恰相反,保护壳的目的是使程序尽量防止被反汇编,但好的保护壳会给程序植入大量垃圾代码,以干扰破解版者,所以程序会变大。

反启发

即加入对杀软的启发式干扰的代码

隐藏输入表

通过自定义API的方式隐藏导入表中的恶意API

混淆

这是一种将代码转换为难以理解的形式的技术,使得分析者难以从字节码中理解程序的逻辑。混淆可以应用于源代码、编译后的代码或二进制文件

代码注入

将恶意代码注入到合法程序中,使得恶意代码在合法程序的执行过程中被执行,从而避开杀毒软件的检测。

内存执行

恶意代码不在磁盘上留下痕迹,而是直接在内存中执行,这样可以减少被杀毒软件扫描到的机会

文件加密

将恶意文件加密存储,只有在执行时才解密,这样可以避免杀毒软件通过文件内容进行检测。

多态

生成多个变种的恶意代码,每种变种都有不同的特征,使得杀毒软件难以通过单一的特征码来识别。

行为混淆

通过改变程序的行为模式,使得恶意行为看起来像是正常行为,从而避开基于行为分析的检测

0day

利用操作系统或应用程序的0day漏洞来执行恶意代码,杀毒软件无法检测到

签名

使用合法的数字证书签名恶意软件,以欺骗用户和杀毒软件,使其看起来像是可信的软件

沙箱逃逸

沙箱是一种检测恶意软件的环境,它模拟了一个安全的执行环境。沙箱逃逸技术是指恶意软件能够检测到自己是否在沙箱中运行,并在检测到沙箱时改变行为,以避免被检测。

利用系统服务

通过操作系统服务来执行恶意行为,因为系统服务通常具有较高的权限,可以绕过一些安全措施

利用云服务

将恶意代码或数据存储在云服务上,通过云服务来分发或执行恶意行为,这样可以分散风险并增加检测难度

杀软报毒命名规则

杀毒软件的报毒基本遵循一套原则,就是CARO原则,由反病毒专家联盟 CARO提出,遵循以下格式:

<威胁类型>.<平台>.<恶意软件系列>.<变体>.<其他信息*>

卡巴斯基在此基础上添加了前缀:

[前缀:]<威胁类型/行为>.<平台>.<恶意软件家族><.变体><其他信息>

前缀

该前缀标识检测到该对象的子系统。

前缀HEUR:用于表示启发式分析器检测到的对象;

前缀PDM:用于表示主动防御模块检测到的对象。

前缀不是全名的必需部分,并且可能不存在。

行为

威胁类型/行为代表主要威胁类别,描述威胁的主要行为是什么

  1. 对于恶意软件:Trojan(木马)、Worm(蠕虫)、Virus(病毒)、Ransomware(勒索软件)、Coinminer(挖矿) 和Backdoor(后门)是我们最常见的威胁类型。
  2. 对于灰色软件:Adware广告软件、Spyware间谍软件和 PUA 是最常见的威胁类型。


平台

通常指win32,x64,linux,mac os

家族

用于表示一组具有相同来源(作者、源代码)、操作原理或有效负载的检测到的对象。每个家族都是根据其表现的行为来命名的。常见的就是:Generic、Infector、AntiAV、KillFiles等。

变体

为了识别一个家族中不同恶意软件的变体,字母按顺序使用并称为变体,从".a"开始:".a"-".z"、".aa"-".zz"等

报毒案例

HEUR:Worm.[Platform].Generic
此分类涵盖的对象在远程计算机上运行搜索,并尝试将自身复制到读/写可访问目录、使用操作系统功能搜索可访问网络目录和/或对计算机进行随机搜索。
[Platform] 字段可以是"Script"或"Win32"。


HEUR:Virus.[Platform].Generic
此分类涵盖的对象会在受害计算机的本地资源上创建自身的副本。
[Platform] 字段可以是"Script"或"Win32"。


HEUR:Email-Worm.[Platform].Generic
此分类涵盖的对象尝试以电子邮件附件的形式发送自身的副本,或者作为位于网络资源上的自身文件的链接。
[Platform] 字段可以是"Script"或"Win32"。


HEUR:Virus.[Platform].Infector
此分类涵盖的对象在计算机中搜索文件并将一系列信息写入这些文件。例如,这样的对象可以将其主体写入可执行文件或写入包含指向具有 .html、.php、.asp 和其他扩展名的文件的链接的 HTML 代码。
[Platform] 字段可以是"Script"或"Win32"。


PDM:Worm.Win32.Generic
此分类涵盖的对象搜索远程计算机网络并尝试将自身复制到读/写可访问目录、使用操作系统功能搜索可访问网络目录和/或对计算机进行随机搜索。