本发明一般涉及信息安全
技术领域:
:,具体涉及一种恶意程序识别方法、装置、电子设备及存储介质。
背景技术:
::现代社会中,智能终端比如手机、平板电脑等电子设备随处可见,给人们的日常生活带来了极大地便利。智能终端通过运行各种应用程序(application),来实现某项或多项特定功能。利用软硬件漏洞对智能终端进行攻击,达到窃取信息和恶意控制的目的。为了监控这类攻击行为,在智能终端上部署一些监控手段,当发生威胁情况时,能够及时鉴别和处理恶意程序,降低对智能终端的危害。目前,现有技术通过流量分析和静态分析来识别恶意程序。具体的,流量分析方式包括基于黑名单过滤恶意域名、使用规则匹配恶意外连流量以及利用机器学习检测恶意流量间共性来鉴别恶意流量,而静态分析方式包括对目标程序权限、api调用和程序流程图进行分析得到特征向量,并根据预先训练的模型识别出恶意程序。基于黑名单过滤恶意域名,只能识别连接已知恶意网站时的恶意外连流量,对于域名变化没有任何感知;使用规则匹配恶意外连流量,需要人工分析样本,人力消耗巨大,且难以检测变种的恶意外连流量,尤其对于不涉及网络流量的恶意程序则无法判断;而机器学习检测恶意流量,很多恶意程序是通过增加与正常流量相似的字段和内容来伪装自己的出链流量,不易与正常流量进行区分,导致识别精度不高;静态分析方式不能直接反映恶意程序的行为模式,误报率大,且容易被攻击者利用混淆代码、花指令和加壳等手段进行对抗,使之失效。技术实现要素:鉴于现有技术中的上述缺陷或不足,期望提供一种恶意程序识别方法、装置、电子设备及存储介质,能够动态、高效地对恶意程序进行检测和识别,降低误报率,保障电子设备的安全。第一方面,本申请提供一种恶意程序识别方法,所述方法包括:获取待检测程序的第一系统调用日志;转化所述第一系统调用日志为第一加权有向图;基于预先构建的恶意代码分类簇检测所述第一加权有向图,以确定所述待检测程序是否为恶意程序。第二方面,本申请提供一种恶意程序识别装置,所述装置包括:获取模块,配置用于获取待检测程序的第一系统调用日志;转化模块,配置用于转化所述第一系统调用日志为第一加权有向图;确定模块,配置用于基于预先构建的恶意代码分类簇检测所述第一加权有向图,以确定所述待检测程序是否为恶意程序。第三方面,本申请提供一种电子设备,所述电子设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如第一方面所述的恶意程序识别方法。第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现如第一方面所述的恶意程序识别方法的步骤。综上,本申请实施例提供的恶意程序识别方法、装置、电子设备及存储介质,由于每个恶意程序执行的恶意行为都需要进行系统调用才能实现其恶意目的,因此本申请实施例通过获取待检测程序的第一系统调用日志,并转化该第一系统调用日志为第一加权有向图,从操作系统层面抓取行为特征,将恶意行为的识别问题转换为加权有向图的分类问题,即基于预先构建的恶意代码分类簇检测第一加权有向图,以确定出待检测程序是否为恶意程序,从而动态、高效地对恶意程序进行检测和识别,降低了误报率,同时保障了电子设备的安全。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为本申请实施例提供的一种恶意程序识别方法的基本流程示意图;图2为本申请实施例提供的一种第一加权有向图的具体示例;图3为本申请实施例提供的一种分类模型学习的流程示意图;图4为本申请实施例提供的一种第二加权有向图的具体示例;图5为本申请实施例提供的一种第二加权有向图的第一子树结构示意图;图6为本申请实施例提供的一种第二加权有向图的第二子树结构示意图;图7为本申请实施例提供的一种恶意程序识别装置的基本结构示意图;图8为本申请实施例提供的另一种恶意程序识别装置的结构示意图;图9为本申请实施例提供的一种计算机系统。具体实施方式为了使本
技术领域:
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。为了便于理解和说明,下面通过图1至图9详细的阐述本申请实施例提供的恶意程序识别方法、装置、电子设备及存储介质。请参考图1,其为本申请实施例提供的一种恶意程序识别方法的基本流程示意图,该方法包括以下步骤:s101,获取待检测程序的第一系统调用日志。需要说明的是,由于恶意程序的系统调用行为和良性程序相比存在较大的差异,本申请实施例从操作系统层面抓取行为特征,适应多变种的恶意程序,通过实实在在地执行恶意程序的每一条指令得到系统调用日志,能够动态地识别恶意程序。当然,本申请实施例还可以通过污点分析或者控制流图等方式对恶意程序的行为进行抓取,实现更细粒度的监控。举例说明,在待检测程序的执行过程中,利用linux内核的strace工具将待检测程序产生的所有系统调用都自动保存下来,形成第一系统调用日志,比如为:clock_gettime(clock_monotonic,{1066,546005435})=0read(11,“w”,16)=1clock_gettime(clock_monotonic,{1067,994972273})=0getuid32()=10814clock_gettime(clock_realtime,{1431910070,997161378})=0getuid32()=10814ioct1(9,binder_write_read,0xbfacdcc8)=0ioct1(9,binder_write_read,0xbfacdcc8)=0getuid32()=10814clock_gettime(clock_monotonic,{1068,10819539})=0ioct1(9,binder_write_read,0xbfacdb98)=0ioct1(9,binder_write_read,0xbfacdb98)=0getuid32()=10814fcnt164(89,f_getfd)=0s102,转化第一系统调用日志为第一加权有向图。具体的,将系统调用名分别看作一个节点,比如clock_gettime为一个节点、read为另一个节点等等,系统调用序列看作两个系统调用节点之间的连接边,由此将第一系统调用日志转化为第一加权有向图,即g={v,e}(1)式(1)中,v表示所有系统调用的集合,表示一组系统调用序列;e表示边的权重,如图2所示,其为本申请实施例提供的一种第一加权有向图的具体示例。每个节点的出度和入度之和表示系统调用出现的次数,而边的权重表示该调用序列在系统调用日志中出现的次数。以节点clock_gettime为例,由于clock_gettime→read有1次、故边的权重e为1,clock_gettime→ioct1有1次、故边的权重e也为1,以及clock_gettime→getuid32有2次、故边的权重e为2,所以节点clock_gettime的出度为4。同理可得,节点clock_gettime的入度为3。s103,基于预先构建的恶意代码分类簇检测第一加权有向图,以确定待检测程序是否为恶意程序。具体的,本申请实施例通过获取分类模型输出结果中的恶意代码分类簇,并计算第一加权有向图与恶意代码分类簇对应的第二加权有向图之间的相似度,当相似度大于第二预设阈值时,确定待检测程序的类型为恶意程序。本申请实施例中将待检测程序的加权有向图直接与恶意代码的加权有向图进行比较,具有针对性,从而能够提高处理效率,快速地得出识别结果。同样的,本申请实施例也可以计算第一加权有向图与分类模型输出结果中所有分类簇对应的加权有向图之间的相似度,所有分类簇包括良性代码分类簇和恶意代码分类簇。另外,本申请的其它实施例在确定出待检测程序的类型之后,还可以划分安全等级,并出具相应的威胁报告,用于提示安全人员进行针对性防护。需要说明的是,本申请实施例根据预先配置恶意代码分类簇的分类模型能够抽取待检测程序的高维行为特征,对恶意程序的识别准确率高。其中,分类还可以包括但不限于朴素贝叶斯模型(naivebayesianmodel,nbm)、决策树模型(decisiontreemodel)、神经网络模型(neuralnetworks,nn)和层次聚类模型等,对此不再赘述。同时,分类模型的训练过程可以在云端进行,对智能终端的资源消耗小,使其能够快速响应待检测程序的识别。为便于理解本申请实施例中分类模型的学习过程,请参考图3所示,其为本申请实施例提供的一种分类模型学习的流程示意图,该方法包括以下步骤:s301,获取与数据集对应的第二系统调用日志,该数据集包括多个良性程序样本和多个恶意程序样本。比如,本申请实施例通过获取智能终端上运行的典型良性程序样本和恶意程序样本来构建数据集,通过程序样本的运行得到与数据集对应的第二系统调用日志。s302,基于由第二系统调用日志构造的第二加权有向图,计算数据集对应的相似度矩阵,该相似度矩阵包括多个核值。需要说明的是,为了区分恶意程序的系统调用加权有向图和良性程序的系统调用加权有向图,本申请实施例通过图核来度量图结构的相似度。图核是直接面向图结构的数据,既能够保留核函数计算高效的优势,又能够包含图结构数据在希尔伯特高维空间的结构化信息。当存在多个程序样本时,每个程序样本的系统调用日志可以对应一个第二加权有向图。本申请实施例通过分解每个第二加权有向图得到对应的若干子树结构,并根据该子树结构设置第二加权有向图中每个节点对应的节点编码;进而,根据节点编码计算两两第二加权有向图的核值,该核值组成相似度矩阵。子树结构是指从某一有向图的节点集和边集抽取的子集所构成的图形结构。也可以称为树的子结构,目录的子结构。举例说明,程序样本a对应的第二加权有向图为g1(v1,e1)和程序样本b对应的第二加权有向图g2(v2,e2),假设一种图分解方式f,分解得到与第二加权有向图g1(v1,e1)对应的子树结构为和与第二加权有向图g2(v2,e2)对应的子树结构为其中图分解方式f例如可以是按照强连通分解方法确定的,s1,1表示第二加权有向图g1(v1,e1)中以节点1为根节点,而所构成的节点集是g1(v1,e1)的节点集的子集,连接该子集的边集是g1(v1,e1)的边集的子集。根据两个子树结构计算g1(v1,e1)和g2(v2,e2)的核值k为式(2)中,表示第二加权有向图g1(v1,e1)中以节点n1为根节点的子树结构,表示第二加权有向图g2(v2,e2)中以节点n2为根节点的子树结构;n1和n2取正整数,具体数值由第二加权有向图中的节点数量确定,即n1表示第二加权有向图g1(v1,e1)中节点的个数,n2表示第二加权有向图g2(v2,e2)中节点的个数。式(3)是狄拉克(dirac)核函数,即如果和是同构的(isomorphic),值为1,反之则为0。本申请实施例通过计算数据集中两两加权有向图的核值,就可以得到一个对称矩阵s,该对称矩阵s即为整个数据集的相似度矩阵。为便于理解本申请实施例的子树结构形成过程,以图4所示的一个第二加权有向图为例进行说明。首先对第二加权有向图中每个节点进行标签编码,并构造一个字典记录节点与标签编码的映射关系,其中标签即系统调用名,比如系统调用名clock_gettime的标签编码为l1、系统调用名read的标签编码为l2、系统调用名getuid32的标签编码为l3、系统调用名ioct1的标签编码为l4等等;然后,分别以第二加权有向图的每个节点为根,分解得到与根关联的若干子树结构,比如图5所示,以clock_gettime节点为根,关联节点包括read节点和getuid32节点;如图6所示,以read节点为根,关联节点包括clock_gettime节点;进而,根据作为根的节点对应的标签编码和与根关联的节点对应的标签编码组合生成节点编码,并定义一个哈希运算用于对节点编码进行压缩,更新第二加权有向图中作为根的节点对应的标签编码为节点编码,从而保留了节点之间的结构化信息。比如,经过更新后的节点编码为:如果节点编码相同,则两个子树结构是同构的,即由此,本申请实施例能够根据分解出的所有子树结构,将原有加权有向图结构中的每一个标签编码都更新一遍,得到新的节点编码。s303,根据谱聚类算法对相似度矩阵进行分类,得到恶意代码分类簇。具体的,本申请实施例首先基于相似度矩阵得到数据集对应的邻接矩阵,并根据邻接矩阵和第二加权有向图对应的度矩阵构建标准化的拉普拉斯矩阵;然后,计算拉普拉斯矩阵的最小非零特征值对应的特征向量,按行标准化特征向量组成的矩阵得到特征矩阵;进而,基于特征矩阵得到若干行样本,并对若干行样本进行聚类得到分类簇,该分类簇包括恶意代码分类簇。举例说明,由于邻接矩阵w和相似度矩阵s具有相同的结构,因此本申请实施例通过遍历相似度矩阵s中的每一个核值kij,当核值kij大于第一预设阈值ε时,则在邻接矩阵w中与核值kij对应的位置置为零;以及,当核值kij小于或者等于第一预设阈值ε时,则在邻接矩阵w中与核值kij对应的位置置为第一预设阈值ε。即,邻接矩阵w中的每一个元素值wij为式(4)中,kij表示相似度矩阵s中的核值,ε表示第一预设阈值,具体数值根据实际需要进行设定。需要说明的是,由于相似度矩阵s为对称矩阵,显然邻接矩阵w也为对称矩阵。而第二加权有向图对应的度矩阵d为式(5)中,对于一个图g(v,e)而言,每个节点的度d为出度和入度的和,所有节点的度组成的矩阵即为度矩阵d。显然,度矩阵d是一个对角矩阵。仍以图4所示的第二加权有向图为例,clock_gettime节点的度为4,即d1=4。那么,拉普拉斯矩阵l由度矩阵d和邻接矩阵w相减得到,即l=d–w(6)计算标准化后的拉普拉斯矩阵d-1/2ld-1/2的最小k1个非零特征值对应的特征向量f,按行标准化特征向量f组成的矩阵得到n×k1维的特征矩阵f,其中n表示样本的数量,n和k1取任意正整数;进而,分别提取特征矩阵f的每一行得到n个k1维的行样本,并用输入的聚类方法对该若干行样本进行聚类,聚类维数k2,确定分类簇c其中聚类方法可以包括但不限于k-means聚类,k2取任意正整数,根据实际需要进行设定。基于前述实施例,本申请实施例提供一种电子设备,该电子设备可以应用于图1~6对应的实施例提供的恶意程序识别方法中,具体包括一个或多个处理器,用于存储一个或多个程序的存储器;当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述的恶意程序识别方法。需要说明的是,本申请实施例中所涉及的电子设备可以包括但不限于个人计算机(personalcomputer,pc)、个人数字助理(personaldigitalassistant,pda)、平板电脑(tabletcomputer)、无线手持设备和手机等。本申请实施例提供的恶意程序识别方法,由于每个恶意程序执行的恶意行为都需要进行系统调用才能实现其恶意目的,因此本申请实施例通过获取待检测程序的第一系统调用日志,并转化该第一系统调用日志为第一加权有向图,从操作系统层面抓取行为特征,将恶意行为的识别问题转换为加权有向图的分类问题,即基于预先构建的恶意代码分类簇检测第一加权有向图,以确定出待检测程序是否为恶意程序,从而动态、高效地对恶意程序进行检测和识别,降低了误报率,同时保障了电子设备的安全。基于前述实施例,本申请实施例提供一种恶意程序识别装置,该装置可以应用于图1~6对应的实施例提供的恶意程序识别方法中。参照图7所示,该恶意程序识别装置7包括:获取模块71,配置用于获取待检测程序的第一系统调用日志;转化模块72,配置用于转化第一系统调用日志为第一加权有向图;确定模块73,配置用于基于预先构建的恶意代码分类簇检测第一加权有向图,以确定待检测程序是否为恶意程序。需要说明的是,本申请实施例中获取模块71、转化模块72和确定模块73之间信号连接。信号连接的方式可以通过usb接口连接,或者无线互联网的连接方式来实现。其中,无线互联网接入技术可以包括wi-fi、无线宽带、全球微波互联接入(worldwideinteroperabilityformicrowaveaccess,wimax),以及蓝牙、射频识别(radiofrequencyidentification,rfid)、超宽带(ultrawideband,uwb)等,本申请实施例对此不进行限定。在本申请的其它实施例中,如图8所示,该恶意程序识别装置7中确定模块73包括构建单元731,该构建单元731具体配置用于:获取与数据集对应的第二系统调用日志,该数据集包括多个良性程序样本和多个恶意程序样本;基于由第二系统调用日志构造的第二加权有向图,计算数据集对应的相似度矩阵,该相似度矩阵包括多个核值;根据谱聚类算法对相似度矩阵进行分类,得到恶意代码分类簇。在本申请的其它实施例中,该构建单元731还配置用于分解每个第二加权有向图得到与其对应的若干子树结构,并根据该子树结构设置第二加权有向图中每个节点对应的节点编码;根据节点编码计算两两第二加权有向图的核值,该核值组成相似度矩阵。在本申请的其它实施例中,该构建单元731还配置用于对第二加权有向图中每个节点进行标签编码,记录节点与标签编码的映射关系;分别以第二加权有向图的每个节点为根,分解得到与根关联的若干子树结构,并根据作为根的节点对应的标签编码和与根关联的节点对应的标签编码组合生成节点编码,更新第二加权有向图中作为根的节点对应的标签编码为节点编码。在本申请的其它实施例中,该构建单元731还配置用于基于相似度矩阵得到数据集对应的邻接矩阵,并根据邻接矩阵和第二加权有向图对应的度矩阵构建标准化的拉普拉斯矩阵;计算拉普拉斯矩阵的最小非零特征值对应的特征向量,按行标准化特征向量组成的矩阵得到特征矩阵;基于特征矩阵得到若干行样本,并对若干行样本进行聚类得到分类簇,该分类簇包括恶意代码分类簇。在本申请的其它实施例中,该构建单元731还配置用于遍历相似度矩阵中的每一个核值,当核值大于第一预设阈值时,则在邻接矩阵中与核值对应的位置置为零;以及,当核值小于或者等于第一预设阈值时,则在邻接矩阵中与核值对应的位置置为第一预设阈值。在本申请的其它实施例中,如图8所示,该恶意程序识别装置7中确定模块73还包括:计算单元732,配置用于计算第一加权有向图与恶意代码分类簇对应的第二加权有向图之间的相似度,当相似度大于第二预设阈值时,确定待检测程序的类型为恶意程序。需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。本申请实施例提供的恶意程序识别装置,由于每个恶意程序执行的恶意行为都需要进行系统调用才能实现其恶意目的,因此本申请实施例通过获取模块获取待检测程序的第一系统调用日志,并通过转化模块转化该第一系统调用日志为第一加权有向图,从操作系统层面抓取行为特征,将恶意行为的识别问题转换为加权有向图的分类问题;进而,确定模块基于预先构建的恶意代码分类簇检测第一加权有向图,以确定出待检测程序是否为恶意程序,从而动态、高效地对恶意程序进行检测和识别,降低了误报率,同时保障了电子设备的安全。基于前述实施例,本申请实施例提供一种计算机系统。请参照图9所示,该计算机系统900包括中央处理单元(cpu)901,其可以根据存储在只读存储器(rom)902中的程序或者从存储部分加载到随机访问存储器(ram)903中的程序而执行各种适当的动作和处理。在ram903中,还存储有系统操作所需的各种程序和数据。cpu901、rom902以及ram903通过总线904彼此相连。输入/输出(i/o)接口905也连接至总线904。以下部件连接至i/o接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至i/o接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。特别地,根据本申请的实施例,上文参考流程图1描述的过程可以被实现为计算机软件程序。例如,本申请的实施例1包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序由cpu901执行,以实现如下步骤:获取待检测程序的第一系统调用日志;转化第一系统调用日志为第一加权有向图;基于预先构建的恶意代码分类簇检测第一加权有向图,以确定待检测程序是否为恶意程序。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。附图中的流程图和框图,图示了按照本申请各种实施例恶意程序识别方法、装置、电子设备和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括获取模块、转化模块及确定模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中的恶意程序识别方法。例如,电子设备可以实现如图1中所示的:s101,获取待检测程序的第一系统调用日志;s102,转化第一系统调用日志为第一加权有向图;s103,基于预先构建的恶意代码分类簇检测第一加权有向图,以确定待检测程序是否为恶意程序。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种恶意程序识别方法,其特征在于,所述方法包括:
获取待检测程序的第一系统调用日志;
转化所述第一系统调用日志为第一加权有向图;
基于预先构建的恶意代码分类簇检测所述第一加权有向图,以确定所述待检测程序是否为恶意程序。
2.根据权利要求1所述的恶意程序识别方法,其特征在于,所述恶意代码分类簇通过如下步骤构建:
获取与数据集对应的第二系统调用日志,所述数据集包括多个良性程序样本和多个恶意程序样本;
基于由所述第二系统调用日志构造的第二加权有向图,计算所述数据集对应的相似度矩阵,所述相似度矩阵包括多个核值;
根据谱聚类算法对所述相似度矩阵进行分类,得到所述恶意代码分类簇。
3.根据权利要求2所述的恶意程序识别方法,其特征在于,所述基于由所述第二系统调用日志构造的第二加权有向图,计算所述数据集对应的相似度矩阵,包括:
分解每个所述第二加权有向图得到与其对应的若干子树结构,并根据所述子树结构设置所述第二加权有向图中每个节点对应的节点编码;
根据所述节点编码计算两两所述第二加权有向图的核值,所述核值组成所述相似度矩阵。
4.根据权利要求3所述的恶意程序识别方法,其特征在于,所述分解每个所述第二加权有向图得到与其对应的若干子树结构,包括:
对所述第二加权有向图中每个节点进行标签编码,记录所述节点与所述标签编码的映射关系;
分别以所述第二加权有向图的每个节点为根,分解得到与所述根关联的若干子树结构,并根据作为根的节点对应的标签编码和所述与根关联的节点对应的标签编码组合生成所述节点编码,更新所述第二加权有向图中所述作为根的节点对应的标签编码为所述节点编码。
5.根据权利要求2所述的恶意程序识别方法,其特征在于,所述根据谱聚类算法对所述相似度矩阵进行分类,包括:
基于所述相似度矩阵得到所述数据集对应的邻接矩阵,并根据所述邻接矩阵和所述第二加权有向图对应的度矩阵构建标准化的拉普拉斯矩阵;
计算所述拉普拉斯矩阵的最小非零特征值对应的特征向量,按行标准化所述特征向量组成的矩阵得到特征矩阵;
基于所述特征矩阵得到若干行样本,并对所述若干行样本进行聚类得到分类簇,所述分类簇包括所述恶意代码分类簇。
6.根据权利要求5所述的恶意程序识别方法,其特征在于,所述基于所述相似度矩阵得到所述数据集对应的邻接矩阵,包括:
遍历所述相似度矩阵中的每一个核值,当所述核值大于第一预设阈值时,则在邻接矩阵中与所述核值对应的位置置为零;
以及,当所述核值小于或者等于所述第一预设阈值时,则在所述邻接矩阵中与所述核值对应的位置置为所述第一预设阈值。
7.根据权利要求1至6任意一项所述的恶意程序识别方法,其特征在于,所述基于预先构建的恶意代码分类簇检测所述第一加权有向图,以确定所述待检测程序是否为恶意程序,包括:
计算所述第一加权有向图与所述恶意代码分类簇对应的第二加权有向图之间的相似度,当所述相似度大于第二预设阈值时,确定所述待检测程序的类型为恶意程序。
8.一种恶意程序识别装置,其特征在于,所述装置包括:
获取模块,配置用于获取待检测程序的第一系统调用日志;
转化模块,配置用于转化所述第一系统调用日志为第一加权有向图;
确定模块,配置用于基于预先构建的恶意代码分类簇检测所述第一加权有向图,以确定所述待检测程序是否为恶意程序。
9.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1至7中任一项所述的恶意程序识别方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序用于实现如权利要求1至7中任一项所述的恶意程序识别方法的步骤。
技术总结本申请公开了一种恶意程序识别方法、装置、电子设备及存储介质,该方法包括获取待检测程序的第一系统调用日志,并转化第一系统调用日志为第一加权有向图;基于预先构建的恶意代码分类簇检测第一加权有向图,以确定待检测程序是否为恶意程序。由于每个恶意程序执行的恶意行为都需要进行系统调用才能实现其恶意目的,因此本申请实施例能够从操作系统层面抓取恶意程序的行为特征,进而动态、高效地对恶意程序进行检测和识别,降低了误报率,同时保障了电子设备的安全。
技术研发人员:阚志刚;卢佐华;龚伟炜;陈彪
受保护的技术使用者:北京梆梆安全科技有限公司
技术研发日:2020.01.08
技术公布日:2020.06.05