黄青
(武汉邮电科学研究院,湖北 武汉 430000)
恶意程序猖獗已久,从国家互联网应急中心(CNCERT)发布的数据[1]来看,仅2021 年上半年,机构就捕获恶意程序样本数量约2 307 万个。传统的基于签名的检测方法不足以应对瞬息万变的恶意软件,将人工智能技术应用于恶意软件检测一直是网络安全研究中的热点,有的研究使用了软件的静态特征[2],有的研究使用动态特征[3-4],也有的研究将动静态特征结合分析[5]。
图能表征很多内容,但其非欧式结构却不适用于传统的机器学习或者深度学习算法模型。近年来兴起的图神经网络就致力于研究将图结构向量化并用于算法模型,将稀疏高维的原始数据变得稠密低维以提高算法效率,也是图算法研究中的重要一环。图神经网络已经广泛用于社交网络[6]、推荐系统[7]等场景,而对于网络安全方面的应用相对较少[8]。
文中研究了图嵌入在恶意软件检测工作上的应用,从样本的扫描报告提取软件的多种特征构建软件的异构图,通过改进的图嵌入方法得到异构图中节点的特征向量,然后利用嵌入向量完成后续检测工作。
定义1 图定义为G=(V,E,φ,ψ),图的每个对象(节点)v∈V属于对象类型集合A:φ(v)∈A,每个关系(边)e∈E属于关系类型集合R:ψ(e)∈R。异构图(heterogeneous graph)的对象类型数和关系类型数|A|+|R|>2,与之对应的同构图(homogeneous graph)的类型集合 |A|=1 且 |R|=1。两种图示例如图1所示。
图1 两种图示例
定义2 网络模式是一个定义在异构图G=(V,E)的对象类型集合A和关系类型集合R上的元模板,记为TG=(A,R)。
恶意软件检测使用的特征一般根据提取方式分为静态特征和动态特征,静态特征不需要运行软件就可获得,但是容易受到混淆影响;动态特征从运行中获得,其描述软件行为的信息更准确,但是因为需要运行所以提取效率不如静态特征[9]。文中构建的恶意软件异构图的网络模式中综合考虑了软件的动静态特征,根据数据源在静态特征上选取了函数导入表,动态特征上选取了打开文件和注册表行为。恶意软件的网络模式如图2 所示。
图2 恶意软件的网络模式
该网络模式中的节点类型有可执行文件(PE,P)、导入函数(API,A)、动态链接库(DLL,D)、打开文件(F)和打开注册表项(R)。节点之间涉及了四种关系,分别是:
1)R1:PE 导入API;
2)R2:API 属于DLL;
3)R3:PE 打开文件;
4)R4:PE 打开注册表。
图在计算机中用以表示图的矩阵一般是稀疏高维的,对这些矩阵进行直接运算代价极大,而且包含了很多无效计算。为了让运算更高效,需要对图进行嵌入处理。对于图G=(V,E),图嵌入定义[10]为一种映射f:vi→yi∈Rd(∀i∈n,d≪ ||V),其中,d为嵌入后的向量维度。
异构图的嵌入方法一般是分解图的矩阵(比如邻接矩阵)生成节点的潜在维度表示[11],然而恶意软件检测对时间性能要求很高,文中选取了计算代价相对较小的基于随机游走(random walk)的图嵌入方法。
基于随机游走的图嵌入方法主要是将自然语言处理中的Word2Vec 思想延伸到图上[12],经典的模型有DeepWalk[13]、metapath2vec[14]等,Deepwalk 通过等概率随机游走策略将一个节点周围的节点转为该节点的“上下文”。metapath2vec 随机游走时下一个节点的选择取决于元路径的限制,元路径(meta path)是网络模式TG=(A,R) 上由不同类型的对象和指定关系序列组成的一条路径P,表现形式为
恶意软件的异构图嵌入方法主要借鉴了metagraph2vec,通过元路径限制的随机游走策略在获取上下文的同时保持了不同类型节点之间的语义和结构关联性,并针对恶意软件检测做了以下优化:
1)根据信息安全知识设计了可以描述软件不同特征的元路径,采用几何角度加权的方式融合多条元路径嵌入得到的向量。
2)针对恶意检测时的节点分类任务场景采用了不同的嵌入模型。
1.2.1 随机游走策略
metapath2vec 中的随机游走策略是基于元路径指导的,文中基于安全知识提出图3 所示的四种元路径,M1和M2刻画了PE 文件的静态特征函数导入,M3和M4刻画了PE 文件的动态特征打开文件和打开注册表项。
图3 四种元路径
下面以元路径M1为例说明游走策略,M1描述了两个PE 文件导入同一个API 的场景,步行者会遍历异构图中的每一个P节点,从其中一个可执行文件节点pi出发,pi的周围可能各种节点,但异构图的随机游走只在A节点中做随机选择,选择A节点aj后,又从aj的周围选择可执行文件节点pi+1。
1.2.2 嵌入方法
随机游走后得到的节点路径可以作为语料库,然后使用自然语言处理的嵌入模型进行处理。metagragh2vec 方法使用的是skip-gram 模型,而针对恶意软件的图嵌入方法选择了CBOW 模型。skipgram 和CBOW 是word2vec的两种模型,skip-gram 是从中心词对周围的词进行预测,而CBOW 模型则是通过周围的词预测中心词。恶意软件的图嵌入目的是预测节点类型,属于从上下文(周围节点)预测中心词(中心节点),因此选用CBOW 模型进行嵌入。
四种元路径会获得四种特征空间的向量,为了使最终获得的向量可以更全面地描述软件,文中方法将几种特征向量进行主角度加权融合,从物理意义上看,特征融合让恶意软件之间通过多种角度联系到一起提升了关联性,从而可以提高分类检测的准确率。
假设有特征空间Yi和Yj,它们之间的角度余弦值cosθ定义如式(1)所示:
设θ1,θ2,…,θd是空间Yi和Yj的主角度,则Yi和Yj的几何距离d如式(2)所示:
根据两个空间的几何距离计算空间Yi的权重,如(3)所示:
实验运行在Intel Core i5 CPU@2.4 GHz 操作环境,Python 作为语言。利用DGL 库构建异构网络和随机游走,gensim 库完成嵌入,sklearn 实现分类。
实验数据收集主要使用了威胁情报平台VirusTotal 智能查询接口和扫描报告接口。遵循诸多研究中的判定规则,实验中把VirusTotal 扫描结果判定数少于3 的认为是良性样本,而恶意样本来源于Acronis2021 年上半年报告[15]中公布的十大恶意家族。经过筛选后有效样本数据共4 902个,其中良性样本2 284个,恶意样本2 618 个。
实验分类模型选取了内核为RFC 的支持向量机(SVC),结果评估以恶意为正例,选取了四个指标,分别为准确率、精确率、召回率和F1-Score。
实验数据集中的4 902 个样本共关联了28 826个API、923 个DLL、205 803 个被操作文件和67 274个注册表项,构成的异构图节点向量初始维度高达30 万维。实验首先在其他参数不变的情况下,使用元路径M3探讨参数随机游走的游走长度l和嵌入的维度d对结果的影响。
游走长度l对检测准确率的影响如图4 所示。从结果可以看出,l从40提升至100的过程中,准确率也在逐步提高,而当其超过100 后对准确率的提升就没有明显效果,甚至有下降趋势。游走长度过短时无法很好地捕获异构图的结构信息,过长时生成的节点路径可能会趋于相近造成混淆,游走长度变长还会导致计算量的增加。综合来看,游走长度l设置为100 是可以兼顾准确率和计算代价的性价比选择。
图4 游走长度l和准确率
嵌入维度d的设置对检测准确率的影响如图5所示。从结果可知,d从32 增长至128 的过程中,准确率逐步升高,而超过128 之后,准确率有了下降的趋势。这是因为当嵌入维度过小时,会有很多信息被舍弃,得到的特征向量难以准确表达图的内容,而维度过高时,得到的特征向量信息密度比较稀疏,也难以取得较好的效果,综合来看嵌入维度d设置为128 可以获得较好效果。
图5 嵌入维度d对结果的影响
除了以上讨论的两个参数,其他比较重要的参数还有每个节点的游走次数n、嵌入时的滑动窗口大小w等,文中方法使用了研究中常使用的经典值。
为了检测改进的图嵌入方法在恶意软件检测上的有效性,实验选取了两种经典的图嵌入方法与改进方法进行对比。
方法一是文献[13]使用的DeepWalk,该模型不区分节点类型进行等概率随机游走。
方法二是文献[14]使用的metapath2vec,该模型在游走时根据设置的元路径在指定类型的节点中进行随机游走。
三种方法的参数设置都为每个节点游走次数10,游走长度100,嵌入维度128,滑动窗口大小5。metapath2vec 和改进方法得到的向量都进行了融合处理。对比结果如表1 所示。
表1 模型性能评估结果
从结果可以看出,改进方法在各项性能上都有最佳表现,准确率最高相差2.8%。DeepWalk 方法明显逊于后两种方法,原始的metapath2vec 方法在恶意软件检测的应用上也不如改进方法。
文献[16]在metapath2vec 的基础上提出了更复杂的metagraph2vec,但由于在此次研究中难以获取文献[16]中软件提交来源这种企业级别的内容,因此只对比部分元路径,该文献设计的MID1、MID5使用的特征与M1、M2相似,单条元路径上的分类检测结果对比如表2 所示。
表2 与文献[16]单条元路径对比
从单条元路径检测结果来看,文中改进的方法依然优于文献[16],准确率相差近10%。融合特征上由于两个方法使用的特征存在较大差异,故没有进行对比。
针对图智能算法在恶意软件检测上的应用,文中提出了一种基于异构图嵌入的检测方法。该方法提取了静态特征和动态特征一起构建恶意软件的异构图,然后采用改进的基于元路径的嵌入方法对异构图进行学习,最后将融合的特征向量送入SVM 分类器完成检测。通过实验获得了嵌入方法的最佳参数,并与其他方法对比证明了提出改进方法的有效性。
在下一步的研究中,将尝试找到更符合真实情况中恶意软件分布的数据集,同时提取更多的恶意软件特征将方法进行扩展;另一方面,提出方法目前只适用于不变化的图,图动态变化时要如何高效学习和检测也是待解决问题。