图2:迭代行为映射流程图
该程序的表达形式采用了算法1。在每一次迭代中,从剩余的样本库中随机抽取一个样本作为下一个参考样本。接下来我们用每一个样本和选择出的参考样本做出映射。之后,把这些映射按照层次聚类后的结果组织排序。样本的顺序与由层次聚类法产生出的树形结构的叶子结点的顺序相同。为了对映射进行排序(步骤3),我们首先要生成一个所有映射的两两距离矩阵,为此,我们使用一个称为共享字符串度量(SSM)的度量标准定义每对样本之间的映射,如下所示:
SSM[A, B] =1-2*AND Similarity (A, B)/ (L (A) +L (B)) (1)
其中L(A),L(B)是A、B分别与参考样本的所有共享字符串的长度的和。
AND Similarity(A,B)= 由A和B与相关样本共同享有的所有字符串长度的和。
这个测量标准捕获出两个映射和针对一个参考域的参考样本相似之处。它在相应的投影矢量上进行了与运算,每个矢量的基准长度都与参考样本相同。接下来,使用凝聚层次聚类法(HAC)对SSM距离矩阵进行聚类。我们使用聚合算法与病房联动法。凝聚算法开始用每n个样本作为一个单独的聚类,并在n-1次步骤中迭代合并两个最近的聚类,以产生一个单一的层次聚类。联动病房方法优于其它的联动方法,是因为它在我们研究实验中对输入的距离矩阵,获取了更高的同表象相关。
算法1 迭代行为映射
输入:
S:样本
Ts:样本覆盖率阈值
定义:
P:剩余的样本库
R:参考样本列表
clji:第i次迭代中的第j个聚类
Pri:i次迭代样本映射的集合
Coi:i次迭代中样本的覆盖率
Coki:i次迭代中样本k的覆盖率
Cci:迭代到第i次的样本累计覆盖率
Ccki:样本k在i迭代中覆盖率
ri :在i次迭代的参考样本
si:i次恶意软件样本
pki : i次迭代中k个样本映射
初始化:
在步骤4中,步骤3中产生的聚类被划分为不同的聚类中。这些聚类的映射基本上代表了相应样本的软聚类。把这些映射区分为不同的聚类(步骤4),我们使用动态混合树切割法[13]把最小的聚类大小设置为1。在把一个聚类分析结果区分为不同聚类时,动态混合树切割法比固定高度切割法更有优势,因为它是结合了树结构信息的区分方法。区分后,每个聚类的样本都具有相当于参考样本的覆盖范围,并显示出重新排序后的行为映射。但是不能保证样本覆盖范围的一致性(例如:映射之间看起来相似,但是样本自身却没有相似性)。在最后的步骤中,我们评估每一个样本的覆盖范围和剔除从再次迭代中得到的覆盖范围高的样本。基于算法1中阀值TS的设定,我们删除所有覆盖范围在阀值以上的样本。这个步骤为下的次迭代计算减少了样本数量。
3. 评价
我们评估我们的方法使用来自现实世界中7个家族的1727个样本的数据集,表1显示了根据卡巴斯基AV家族标签的样本集中样本分布。我们在3.1节中提出了两列行为映射使用一个家族变异分别对多个家族进行分析。在第3.2节中提出了迭代映射评价的方案。
表1:卡巴斯基家族恶意软件分布
3.1 行为映射的使用案例
家族内部映射:在这个实验中,我们使用行为映射来说明一个家族中变种的属性。由于所有样本同属于一个家族,因此我们称之为家族内部映射。图3显示了Jorik木马家族(由Kaspersky AV 定义)92个样本的行为映射。我们随机选择了jorik木马家族中的Trojan.win32.jorik.spyeyes.pq作为参考。相邻列的映射代表样本覆盖率。这些映射根据它们的相似性被聚类成7类。
从标签(Y轴)中,我们可以得知行为映射所显示的聚类样本与卡巴斯基AV标签是一致的(即属于同一变种的样本聚类在一起)。我们也观察到这些共享行为的长度不随样本特性而改变,并且可能由共用组件组成。从图中,我们可以观察到一部分组件并不仅仅属于某些变种。在图3中可以看出,标记为C1的组件发生于大部分样本中,只有Fraud变种以及标记为C2 的组件不存在于Gbot变种中。从显示样本覆盖率的柱表中,我们可以观察到具有最大覆盖率的样本与参考样本是属于同一变种(SpyEyes). 从其他低覆盖率的样本中我们可以推断,其表现出不与SpyEyes变种共享的行为。
家族内部映射的综合参考样本:在这个实验中,我们生成一组由337个样本组成的行为映射,这些样本由七个具有代表性的家族构成。我们利用此映射图中的综合参考样本来分析样本中的家族关系。综合参考样本是构建在监督形式上并通过随机从样本集映射的6个家族中选择样本。图4给出了已生成的行为映射。
图3:Jorik家族变种的行为映射
如图4所示,一些样本被高度覆盖于共同点中。高样本覆盖率和高共性密度表明样本和参考样本是高度相似的(例如聚类4)。对于高覆盖率样本,其共性本身是短暂且分散的,则可以预测这些样本没有实行真正的恶意组件,而只是表露出典型(正常)的系统活动(例如DLL加载),而从聚类的角度来看,我们把这些活动看作噪音(如聚类11和12)。低样本覆盖率表明这些样本与参考样本间并不存在太多共享行为且应被映射到另一个样本中(例如聚类6)。
如图4所示,该图为样本间的共性分析提供了显著的视觉信息和结构信息。而从主观上看,从样本集中的每个映射的结果是根据选定的参考样本测得的;从分析法的角度来看,通过不同参考样本生产多个映射或综合参考样本技术的运用将提升一个专家的价值。在图4中,垂直线分开6个个体行为序列。从这个角度可以看到聚类7中的所有样本与其它来自不同家族的各种样本间存在共性。同时,聚类1中的所有样本与参考样本II之间几乎共享了所有观察到的行为,这也就意味着他们是属于一个单一的且高度一致的家族。
图4:综合参考样本的聚类的共性映射
3.2 共性分析(迭代聚类)
在这一部分,我们采用本文提出的迭代映射方法(算法1)对恶意软件的1727个样本集进行共性分析。在实验中,我们设置阀值的范围为90%,这表明计算程序必须处理不少于90%的样本行为。虽然,阀值的覆盖率很高,但是采用这种算法只用了38次迭代和识别了303次共性聚类(软聚类)。
在图5中,我们总结了一个样本子集中整个迭代过程的结果(但受限于可视化空间)。X轴表示了整个迭代递增的顺序级联的所有共性。Y轴显示了337个按迭代的数量排序且用于寻获行为的样本,即实现覆盖的阈值。垂直分区表示迭代结束标记。从图中可以看出,较早的迭代揭示更多的共性,但共性的数量在随后的迭代会减少。由于较高的样本数,共性也发生在早期迭代中的较大群体里。实质上,这张图大致地归纳了整个迭代的过程,同时也揭示了存在共性及覆盖在一起的样本组数。
图5:所有迭代的共性
图6给出了一张热图,该图描绘了存在于1727套恶意软件样本中的各种恶意软件家族样本间的共性共享(聚类组成)。热图中的列表示了整个迭代的共性。行则按照家族的标签对各个相关的样本组进行划分。灰色地域则代表恶意软件家族共享的纯度。、颜色为黑色的单元格表示组件完全不存在于相应的家族中。另一方面,白色则表示组件是家族独有的。中间的灰色色调表示家族组件共享的不同比例。同时,同样的信息则通过横向线进行表示。
通过观察,我们可以得知一些共性为特定的家族独有,而其它共性则是所有家族共享的。这表示了不同家族的组件共享性。例如,从图中可以看出,来自Trojan.win32.Refroso及Trojan.win32.Buzus的家族样本可能分享了某些组件(表现为共性)。同时,来自Tro-jan.win32.Refroso及Trojan-Spy-win32.Zbot的家族样本则可能分享了其他组件。
图6:家族内部的共性共享
在图7中,我们提出了基于图表的聚类分析结果可视化方法。从共性的角度来看,图中显示了样本之间的结构关系。该图显示了两种类型的节点:(1)样本 (2)整个迭代参考样本图。 其中,样本节点根据卡巴斯基杀毒标签标注颜色。参考样本被绘制成红色。在语义上,图表显示了涉及共享行为(组件)的聚类成员与成员间的接近度。而组合在一起的样本被连接到共性共享的参考样本上。在图中,参考样本间的距离与2.2节中的SSM相似性成正比例。样本与相应参考样本间的间距与它们的覆盖度成正比例(高样本覆盖率表示低距离)。
为清楚起见,出于最重要组件的考虑,我们尽量减少图7中的链接数量。可以看出,一些样本与参考样本保持同一距离,且均匀着色。这些样本是彼此相似的,同时属于同一卡巴斯基家族。另一方面,其他聚类有来自不同家族的样本,这也显示了家族间的共享属性行为。同时,这些聚类有着与各自参考样本保持不同距离的样本,这就意味着他们彼此间存在不同程度的共性。
图7:基于图形的聚类可视化
最后我们通过评估行为映射的硬聚类性能来总结我们的研究结果。在对比几种对软聚类提供总覆盖率的映射,我们仅通过运用一个能够提供足够样本覆盖率的映射来建立硬聚类。为此,不包括在任何迭代最小覆盖范围内的样本保持未赋值状态且继续为下一次迭代保留在样本库内。我们观察到,在任何单一的迭代中依然存在许多末能覆盖超出阈值且因此末能分配给任何硬聚类的样本,但是,通过软聚类方法,同样的样本几乎完全被覆盖且被分配到多个组中。这说明了样本聚类的一对一(成对)比较。尽管这里存在组件共享,但共享行为并不能通过两两比较而获得。实验表明,样本的行为序列确实是由不同行为的子序列(共性)构成,此子序列与其他样本共享。所有的这些共性不能通过任何单一的成对比较共同提取得到。最后,迭代行为映射方案避免了用于提取所有样本间O(N2)的共性的比较。本文利用了38个映射迭代来揭示共性,组合了1727个恶意软件样本, 并且对绝大多数在前10次迭代中的样本进行了聚类分析。
4. 相关研究
人们对动态恶意软件分析技术发展进行了广泛的研究。Rgele等[3]提供了对各种现存的动态恶意软件分析系统的具体性研究以及对这些系统的分析输入和能力的比较。Jacob等[7]展现了根据它们利用推理技术进行动态检查方法的分类系统。然而动态恶意软件分析考虑到要提取样本的行为,我们的工作就是要去实践这些行为。集中在行为范围内的恶意软件出现在各种出版物中[8]、[2]、 [15]、 [1] 和 [14]。大多被推荐的方法利用标准聚类算法并专注于相当特征空间和距离度量的选择。究其本质,这样的聚类方法有局限性,被称作“占优”等。因此聚类法不会揭示出更小的对象而是同等重要的恶意成分。Bayer[2]、 Rieck[15]和Jang[8]等都是通过处理执行报告的行为程序来运行的,并生成特征集。这些工作专注于通过混合合适的近似值进行可升级聚类。BitShred[8]通过执行特征散列法和共簇法去展示家族间的语义关系。他们的方法需要预选特征提取并执行矢量数据。并且,因为共簇不能被利用在规则的序列数据里做语义分析。我们的系统特性就是命令敏感并保存,考虑到直接分析行为数据,例如运行动态长度数列。
Rieck[15]和Trinius[17]等从CWSandbox报告中提取恶意软件样本。它们从这些报告中生成基于n-gram的特征矢量并聚类到nd组(分类发现)和分类指南(使用SVM)去分配不为人知的恶意软件使其被认识。因为我们的系统不是基于n程序特征空间,不考虑字母大小,它可以在任意数列数据中进行升级。Trinus[17]等使CWSandbox以重测图和线形图的形式形成图像报告,他们对恶意软件进行样本聚类产生树状图并对AV标签进行评估。Wagener[19]和Bailey[1]等处理了基于使用正常压缩距离量度(NCD)的行为分析的恶意软件分类指南的自动化的问题。Ye[20]等提出了利用散开的恶意软件的数据特征来生成统一倍数组的一致办法。
5. 结论
恶意软件分类技术并不新鲜,包括AV软件的供应商在内的很多机构或个人都在进行把恶意软件样本归类到已经被识别了的恶意软件家族之中的研究工作。我们关注的是面向恶意软件组件的问题。我们使用我们软聚类的方法去揭示被传统分类方法定义出的属于不同家族的恶意软件样本组件的共性。我们的实验表明,现有的对恶意软件分组的方法主要基于恶意软件的主要功能和固定的分类树,这种方法被应用于AV产业之中,但是它不能揭示出恶意软件共享行为的关系。我们介绍了行为映射途径,这种途径可以迭代地建立一系列特性从而形成代表组件特性的软聚类方法。此外,我们使用一组样本的可视化方法来描述AV家族结构共性分布。最后,我们采用1727个恶意软件样本进行真实操作,实验显示出我们的组件分析方案的可扩展性和计算效率。
致谢
这项工作是DARPA Cybergenome项目的一部分,项目编号:FA8750-10-C-169,这些都是作者的观点,与官方政策、国防部的立场、美国政府无关。
参考文献
1. Michael Bailey, Jon Oberheide, Jon Andersen,Z Morley Mao, Farnam Jahanian, and Jose Nazario. Automated Classification and Analysis of Internet Malware.2007.
2. Ulrich Bayer, Paolo Milani Comparetti,Clemens Hlauschek, Christopher Kruegel, and Engin Kirda. Scalable , Behavior-Based Malware Clustering. NDSS, 2009.
3. Manuel Egele, Theodoor Scholte, EnginKirda, and Christopher Kruegel. A survey onautomated dynamic malware-analysis techniques and tools. ACM Comput.Surv.,44(2):6:1-6:42, March 2008.
4. Nicolas Falliere, Liam O Murchu, and EricChien. W32.stuxnet dossier.www.symantec.com White paper 2011. 5. Dan Gusfield. Algorithms on Strings, Trees, and Sequences - Computer Science andComputational Biology. Cambridge University Press, 1997.
6. IOActive. Reversal and Analysis of Zeus and SpyEye Banking Trojans. Technicalreport, IOActive, 2012.
7. Gregoire Jacob, Herve Debar, and EricFiliol. Behavioral detection of malware: froma survey towards an established taxonomy. Journal in ComputerVirology,4:251-266, 2008. 10.1007/s11416-008-0086-0.
8. J. Jang, D. Brumley, and S. Venkataraman. Bitshred: feature hashing malware for scalabletriage and semantic analysis. In Proceedings of the 18th ACM conference onComputer and communications security, pages 309-320. ACM, 2011.
12. I. Kirillov, D. Beck, P. Chase, and R.Martin. Malware attribute enumeration andcharacterization.
13. Peter Langfelder, Bin Zhang, and SteveHorvath. Defining clusters from ahierarchical cluster tree: the dynamic tree cut package for r. Bioinformatics, 24(5):719-720,2008.
14. Peng Li, Limin Liu, Debin Gao, and MichaelK Reiter. On Challenges in Evaluating MalwareClustering. In Sciences-New York. Springer-Verlag, 2010.
15. K. Rieck, P. Trinius, C. Willems, and T.Holz. Automatic analysis of malware behaviorusing machine learning. Journal of Computer Security, 19(4):639-668,2011.
16. RSA. The Current Stateof Cybercrime and What to Expect in 2012. Technical report, RSA,2012.
17. Philipp Trinius, Thorsten Holz, Jan Gobel,and Felix C. Freiling. Visual analysis ofmalware behavior using treemaps and thread graphs. 2009 6th International Workshopon Visualization for Cyber Security, pages 33{38, 2009.
18. Esko Ukkonen. Constructing suffix trees on-line in linear time. In IFIP Congress(1),pages 484-492, 1992.
19. Gerard Wagener, Radu State, and AlexandreDulaunoy. Malware behaviour analysis.Journal in Computer Virology, 4(4):279{287, December 2007.
20.Yanfang Ye, Tao Li, Yong Chen, and Qingshan Jiang. Automatic malware cate-gorization using cluster ensemble. In Proceedingsof the 16th ACM SIGKDD in ternational conference on Knowledge discovery anddata mining, KDD '10, pages95-104,New York, NY, USA, 2010. ACM.