摘要
该文研究了恶意软件的规避行为。论文收集了92种恶意软件用来检测和以及阻止检测的规避技术,并做了系统化,提供了一种根据这些技术的语义和特征进行分类的分类方法。实现了一个对x86二进制文件进行逃避分析的框架,分析了2010年至2019年期间的45,375个恶意软件样本,并采取将这种分析与合法的主流windoiws程序进行比较的方法,来研究规避行为的内在特征。还研究了恶意软件家族与所采用的规避技术之间的相关性。并且论文确定了特定于恶意代码的技术,而不是恶意代码与合法软件都会使用的技术。
论文实验结果体现了规避技术的使用以及随着时间的演变,发现规避行为十年间,在数量上仅仅增加了12%,但是在技术上已经有显著的提高。最后论文研究了如何应对新型规避技术的部署。
规避技术分类法
该文根据在操作系统上执行的动作的语义来进行分类。基于先前提出的系统化,该文还开发了由16个语义等价组组成的分类法。有内存指纹、异常处理、CPU指纹、表描述符、陷阱、时间、暂缓、人类交互、注册表、系统环境、WMI、进程环境、文件系统、枚举进程、枚举服务、枚举驱动。 通过静态分析每个二进制程序,计算了实现92个规避技术所需的基本块、指令和函数调用的数量。
分析框架
可以实现四个级别的检测:指令(监控每个执行指令)、API hook(hook一些感兴趣的Windows API)、系统调用(hook感兴趣的系统调用)、内存访问(监视对特定内存区域的访问)。系统会在逃避前后进行hook,这两个hook都会采用日志记录规避行为。
系统根据级别分为了四个模块,并且还增加了一个库追踪器模块,用来记录规避技术和相关库的调用堆栈。
规避行为分析
该部分根据五个问题展开
1.恶意软件最常见的规避技术是什么?
时间和暂缓技术是使用最多的,搜索特定的驱动程序很少被用到,并且实验数据并未观察到对WMI的使用。恶意软件家族也会寻找关键字,其中“vbox”、“sandbox”和“虚拟virtualbox”是最常用的关键字。
2.恶意软件家族和采用的规避行为技术之间有什么联系吗?
事实上,恶意软件样本通常是由工具构建的。恶意软件的作者通常开发可以很容易地用来生成新的样本的工具。该文建立了一个随机森林分类器;分类器的输入是一个布尔变量数组,表示样本中每种技术的使用情况;分类器的输出是族标签。我们为123个家族(所有至少有50个样本的家族)建立了123个分类器。每个分类器的输出采用分层抽样进行3倍交叉验证训练。对于每个分类器,计算了f1-score,这是一个评估分类器性能的指标,并考虑了所有的混淆矩阵。
3.在过去的10年里,每个家庭和每个类别所采用的规避技术的数量是否发生了变化?
该部分研究了每种技术的使用周期,规避技术的使用量,单个样本所使用的规避技术的最大数量,恶意样本规避的四大目标占比。
4.采用恶意软件规避技术如何影响安全社区,反之亦然?
如果该技术已经被广泛采用/已知,在报告发布后,我们注意到在随后的几年中它们的使用有轻微和暂时的下降。相反,如果该技术几乎很少被使用或者被知道,在报告发布后的接下来的几年里,它的采用迅速增加。一旦一种技术被广泛使用,相关报告的数量就会显著增加。
5.合法的软件是否也采用了规避技术?
合法的程序也会采用规避技术,但是并不是很常见。特别是,只有少数技术被普遍采用,这表明这种技术并不主要用于真正的规避目的。
基于良性软件分析,对每个技术进行了分类:
被恶意软件使用的规避技术。这是在良性软件样本中从未观察到的逃避行为,或者手动验证了它在良性软件样本中被用作一种逃避机制。
被用于良性软件的规避技术。这是在超过1%的良性软件样本中观察到的规避行为,或者手动验证没有被用作逃避行为。