用于识别恶意应用程序的方法、装置、设备及存储介质与流程

文档序号:17443444发布日期:2019-04-17 05:08阅读:167来源:国知局
用于识别恶意应用程序的方法、装置、设备及存储介质与流程

本发明涉及网络安全技术领域,尤其涉及一种用于识别恶意应用程序的方法、装置、设备及存储介质。



背景技术:

随着互联网技术的不断发展,应用程序在人们的工作和生活中的使用越来越广泛。但是随着应用程序的广泛使用,诸多潜在的安全问题也逐渐暴露出来。近年来,根据不同杀毒软件厂商的调查报告,携带病毒的应用程序正在成倍的增长。安装这些携带病毒的应用程序后,病毒会破坏计算机系统或者在计算机系统上执行不良行为,如中断计算机操作,收集敏感信息,绕过访问控制,非法访问私人计算机以及显示各种广告信息等。因此,为了保证安装的应用程序的安全性,对应用程序是否携带病毒的识别就极为重要。

现有的应用程序的病毒检测方法是通过标记已知的恶意代码来创建恶意代码库,进而通过恶意代码匹配的方式,得到检测结果。但是这种方式需要不断人为去更新恶意代码库,很容易被绕过,存在恶意应用的识别准确度不高的技术问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种用于识别恶意应用程序的方法、装置、设备及存储介质。

第一方面,本发明实施例提供了一种用于识别恶意应用程序的方法,所述方法包括:获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据;采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

进一步地,所述在沙箱环境中运行所述目标应用程序,包括:在所述目标应用程序在沙箱中运行过程中,模拟用户的操作,以触发所述目标应用程序产生行为数据。

进一步地,所述获取目标应用程序的动态行为数据,包括:根据预设打桩点,获取所述目标应用程序在沙箱中运行过程中的动态行为数据,其中,所述预设打桩点为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

进一步地,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列分批次输入所述卷积神经网络进行特征提取,获得目标动态向量。

进一步地,所述将所述第一动态向量序列分批次输入所述卷积神经网络,包括:按照预设的批次长度和间隔参数,将所述第一动态向量序列分批次输入所述卷积神经网络,其中,每批次第一动态向量的向量数量等于所述批次长度,相邻批次的第一动态向量的起始向量之间间隔的向量数量等于所述间隔参数,所述批次长度大于所述间隔参数。

进一步地,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列中的每条向量预训练为采用其周边向量进行描述的向量,生成第二动态向量序列;采用所述卷积神经网络对所述第二动态向量序列进行特征提取,获得目标动态向量。

进一步地,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:根据预设的病毒特征,筛除所述动态行为数据中与所述病毒特征不匹配的无意义数据;采用所述卷积神经网络对筛除所述无意义数据后的所述动态行为数据进行特征提取,获得目标动态向量。

进一步地,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:在所述卷积神经网络中,采用多个不同尺寸的卷积核,对所述动态行为数据进行特征提取,获得多组特征向量;根据所述多组特征向量,获得所述目标动态向量。

进一步地,所述多个不同尺寸的卷积核,包括:与所述动态行为数据中的每个向量的尺寸相同的一维卷积核。

进一步地,所述基于所述目标动态向量,得到所述目标应用程序的恶意检测结果,包括:获取所述目标应用程序的标识信息,将所述目标应用程序的标识信息转化为标识向量;将所述标识向量与所述目标动态向量进行拼接,得到特征动态向量;基于所述特征动态向量,得到所述目标应用程序的恶意检测结果。

第二方面,本发明实施例提供了一种用于识别恶意应用程序的装置,所述装置包括:获取装置,用于获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据;识别模块,用于采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

进一步地,所述在沙箱环境中运行所述目标应用程序,包括:在所述目标应用程序在沙箱中运行过程中,模拟用户的操作,以触发所述目标应用程序产生行为数据。

进一步地,所述获取装置具体用于:根据预设打桩点,获取所述目标应用程序在沙箱中运行过程中的动态行为数据,其中,所述预设打桩点为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

进一步地,所述识别模块用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列分批次输入所述卷积神经网络进行特征提取,获得目标动态向量。

进一步地,所述将所述第一动态向量序列分批次输入所述卷积神经网络,包括:按照预设的批次长度和间隔参数,将所述第一动态向量序列分批次输入所述卷积神经网络,其中,每批次第一动态向量的向量数量等于所述批次长度,相邻批次的第一动态向量的起始向量之间间隔的向量数量等于所述间隔参数,所述批次长度大于所述间隔参数。

进一步地,所述识别模块用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列中的每条向量预训练为采用其周边向量进行描述的向量,生成第二动态向量序列;采用所述卷积神经网络对所述第二动态向量序列进行特征提取,获得目标动态向量。

进一步地,所述识别模块用于:根据预设的病毒特征,筛除所述动态行为数据中与所述病毒特征不匹配的无意义数据;采用所述卷积神经网络对筛除所述无意义数据后的所述动态行为数据进行特征提取,获得目标动态向量。

进一步地,所述识别模块用于:在所述卷积神经网络中,采用多个不同尺寸的卷积核,对所述动态行为数据进行特征提取,获得多组特征向量;根据所述多组特征向量,获得所述目标动态向量。

进一步地,所述多个不同尺寸的卷积核,包括:与所述动态行为数据中的每个向量的尺寸相同的一维卷积核。

进一步地,所述识别模块用于:获取所述目标应用程序的标识信息,将所述目标应用程序的标识信息转化为标识向量;将所述标识向量与所述目标动态向量进行拼接,得到特征动态向量;基于所述特征动态向量,得到所述目标应用程序的恶意检测结果。

第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述电子设备上述用于识别恶意应用程序的方法的步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述用于识别恶意应用程序的方法的步骤。

本发明实施例提供的技术方案中,通过获取目标应用程序的动态行为数据,采用预先训练好的卷积神经网络对动态行为数据进行特征提取,获得目标动态向量,并基于目标动态向量,得到目标应用程序的恶意检测结果。本方案中,动态行为数据为通过在沙箱环境中运行目标应用程序并对应用程序在运行过程中的行为进行监控,得到的行为数据,能够获取更多的应用程序的动态行为,使得获取到的用于进行恶意检测的行为更加多样化。另外,通过卷积神经网络来对动态行为数据进行识别,有利于得到更准确的恶意检测结果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了适用于本发明实施例的一种运行环境示意图;

图2示出了本发明第一实施例提供的一种用于识别恶意应用程序的方法的流程图;

图3示出了本发明第二实施例提供的一种用于识别恶意应用程序的装置的结构示意图;

图4示出了本发明第三实施例提供的一种电子设备的结构示意图。

具体实施方式

请参见图1,为适用于本发明实施例的一种运行环境示意图。如图1所示,一个或多个用户终端100(图1中仅示出一个)可通过网络200与一个或多个服务器300(图1中仅示出一个)相连,以进行数据通信或交互。其中,用户终端100可以是个人电脑(personalcomputer,pc)、笔记本电脑、平板电脑、智能手机、电子阅读器、车载设备、网络电视和可穿戴设备等具有网络功能的智能设备。

本实施例提供的识别方法可以应用于服务器端(独立服务器、服务器组或云端)或用户终端。较优的,该识别方法应用于用户终端,以避免病毒通过多次访问服务器端来记录云端和服务器端的沙箱特征如ip地址等,从而避免沙箱逃逸情况的产生。

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图2示出了本发明第一实施例提供的一种用于识别恶意应用程序的方法的流程图。如图2所示,所述方法至少包括以下步骤s201至步骤s202。

步骤s201,获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据。

在一种实施方式中,动态行为数据是通过在沙箱环境中运行目标应用程序,再根据预设打桩点来获取的。其中,预设打桩点可以为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

以该识别方法应用于手机为例,手机中安装有沙箱,目标应用程序可以是手机中的安全情况未知的应用程序,或者是需要进行病毒检测的应用程序。为了保证手机系统的安全,可以在沙箱环境中运行目标应用程序,这样即便目标应用程序携带有病毒,也不会对手机系统产生影响。在目标应用程序在沙箱环境中的运行过程中,模拟用户的操作,以触发目标应用程序产生行为数据。在本实施例中,预设打桩点可以通过订制rom(readonlymemory,只读存储器)的方式在系统服务中插入打桩点来实现。应理解的是,打桩点可以是根据历史病毒行为检测经验以及程序的行为敏感度来设置的,例如,后台监控访问联系人、后台监控访问短信息等行为为敏感度较高的行为,可以在对应的系统服务中插入打桩点。当然,预设打桩点还可以设置在其他位置,如设置在待检测程序的进程中,这里不做限定。

打桩点的设置个数可以根据实际需要来进行设定。在一个实施例中,预设打桩点为200个,如果目标应用程序在运行过程中触发了这200个打桩点中的任何一个,都会将该行为提取出来,通过提取到的多个行为构成动态的行为序列,以反映目标应用程序在运行过程中的动态行为。

具体来讲,目标应用程序在进程中会产生许多行为,包括向系统请求调用各类api(applicationprogramminginterface,应用程序编程接口)的行为。应理解的是,系统服务可以理解为响应api调用的服务,在某一个api被调用后,可以根据对应的系统服务对api的调用请求进行响应,并反馈一个调用结果。由于在目标系统服务中进行了打桩处理,如果调用了目标系统服务对应的api,通过打桩点可以把该调用行为进行提取。

步骤s202,采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

本步骤中,采用的卷积神经网络是预先训练好的。具体的训练过程可以为:获取训练样本,训练样本包括多个应用程序的动态行为数据以及每个应用程序的标签信息;通过训练样本对预先构建的卷积神经网络进行训练,获得训练好的卷积神经网络。其中,标签信息用于标识训练样本包括的每个应用程序所属的类别。例如,本实施例中作为训练样本的多个应用程序可以分为两类,分别为恶意应用程序和非恶意应用程序即安全应用程序。

在一种实施方式中,卷积神经网络可以包括:词嵌入层,用于将所述动态行为数据转化为向量表示的第一动态向量序列;卷积层,用于对转化为向量表示的动态行为数据进行特征提取获得特征向量序列;池化层,用于对特征向量序列进行降维获得降维向量序列,并根据所述降维向量序列,获得目标动态向量。下面,详细描述卷积神经网络的特征提取过程。

为了提供适用于神经网络计算的数据,在对动态行为数据进行特征提取之前,词嵌入层先将动态行为数据转化为向量表示的第一动态向量序列,再将第一动态向量序列输入卷积神经网络进行特征提取。例如,词嵌入层可以采用word2vec或glove等词嵌入方式。进一步,为了减少卷积神经网络每次计算的数据量,减少对应模型的大小和提高提取效率,可以将第一动态向量序列分批次输入卷积神经网络进行特征提取。

再进一步,为了保持神经网络计算的计算量的稳定性,还可以预先设置批次长度和间隔参数,在分批次输入第一动态向量序列的过程中,设置每批次第一动态向量的向量数量等于批次长度,相邻输入批次的第一动态向量的起始向量之间间隔的向量数量等于间隔参数。还可以设置批次长度大于间隔参数,以避免分批次输入第一动态向量序列时出现向量遗漏,其中,当批次长度固定时,间隔参数越小则相邻批次的第一动态向量中重复的向量数量越多,对应的同一向量在不同批次中的组合方式越多,能更大限度的实现有关联的向量包括在同一批次中,从而提高后续特征提取的全面性和准确度。

举例来讲,假设批次长度为100,间隔参数为10,则第一批次为第一动态向量序列中的第1-100个向量,第二批次为第11-110个向量,第三个批次为第21-120个向量,等等。

在一种实施方式中,还可以先对第一动态向量序列进行预训练,来加快卷积神经网络的收敛速度。训练方法为将第一动态向量序列中的每条向量预训练为,采用其周边向量进行描述的向量,生成第二动态向量序列,将预训练后的第二动态向量序列输入卷积神经网络来进行特征提取。

举例来讲,假设第一动态向量序列为action1,action2,action3……action100,则对其预训练时,用通过action3和action1描述action2的位置的描述向量作为第二动态向量序列的第二个向量,或者将通过action3和action1描述action2的位置的描述向量合并入action2后作为第二动态向量序列的第二个向量。即通过在每个向量中加入描述其位置或意义的向量来提高卷积神经网络计算时的可参考因素,加快收敛速度。

需要说明的是,对第一动态向量序列进行的预训练可以在前述对第一向量序列分批次之前执行,也可以在其之后执行,在此不作限制。

在一种实施方式中,可以预先收集历史病毒的数据,并提取出病毒特征,在对动态行为数据进行特征提取之前,先根据病毒特征筛除动态行为数据中与病毒特征不匹配的无意义数据,以保留与病毒相关性较强的动态行为数据,减少后续卷积神经网络进行特征提取的计算量,提高收敛速度。

例如,当动态行为数据是根据预设的打桩点获取的时,动态行为是通过对打桩点对应的api进行编码得到的。此时,可以先基于历史病毒数据,确定与病毒相关的敏感api。例如,这些api如果涉及到短信和/或电话权限以及系统服务调用短信和/或电话权限等,则认为是与病毒相关的敏感api。然后,将这些敏感api涉及到的数据作为病毒特征,判定涉及到这些敏感api的动态行为数据即与病毒特征匹配的动态行为数据为有意义数据,判定不涉及这些敏感api即与病毒特征不匹配的动态行为数据为无意义数据。

需要说明的是,对动态行为数据进行的无意义数据的筛除,可以在将动态行为数据转化为第一动态向量序列之前执行,也可以在其之后执行,在此不作限制。

在本实施例中,采用卷积神经网络对动态行为数据进行特征提取是先通过卷积层的特征向量序列的提取,再通过池化层的降维来实现的,下面分别进行介绍:

卷积神经网络的卷积层对动态行为数据进行特征提取时,需要通过预设的卷积核来进行特征的抽取。本实施例中,设置在卷积神经网络中,采用多个不同尺寸的卷积核,对动态行为数据进行特征提取,获得多组特征向量来进行后续的降维,以提高对不同范围内特征的提取能力,尽量保证有关联的向量能分入提取的同一组特征中,提高特征的泛化能力。

举例来讲,假设动态行为数据转化后,输入的每批次第一动态向量序列的批次长度为100,向量尺寸为64,则可以设置1*64、3*64、5*64、7*64这四个卷积核来对每批次第一动态向量序列进行特征向量序列的提取。

进一步,由于沙箱环境和真实用户的环境是不一样的,真实用户的操作顺序和沙箱用脚本打出来的点可能顺序不同,因此,可以设置多个不同尺寸的卷积核包括第一动态向量序列中的每个向量的尺寸相同的一维卷积核,以克服动态行为数据获取时,真机打点和沙箱打点顺序不同造成的影响。举例来讲,假设动态行为数据转化后,输入的每批次第一动态向量序列的批次长度为100,向量尺寸为64,则设置的卷积核中包括1*64这个卷积核,以保证提取的特征中有单个向量为一组的特征向量序列。

另外,沙箱打出来的点是以日志形式呈现的,对于每一行的打点情况进行记录。例如,当第一行、第三行和第五行等出现打点,会把第一行、第三行和第五行的打点数据记录下来,而未出现打点的第二行、第四行等则会记录为空,从而形成动态行为数据。然而,真实用户操作时可能不存在第二行、第四行等为空的情况,因此,这样得到的动态行为数据就加大了时序对检测结果的影响。因此,为了克服真机打点和沙箱打点顺序不同造成的影响,在形成动态行为数据时,也可以将记录为空的数据均剔除,使得动态行为数据仅涵盖出现打点的行对应的数据,例如上述第一行、第三行和第五行等处的打点数据。

在通过卷积层提取出特征向量序列后,输入池化层对特征向量序列进行降维获得降维向量序列,并合并降维向量序列,获得目标动态向量。例如,可以采用最大池化方式(max-pooling),具体合并降维向量序列可以是通过concat函数来实现。

在本实施例中,卷积神经网络还包括输出层,用于基于目标动态向量,得到所述目标应用程序的恶意检测结果。具体来讲,输出层可以包括全连接层和分类器。可以理解的是,卷积神经网络的卷积层和池化层等作用是将原始数据映射到隐层特征空间中,全连接层的目的是将网络学习到的特征映射到样本的标记空间中,将经过卷积层和池化层处理得到的特征进行整合,获取这些特征具有的高层含义,以便用于后续分类。

本实施例中,可以将目标动态向量作为全连接层的输入,全连接层的输出为一个t×1的向量,作为分类器的输入。其中,t为类别数。分类器用于基于全连接层的输出向量得到样本属于每个类别的概率。分类器的输出也是一个t×1的向量,分类器输出向量中每个元素的值的大小范围为0到1之间,且各元素的值相加等于1。

需要说明的是,分类的类别数根据实际需要设置。例如,在一种应用场景中,需要检测应用程序是否携带有病毒即是否为恶意应用程序,则属于二分类,此时,应用程序的恶意检测结果为目标应用程序是否为恶意应用程序的概率。

在一种实施方式中,全连接层可以采用highwaynetwork结构。通过采用highwaynetwork结构,将层表示为学习残差函数。这样能够通过单纯地增加网络深度,来提高网络性能。当然,全连接层也可以采用其他网络结构,在此不作限制。

在一种实施方式中,分类器可以采用softmax函数。当然,也可以采用其他计算恶意检测结果的函数,在此不作限制。

在一种实施方式中,为了提高卷积神经网络训练过程的收敛速度,上述基于所述目标动态向量,得到所述目标应用程序的恶意检测结果的具体过程可以包括:获取目标应用程序的标识信息,将目标应用程序的标识信息转化为标识向量,将该标识向量与目标动态向量进行拼接,得到特征动态向量;基于特征动态向量,得到目标应用程序的恶意检测结果。例如,目标动态向量为一个128维的向量,标识向量为一个64维的向量,则拼接后得到的特征动态向量为一个192维的向量。在一种实施方式中,目标应用程序的标识信息可以包括该应用程序的名称和/或包名。这样能够极大地提高卷积神经网络训练过程的收敛速度。当标识信息包括目标应用程序的名称和包名时,可以通过设置嵌入层(embedding)分别将目标应用程序的名称和包名转化为向量。

可以理解的是,当目标应用程序的标识信息为应用程序的名称时,标识向量即为应用程序名称转化成的向量;当目标应用程序的标识信息为应用程序的包名时,标识向量即为应用程序包名转化成的向量;当目标应用程序的标识信息包括应用程序的名称和包名时,则标识向量包括应用程序名称转化成的向量以及应用程序的包名转化成的向量。

需要说明的是,在卷积神经网络的训练过程中,也需要相应设置嵌入层与拼接层,以嵌入标识向量并将标识向量与目标动态向量进行拼接,训练样本也包括每个应用程序的标识信息。

在一种实施方式中,为了提高检测结果的准确性,上述基于所述目标动态向量,得到所述目标应用程序的恶意检测结果的具体过程可以包括:获取目标应用程序的静态代码数据,所述静态代码数据为解析所述目标应用程序安装包的代码文件得到的;采用预先训练好的第二卷积神经网络对所述静态代码数据进行特征提取,获得目标静态向量;根据所述目标动态向量和所述目标静态向量,得到所述目标应用程序的恶意检测结果。需要说明的是,为了便于区别,本实施方式中,将上述对动态行为数据进行特征提取,获得目标动态向量的卷积神经网络作为第一卷积神经网络,将对静态代码数据进行特征提取,获得目标静态向量的卷积神经网络作为第二卷积神经网络。

其中,静态代码数据可以为目标应用程序安装包的二进制文件。第二卷积神经网络包括第一子网络以及第二子网络。第一子网络用于目标应用安装包的静态代码数据分为多个特征序列,并提取每个特征序列对应的局部关键信息。第二子网络用于基于第一子网络提取的每个特征序列对应的局部关键信息进一步提取更全面的特征参数,获得目标静态向量。

所述第一子网络基于所述静态代码数据,生成n个特征序列,并分别对每个所述特征序列进行预设的第一特征参数提取处理,得到n个第一特征向量。

本实施例中,n为大于或等于2的整数。当静态代码数据为目标应用安装包的二进制文件时,基于静态代码数据,生成n个特征序列的具体实施过程可以有多种,下面主要介绍四种实施方式。

第一种,将二进制文件划分为n个二进制序列;对n个二进制序列中每个二进制序列进行编码,得到所述n个特征序列。

第二种,将二进制文件划分为n个二进制序列;对n个二进制序列中每个二进制序列进行编码,得到n个第一编码序列;对n个第一编码序列中每个第一编码序列进行降维处理,得到n个特征序列,其中,每个特征序列的维数低于相应的第一编码序列的维数。

具体来讲,在上述第一种和第二种方式中,将二进制文件划分为n个二进制序列的划分方式可以根据实际需要设置。作为一种实施方式,可以间隔预设字节数划分,预设字节数可以根据实际需要设置,例如,假设ai表示第i个字节,当预设字节数为50000时,将a1~a50000划分为一个二进制序列,将a50001~a100000划分为一个二进制序列,以此类推。作为另一种实施方式,可以按照第一预设步长以及第一预设长度划分,第一预设步长和第一预设长度均可以根据需要设置,例如,假设ai表示第i个字节,当第一预设步长为10000个字节,第一预设长度为50000个字节时,将a1~a50000划分为一个二进制序列,将a10001~a60000划分为一个二进制序列,以此类推。

第三种,对二进制文件进行编码,得到第二编码序列,将第二编码序列划分为n个特征序列。

第四种,对二进制文件进行编码,得到第二编码序列,对第二编码序列进行降维处理,得到目标序列;将目标序列划分为n个特征序列。第二编码序列的编码数即为第二编码序列的维数,目标序列的维数低于第二编码序列的维数。具体降维倍数可以根据实际需要设置,例如可以降低100倍或50倍等,可以将第二编码序列由几百万维降为几万维。

同理,上述第三种和第四种方式中,将第二编码序列划分为n个特征序列的划分方式可以根据实际需要设置。作为一种实施方式,可以间隔预设编码数划分,预设编码数可以根据实际需要设置。作为另一种实施方式,可以按照第二预设步长以及第二预设长度划分,第二预设步长和第二预设长度均可以根据需要设置。

例如,第二编码序列为500万维,通过降维处理将第二编码序列转换为9万维的目标序列,然后再对9万维的目标序列进行划分。例如,当间隔预设编码数划分,且预设编码数为1000时,可以将目标序列划分为90个1000维的特征序列。

在上述几种实施方式中,编码方式可以有多种,具体可以根据需要设置。例如,可以将每个字节的二进制数转化为十进制数,则每个字节可以转化为一个0~255范围内的数。例如,对应用程序安装包的二进制文件中部分二进制数对应的十六进制编码为“\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff”,对应转化后的编码为“144,0,3,0,0,0,4,0,0,0,255,255”。

具体来讲,上述降维处理的具体实施过程可以为:采用预设算法对第一编码序列或第二编码序列进行降维。预设算法可以为:双三次插值算法、最邻近插值算法或双线性插值算法等。对编码序列进行降维后再进行后续处理,有利于提高处理速度,相应地,也可以减少神经网络系统的训练时间,降低资源占用。

在本发明的其他实施例中,当静态代码数据为根据目标应用安装包的代码文件得到的操作码序列时,也可以基于操作码序列,得到n个特征序列,从而再对每个特征序列进行后续处理。

为了便于区分,将上述第一卷积神经网络包括的卷积层、池化层和输出层作为第一卷积层、第一池化层和第一输出层。可选的,第一子网络包括:输入层、第二卷积层和第二池化层。输入层、第二卷积层以及第二池化层依次连接。可以理解的是,第二卷积层的作用在于基于预先设置的预设数量的卷积核与每个特征序列做卷积,得到卷积特征,并将卷积特征输入一激活函数进行激活。第二池化层的作用在于进一步对激活后的卷积特征进行降维以及特征提取。

此时,上述第一子网络基于所述静态代码数据,生成n个特征序列,并分别对每个所述特征序列进行预设的第一特征参数提取处理,得到n个第一特征向量的过程可以包括:输入层执行上述基于静态代码数据,生成n个特征序列;第二卷积层分别对n个特征序列中每个特征序列进行一维卷积处理,得到该特征序列的第一特征信息,并通过预设的第一激活函数对第一特征信息进行激活,得到激活后的第一特征信息;第二池化层分别对所述n个特征序列中每个特征序列对应的激活后的第一特征信息进行池化处理,得到n个第一特征向量。

可选的,上述第一激活函数可以为relu函数。relu激活函数可以较好地防止梯度衰减问题。当然,也可以根据需要采用其他激活函数。

可选的,上述第二卷积层分别对所述n个特征序列中每个特征序列进行一维卷积处理,得到该特征序列的第一特征信息具体可以包括:第二卷积层针对所述n个特征序列中每个特征序列,执行以下步骤:对所述特征序列进行一维卷积处理,得到第一处理结果;通过预设的第二激活函数对所述第一处理结果进行激活,得到第二处理结果;将所述第一处理结果和所述第二处理结果的乘积,作为所述特征序列的第一特征信息。其中,第二激活函数可以采用sigmoid函数。这样就可以形成一种gate结构,此时,这种gate结构可以更好地控制局部特征信息的传递,提高了局部特征的表示能力。

需要说明的是,在上述一维卷积处理中,一维卷积核的数量、尺寸和步长可以根据实际需要设置。本实施例可以通过采用较大尺寸的一维卷积核和步长,以降低计算和存储压力。

可选的,第二池化层分别对所述n个特征序列中每个特征序列对应的激活后的第一特征信息进行池化处理,得到所述n个第一特征向量具体可以包括:第二池化层通过最大池化方式(max-pooling)分别对所述n个特征序列中每个特征序列对应的激活后的第一特征信息进行池化处理,得到所述n个第一特征向量。采用max-pooling引入了不变性,同时进行了降维和局部关键信息提取,防止过拟合。

在第一子网络处理完成后,第二子网络将所述n个第一特征向量进行拼接,对拼接后得到的第二特征向量进行预设的第二特征参数提取处理,得到目标静态向量。

作为一种实施方式,第二子网络可以包括第三卷积层、第三池化层和第二输出层,第三卷积层、第三池化层和第二输出层依次连接。

此时,上述的第二子网络将所述n个第一特征向量进行拼接,对拼接后得到的第二特征向量进行预设的第二特征参数提取处理,得到目标静态向量,具体可以包括:第三卷积层将所述n个第一特征向量进行拼接,得到第二特征向量,对所述第二特征向量进行一维卷积处理,得到所述第二特征向量的第二特征信息,并通过预设的第三激活函数对所述第二特征信息进行激活,得到激活后的第二特征信息;第三池化层对所述激活后的第二特征信息进行池化处理,得到第三特征向量;第二输出层基于所述第三特征向量,得到目标静态向量。

其中,第三激活函数也可以采样relu函数。同样,relu激活函数可以较好地防止梯度衰减问题。

可选的,上述对所述第二特征向量进行一维卷积处理,得到所述第二特征向量的第二特征信息具体可以包括:对所述第二特征向量进行一维卷积处理,得到第三处理结果;通过预设的第四激活函数对所述第三处理结果进行激活,得到第四处理结果;将所述第三处理结果和所述第四处理结果的乘积,作为所述第二特征向量的第二特征信息。其中,第四激活函数可以采用sigmoid函数。这样就可以形成一种gate结构,此时,这种gate结构可以更好地控制全局特征信息的传递,提高了全局特征的表示能力。

可选的,所述第三池化层对所述激活后的第二特征信息进行池化处理,得到第三特征向量,包括:所述第三池化层通过平均池化方式(avg-pooling)对所述激活后的第二特征信息进行池化处理,得到目标静态向量。采用avg-pooling是为了兼顾全局信息与局部信息,使模型能够充分利用每个特征序列的特征。

具体来讲,第二输出层即为第二卷积神经网络的全连接层,可以将第三特征向量作为该全连接层的输入,全连接层的输出作为目标静态向量。在一种实施方式中,全连接层可以采用highwaynetwork结构。通过采用highwaynetwork结构,将层表示为学习残差函数。这样能够通过单纯地增加网络深度,来提高网络性能。当然,全连接层也可以采用其他网络结构,在此不作限制。

此后,就可以根据目标动态向量和目标静态向量,得到目标应用程序的恶意检测结果。具体来讲,可以先合并目标动态向量和目标静态向量,生成合并向量,再根据合并向量输出目标应用程序的恶意检测结果。具体可以是通过concat函数来实现目标动态向量和目标静态向量的合并,可以是通过softmax函数来计算目标应用是否为恶意应用的概率作为恶意检测结果。当然,也可以采用其他合并函数或其他计算恶意检测结果的函数,在此不作限制。

本发明实施例提供的用于识别恶意应用程序的方法中,动态行为数据为通过在沙箱环境中运行目标应用程序并对应用程序在运行过程中的行为进行监控,得到的行为数据,能够获取更多的应用程序的动态行为,使得获取到的用于进行恶意检测的行为更加多样化。另外,通过卷积神经网络来对动态行为数据进行识别,有利于得到更准确的恶意检测结果。而且,可以识别出本身结构没有问题但是会从云端下载恶意代码的恶意应用程序。

另外,本发明第二实施例还提供了一种用于识别恶意应用程序的装置。如图3所示,该装置包括:

获取装置301,用于获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据;

识别模块302,用于采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

进一步地,所述在沙箱环境中运行所述目标应用程序,包括:在所述目标应用程序在沙箱中运行过程中,模拟用户的操作,以触发所述目标应用程序产生行为数据。

进一步地,所述获取装置301具体用于:根据预设打桩点,获取所述目标应用程序在沙箱中运行过程中的动态行为数据,其中,所述预设打桩点为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

进一步地,所述识别模块302用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列分批次输入所述卷积神经网络进行特征提取,获得目标动态向量。

进一步地,所述将所述第一动态向量序列分批次输入所述卷积神经网络,包括:按照预设的批次长度和间隔参数,将所述第一动态向量序列分批次输入所述卷积神经网络,其中,每批次第一动态向量的向量数量等于所述批次长度,相邻批次的第一动态向量的起始向量之间间隔的向量数量等于所述间隔参数,所述批次长度大于所述间隔参数。

进一步地,所述识别模块302用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列中的每条向量预训练为采用其周边向量进行描述的向量,生成第二动态向量序列;采用所述卷积神经网络对所述第二动态向量序列进行特征提取,获得目标动态向量。

进一步地,所述识别模块302用于:根据预设的病毒特征,筛除所述动态行为数据中与所述病毒特征不匹配的无意义数据;采用所述卷积神经网络对筛除所述无意义数据后的所述动态行为数据进行特征提取,获得目标动态向量。

进一步地,所述识别模块302用于:在所述卷积神经网络中,采用多个不同尺寸的卷积核,对所述动态行为数据进行特征提取,获得多组特征向量;根据所述多组特征向量,获得所述目标动态向量。

进一步地,所述多个不同尺寸的卷积核,包括:与所述动态行为数据中的每个向量的尺寸相同的一维卷积核。

进一步地,所述识别模块302用于:获取所述目标应用程序的标识信息,将所述目标应用程序的标识信息转化为标识向量;将所述标识向量与所述目标动态向量进行拼接,得到特征动态向量;基于所述特征动态向量,得到所述目标应用程序的恶意检测结果。

需要说明的是,本发明实施例所提供的用于识别恶意应用程序的装置,其具体实现及产生的技术效果和前述用于识别恶意应用程序的方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述用于识别恶意应用程序的方法实施例中相应内容。

本发明第三实施例还提供了一种电子设备,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述电子设备执行上述第一实施例提供的用于识别恶意应用程序的方法的步骤。

图4示出了一种示例性电子设备400的模块框图。如图4所示,电子设备400包括存储器402、存储控制器404,一个或多个(图中仅示出一个)处理器406、外设接口408、网络模块410、输入输出模块412以及显示模块414等。这些组件通过一条或多条通讯总线/信号线416相互通讯。

存储器402可用于存储软件程序以及模块,如本发明实施例中的用于识别恶意应用程序的方法对应的程序指令/模块,处理器406通过运行存储在存储器402内的软件程序以及模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的用于识别恶意应用程序的方法。

存储器402可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。处理器406以及其他可能的组件对存储器402的访问可在存储控制器404的控制下进行。

外设接口408将各种输入/输出装置耦合至处理器406以及存储器402。在一些实施例中,外设接口408,处理器406以及存储控制器404可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

网络模块410用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。

输入输出模块412用于提供给用户输入数据实现用户与电子设备的交互。所述输入输出模块412可以是,但不限于,鼠标、键盘和触控屏幕等。

显示模块414在电子设备400与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示模块914可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。

可以理解,图4所示的结构仅为示意,电子设备400还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。

本发明一实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一实施例提供的用于识别恶意应用程序的方法的步骤。

所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,本说明书中每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

本发明公开了a1、一种用于识别恶意应用程序的方法,所述方法包括:获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据;采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

a2、根据a1所述的方法,所述在沙箱环境中运行所述目标应用程序,包括:在所述目标应用程序在沙箱中运行过程中,模拟用户的操作,以触发所述目标应用程序产生行为数据。

a3、根据a1所述的方法,所述获取目标应用程序的动态行为数据,包括:根据预设打桩点,获取所述目标应用程序在沙箱中运行过程中的动态行为数据,其中,所述预设打桩点为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

a4、根据a1所述的方法,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列分批次输入所述卷积神经网络进行特征提取,获得目标动态向量。

a5、根据a4所述的方法,所述将所述第一动态向量序列分批次输入所述卷积神经网络,包括:按照预设的批次长度和间隔参数,将所述第一动态向量序列分批次输入所述卷积神经网络,其中,每批次第一动态向量的向量数量等于所述批次长度,相邻批次的第一动态向量的起始向量之间间隔的向量数量等于所述间隔参数,所述批次长度大于所述间隔参数。

a6、根据a1所述的方法,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列中的每条向量预训练为采用其周边向量进行描述的向量,生成第二动态向量序列;采用所述卷积神经网络对所述第二动态向量序列进行特征提取,获得目标动态向量。

a7、根据a1所述的方法,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:根据预设的病毒特征,筛除所述动态行为数据中与所述病毒特征不匹配的无意义数据;采用所述卷积神经网络对筛除所述无意义数据后的所述动态行为数据进行特征提取,获得目标动态向量。

a8、根据a1所述的方法,所述采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,包括:在所述卷积神经网络中,采用多个不同尺寸的卷积核,对所述动态行为数据进行特征提取,获得多组特征向量;根据所述多组特征向量,获得所述目标动态向量。

a9、根据a8所述的方法,所述多个不同尺寸的卷积核,包括:与所述动态行为数据中的每个向量的尺寸相同的一维卷积核。

a10、根据a1所述的方法,所述基于所述目标动态向量,得到所述目标应用程序的恶意检测结果,包括:获取所述目标应用程序的标识信息,将所述目标应用程序的标识信息转化为标识向量;将所述标识向量与所述目标动态向量进行拼接,得到特征动态向量;基于所述特征动态向量,得到所述目标应用程序的恶意检测结果。

本发明公开了b11、一种用于识别恶意应用程序的装置,所述装置包括:

获取装置,用于获取目标应用程序的动态行为数据,所述动态行为数据为通过在沙箱环境中运行所述目标应用程序并对所述应用程序在运行过程中的行为进行监控,得到的行为数据;

识别模块,用于采用预先训练好的卷积神经网络对所述动态行为数据进行特征提取,获得目标动态向量,并基于所述目标动态向量,得到所述目标应用程序的恶意检测结果。

b12、根据b11所述的装置,所述在沙箱环境中运行所述目标应用程序,包括:在所述目标应用程序在沙箱中运行过程中,模拟用户的操作,以触发所述目标应用程序产生行为数据。

b13、根据b11所述的装置,所述获取装置具体用于:根据预设打桩点,获取所述目标应用程序在沙箱中运行过程中的动态行为数据,其中,所述预设打桩点为通过对电子设备的目标系统服务进行打桩处理得到的打桩点。

b14、根据b11所述的装置,所述识别模块用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列分批次输入所述卷积神经网络进行特征提取,获得目标动态向量。

b15、根据b14所述的装置,所述将所述第一动态向量序列分批次输入所述卷积神经网络,包括:按照预设的批次长度和间隔参数,将所述第一动态向量序列分批次输入所述卷积神经网络,其中,每批次第一动态向量的向量数量等于所述批次长度,相邻批次的第一动态向量的起始向量之间间隔的向量数量等于所述间隔参数,所述批次长度大于所述间隔参数。

b16、根据b11所述的装置,所述识别模块用于:将所述动态行为数据转化为向量表示的第一动态向量序列;将所述第一动态向量序列中的每条向量预训练为采用其周边向量进行描述的向量,生成第二动态向量序列;采用所述卷积神经网络对所述第二动态向量序列进行特征提取,获得目标动态向量。

b17、根据b11所述的装置,所述识别模块用于:根据预设的病毒特征,筛除所述动态行为数据中与所述病毒特征不匹配的无意义数据;采用所述卷积神经网络对筛除所述无意义数据后的所述动态行为数据进行特征提取,获得目标动态向量。

b18、根据b11所述的装置,所述识别模块用于:在所述卷积神经网络中,采用多个不同尺寸的卷积核,对所述动态行为数据进行特征提取,获得多组特征向量;根据所述多组特征向量,获得所述目标动态向量。

b19、根据b18所述的装置,所述多个不同尺寸的卷积核,包括:与所述动态行为数据中的每个向量的尺寸相同的一维卷积核。

b20、根据b11所述的装置,所述识别模块用于:获取所述目标应用程序的标识信息,将所述目标应用程序的标识信息转化为标识向量;将所述标识向量与所述目标动态向量进行拼接,得到特征动态向量;基于所述特征动态向量,得到所述目标应用程序的恶意检测结果。

本发明公开了c21、一种电子设备,包括处理器和存储器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时使所述电子设备执行a1-a10中任一项所述方法的步骤。

本发明公开了d22、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现a1-a10中任一项所述方法的步骤。

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