论文部分内容阅读
随着互联网在国民生活中越来越普及,人们生活的众多方面已经和网络交织在一起。在已经逐渐饱和的互联网时代中,恶意代码的种类和数量不断增加,攻击手段也在不断变化。恶意代码的动态分析易受到执行环境的约束,无法获得全路径行为特征,且开销较大、效率较低。近些年流行的基于机器学习的恶意代码检测方法,无法自动和有效地提取特征,依赖于人工提取特征,这些浅层特征无法准确描述恶意代码,导致检测的准确率较低等问题。针对以上问题,本文利用深度学习的思想和技术,从静态分析入手,对恶意代码进行检测。本文的主要工作如下:1.提出一种基于Glove的恶意代码指令层和语义层特征的向量化表示模型。本文从静态分析入手,先对恶意代码样本进行查壳与脱壳操作,确保不会受到代码加壳的影响。传统特征提取方法通常是利用N-Gram算法,缺乏对恶意代码上下文行为信息的相关性考虑。针对此问题,本文设计并实现基于Glove算法的特征向量化表示方法。先进行批量反汇编获取汇编文件,提取两种能很好地表示恶意代码行为信息的特征。在指令层面,利用基于正则表达式匹配的算法在汇编代码中提取出操作码序列;在语义层面,利用深度优先的遍历算法在汇编文件代码中提取出关键API序列,构造Glove模型获取特征的向量化表示模型,通过词向量之间的空间距离来表示序列的相关性,进行对比实验验证词向量方法的效果。2.设计并实现一种基于基于卷积神经网络(Convolution Neural Network,CNN)和循环神经网络(Recurrent Neural Network,RNN)的神经网络模型,命名为MCC_RCNN(Malicious Code Detection_Recurrent Convolutional Neural Network)。机器学习分类模型通常比较简单,特征提取方法通常停留在表层,致使恶意代码检测的准确率较低。近几年利用深度学习对恶意代码进行检测成为研究热点。但是单独应用RNN例如LSTM(Long Short-Term Memory)检测时,LSTM模型无法提取过长的序列信息;单独应用CNN检测时,经CNN训练后,特征不具备上下文的关联性。针对以上问题,本文结合CNN和RNN,提出一种检测模型,命名为MCC_RCNN。MCC_RCNN融合LSTM和Gated CNN,先将恶意代码特征序列输入到LSTM中,利用LSTM的保存机制、遗忘机制和长时间记忆信息的特点获得长序列的操作行为信息,再把LSTM的输出作为Gated CNN的输入。利用Gated CNN中提取不同维度的更深层次局部特征,进行检测分类。数据集选用的为Kaggle平台上微软发起的恶意代码公开数据集,通过与卷积神经网络、循环神经网络和机器学习分类模型的比较,证明本文提出的MCC_RCNN恶意代码检测模型的效果。3.提出一种恶意代码静态行为层面特征融合的特征描述方法。恶意代码检测分类的结果很大程序上取决于特征描述方法。恶意代码的不同层面静态特征从不同维度描述恶意代码,为充分发挥静态分析的优点,减少静态分析的代码混淆影响,本文将恶意代码的指令层和语义层特征进行融合,目的是提高特征的描述能力,使恶意代码被描述的更加准确。通过将两种特征向量在全连接层横向拼接,再通过MCC_RCNN模型检测,通过对比实验和与国际前沿论文进行对比,验证了融合特征的检测方法的效果。