一种云平台上基于RNN的恶意软件检测方法技术

技术编号:27612188 阅读:8 留言:0更新日期:2021-03-10 10:38
本发明专利技术涉及一种云平台上基于RNN的恶意软件检测方法,属于信息安全领域。依次包括以下步骤:基于时序的API调用序列的提取、API序列数据预处理、构建基于RNN的恶意软件检测模型、基于RNN的检测模型的训练。本发明专利技术选择的特征向量为软件的API调用序列,考虑到了API语义上的属性,对软件的API调用序列的语义识别更加准确,将这样的特征输入到双向LSTM神经网络模型中,不但有效提升检测效率,检测准确率也得到大幅提升,并且本发明专利技术设计的网络模型深度适当,模型中需要训练的参数适中,因此检测模型的泛化能力有了一定的提高。的泛化能力有了一定的提高。的泛化能力有了一定的提高。

【技术实现步骤摘要】
一种云平台上基于RNN的恶意软件检测方法


[0001]本专利技术涉及信息安全领域,具体为一种运行于云平台上的恶意软件检测方法。

技术介绍

[0002]当今社会,人们对于智能手机的依赖越来越强,智能手机中潜藏的个人隐私信息也越来越多,这些信息关系着人们的生命财产安全,也因此遭到恶意软件的攻击。在传统恶意软件检测领域,基于固定特征的检测变得越来越困难,因此近年来,研究人员利用人工智能技术对恶意软件进行检测,取得了一定的成果。但在恶意软件检测研究发展初期,较常用的方法都是基于主机的,而随着互联网的发展,恶意软件数量及变种技术不断增加,基于主机的系统为了存储各种恶意软件的特征而变得十分臃肿复杂,所消耗的存储和计算资源不断增加,整体性能不断下降,难以满足实际安全需求。因此考虑设计一种运行于云平台上的恶意软件检测系统以实现检测的准确高效。

技术实现思路

[0003]要解决的技术问题
[0004]针对传统检测方法准确率低下以及常规检测系统低效等问题,本专利技术提出一种运行于云平台之上的恶意软件检测方法,在保证检测准确率的前提下提高检测效率。以解决恶意软件种类剧增所造成的检测效率低下以及检测准确率不足等问题,保护用户的个人隐私和财产安全。
[0005]技术方案
[0006]一种云平台上基于RNN的恶意软件检测方法,其特征在于步骤如下:
[0007]步骤1:基于时序的API调用序列的提取
[0008]为APK文件创建一个dex对象,通过对dex对象的分析,提取出该APK文件的函数调用图,通过对函数调用图中边信息的分析,获得各类内的函数调用关系;在此调用关系的基础上使用深度优先遍历算法完善每条调用序列;此时获得多条完整的类内调用序列,依据序列头节点在内存中的地址信息进行排序;最后按照地址递增的顺序将所有类内调用序列拼接在一起,构建成一条完整的API调用序列;
[0009]步骤2:API序列数据预处理
[0010]提取出API调用序列后,接下来对提取出来的API序列进行预处理:
[0011](1)首先对API序列进行子序列提取,采用n-gram算法来执行此步骤,并将滑动窗口大小设置为4;
[0012](2)上一步中提取出来的子序列数量很大,通过信息增益算法确认划分出来的子序列的有效性,依据信息增益算法得出来每个子序列的信息增益值,按照值大小将序列排序,然后选择信息量较高的子序列作为有效特征子序列;
[0013](3)按照原始API序列中API调用顺序将提取出来的有效子序列连接起来;
[0014](4)最后利用连续相同模式API去除法对得到的API序列进一步处理;
[0015]表1中给出了连续相同模式API去除的方法。
[0016]表1连续相同模式API去除示意表
[0017]连续相同模式连序列去除后S1S2S2S2S2S2S2S2S1S2S2S2S2S2S2S2S2S2S2S2[0018]至此,对API序列的预处理完成,为了输入神经网络,还需将API序列转换为向量,具体方法如下:
[0019](1)首先对每个API函数用特定的整数表示,每个API序列构建成为一个one-hot向量;
[0020](2)然后利用构建的one-hot向量来训练skip-gram网络模型,该模型通过寻找与输入API属于同一类型的若干个API这样一个伪任务来获得能够记录API属性的API向量,图2给出了模型架构。
[0021](3)当训练次数达到一定程度,取出模型中的Embedding矩阵,用API序列的one-hot向量与Embedding权重矩阵的乘积来表示该序列的Embedding向量;
[0022]具体解释如下:假设Embedding的权重矩阵为[VocabSize,EmbeddingSize]的稠密矩阵W,其中VocabSize为需要Embedding的所有项目的个数,EmbeddingSize为经过Embedding映射后的向量连度;那么对于函数Embedding(W,var),其中的var是向量的one-hot向量,大小为[1,VocabSize],此one-hot向量与矩阵W[VocabSize,EmbeddingSize]相乘,结果是一个[1,EmbeddingSize]向量,该向量就是此API序列对应的Embedding向量;权重矩阵W的值会在训练开始前进行随机初始化,在训练过程利用反向传播,实现值的更新;
[0023]步骤3:构建基于RNN的恶意软件检测模型
[0024]构建了双向LSTM网络,同时训练一个正向和一个反向的两个LSTM网络,使得API序列对于自己的上下文信息均有覆盖,并且将两个网络输出的最终状态h_n组合起来,作为该样本的训练结果,再将该训练结果经过一个sigmoid函数即可进行判断;
[0025]在基本架构如上所述的前提下,本专利技术在每个单向的网络中添加了15个隐藏层,每个隐藏层中包含16个隐藏层节点;并且分别在Embedding层和隐藏层后面使用了dropout技术,在防止过拟合的前提下提高训练效率;
[0026]本专利技术还对网络的Embedding层进行了预处理:将之前API向量化时训练好的Embedding矩阵直接放入双向LSTM网络的Embedding层,这样在保留输入属性的同时加快了模型收敛速度;
[0027]步骤4:基于RNN的检测模型的训练
[0028]网络的训练采用BackPropagation算法,算法流程如下:
[0029](1)迭代性地来处理训练集中的实例;
[0030](2)初始权重和偏向一般随机初始化到-1到1或者-0.5到0.5之间;
[0031](3)信号正向传导过程:输入层信号值通过隐藏层,经过非线性变换,作用于输出节点,获得预测值;
[0032](4)对比经过神经网络后输出层预测值与真实值之间的误差;
[0033](5)误差反向传到过程:将输出层误差反方向传导以更新每个连接的权重和每个节点的偏向;即:输出层->隐藏层->输入层;
[0034](6)经过反复训练,当训练次数达到最大时,停止对分类器的训练;
[0035]本专利技术将模型构建在云平台上,将模型的训练建立在Spark内核之上,加速模型的训练,Spark集群由Driver,Cluster Manager,Standalone,Yarn或Mesos,以及Worker Node组成;对于每个Spark应用程序,Worker Node上存在一个Executor进程,Executor进程中包括多个Task线程;Spark上的任务启动后,Driver向Cluster Manager申请资源;Cluster Manager向某些Work Node发送征召信号;被征召的Work Node启动Executor进程响应征召,并向Driver申请任务;Driver将任务的程序代码和不同的数据分片分发给Word No本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种云平台上基于RNN的恶意软件检测方法,其特征在于步骤如下:步骤1:基于时序的API调用序列的提取为APK文件创建一个dex对象,通过对dex对象的分析,提取出该APK文件的函数调用图,通过对函数调用图中边信息的分析,获得各类内的函数调用关系;在此调用关系的基础上使用深度优先遍历算法完善每条调用序列;此时获得多条完整的类内调用序列,依据序列头节点在内存中的地址信息进行排序;最后按照地址递增的顺序将所有类内调用序列拼接在一起,构建成一条完整的API调用序列;步骤2:API序列数据预处理提取出API调用序列后,接下来对提取出来的API序列进行预处理:(1)首先对API序列进行子序列提取,采用n-gram算法来执行此步骤,并将滑动窗口大小设置为4;(2)上一步中提取出来的子序列数量很大,通过信息增益算法确认划分出来的子序列的有效性,依据信息增益算法得出来每个子序列的信息增益值,按照值大小将序列排序,然后选择信息量较高的子序列作为有效特征子序列;(3)按照原始API序列中API调用顺序将提取出来的有效子序列连接起来;(4)最后利用连续相同模式API去除法对得到的API序列进一步处理;表1中给出了连续相同模式API去除的方法。表1连续相同模式API去除示意表连续相同模式连序列去除后S1S2S2S2S2S2S2S2S1S2S2S2S2S2S2S2S2S2S2S2至此,对API序列的预处理完成,为了输入神经网络,还需将API序列转换为向量,具体方法如下:(1)首先对每个API函数用特定的整数表示,每个API序列构建成为一个one-hot向量;(2)然后利用构建的one-hot向量来训练skip-gram网络模型,该模型通过寻找与输入API属于同一类型的若干个API这样一个伪任务来获得能够记录API属性的API向量,图2给出了模型架构。(3)当训练次数达到一定程度,取出模型中的Embedding矩阵,用API序列的one-hot向量与Embedding权重矩阵的乘积来表示该序列的Embedding向量;具体解释如下:假设Embedding的权重矩阵为[VocabSize,EmbeddingSize]的稠密矩阵W,其中VocabSize为需要Embedding的所有项目的个数,EmbeddingSize为经过Embedding映射后的向量连度;那么对于函数Embedding(W,var),其中的var是向量的one-hot向量,大小为[1,VocabSize],此one-hot向量与矩阵W[VocabSize,EmbeddingSize]相乘,结果是一个[1,Embedd...

【专利技术属性】
技术研发人员:姚烨贾耀钱亮
申请(专利权)人:西北工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1