专利名称:基于文件指令频度的计算机恶意程序分类系统及分类方法
技术领域:
本发明涉及计算机反恶意程序类软件领域,尤其涉及一种基于文 件指令频度的计算机恶意程序分类系统及其方法。
背景技术:
目前,计算机反恶意程序软件对恶意程序处理的基本原理是从
互联网及客户端收集的海量样本中,鉴别出所有的恶意程序,并将鉴
别出来的恶意程序,按照恶意程序的特点进行分类(即分成不同的恶
意程序家族);然后对同家族的恶意程序,分析并提取其"通杀"特
征;剩余无法提取"通杀"特征的样本提取"自动"特征,生成相应
的恶意程序特征库。根据所生成的恶意程序特征库,计算机反恶意程
序软件扫描客户端计算机中的文件,并判断每个文件是否与特征库中
的恶意程序特征相匹配,如果匹配则为恶意程序。这里,"同家族恶
意程序"指传播途径、功能、内容或行为相同或相近的恶意程序集合;
"通杀"特征指能够匹配同家族所有恶意程序的特征;"自动"特征
指匹配单一恶意程序的二进制特征。通常, 一个"通杀"特征能查杀
的恶意程序要远高于一个"自动"特征所能匹配的恶意程序。
随着计算机技术的发展和软件的多样性,恶意代码的数量急剧增 长,恶意代码的种类也呈现多样化发展的态势。但是,这些新出现的 恶意代码并不是完全没有共性有部分恶意程序是在原有代码基础上 修改生成的,病毒作者根据原有恶意程序的源代码,为了绕过反恶意程序软件的查杀(即"免杀"),在其基础上做出了一定的修改;而 且这些新生成的恶意程序之间也是具有共性的。如果能将恶意程序快 速、准确地进行分类(分家族),将极大地提高计算机反恶意程序软 件处理这些新恶意程序的效率,从而縮短对新恶意程序的处理时间, 同时有利于提高每个特征的查杀能力,从而縮小恶意特征库的大小。 对于计算机反恶意程序软件厂商收集到的大量恶意程序样本,不
同的反恶意程序软件给出的分类结果各不相同,命名规则也没有统一
的标准,即使名称相同也不一定是同一个家族的样本,因此分类效果
不尽人意。而依靠人工对收集到的海量恶意程序样本逐一归类,已不
可能。近年来,数据挖掘技术的不断发展在一定程度上解决了人们处
理海量数据的难题。数据挖掘是从大量的、不完全的、有噪声的、模
糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是
潜在有用的信息和知识的过程。而聚类算法是数据挖掘领域研究最广
泛的问题之一。聚类分析是把数据按照相似性归纳成若干类别,同一
类中的数据彼此相似,而不同类中的数据相异。把数据挖掘技术中的
聚类算法应用于计算机反恶意程序类软件中,可以自动地把具有共性
的同家族恶意程序分成一类,同时把差异较大的恶意程序区分开来。
发明内容
本发明克服了现有技术中的不足,本发明提出了 一种基于文件指
令频度的计算机恶意程序分类系统。
本发明的第二目的是提供一种使用上述系统对计算机恶意程序 分类的方法。
为了实现上述第一目的,本发明采用如下技术方案 一种基于文件指令频度的计算机恶意程序分类系统,包括指令频度特征提取模块,其首先解析恶意程序代码的所有指令,
并通过计算每个指令在恶意程序样本中所出现的频率TF与逆向样本 频率IDF,对恶意程序样本集中出现的指令进行加权,从而构造指令 频度向量来表征恶意程序样本,并存储于恶意程序特征库中;
恶意程序特征库,其用于存储以指令频度向量来表征的所有恶意 程序样本;
样本差异度度量模块,其采用Cosine余弦度量方法,通过计算 两个样本指令频度向量之间夹角来衡量样本之间的差异度;
恶意程序样本家族划分模块,其将恶意程序特征库中所有N个 恶意程序样本从分成N个家族开始,逐次分成N-l个家族、N-2个家 族,依次类推,直至最后将所有N个恶意程序样本分成一个家族或 者直到分成预先设定好的家族数;
聚类质量评估模块,其对恶意程序样本家族划分模块每层分家族 的结果采用FS指标值进行有效性度量,并选择最小的FS指标值, 将其对应的划分结果作为最终结果。
为了实现上述第二目的,本发明采用如下技术方案
使用上述基于文件指令频度的计算机恶意程序分类系统进行分 类的方法,包括如下过程
第一、恶意程序特征库生成
指令频度特征提取模块首先解析恶意程序代码的所有指令,并统 计每个指令在恶意程序样本中所出现的频度,采用指令在恶意程序样 本中出现的频率TF与逆向样本频率IDF对恶意程序样本集中出现的 指令进行加权,从而构造指令频度向量来表征恶意程序样本,并存储 于恶意程序特征库中;
第二、距离矩阵的计算
然后采用公式(4)的Cosine距离度量方法计算每两个样本特征 的距离,构造一个距离矩阵D,其中,两个样本《和~的Cosine距离定义如下:
其中,分子表示两个样本特征向量的内积,分母表示两个样本特 征向量长度的乘积。
第三、恶意程序样本逐层分家族并确定分家族结果
恶意程序样本家族划分模块将恶意程序特征库中所有N个恶意 程序样本从分成N个家族开始,逐次分成N-1个家族、N-2个家族, 依次类推,直至最后将所有N个恶意程序样本分成一个家族或者直 到分成预先设定好的家族数;聚类质量评估模块对每层分家族的结果 采用FS指标值进行有效性度量;选择所有FS指标值中最小值,该 最小FS指标值所对应的分家族结果即为最后的分家族结果。
本发明提出了一种基于文件指令频度的计算机恶意程序分类系 统及其方法,其基本原理主要包括(1)以文件"指令频度"作为 恶意程序样本的特征表征。由于同家族恶意程序样本的指令集合具有 较高的相似性,本发明首先解析恶意程序代码的所有指令,并统计每 个指令在恶意程序样本中所出现的频度,然后采用信息论中相对熵 (TF-IDF)的方法对不同的指令进行加权,最终得到一个加权的指令 频度向量作为恶意程序样本的特征;(2)基于文件指令频度特征对 恶意程序样本进行分类本发明中采用cosine距离度量方法来计算恶 意程序样本间的差异程度(也就是样本间的距离),然后根据本发明 所提出的无参混合聚类算法PFHC (Parameter-Free Hybrid Clustering algorithm)对病毒样本进行自动分类。
附图1为本发明基于文件指令频度的计算机恶意程序分类方法 流程图。
具体实施方式
本发明基于文件指令频度的计算机恶意程序分类系统主要包括 指令频度特征提取模块,其首先解析恶意程序代码的所有指令, 并统计每个指令在恶意程序样本中所出现的频率TF与逆向样本频率 IDF,对恶意程序样本集中出现的指令进行加权,从而构造指令频度 向量来表征恶意程序样本,并存储于恶意程序特征库中;
恶意程序特征库,其用于存储以指令频度向量来表征的所有恶意 程序样本;
样本差异度度量模块,其采用Cosine余弦度量方法,通过计算 两个样本指令频度向量之间夹角来衡量样本之间的差异度;
恶意程序样本家族划分模块,其将恶意程序特征库中所有N个恶 意程序样本从分成N个家族开始,逐次分成N-1个家族、N-2个家族, 依次类推,直至最后将所有N个恶意程序样本分成一个家族或者直到 分成预先设定好的家族数;
聚类质量评估模块,其对恶意程序样本家族划分模块每层分家族 的结果采用FS指标值进行有效性度量。
参见图1,本发明基于文件指令频度的计算机恶意程序分类(分 家族)方法如下 第一步恶意程序特征库的生成
首先解析恶意程序代码的所有指令,并统计每个指令在恶意程序 样本中所出现的频度,然后根据信息论中相对熵(TF-IDF)的概念, 本发明采用指令在恶意程序样本中出现的频率TF与逆向样本频率 IDF对恶意程序样本集中出现的指令进行加权,从而构造指令频度向 量来表征恶意程序样本,并存储于恶意程序特征库中。
指令频率TF,是某一个给定的指令在该样本中出现的频率,对 于第y个样本中的指令/,,其TF值定义如下7^,=^~——公式(1)
其中,~是该指令/,在样本7'中出现的次数,而分母则是在样本_/
中所有指令出现的次数之和。
逆向样本频率IDF,是一条指令普遍重要性的度量。 一个指令的 IDF值,定义如下
其中,IDI表示恶意程序样本集中的样本总数,IW:/,.e^表示包 含指令^的恶意程序样本个数。
本发明采用公式(1)中指令频率TF与公式(2)逆向样本频率 IDF的乘积公式(3)来对样本y中的第i个指令^进行加权
rF/Di^. =77^*阔-公式(3)
第二步距离矩阵的计算
基于第一步生成的恶意程序特征库,本发明采用Cosine距离作为样 本特征差异度的度量方式。距离矩阵D是每两个恶意程序样本间的差 异程度(即距离),两个样本jc,和^的Cosine距离定义如下
&=r4^一公式(4)
其中,分子表示两个样本特征向量的内积,分母表示两个样本特征向 量长度的乘积。
第三步采用无参混合聚类方法PFHC实现对恶意程序样本文件的分 家族
首先介绍聚类有效性的度量方法为了实现无参聚类,本发明采用FS聚类有效性指标度量每一层分家族结果质量的好坏。好的聚类 结果能够尽量地把具有共性的同家族恶意程序分成一类,同时把差异 较大的恶意程序区分开;这就要求聚出来的类内部尽可能的紧凑,而 类与类之间的距离尽可能的远离。本发明中所采用FS指标(公式(5)) 是类内紧凑度与类间分离度的差,其值可以用来度量分家族结果的好 坏值越小表明聚类结果越好。
<formula>formula see original document page 12</formula>-——公式(5)
其中,n表示恶意程序样本库的样本个数,c表示分成的类数,Vj 表示第i家族的中心点,家族的中心点是指距离本家族中所有样本的 距离之和最小的样本点,〗是恶意程序样本库中全体样本的中心点, 即距离全局所有样本的距离之和最小的样本点。IIa-vJ表示第i家 族中的样本点Xk与该家族中心点^的距离,1Iv,.-^l表示第i家族的中 心点到全局中心点〗的距离,《是样本隶属度矩阵若样本Xk属于第 i家族,则矩阵中该元素值为l;否则,值为0。
1) 聚类过程将每个恶意程序样本初始化为独立的家族,即从 N (N为恶意程序样本库中样本数量)个单独的家族开始, 自底向上进行凝聚迭代,直到所有的样本聚合成一个大的家 族或者直到分成预先设定好的家族数。其中,第K-l层的迭 代优化过程如下以上一层产生的K个家族为基础,根据公 式(4)的距离度量方法选择最相似的两个家族(即家族中 心点距离最小的两个家族)合并成新家族,并重新计算合并 后新家族的中心点,然后利用K-means的全局优化技术进行迭代,直至所有家族的中心点不再变化,最终将所有恶意程
序样本划分为合理的K-l个家族。在每一层迭代结束后,对 分家族的结果采用FS指标值进行有效性度量,评估该层的 聚类质量。上述K-means的全局优化迭代算法如下 I)按照该层初始的K-l个中心点,将其余非中心点的样本 点根据公式(4)的Cosine距离度量方法计算其与这K-l 个中心点的距离,并将这些非中心点的样本点归属到与 其距离最近的中心点所在的家族;
II)根据I)划分的结果更新所有家族的中心点家族
/( 1...K-l)的中心点是与同家族所有样本距离之和最小
的样本点(若有多个这样的样本点,则以标号最小的样
本点作为该家族的中心点,当然,也可以以标号最大的
样本点作为该家族的中心点,只要后续过程中固定这种
c,=min{v,|S||v<-、1卩} 选取规则即可) ^ ,其中v'代表家
族'的第t个样本,"'表示该家族i的样本个数, ^ 表示样本v'与同家族所有样本的距离和;
jt—1 2 ,
in)检查即求2|。-c;l的值,其中、^分别为家族z'更新前 后的中心点,若值为o,则本次迭代与上一次迭代所有
家族的中心点未发生变化,迭代终止;否则,转步1)
步n)。2) 结果输出在聚类过程1)结束后,通过比较各个层次的FS 指标值,找到FS最小值所在的层,其聚类的结果就是最后 分家族的结果。
下面通过一个实例介绍上述步骤1)中的聚类过程
假设恶意程序样本库中总的样本数量为10个,分别为Al、 A2…A10。聚类分家族过程共分10层,第10层为10个样本各为一个 家族;第9层为分成9个家族,假设A1、 A5距离最近,则A1、 A5合 并为一个家族,其他各样本各为一个家族;第8层为分成8个家族, 依次类推,第1层为全部样本分到一个家族。假设第5层的分类结果 是第一家族Ul、 A2、 A5},第二家族{A3、 A4},第三家族(A6}, 第四家族(A7、 A9},第五家族{A8、 A10},这5个家族的中心点分 别为Al、 A3、 A6、 A9和A8。下一次(第4层)的迭代优化过程如下 以第5层产生的5个家族为基础,根据公式(4)的距离度量方法选 择最相似的两个家族(即家族中心点距离最小的两个家族),假设 A3与A6距离最小,则将第二家族和第三家族合并成新家族{A3、 A4、 A6},并重新计算合并后新家族的中心点(假设为A4),此时,四个 家族分别为第一家族(A1、 A2、 A5},第二家族{A3、 A4、 A6},第 三家族{A7、 A9},第四家族{A8、 A10},四个家族的中心点分别为 Al、 A4、 A9和A8,然后利用K-means的全局优化技术进行迭代,艮卩 I)按照该层初始的四个中心点,将其余非中心点的六个样 本点(A2、 A3、 A5、 A6、 A7、 A10)根据公式(4)的Cosine 距离度量方法分别计算其与上述四个中心点的距离,并将这些非中心点的样本点归属到与其距离最近的中心点
所在的家族;此时的分家族情况将有所改变,假设A4比 Al距离A2更近,则A2被划分到第二家族;A9比A8距 离A10更近,则A10就被划分到第三家族;结果是,四 个家族分别为第一家族{Al、 A5},第二家族{A2、 A3、 A4、 A6},第三家族{A7、 A9、 A10},第四家族{A8};
II) 因为在上述步骤I)中家族的成员划分发生变动,根据I) 划分的结果更新所有家族的中心;
III) 检査本次迭代与上一次迭代所有家族的中心点是否发生 变化,如果不在变化,则迭代终止;否则,转步I) 步H), 继续进行家族划分。比如第一家族{Al、 A5},第二家族{A2、 A3、 A4、 A6},第三家族U7、 A9、 A10},第四家族{A8} 的中心点分别为A1、 A4、 A9和A8,则迭代结束,这种分成四 个家族的方式就是第四层的分家族结果。后续就以该分家族结 果计算第四层的FS指标值。
算法具体实现过程如下
输入n个恶意程序样本所提取的指令频度集。 输出每个恶意样本所对应的家族编号。 算法-
(1)根据输入的n个恶意程序样本所提取的指令频度集,分别 采用公式(1) 公式(3)的指令加权方法对指令频度集 中的特征进行加权得到每个恶意程序样本的指令频度向量,然后采用公式(4)的Cosine距离度量方法计算每两 个样本特征的距离,构造一个Wn的距离矩阵D。 (2)家族数K二n到I^2 (或指定的家族数)时,循环以下操作 査找距离矩阵D,合并距离最近(即最相似)的两个家 族Cl和C2,得到包含ICll +|C2|个样本的新家族C;
计算合并后新家族C的中心点;
利用K-means的全局优化技术进行迭代,直至所有家族 的中心点不再变化,将所有恶意程序样本划分为合理的 K-l个家族
1) 按照该层初始的K-1个中心点,将其余的样本点根据 公式(4)的Cosine距离度量方法计算其与这K-l个 中心点的距离,这些样本点将被归属到与其距离最近 的中心点所在的家族;
2) 根据1)划分的结果更新所有家族的中心;
3)检查本次迭代与上一次迭代所有家族的中心点是否发
生变化,即求tlh-c;f的值。,。:分别为家族''更新前
后的中心点),若值为0,迭代终止;否则,转步l) 步2);
根据公式(5)计算第K-l层划分家族的结果的FS指标 值,并设置K4-1。
(4)对于所有的N... 1层,比较每层分家族结果的FS指标值, 找出最小的FS值,对应的即为最优的分家族结果。(5)按照最优的分家族结果,输出每个恶意程序样本对应的 家族编号。
以上实施例描述仅用以说明而非限制本发明的技术方案。不脱离 本发明精神和范围的任何修改或局部替换,应涵盖在本发明的权利要 求范围当中。
权利要求
1、一种基于文件指令频度的计算机恶意程序分类系统,其特征在于,包括指令频度特征提取模块,其首先解析恶意程序代码的所有指令,并并通过计算每个指令在恶意程序样本中所出现的频率TF与逆向样本频率IDF,对恶意程序样本集中出现的指令进行加权,从而构造指令频度向量来表征恶意程序样本,并存储于恶意程序特征库中;恶意程序特征库,其用于存储以指令频度向量来表征的所有恶意程序样本;样本差异度度量模块,其采用Cosine余弦度量方法,通过计算两个样本指令频度向量之间夹角来衡量样本之间的差异度;恶意程序样本家族划分模块,其将恶意程序特征库中所有N个恶意程序样本从分成N个家族开始,逐次分成N-1个家族、N-2个家族,依次类推,直至最后将所有N个恶意程序样本分成一个家族或者直到分成预先设定好的家族数;聚类质量评估模块,其对恶意程序样本家族划分模块每层分家族的结果采用FS指标值进行有效性度量,并选择最小的FS指标值,将其对应的划分结果作为最终结果。
2、 使用权利要求1所述基于文件指令频度的计算机恶意程序分类系 统进行分类的方法,其特征在于,包括如下过程第~、恶意程序特征库生成指令频度特征提取模块首先解析恶意程序代码的所有指令,并统计每 个指令在恶意程序样本中所出现的频度,采用指令在恶意程序样本中 出现的频率TF与逆向样本频率IDF对恶意程序样本集中出现的指令 进行加权,从而构造指令频度向量来表征恶意程序样本,并存储于恶 意程序特征库中;第二、距离矩阵的计算然后采用公式(4)的Cosine距离度量方法计算每两个样本特征的距 离,构造一个距离矩阵D,其中,两个样本x,和、.的Cosine距离定义如下-<formula>formula see original document page 3</formula>其中,分子表示两个样本特征向量的内积,分母表示两个样本特征向 量长度的乘积。第三、恶意程序样本逐层分家族并确定分家族结果 恶意程序样本家族划分模块将恶意程序特征库中所有N个恶意程序 样本从分成N个家族开始,逐次分成N-1个家族、N-2个家族,依次 类推,直至最后将所有N个恶意程序样本分成一个家族或者直到分成 预先设定好的家族数;聚类质量评估模块对每层分家族的结果采用 FS指标值进行有效性度量;选择所有FS指标值中最小值,该最小FS 指标值所对应的分家族结果即为最后的分家族结果。
3、根据权利要求2所述的基于文件指令频度的计算机恶意程序分类 方法,其特征在于,指令频率TF是某一个给定的指令在该样本中出现的频率,对于第/个样本中的指令^,其TF值定义如下77^=^^——公式(1)其中,~.是该指令,,.在样本_/中出现的次数,而分母则是在样本y中所有指令出现的次数之和;逆向样本频率IDF是一条指令普遍重要性的度量, 一个指令的 IDF值定义如下<formula>formula see original document page 4</formula> 公式(2)其中,lDl表示恶意程序样本库中的样本总数,IW:r,e力l表示包含指令/,的恶意程序样本个数;采用公式(1)指令频率TF与公式(2)逆向样本频率IDF的乘积来对样本y中的第i个指令(进行加权,艮P-<formula>formula see original document page 4</formula>
4、根据权利要求3所述的基于文件指令频度的计算机恶意程序分类 方法,其特征在于,恶意程序样本家族划分模块在第k-1层划分家族的方法是,以上一层 产生的K个家族为基础,根据公式(4)的距离度量方法选择最相似 的两个家族合并成一个新家族,并重新计算合并后新家族的中心点, 然后利用下述K-means的全局优化技术进行迭代,直至所有家族的中 心点不再变化,最终将所有恶意程序样本划分为合理的K-1个家族; K-means的全局优化迭代算法如下I) 按照该层初始的K-1个中心点,将非中心点的样本点 根据公式(4)的Cosine距离度量方法计算该样本点与这 K-1个中心点的距离,将每个非中心点的样本点重新归类到 与其最近的家族;II) 根据I)划分的结果更新所有家族的中心家族。=min{V,||>,-vj|2} /(/ = 1.丄-1)的中心点 ,其中v'代表家族''的第t个样本,"'表示该家族i的样本个数,^ 表示样本v'与同家族所有样本的距离和; III)检查即求力lc,.-c:/的值,若值为0,则本次迭代与上/=1一次迭代所有家族的中心点未发生变化,迭代终止;否则,转步i) 步n),其中、q分别为家族z'更新前后的中心点。
全文摘要
本发明涉及基于文件指令频度的计算机恶意程序分类系统及其方法。基于文件指令频度的计算机恶意程序分类系统,包括指令频度特征提取模块,构造指令频度向量来表征恶意程序样本,并存储于恶意程序特征库中;恶意程序特征库,其用于存储以指令频度向量来表征的所有恶意程序样本;样本差异度度量模块,其通过计算两个样本指令频度向量之间夹角来衡量样本之间的差异度;恶意程序样本家族划分模块,其将恶意程序特征库中所有恶意程序样本逐层分家族;聚类质量评估模块,其对每层分家族的结果进行有效性度量,并选择最小的FS指标值,将其对应的划分结果作为最终结果。该装置可实现自动对恶意程序样本进行合理分类。
文档编号G06F21/00GK101604363SQ20091004099
公开日2009年12月16日 申请日期2009年7月10日 优先权日2009年7月10日
发明者里 万, 叶艳芳, 勇 陈, 韩智雪 申请人:珠海金山软件股份有限公司