看的论文:Abou-Assaleh T , Cercone N , Keselj V , et al. N-gram-based detection of new malicious code[C].Proceedings of the 28th Annual International Computer Software and Applications Conference, 2004. COMPSAC 2004. IEEE, 2004.
摘要
先前的恶意检测软件只能检测已出现或已造成伤害的病毒,受到基于标准签名的恶意病毒技术和成功的文本分类的驱动,由此作者提出一个自动检测新恶意代码的方法:用已经收集到的恶意代码和良好代码的数据集检测新的恶意代码。通过实验在训练集中的准确度为100%,在三倍交叉验证中准确度为98%。
介绍
恶意代码的子串,签名常用于恶意代码的检测,所以自然选用子串集作为一个自动检测系统的输入。而N-grams所有文件的子串长度都是n。使用n-grams的方法之前就有人提出,但是找不到太多的报道结果。n-gram分析成功应用于语言建模, 语音识别和文本分类(字符n-gram)。用于文本分类的通用N-Gram分析(CNG)方法最近已成功地用于自动作者身份归属,文本聚类等。由于n-gram重叠(n-grams overlap),因此它们不仅捕获有关长度子串的统计信息,而且还隐式捕获较长子串的频率。NLP中指出了这一点,尽管tri-grams似乎太短而无法捕获任何重要信息,但它们经常表现良好。随着越来越多的恶意代码编写者使用工具来编写和编译其代码,n-gram可以检测特定于某些工具或工具家族(包括代码生成器,编译器和编程环境)的代码功能。此外,n-gram可以捕获特定的作者的特征,编码样式甚至行为特征。 由于捕获的特征隐含在提取的n-gram中,因此即使病毒编写者可以完全访问检测算法,病毒编写者也很难刻意编写使n-gram分析蒙蔽的病毒。
检测恶意代码的CNG 分类方法
从训练日期开始收集n-grams集,L个最常见的n-grams及其归一化的频率表示一个类别的配置文件(总共由两个配置文件)。
配置文件参数:
-
n: n-gram中n的取值
-
L :配置文件的长度
通过以相同的方式构建其概要文件并使用k = 1的kNN算法对新实例进行分类。
-
s : 来自于恶意代码配置文件或者良好代码配置文件的中的任意一个n-grams序列。
-
fi(s): 在两个配置文件中n-gram序列 s 的频率。
频率之差除去频率和的一半是为了平衡低频和高频的权重。
小注:
K倍交叉验证(K>=2)。将样本数据集随机划分为K个子集(一般是均分),将一个子集数据作为测试集,其余的K-1组子集作为训练集;将K个子集轮流作为测试集,重复上述过程,这样得到了K个分类器或模型,并利用测试集得到了K个分类器或模型的分类准确率。用K个分类准确率的平均值作为分类器或模型的性能指标。