Page 125 - 《软件学报》2020年第11期
P. 125
汪洁 等:子图相似性的恶意程序检测方法 3441
逆拓扑标识可以将一个子图映射成一个字符串,字符串间的比较相比图的匹配更简单、更迅速.同时,字符
串中蕴含了子图的结构信息,子图结构不同其字符串表示也不同,并且本文中子图间的相似性学习并不是依据
子图本身的结构而是子图的“上下文”信息.但必须注意的是,
1) 子图中存在环时方法将失效.子图语料库中的子图都是基于 TreeWalk 算法,而 TreeWalk 算法可以确
保提取的子图中不存在环.
2) 子图字符串长度与子图的深度有关,当子图深度比较大时,字符串的长度会变得非常冗长.
然而,子图的最大深度取决于最大提取深度 D,从后续的实验中可以看出,最大深度 D 最佳取值为 5,因而子
图表示长度仍在合理范围内.
2.4 特征子图库构建
子图语料库是以训练样本中恶意程序图中每个节点作为根节点,提取深度为 0~D 的子图,这会造成简单的
子图频繁出现,例如单个节点、两个节点如进程读取注册表等,这些子图无论在恶意还是非恶意程序都是普遍
存在的.然而这些简单的高频子图就类似于文本中高频出现的 a,the 等词,借鉴最新的神经语言模型处理高频词
的方法 [19] ,我们采取了简单的子采样方法,在子图语料库 sg cors 中,每个子图 sg i 具有以下概率被放弃,其计算公
式为
t
( Psg ) 1=− (2)
i
( f sg )
i
−3
其中,f(sg i )表示子图 sg i 的频率;t 表示选择门槛,通常在 10 左右.我们选择这个子采样公式是因为它能够对频率
大于 t 的子图进行子采样,即频率愈大其被剔除的概率也愈大.虽然这个子采样公式是启发式的,不仅加速了学
习速度而且提高子图的准确率,同时子图语料库 sg cors 中低频的子图可以直接使用剔除的方法,即将子图语料库
频率小于某一定值的子图剔除.实验中,我们取值为 3.子图语料库中对高频子图进行子采样,对低频子图进行剔
除,剩余的子图就是普遍存在于训练样本恶意程序中,我们将子图语料库中剩余的子图称为特征子图库.
3 子图嵌入
本节的目的是将特征子图库中的子图向量化,这利用了神经语言模型 SkipGram [19−21] 的思想(如图 5 所示).
神经语言模型可以解决词相似性问题,即可以从文本中找出语境相似的词,如“苏维埃”与“俄罗斯”“语文”与“数
学”等.其核心思想是,将每个词表示成多维向量,并且每次更新使得一个词与其上下文的词(相邻的词)相似而与
其他词不相似.通过对文本不断地学习,会使得上下文相似的词相似,具体表现词向量的空间距离相近.我们将
图视作为一种特殊的语言,类似于不同的词组成句子一样,不同的子图构成图,提出了 SubSkipGram 模型去学习
子图间的相似性.
INPUT PROJECTION OUTPUT
w(t−2)
w(t−1)
w(t)
w(t+1)
w(t+2)
Fig.5 SkipGram model
图 5 SkipGram 模型