基于深度学习的恶意代码分类
序言
由于本学期课程的安排,所以不得不将深度学习和网络攻防的知识进行结合,因此,对本门课程的学习进行一个记录,下面是学习的相关知识的过程,仅为本人个人理解,如果有不妥当的地方希望大佬们指正,一定虚心改正。
1. 基于传统机器学习算法的恶意代码分类方法
恶意代码分类主要有两种应用:恶意代码检测和恶意代码家族聚类。
恶意代码检测的目的是判断未知代码是否是恶意代码,即将未知代码分为良性代码和恶意代码两类。
恶意代码家族聚类是以恶意代码为数据集,依据特征相似性和家族类别标签将恶意代码分为多类。
恶意代码分类任务主要有两个过程:特征提取过程和分类过程。其中,特征提取过程通常采用传统的恶意代码分析方法进行提取;分类过程主要分为两个步骤:
分类模型的构建和分类模型的使用:
在第一个步骤中,将提取的代码特征转化为特征向量,将代码特征向量和类别标签作为输入用作分类算法,例如决策树(DT)、随机森林(RF)和支持向量机(SVM)等,通过对训练集的分析构建分类模型;
在第二个步骤中,采用相同的特征提取方法对未知代码提取特征,将未知代码的特征向量作为输入用作训练过的分类模型中,实现新样本的分类。
在恶意代码检测方面,2012 年,Ravi 等人提出基于 API 调用序列频繁项集的恶意代码动态监测系统,通过 API 调用的抽象,频繁项集挖掘和相似度计算实现恶意代码集群的匹配。该方法是基于数据挖掘的检测系统,使用了朴素贝叶斯、支持向量机和决策树等技术。
基于深度学习算法的恶意代码分析方法
近年来,深度学习技术在解决人工智能领域的任务中取得了重大突破,它擅长在高维数据中挖掘复杂的数据结构,因此,在科学、商业以及政府部门等多领域有着广泛应用。
针对恶意代码分析,传统机器学习模型在特征提取阶段往往需要人工设计和参与,这需要完备的先验知识,并且不能从数据本质出发提取恶意代码区分度较大的特征,这在一定程度上影响了恶意代码的分类和聚类准确率。因此,深度学习技术在恶意代码分类也发挥着重要作用。基于深度学习的理论,Invencea 实验室提出从恶意代码二进制数据段中提取特征,并针对其构建深度神经网络以实现恶意代码检测。
随着机器学习的不断发展,基于机器学习的恶意代码分析方法受到广泛的关注,但是传统机器学习模型在特征提取阶段往往需要人工设计和参与,这需要完备的先验知识,不能自动学习到恶意代码的特征,这在一定程度上影响了恶意代码的分类准确率。
本文针对现有恶意代码分析方法的不足,基于深度学习的理论和方法,针对恶意代码基因的向量化表示、恶意代码基因序列的向量化表示、恶意代码静态抗混淆、恶意代码的分类方法进行深入研究。
从恶意代码基因的提取与向量化表示、恶意代码基因序列的向量化表示、恶意代码分类技术与恶意代码聚类技术四个方面进行研究。研究内容框架如图。
恶意代码基因提取和基于 Word2Vec (关于Word2Vec的理解链接)的恶意代码基因向量化表示方法。在海量恶意代码背景下,针对动态分析效率低以及现有恶意代码表示方法缺乏对语义描述的不足。在恶意代码基因提取阶段,从恶意代码行为层面出发,基于海量恶意代码的自动反汇编组件,利用行进递归算法实现恶意代码基因序列的提取;在恶意代码基因向量化表示阶段,基于 Word2Vec 算法构建恶意代码基因预测模型,通过神经网络的训练和自我调节获取有效的恶意代码基因向量,并利用恶意代码基因向量之间的空间距离表征恶意代码基因之间的关联性和相似性。
基于卷积神经网络的分类模型(Convolution Neural Network CNN)
基于卷积神经网络的分类模型,SMM_CNN(Static Malware Matrix _Convolution Neural Network),模型针对两种输入完成两种不同的任务。
(1)针对经混淆的恶意代码,将恶意代码二进制码直接矩阵化作为模型的输入,通过神经网络自动从数据中提取特征,主要解决因无法正确反汇编而不能有效提取特征的问题,一定程度上解决静态分析抗混淆问题;
(2)针对未经混淆的恶意代码,在1 中提到的恶意代码基因向量化的基础上将恶意代码基因序列矩阵化,以具有语义特性和序列特性恶意代码基因矩阵为输入,通过卷积层和池化层自动对具恶意代码基因序列矩阵提取特征,更加有效地实现恶意代码家族分类。
改进模型
SMGS_RCNN(Static Malware Gene Sequences_ Recurrent Convolution Neural Network)模型。针对 SMM_CNN 模型获取恶意代
码基因的全序列信息能力相对较弱的特点,该模型在 SMM_CNN 的基础上结合循环神经网络(Recurrent Neuron Network,RNN),利用 LSTM 组件的遗忘机制、增加保存机制和长期记忆信息机制,提取恶意代码基因的序列特征。(暂时未实现)
聚类(非本文重点)
设计并实现了一种表征恶意代码整体语义和基因序列信息的恶意代码基因序列向量化表示方法,并将其应用在恶意代码聚类中。在恶意代码基因序列向量化表示阶段,针对恶意代码基因序列构建基于 Doc2Vec 算法的预测模型,通过训练神经网络,将恶意代码基因序列转化为高维实数向量,并通过恶意代码基因序列向量表征恶意代码基因上下文信息和整体语义信息。在聚类阶段,分别基于自组织映射神经网络(Self Organizing Maps,SOM)和 K-means 算法构建聚类模型,以恶意代码基因序列向量作为输入,通过无监督的学习训练,实现恶意代码家族聚类。
大体框架
以上是对于深度学习关于恶意代码分类的初步大体框架理解,下面将对本文中涉及的相关概念、模型、算法等理论知识。首先介绍词向量相关概念及其变体模型;然后介绍本文研究中所涉及到的卷积神经网络的网络结构及其训练过程;最后介绍改进的分类模型所要融合的循环神经网络及其变体相关知识。
相关知识均借鉴于网上的知识,若有侵权请联系。