基于生成对抗网络的恶意代码检测方法与流程

文档序号:22677723发布日期:2020-10-28 12:35阅读:222来源:国知局
基于生成对抗网络的恶意代码检测方法与流程

本发明涉及网络安全技术领域,尤其涉及一种基于生成对抗网络的恶意代码检测方法。



背景技术:

随着网络技术的发展,当前网络空间安全的主要威胁之一是恶意代码通过系统漏洞或垃圾邮件等大规模传播,进而对信息系统造成破坏,因此,如何准确而有效的识别恶意代码十分必要。现有的恶意代码检测技术通常基于如下假设:恶意代码与非恶意代码在结构、功能和行为特征上存在差异,且该差异特征尽可能非歧义的判别代码片段或计算机程序是否为恶意代码。但是,随着网络攻防的博弈,恶意代码呈现出隐形化、多态化、多歧化特点,如何获取大量恶意代码样本并提取丰富而准确的恶意特征是恶意代码检测引擎的关键能力之一。

现有的恶意代码检测技术,主要包括以下两种:

(1)规则式检测(rule-baseddetection)

恶意代码检测引擎基于恶意代码特征规则库对样本进行检测,规则库主要包括针对恶意指令的指纹特征和针对恶意行为的模式特征。目前的代表性工作yara工具,支持文本文件、二进制文件的字节序列提取,支持通配符、正则表达式等特性。虽然此方法检测恶意代码的准确率较高、检测时间较短,但是,该方法需要预先定义大量的规则,对于稍作变化的未知恶意代码则无能为力,不具备通用性。

(2)启发式检测(heuristicdetection)

通过监视系统的活动并将其分类为正常或异常两种状态来检测样本是否具有恶意的企图。当前对异常状态的判断通常基于机器学习算法,这需要恶意代码检测引擎进行一段时间的训练和建模。目前的代表性工作有vmanalyzer、maldy工具,通过提取恶意代码的api调用序列或动态行为分析特征,输入到神经网络中训练分类模型,进而检测恶意代码。但是,该方法基于统计特征和概率决策模型,在实际应用中通常具有较高的误报率,更为重要的是,基于机器学习的检测模型通常需要大量的样本进行训练,才有得到相对较高的准确率和召回率,检测成本高,且对于恶意样本的获取是一个极大的挑战。

由此可知,现有的恶意代码检测技术检测成本高且通用性差。



技术实现要素:

本发明目的在于,提供一种基于生成对抗网络的恶意代码检测方法,通过采集少量恶意代码样本集,基于生成对抗网络构建大量恶意代码对抗样本,用于训练恶意代码检测模型,能够实现准确而有效的恶意代码检测,成本低且具有通用性。

为了解决上述技术问题,本发明提供了一种基于生成对抗网络的恶意代码检测方法,包括:

采集恶意代码样本集和良性样本集;

提取所述恶意代码样本集和良性样本集中每一样本的静态特征和动态特征;

将所述恶意代码样本集和良性样本集中每一样本的静态特征和动态特征进行组合,得到每一样本组合特征;

将所有样本组合特征输入预先设置的生成器g中,生成对抗样本集;

将所述对抗样本集输入预先设置的判别器d中,判别每个对抗样本是否为恶意代码,为每个对抗样本标记是否为恶意代码的标签,并将附带标签的对抗样本集反馈到所述生成器g中,持续优化所述生成器g;

将附带标签的对抗样本集作为训练集进行训练,得到恶意代码分类模型;

基于所述恶意代码分类模型检测待测样本是否为恶意代码。

进一步的,提取所述恶意代码样本集和良性样本集中每一样本的静态特征,包括:

提取所述恶意代码样本集和良性样本集中每一样本的二进制灰度图像,并生成每一样本的二进制灰度图像对应的多维静态特征向量,作为所述静态特征向量。

进一步的,所述提取所述恶意代码样本集和良性样本集中每一样本的二进制灰度图像,包括:

将每一恶意代码样本和良性样本的样本文件0和1构成的二进制串解读为8位无符号整数向量;

根据样本文件的大小设定图像的宽度,将无符号整数向量转换为二维数组;

将所述二维数组的每个数组元素表示为灰度图像的一个像素,构成所述二进制灰度图像。

进一步的,提取所述恶意代码样本集和良性样本集中每一样本的动态特征,包括:

基于所述恶意代码样本集和良性样本集中每一样本的动态行为,提取每一样本的api调用序列特征,得到每一样本的多维动态特征向量,作为所述动态特征向量。

进一步的,所述提取每一样本的api调用序列特征,得到每一样本的多维动态特征向量,包括:

通过动态分析样本在运行中调用的操作系统api列表,并进行编码,生成每个样本的多维动态特征向量。

进一步的,将所述恶意代码样本集和良性样本集中每一样本的静态特征和动态特征进行组合,得到每一样本组合特征,包括:

将所述恶意代码样本集和良性样本集中每一样本的多维静态特征向量和多维动态特征向量进行组合,得到每一样本的多维组合特征向量,作为所述每一样本组合特征,所述组合包括叠加和降维。

进一步的,将所有样本组合特征输入预先设置的生成器g中,生成对抗样本集,包括:

将所有样本的多维组合特征向量输入预先设置的生成器g中,生成对抗样本特征向量,所述对抗样本特征向量与输入样本特征相似,将每一所述对抗样本特征向量反向还原为样本文件,组成所述对抗样本集。

进一步的,所述将每一所述对抗样本特征向量反向还原为样本文件,包括:

将所述与输入样本特征相似的样本特征向量还原为对应的灰度图像,再反向生成样本文件;

根据编码的api序列,将标记变为0的api调用随机修改为一个标记变为1的api,或填充空指令,生成所述对抗样本集。

进一步的,将附带标签的对抗样本集作为训练集进行训练,得到恶意代码分类模型,包括:

以所有附带标签的对抗样本集作为训练集,使用卷积神经网络对样本静态特征向量训练分类模型,使用随机森林算法对样本动态特征向量训练分类模型,再对两个模型分类结果加和平均归一化,得到所述恶意代码分类模型。

进一步的,所述基于所述恶意代码分类模型检测待测样本是否为恶意代码,包括:

提取所述待测试样本的静态特征和动态特征,并将所述待测试样本的静态特征和动态特征输入所述恶意代码分类模型中,然后输出待测试样本是否为恶意代码的分类。

本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明一种基于生成对抗网络的恶意代码检测方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:

本发明通过采集少量恶意代码样本集,生成大量对抗样本集,因而可以使机器学习算法获得大量的有标签样本集进行训练,同时在生成对抗网络的博弈中生成了大量具有良好特征的对抗样本,有效解决了现有基于机器学习的恶意代码检测引擎对训练样本数量要求较高、容易产生过拟合的问题,提高了恶意代码识别的精确度和效率,成本低且具有通用性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

图1为本发明一实施例提供的基于生成对抗网络的恶意代码检测方法示意图;

图2为本发明一实施例提供的控制器结构框图;

图3为本发明一实施例提供的计算机可读存储介质的结构框图。

【符号说明】

100:控制器

101:存储器

102:处理器

200:计算机可读存储介质

201:程序代码

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于生成对抗网络的恶意代码检测方法的具体实施方式及其功效,详细说明如后。

本发明实施例提供了一种基于生成对抗网络的恶意代码检测方法,如图1所示,包括:

步骤s1、采集恶意代码样本集和良性样本集;

步骤s2、提取所述恶意代码样本集和良性样本集中每一样本的静态特征和动态特征;

步骤s3、将所述恶意代码样本集和良性样本集中每一样本的静态特征和动态特征进行组合,得到每一样本组合特征;

步骤s4、将所有样本组合特征输入预先设置的生成器g中,生成对抗样本集;

步骤s5、将所述对抗样本集输入预先设置的判别器d中,判别每个对抗样本是否为恶意代码,为每个对抗样本标记是否为恶意代码的标签,并将附带标签的对抗样本集反馈到所述生成器g中,持续优化所述生成器g;

步骤s6、将附带标签的对抗样本集作为训练集进行训练,得到恶意代码分类模型;

步骤s7、基于所述恶意代码分类模型检测待测样本是否为恶意代码。

所述步骤s1中,可从多源威胁情报中采集恶意代码样本集,多源威胁情报指的是网络安全厂商、开源安全社区,商业付费安全大数据供应商所提供的网络攻击组织活动报告、网络安全事件报告、入侵检测指标(indicatorofcompromise)。良性样本集指的是开源社区和公开软件仓库中高评分的活跃开源软件项目生成的可执行文件集合,例如采集github平台中评分大于10k且最近3个月内保持活跃的开源项目,提取其中的二进制可执行程序作为良性样本集。

作为一种示例,所述步骤s2中,提取所述恶意代码样本集和良性样本集中每一样本的静态特征包括:

步骤s21、提取所述恶意代码样本集和良性样本集中每一样本的二进制灰度图像,并生成每一样本的二进制灰度图像对应的多维静态特征向量,作为所述静态特征向量。

其中,可使用自编码网络autoencoder提取所有图像的100维特征向量,作为所述静态特征向量。

所述步骤s21中,提取所述恶意代码样本集和良性样本集中每一样本的二进制灰度图像,包括:

步骤s211、将每一恶意代码样本和良性样本的样本文件0和1构成的二进制串解读为8位无符号整数向量;

步骤s212、根据样本文件的大小设定图像的宽度,将无符号整数向量转换为二维数组;

步骤s213、将所述二维数组的每个数组元素表示为灰度图像的一个像素,构成所述二进制灰度图像。

所述步骤s2中,提取所述恶意代码样本集和良性样本集中每一样本的动态特征,包括:

步骤s22、基于所述恶意代码样本集和良性样本集中每一样本的动态行为,提取每一样本的api调用序列特征,得到每一样本的多维动态特征向量,作为所述动态特征向量。

所述步骤s22中,所述提取每一样本的api调用序列特征,得到每一样本的多维动态特征向量,包括:

步骤s221、通过动态分析样本在运行中调用的操作系统api列表,并进行编码,生成每个样本的多维动态特征向量。例如进行one-hot编码,生成每个样本的二值(即0和1)多维特征向量。

作为一种示例,所述步骤s22中,可在cuckoo沙箱环境中运行所有样本,捕获样本运行中的所有api调用,根据api调用的频率,选择前100个api使用one-hot编码,生成每个样本的100维动态特征向量。

作为一种示例,所述步骤s3可包括:

步骤s31、将所述恶意代码样本集和良性样本集中每一样本的多维静态特征向量和多维动态特征向量进行组合,得到每一样本的多维组合特征向量,作为所述每一样本组合特征,所述组合包括叠加和降维。

例如,组合步骤s102中每个样本的100维静态特征向量和步骤s103中每个样本的100维动态特征向量,叠加生成样本的200维特征向量,也可根据计算资源等因素将叠加生成的组合特征进行降维操作,例如,将200维的组合特征通过降维处理得到150维组合特征。需要说明的是,上述仅为一个示例,多维静态特征向量和多维动态特征向量的维度可以相等,也可以不等,例如多维动态特征向量为100维动态特征向量,多维静态特征向量为50维静态特征向量。

作为一种示例,所述步骤s4中,生成器g指的是一种特殊的神经网络,该网络通过预测所输入样本的特征,生成一个新的样本并保持其特征与输入样本相似。具体可使用adam梯度下降优化算法构建生成器g,输入步骤多维组合特征向量和随机噪声z,生成对抗样本特征向量,并反向还原为样本文件。还可采用sgd、rmsprop、adagrad等类似的深度学习优化算法来构建生成器g。本发明实施例中,可根据训练集的样本特征,设定所述生成器g中的迭代次数和步长等参数。其中,生成对抗样本集,指的是从样本的多维特征向量反向生成样本文件的过程。由于生成器g的操作对象为样本的多维特征向量,而步骤s5中判别器d的操作对象为样本文件,因此,通过生成器g生成的对抗样本的特征向量只有反向还原为样本文件,才能在判别器d中执行分类操作。因此,所述步骤s4具体可包括:

步骤s41、将所有样本的多维组合特征向量输入预先设置的生成器g中,生成对抗样本特征向量,所述对抗样本特征向量与输入样本特征相似,将每一所述对抗样本特征向量反向还原为样本文件,组成所述对抗样本集。

所述步骤s41中,将每一所述对抗样本特征向量反向还原为样本文件,可包括:

步骤s411、将所述与输入样本特征相似的样本特征向量还原为对应的灰度图像,再反向生成样本文件;

步骤s412、根据编码的api序列,将标记变为0的api调用随机修改为一个标记变为1的api,或填充nop空指令,生成所述对抗样本集,nop是汇编语言的一个指令。

步骤s5中,判别器d指的是一种具有高置信度的恶意代码检测引擎,对输入的样本进行分类,判断是否为恶意代码。具体可使用virustotal作为判别器d,检测步骤s4生成的对抗样本,若virustotal中大于5个杀毒引擎检测为恶意代码,则标记为恶意代码,否则标记为良性代码;同时将样本标签反馈到生成器g中持续优化,能够不断提高生成器g的判断恶意代码的准确度,进而提高本发明所述方法检测恶意代码的准确度。

作为一种示例,所述步骤s6包括:

步骤s61、以所有附带标签的对抗样本集作为训练集,使用卷积神经网络对样本静态特征向量训练分类模型,使用随机森林算法对样本动态特征向量训练分类模型,再对两个模型分类结果加和平均归一化,得到所述恶意代码分类模型,所述恶意代码分类模型用于输出是否为恶意代码的标签。

作为一种示例,所述步骤s7包括:

步骤s71、提取所述待测试样本的静态特征和动态特征,并将所述待测试样本的静态特征和动态特征输入所述恶意代码分类模型中,然后输出待测试样本是否为恶意代码的分类。

本发明实施例通过采集少量恶意代码样本集,生成大量对抗样本集,因而可以使机器学习算法获得大量的有标签样本集进行训练,同时在生成对抗网络的博弈中生成了大量具有良好特征的对抗样本,有效解决了现有基于机器学习的恶意代码检测引擎对训练样本数量要求较高、容易产生过拟合的问题,提高了恶意代码识别的精确度和效率,成本低且具有通用性。

本发明实施例还提供一种控制器100,其包括存储器101以及一个或多个处理器102,存储器101以及处理器102之间通信线路连接。存储器101可用于存储软件程序,如本申请实施例中所述的方法对应的程序指令,处理器102通过运行存储在存储器101内的软件程序,从而执行各种功能应用以及数据处理,如本发明实施例所述的方法。

存储器101可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。可以理解的是,图2所示的结构仅为示意,服务器100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。

图2所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供一种计算机可读存储介质,如图3所示,该计算机可读介质200中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。计算机可读存储介质400可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质200包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质200具有执行上述方法中的任何方法步骤的程序代码201的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码201可以例如以适当形式进行压缩。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1