Does Every Second Count? Time-based Evolution of Malware Behavior in Sandboxes

样本执行的时间是恶意样本分析沙箱的一个重要参数。时间太长会导致无法分析大量样本,太少会导致样本无法显现恶意行为。所以需要有一个合理的时间设置。

虽然这个参数很重要,但是没有明确的手册说明这个参数该如何选。为了填充这个空白,本篇论文提供了关于执行时间对恶意软件生成事件的数量和质量的第一个大规模学习,测试了系统调用和代码覆盖率随运行时间的演变,画出了一个在沙箱中观测到的精确图像。最后提出了一个基于机器学习的恶意软件分析器,应用到不同时间窗口收集到的数据,得到了不同时间点收集到的事件的关系。

结果表明,大多数样本运行两分钟以下或10分钟以上,然而大多数行为在前两分钟观测到了,也是ML分类器最精确的时间。

Motivation

沙箱在恶意软件分析中扮演重要的角色,对于沙箱的研究也已经成熟。但是如何设置各个参数以发挥沙箱的最大效力是几乎不可知的,即使是最简单的参数:执行时间也是如此。近年来由于恶意样本数量持续攀升,分析时间也在持续减少,但是没有关于这种减少时间对于分析效果的影响的研究。

虽然看上去是一种权衡问题,但是实际上问题更加复杂

  1. 恶意软件的行为随时间分布情况如何,是第一秒就可以观测到恶意行为,还是需要一段时间观测恶意行为

  2. 对于一个特定的目标,一组行为是有多重要

结果导致沙箱会需要一个更长的时间窗口,来获得更多覆盖率,从而有更好的分类效果。遗憾的是,这两个因素都没有相关研究,研究人员都是凭经验或直觉设置时间。

Experment Design

使用一个基于PANDA的用户设计的记录-重放平台,收集了100K个样本的细粒度信息,并使用这些信息分析出时间如何影响行为的大小以及收集到的数据之间的关系。

  • 通过系统调用评估运行行为

实现了一个最先进的基于ML的恶意软件分类器并且测试不同时间窗口获得数据的关系以及数据的独特性,这个实验告诉我们,只观察前几分钟或3-5分钟的行为更容易判断一个软件是否恶意。最后发现,对于ML分类器,前两分钟的行为最具有代表性,不仅仅是事件注册的数量,还有对于ML分类器来说的数据质量。

结果

  • 大多数样本要么执行少于两分钟,要么执行多于10分钟

  • 前两分钟系统调用数量会随时间线性增长,代码也会更快的遍历

  • 对于驻留函数(e.g. sleep)的测试发现它仅仅显著影响小部分样本(3%)

  • 绝对代码覆盖率和家族有关,从10%~40%不等