首页> 中国专利> 行为恶意程度的确定方法、装置、计算机设备和存储介质

行为恶意程度的确定方法、装置、计算机设备和存储介质

摘要

本申请提供了一种行为恶意程度的确定方法、装置、计算机设备和存储介质。该方法包括:根据软件在沙箱环境中的行为生成行为序列;根据行为序列构建预设深度学习模型的输入向量;将输入向量输入至预设深度学习模型,其中,深度学习模型用于将输入向量转化为高层特征,并根据高层特征确定软件的类别,类别包括恶意软件和非恶意软件;当软件属于恶意软件时,根据高层特征计算行为序列中行为对应的热力值;以及根据热力值确定出行为序列中的行为的恶意程度,其中,热力值越大,行为的恶意程度越大。通过本申请,能够确定恶意软件执行行为的恶意程度,有利于提高沙箱行为规则的准确性和全面性。

著录项

说明书

技术领域

本申请涉及安全信息处理技术领域,尤其涉及一种行为恶意程度的确定方法、装置、计算机设备和可读存储介质。

背景技术

恶意软件,是指为了达到非授权控制计算机或窃取计算机数据等目的,具有多种恶意行为的计算机程序。目前检测计算机恶意软件的主要方法分为静态分析和动态分析两种。静态分析是指不用运行软件,通过分析软件源代码来实现恶意软件的检测,其优势在于检测速度快,但越来越多的恶意软件使用了加壳、加花指令等多种混淆手段,使之绕过静态检测,导致静态分析方法的有效性下降。动态分析是指将软件在沙箱里运行,分析其产生的主机行为、网络行为等行为,进而判断该软件是否为恶意软件,虽然速度稍慢,但因其捕获到的是最本质的行为特征,精确程度远高于静态分析方法。

发明人研究发现,动态分析的难点在于如何既准确又全面地设定和开发一套沙箱行为规则,来判定恶意软件,并且在设定沙箱行为规则时,需要根据恶意软件执行行为的恶意性进行确定,因此,如何确定恶意软件执行行为的恶意程度,以提高沙箱行为规则的准确性和全面性,成为本领域亟需解决的技术问题。

发明内容

本申请的目的是提供一种行为恶意程度的确定方法、装置、计算机设备和可读存储介质,用于解决现有技术中的技术问题。

一方面,为实现上述目的,本申请提供了一种行为恶意程度的确定方法。

该行为恶意程度的确定方法包括:根据软件在沙箱环境中的行为生成行为序列;根据所述行为序列构建预设深度学习模型的输入向量;将所述输入向量输入至所述预设深度学习模型,其中,所述深度学习模型用于将所述输入向量转化为高层特征,并根据所述高层特征确定所述软件的类别,所述类别包括恶意软件和非恶意软件;当所述软件属于恶意软件时,根据所述高层特征计算所述行为序列中行为对应的热力值;以及根据所述热力值确定出所述行为序列中行为的恶意程度,其中,所述热力值越大,所述行为的恶意程度越大。

进一步地,所述深度学习模型用于将所述输入向量转化为多个通道的高层特征,根据所述高层特征计算所述行为序列中行为对应的热力值的步骤包括:计算每个通道的所述高层特征对所述恶意软件类别的敏感度;根据所述敏感度确定所述高层特征对应的权重;按照所述高层特征对应的权重将各个通道的所述高层特征进行加权求和,以得到所述行为序列对应的热力分布;根据所述行为序列对应的热力分布确定所述热力值。

进一步地,所述深度学习模型根据所述高层特征确定所述软件的类别具体为:根据所述高层特征输出所述软件在恶意软件类别上的得分,计算每个通道的所述高层特征对所述恶意软件类别的敏感度的步骤包括:计算所述得分对所述高层特征的偏导数;当所述高层特征为二维特征图时,对所述偏导数取宽高维度的全局平均,以得到所述敏感度,当所述高层特征为一维特征向量时,对所述偏导数取宽维度的全局平均,以得到所述敏感度。

进一步地,当所述高层特征为二维特征图时,所述热力分布包括多个与所述行为一一对应的热力向量,根据所述行为序列对应的热力分布确定所述热力值的步骤包括:提取所述热力向量中的最大值或者计算所述热力向量中正值的平均值,以得到所述行为对应的热力值。

进一步地,在根据所述行为序列对应的热力分布确定所述热力值的步骤之后,所述行为恶意程度的确定方法还包括:对所述行为序列中各行为对应的热力值进行处理,其中,若所述热力值小于所述预设阈值,将所述热力值置为0,所述热力值大于或等于所述预设阈值,则保持所述热力值不变;将所述处理后的热力值归一化至[0,255];以及将所述归一化后的热力值映射到RGB空间进行显示。

进一步地,根据所述行为序列构建预设深度学习模型的输入向量的步骤包括:在所述沙箱对应的行为字典中,查找所述行为序列中行为对应的标识;将所述行为对应的标识转化为onehot编码;以及将所述行为序列对应的onehot编码作为所述深度学习模型的输入向量。

进一步地,根据软件在沙箱环境中的行为生成行为序列的步骤包括:获取所述软件在沙箱环境中的运行日志,其中,所述运行日志包括多条行为,所述行为包括API名称;通过所述运行日志中的API名称形成所述行为序列,其中,所述行为序列中所述API名称的顺序与所述行为的执行顺序一致。

进一步地,采用以下步骤构建所述沙箱对应的行为字典:获取预设时间段内所述沙箱的多个运行日志;通过所述多个运行日志中的API名称构建所述行为字典。

进一步地,所述行为字典包括N个API名称,在所述沙箱对应的行为字典中,查找所述行为序列中行为对应的标识的步骤包括:在所述行为字典中查找所述行为序列中的API名称;当所述API名称在所述行为字典中时,确定所述API名称所在行为对应的标识为所述API名称在所述行为字典中的位置序号;当所述API名称不在所述行为字典中时,确定所述API名称所在行为对应的标识为N+1。

进一步地,将所述行为对应的标识转化为onehot编码的步骤包括:设置所述onehot编码包括N+1个元素;当所述行为对应的标识为M时,设置所述onehot编码的第M个元素为1,其余元素为0。

进一步地,通过所述多个运行日志中的API名称构建所述行为字典的步骤包括:针对所述多个运行日志中的每个运行日志,按行为执行顺序提取运行日志中的API名称,得到第一序列;去除所述第一序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第二序列;将所述多个运行日志对应的所述第二序列汇总,得到API名称集;将所述API名称集中相同的API名称去重,以得到所述行为字典。

进一步地,通过所述运行日志中的API名称形成所述行为序列的步骤包括:按行为执行顺序提取所述软件对应运行日志中的API名称,得到第三序列;去除所述第三序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第四序列;当所述第四序列中API名称的数量大于第一阈值且小于或等于第二阈值时,确定所述第四序列为所述行为序列,当所述第四序列中API名称的数量大于所述第二阈值时,截取所述第四序列中前所述第二阈值个API名称作为所述行为序列。

另一方面,为实现上述目的,本申请提供了一种恶意行为的确定装置。

该恶意行为的确定装置包括:生成模块,用于根据软件在沙箱环境中的行为生成行为序列;构建模块,用于根据所述行为序列构建预设深度学习模型的输入向量;输入模块,用于将所述输入向量输入至所述预设深度学习模型,其中,所述深度学习模型用于将所述输入向量转化为高层特征,并根据所述高层特征确定所述软件的类别,所述类别包括恶意软件和非恶意软件;计算模块,用于当所述软件属于恶意软件时,根据所述高层特征计算所述行为序列中行为对应的热力值;以及确定模块,用于根据所述热力值确定出所述行为序列中行为的恶意程度,其中,所述热力值越大,所述行为的恶意程度越大。

又一方面,为实现上述目的,本申请还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。

又一方面,为实现上述目的,本申请还提供计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。

本申请提供的行为恶意程度的确定方法、装置、计算机设备和可读存储介质,预设深度学习模型,以对软件进行识别,确定软件属于恶意软件还是非恶意软件,在得到识别结果后,当软件属于恶意软件时,根据深度学习模型的高层特征进一步确定出软件执行的行为中,哪些行为的恶意程度高。其中,在确定软件类别时,根据软件在沙箱环境中的行为生成行为序列,并以此行为序列构建深度学习模型的输入向量,将输入向量输入至深度学习模型时,深度学习模型将输入向量转化为高层特征,并根据高层特征确定软件的类别;当软件属于恶意软件,在确定行为序列中的恶意行为时,根据深度学习模型输出的高层特征计算行为序列中行为对应的热力值,然后根据热力值确定出行为序列中行为的恶意程度,其中,热力值越大,行为的恶意程度率越大。通过本申请,利用深度学习模型确定恶意软件后,进一步可确定出恶意软件执行行为的恶意程度,从而能够以此与沙箱行为规则进行对比,特别是沙箱有漏检时,能够分析出漏检原因或找出有价值的典型恶意行为,进而优化引擎规则,提高沙箱行为规则的准确性和全面性。

附图说明

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

图1为本申请实施例一提供的行为恶意程度的确定方法的流程图;

图2为本申请实施例二提供的行为恶意程度的确定方法的流程图;

图3为本申请实施例二提供的行为恶意程度的确定方法中深度学习模型训练的示意图;

图4为本申请实施例三提供的恶意行为的确定装置的框图;

图5为本申请实施例四提供的计算机设备的硬件结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了确定恶意软件执行的恶意行为,从而能够指导沙箱行为规则的设定,提高沙箱行为规则的准确性和全面性,本申请提供了一种行为恶意程度的确定方法、装置、计算机设备和可读存储介质,在该行为恶意程度的确定方法中,首先根据软件在沙箱环境中的行为生成行为序列,将行为序列构建为预设深度学习模型的输入向量,并输入至预设深度学习模型,该深度学习模型用于将输入向量转化为高层特征,并根据高层特征确定软件的类别,也即确定软件属于恶意软件还是非恶意软件,当软件属于恶意软件时,根据高层特征计算行为序列中行为对应的热力值,最后根据热力值确定出行为序列中行为的恶意程度,其中,热力值越大,行为的恶意程度越大,在确定出行为的恶意程度后,可对现有的沙箱行为规则进行分析,并对沙箱行为规则进行更新,以使沙箱行为规则能够将恶意程度较高的行为判定为恶意等级较高的行为,提高沙箱行为规则的准确性和全面性。

关于本申请提供的行为恶意程度的确定方法、装置、计算机设备和可读存储介质的具体实施例,将在下文中详细描述。

实施例一

本申请实施例一提供了一种行为恶意程度的确定方法,通过该方法,能够确定恶意软件在沙箱中执行时更能体现恶意的行为,以此作为沙箱行为规则的制定依据,提高沙箱行为规则的准确性和全面性。具体地,图1为本申请实施例一提供的行为恶意程度的确定方法的流程图,如图1所示,该实施例提供的行为恶意程度的确定方法包括如下的步骤S101至步骤S105。

步骤S101:根据软件在沙箱环境中的行为生成行为序列。

具体地,将软件在沙箱环境中运行时,生成如xml或json等格式的沙箱报告,报告内容包括软件在沙箱环境中的运行日志,该运行日志由多条在软件运行过程中依次执行的行为组成,通过这些依次执行的行为,可生成行为序列。可选地,行为序列可包括软件在运行过程中的所有行为,或者,也可包括软件在运行过程中的部分行为。行为序列中的行为可采用行为的部分或全部特征标识,例如,运行日志中的行为数据包括行为对应的API英文名称、API中文名称以及行为描述等特征,可采用行为描述标识行为,则行为序列实际上是行为描述序列,或者,也可采用API英文名称标识行为,则行为序列实际上是API英文名称序列。

步骤S102:根据行为序列构建预设深度学习模型的输入向量。

具体地,预设深度学习模型,该深度学习模型经软件样本训练集训练得到,能够识别出软件的类别,具体可以为卷积神经网络、循环神经网络或深度置信网络等。预设行为向量化的规则,以将行为序列转化为深度学习模型的输入向量,例如,当行为序列为行为描述序列时,可将行为序列中的每条行为对应的行为描述进行分词和词语过滤,并进一步转化为词向量,通过词向量构建深度学习模型的输入向量。又如,当行为序列为行为API英文名称时,将行为序列中的每条行为对应的API英文名称直接转化为词向量,构建深度学习模型的输入向量。

无论怎样构建输入向量,深度学习模型用于将输入向量转化为高层特征,并根据高层特征确定软件的类别,类别包括恶意软件和非恶意软件。具体地,深度学习模型源于人工神经网络,结构上可以理解为含多个隐藏层的神经网络,例如卷积神经网络、循环神经网络、深度置信网络等。深度学习模型利用模型中的隐藏层,能够通过组合低层特征的方式,逐层将原始输入向量转化为浅层特征、中层特征、高层特征,直至最终的任务目标,也即确定软件的类别,实现软件的分类。本申请中的高层特征是指深度学习模型中最后一个隐藏层输出的特征。

可选地,在一种实施例中,构建沙箱对应的行为字典,在根据行为序列构建预设深度学习模型的输入向量时,在沙箱对应的行为字典中,查找行为序列中每个行为对应的标识,然后将每个行为对应的标识向量化,分别转化为onehot编码,将行为序列中所有行为对应的onehot编码作为深度学习模型的输入向量。设置行为字典中每个行为的位置序号作为行为对应的标识。

步骤S103:将输入向量输入至预设深度学习模型。

通过上述步骤S102构建软件对应的输入向量后,在该步骤S103中,将该输入向量输入至预设深度学习模型中,深度学习模型通过组合低层特征形成更加抽象的高层特征,以发现数据的分布式特征表示,输出软件在恶意软件类别上的置信度或概率得分,通过该得分,即可确定出软件是否属于恶意软件。可选地,设置深度学习模型输出层激活函数为softmax函数,相应地,深度学习模型输出的得分取值范围一定在0到1之间,可根据经验设定得分阈值,用于划分软件的类别,例如得分阈值设定为0.99,则深度学习模型输出的得分大于或等于0.99时,即可判定软件为恶意软件。

步骤S104:当软件属于恶意软件时,根据高层特征计算行为序列中行为对应的热力值。

当软件属于恶意软件时,利用高层特征将行为序列中每条行为的重要性进行分析计算,可采用基于Class Activation Map(类激活地图或类热力图)的特征可视化技术,如CAM、Grad-CAM、Grad-CAM++和Smooth Grad-CAM++等算法,计算出行为对应的热力值,其中,行为对应的热力值越大,表明该行为对于软件被判定为恶意软件类别的重要性越大。

步骤S105:根据热力值确定出行为序列中行为的恶意程度。

可选地,在计算得到行为序列中行为对应的热力值后,根据热力值计算行为的恶意程度,热力值与行为的恶意程度正相关,热力值越大,行为的恶意程度越大。或者,可以将热力值作为行为的恶意程度,进一步,可将较大的一部分热力值对应的行为作为行为序列中的恶意行为;或者,可选地,预设热力值阈值,将大于该热力值阈值的热力值所对应的行为,作为行为序列中的恶意行为。

在该实施例提供的行为恶意程度的确定方法中,预设深度学习模型,以对软件进行识别,确定软件属于恶意软件还是非恶意软件,在得到识别结果后,当软件属于恶意软件时,根据深度学习模型的高层特征进一步确定出软件执行的行为中,哪些行为的恶意程度高。其中,在确定软件类别时,根据软件在沙箱环境中的行为生成行为序列,并以此行为序列构建深度学习模型的输入向量,将输入向量输入至深度学习模型时,深度学习模型将输入向量转化为高层特征,并根据高层特征确定软件的类别;当软件属于恶意软件,在确定行为序列中的恶意行为时,根据深度学习模型输出的高层特征计算行为序列中行为对应的热力值,然后根据热力值确定出行为序列中行为的恶意程度,其中,热力值越大,行为的恶意程度越大。采用该实施例提供的行为恶意程度的确定方法,通过深度学习模型确定恶意软件后,进一步可确定出恶意软件执行的行为的恶意程度,从而能够以此与沙箱行为规则进行对比,特别是沙箱对此软件漏检时,能够分析出漏检原因或找出有价值的典型恶意行为,进而优化引擎规则,提高沙箱行为规则的准确性和全面性。

可选地,在一种实施例中,以行为的API名称标识行为,生成行为序列,具体地,根据软件在沙箱环境中的行为生成行为序列的步骤包括:获取软件在沙箱环境中的运行日志,其中,运行日志包括多条行为,行为包括API名称;通过运行日志中的API名称形成行为序列,其中,行为序列中API名称的顺序与行为的执行顺序一致,也就是说,行为序列实际上是API名称序列,且API名称序列的顺序按照行为的执行顺序排列。

相应地,采用以下步骤构建沙箱对应的行为字典:获取预设时间段内沙箱的多个运行日志,例如,获取几个月内沙箱的运行日志,可得到几百万上千万个运行日志,通过提取这些运行日志中的API名称构建行为字典,行为字典包括API名称和每个API名称对应的标识。在确定行为对应的标识时,在该行为字典中,查找行为序列中每个API名称,查找到时获取其对应的标识。

可选地,在一种实施例中,行为字典包括N个API名称,在沙箱对应的行为字典中,查找行为序列中行为对应的标识的步骤包括:在行为字典中查找行为序列中的API名称;当API名称在行为字典中时,确定API名称所在行为对应的标识为API名称在行为字典中的位置序号;当API名称不在行为字典中时,确定API名称所在行为对应的标识为N+1。相应地,在将行为对应的标识转化为onehot编码的步骤包括:设置onehot编码包括N+1个元素;当行为对应的标识为M时,设置onehot编码的第M个元素为1,其余元素为0。

采用该实施例提供的行为恶意程度的确定方法,以API名称构建行为序列和行为字典,不仅能够准确的表征行为的特点,有助于准确地确定恶意行为,而且处理逻辑简单;在构建行为字典时,以沙箱的历史运行日志进行构建,保证行为字典能够较全面的覆盖待识别软件在沙箱中的运行行为,以将行为向量化;在将行为向量化的过程中,对于包括N个API名称的行为字典,设置onehot编码包括N+1个元素,当实际待检测的软件在沙箱终端行为,出现不在行为字典里的API名称,仍然能够正常转换onehot编码。

可选地,在一种实施例中,通过多个运行日志中的API名称构建行为字典的步骤包括:针对多个运行日志中的每个运行日志,按行为执行顺序提取运行日志中的API名称,得到第一序列;去除第一序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第二序列;将多个运行日志对应的第二序列汇总,得到API名称集;将API名称集中相同的API名称去重,以得到行为字典。通过运行日志中的API名称形成行为序列的步骤包括:按行为执行顺序提取软件对应运行日志中的API名称,得到第三序列;去除第三序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第四序列;当第四序列中API名称的数量大于第一阈值且小于或等于第二阈值时,确定第四序列为行为序列,当第四序列中API名称的数量大于第二阈值时,截取第四序列中前第二阈值个API名称作为行为序列。

具体地,发明人研究发现,无论软件属于非恶意软件,或者是恶意软件,对应的沙箱运行日志中TryToAnalyze开始分析之前及AnalyzeStop分析结束后的API名称均相同,因此,无论在设置行为字典时,还是在构建行为序列时,将TryToAnalyze之前和AnalyzeStop之后的API名称去掉,能够在不影响恶意软件识别精度的同时避免不必要的冗余计算,节约了计算资源;将行为序列限定在第一阈值和第二阈值之间,一方面能够保证软件识别的准确性,另一方面避免行为序列过长而造成冗余的数据计算量,其中,第一阈值优选为10,第二阈值优选在5000~10000之间取值。

可选地,在一种实施例中,深度学习模型用于所述输入向量转化为多个通道的高层特征,当软件属于恶意软件时,根据高层特征计算行为序列中行为对应的热力值的步骤包括:计算每个通道的高层特征对恶意软件类别的敏感度;根据敏感度确定高层特征对应的权重;按照高层特征对应的权重将各个通道的高层特征进行加权求和,以得到行为序列对应的热力分布;根据行为序列对应的热力分布确定热力值。

具体地,深度学习模型采用多通道模型时,相应地,将输入向量转化为多个通道的高层特征,在根据高层特征计算行为序列中行为对应的热力值时,先针对每个通道,计算其高层特征在恶意软件类别上的敏感度,然后根据敏感度计算高层特征对应的权重,例如,将敏感度直接作为权重,然后将权重与该通道的高层特征相乘,得到每个通道对应的一个乘积,再将所有的乘积加和,即可得到行为序列对应的热力分布,也即行为序列中所有行为形成的热力分布,进而确定每个行为对应的热力值。

其中,深度学习模型在根据高层特征确定软件的类别时,根据高层特征输出软件在恶意软件类别上的得分,得分越高,表征软件属于恶意软件的概率越大,基于此,在计算每个通道的高层特征对恶意软件类别的敏感度时,具体的步骤包括:计算得分对高层特征的偏导数;当高层特征为二维特征图时,对偏导数取宽高维度的全局平均,以得到敏感度,当高层特征为一维特征向量时,对偏导数取宽维度的全局平均,以得到敏感度。

具体地,当深度学习模型包括二维卷积层时,高层特征为二维特征图,计算得分对深度学习模型中最后一层卷积层每一通道的特征图的偏导数,然后再对每一通道的偏导数取宽高维度的全局平均,以得到每个通道的特征图对恶意软件类别的敏感度;将该敏感度作为权重,将各个通道的特征图进行加权求和,得到行为序列对应的热力分布,该处的热力分布也即二维热力图,包括多个与行为一一对应的热力向量,此时,根据行为序列对应的二维热力图确定一个行为对应的热力值时,提取该行为对应的热力向量中的最大值,或者计算该行为对应的热力向量中正值的平均值。其中,行为序列对应的二维热力图表达的是行为和软件属于恶意软件的得分“正相关”的热力图,热力图中的各个元素有正值、0或者负值,如果特征图上某个位置通过敏感度加权得到的值为负值,那么这一位置所表达的信息更可能属于不是恶意软件的类别,因此,行为对应的热力值仅关注热力向量中正值。

当深度学习模型包括一维卷积层时,高层特征为一维特征向量,计算得分对深度学习模型中最后一层卷积层每一通道的特征向量的偏导数,然后再对每一通道的偏导数取宽维度的全局平均,以得到每个通道的特征向量对恶意软件类别的敏感度;将该敏感度作为权重,将各个通道的特征向量进行加权求和,得到行为序列对应的热力分布,该处的热力分布也即一维热力向量,包括多个与行为一一对应的元素,此时,根据行为序列对应的一维热力向量确定一个行为对应的热力值时,对应提取该一维热力向量中每一行为对应的元素即可。

可选地,在一种实施例中,在根据行为序列对应的热力分布确定热力值的步骤之后,行为恶意程度的确定方法还包括:对行为序列中各行为对应的热力值进行处理,其中,若热力值小于预设阈值,将热力值置为0,热力值大于或等于预设阈值,则保持热力值不变;将处理后的热力值归一化至[0,255];以及将归一化后的热力值映射到RGB空间进行显示。

具体地,对应需要关注的重要行为的热力值下限,设置预设阈值对需要关注的行为进行过滤,在确定行为对应的热力值后,对热力值进行处理,将小于预设阈值热力值均置为0,然后归一化至[0,255],其中,可采用如下计算公式将各个热力值hi归一化至[0,255]:hi'=int[hi/max(hi)*255],然后再将归一化后的热力值hi'映射到RGB空间。

在将热力值hi'映射到RGB空间时,可设置颜色越深代表行为对应的热力值越大,行为属于恶意行为的概率越大。可指定任意一种色系的渐变,优选地,选择具有较强的色彩区分度的色系。在一种实施例中,可指定两种颜色后转换到HSV空间做插值,计算出中间热力值对应的颜色,然后再将归一化后的热力值转回RGB空间;在另一种实施例中,可直接在RGB空间做插值或归一化。设当前指定最深的颜色为RGB=(r,g,b),则某热力值hi'需展示颜色的RGB=(int((r/255-1)*hi'+255),int((g/255-1)*hi'+255),int((b/255-1)*hi'+255)),实现了热力值hi'至RGB空间的映射。

以红色系为例,以白色(255,255,255)至深红色(128,0,0)为例,深红色RGB=(128,0,0)表示恶意程度最大的行为,最浅颜色白色RGB=(255,255,255)表示恶意程度最小的行为,则某一行为对应的热力值hi'=200,将其映射至RGB空间,具体需展示的颜色为:

RGB=(int((128/255-1)*200+255),int((0/255-1)*200+255),int((0/255-1)*200+255))

=(155,55,55)。

采用该实施例提供的行为恶意程度的确定方法,在确定行为对应的热力值后,将热力值映射到RGB空间进行显示,能够直观的展示出行为属于恶意行为的程度,从而有利于分析人员对恶意软件进行分析。

实施例二

在通过分析沙箱行为日志来分析软件是否为恶意软件时,可通过使用深度学习模型直接判定分类结果,但是,仅仅确定分类结果,并不能明了分类的依据,无法指导沙箱的行为判定规则。在本申请中,在确定软件是否为恶意软件的基础上,能够自动计算出软件在沙箱中运行时哪些行为更加可疑,实现模型在行为上的解释,确定出哪些行为更能体现出恶意,给出促使模型对软件判断为恶意软件的依据,从而指导安全分析人员对关键软件样本的运营,同时利用机器学习到的重要特征对比沙箱行为规则,找出漏检或其他有价值的典型行为,优化引擎规则。

图2为本申请实施例二提供的行为恶意程度的确定方法的流程图,如图2所示,该行为恶意程度的确定方法。主要包括五个部分:构建训练集、训练模型、数据预处理、模型预测和行为特征可视化。

1、构建训练集

获取xml或json格式的沙箱报告,报告内容为软件在沙箱环境中的运行日志,运行日志由多条行为组成,每条行为至少包含行为对应的API名称(api_name及中文名称)、该行为的恶意等级(level<=0为安全,1为未知,2为敏感,3为危险)和对该行为的描述。

例如:

然后根据每份日志中的api_name生成其软件对应的行为序列。其中,每份日志的TryToAnalyze开始分析之前及AnalyzeStop分析结束后的api_name均相同,可以去掉,无需参与机器学习。生成的行为序列例如:(NtQueryAttributesFile,NtQueryAttributesFile,LoadLibraryExW,……),这个序列称为有效行为序列。然后通过这些有效行为序列,来构建训练集。

选入训练集的有效行为序列需要满足以下两个条件:

(1)黑、白样本的有效行为序列长度都必须>=10,小于10的行为序列不参与训练,其中,在进行软件的预测时,为保证预测的准确性,也仅对长度大于或等于10的行为序列进行预测;

(2)每个黑样本至少要有一条行为满足等级的要求,如至少要有一条行为等级是1或2或3。若某个黑样本每一条行为的等级均<=0,则不能被加入训练集。等级字段只用于训练数据的筛选,不参与模型训练过程,对白样本无此要求。

样本的黑白属性,即机器学习的标签,可通过如下的四类方法获取:(1)静态分析方法;(2)动态分析方法:也即沙箱报告给出的判别结果;(3)通过外部数据判断,如VirusTotal;(4)综合分析:使用前三种方法中至少两种综合判断确定黑白属性。

提取有效行为序列后,有部分数据对应的原软件文件md5不同、但具有相同的有效行为序列,这种情况属于数据冗余,需要将训练集中的相同的有效行为序列去重,多条相同序列只保留一条。

最终训练集为符合上述条件的有效行为序列及对应的黑白属性标签(0表示白,即正常;1表示黑,即恶意)。有效行为序列的最大长度设为定值L,根据实际数据长度统计及业务经验,L可在5000~10000内取值,当有效行为序列的长度超过L时,将超过L的部分截断,不参与模型训练。

同时,统计上述有效行为序列中所有不重复的api_name,假设共统计到N

2、模型训练

图3为本申请实施例二提供的行为恶意程度的确定方法中深度学习模型训练的示意图,如图3所示,在得到训练集后,将训练集中每个样本的行为序列,也即api_name序列转化为onehot编码。具体地,考虑到在实际待预测的沙箱日志中可能出现不在训练集里的api_name,需预留一个api_name为Unknown,则设定onehot编码为L行N

机器学习模型可采用CNN(卷积神经网络)类型结构的深度神经网络,例如基于一维的TextCNN及其改进的具有更深卷积层、或引入门限卷积层的网络等,或者基于二维的常见图像类CNN模型均可。设定初始超参数开始训练模型,直至在训练集和验证集上的损失函数值、准确率等指标收敛,达到预设效果,以得到训练好的机器学习模型,后续使用该机器学习模型可进行软件的预测。

3、数据预处理

在预测沙箱中运行的未知软件之前,获取该软件在沙箱中的运行日志,并进行数据预处理,具体方法与上述获取训练集样本的方法基本一致,通过该软件的运行日志可得到该软件对应的行为序列,该行为序列同样根据api_name生成,并且去掉TryToAnalyze开始分析之前及AnalyzeStop分析结束后的api_name。若有效行为序列长度<10,则抛弃该行为序列,不做预测,只预测长度>=10的行为序列,以保证预测的有效性。同时,对于长度大于L的行为序列,将大于L的部分截断再进行模型预测。

4、模型预测

这里的模型预测是指把待预测的有效行为序列转化为onehot编码,作为模型的输入向量,通过训练好的深度学习模型参数进行计算后,输出软件作为恶意软件的得分,例如,深度学习网络输出层激活函数使用softmax函数时,得分的取值范围一定在0到1之间。可根据一定量的实际数据测试效果来确定一个阈值,用于划分预测的属性,例如阈值设定为0.99,得分>=0.99判定为恶意软件。

5、行为特征可视化

当模型训练完成且能够预测未知软件是否属于恶意软件后,可使用行为特征可视化技术可以将沙箱日志中每条行为的重要性分析计算和展示出来。具体步骤如下:

(1)计算机器学习模型输出的在恶意类别上的softmax得分(即置信度、概率)对最后一层卷积层所有高层特征(对于二维CNN,高层特征为特征图,对于一维CNN,高层特征为特征向量)的偏导数。

(2)对上述偏导数进行全局平均,得到每个高层特征对恶意类别的敏感度。

(3)用上述各个“敏感度”作为权重,对最后一层卷积层的每个高层特征计算加权求和,得到热力分布,(对于二维CNN,热力分布为热力图,对于一维CNN,热力分布为热力向量)。此时的计算结果有正有负,将小于特定阈值的数值置为0,该阈值可以是0,也可以是一个正数,取决于感兴趣的特征重要度下限。可选地,设定阈值为0,采用ReLu函数,把负值置为0。

(4)当机器学习模型采用的是二维CNN,则需要对二维“热力图”的每一行算一个热力值,例如一条行为(api_name)对应的“热力向量”中的数值取最大值,或正值的平均值。当机器学习模型采用的是一维CNN,对应获取热力向量中的原色,得到行为(api_name)对应的热力值。最终,无论是使用一维CNN还是二维CNN,每条行为(api_name)均对应一个热力值。

(5)对各个热力值hi归一化至[0,255],hi'=int[hi/max(hi)*255]。

(6)将上述归一化后的热力值即行为特征重要度映射到RGB空间,颜色越深代表行为特征越重要。可指定任意一种色系的渐变,为了增强显示效果,选择有较强的色彩区分度。对于热力值映射到RGB空间的实现方式,至少有两种:一种是指定两种颜色后转换到HSV空间做插值,计算出中间热力值对应的颜色,再转回RGB空间;另一种是直接在RGB空间做插值或归一化。实际中第二种方式既简单又能满足人工观察的需求,下面以白色(255,255,255)至深红色(128,0,0)为例。设当前指定最深的颜色为RGB=(r,g,b),则某特征热力值hi'需展示颜色的RGB=(int((r/255-1)*hi'+255),int((g/255-1)*hi'+255),int((b/255-1)*hi'+255))。以红色系为例,深红色RGB=(128,0,0)表示最重要行为特征,最浅颜色白色RGB=(255,255,255)表示最不重要或不关心的特征,第i个热力值hi'=200。计算需展示的颜色RGB=(int((128/255-1)*200+255),int((0/255-1)*200+255),int((0/255-1)*200+255))=(155,55,55)。

采用该实施例提供的行为恶意程度的确定方法,在根据软件在沙箱中的行为识别恶意软件的基础上外,还能够自动计算出软件在沙箱中运行时哪些行为更加可疑,哪些行为促使模型对软件判黑。进一步将行为特征可视化,将其重要性,也即恶意程度用颜色等级表示,一目了然。通过模型判别结果联合行为特征可视化结果,帮助分析人员高效分析恶意软件样本,同时利用机器学习到的重要特征对比沙箱行为规则,特别是沙箱有漏检时,分析漏检原因或找出有价值的典型行为,进而优化引擎规则。

实施例三

对应于上述实施例一,本申请实施例三提供了一种恶意行为的确定装置,相应地技术特征细节和对应的技术效果可参考上述实施例一,在该实施例中不再赘述。图4为本申请实施例三提供的恶意行为的确定装置的框图,如图4所示,该装置包括:生成模块201、构建模块202、输入模块203、计算模块204和确定模块205。

生成模块201用于根据软件在沙箱环境中的行为生成行为序列;构建模块202用于根据所述行为序列构建预设深度学习模型的输入向量;输入模块203用于将所述输入向量输入至所述预设深度学习模型,其中,所述深度学习模型用于将所述输入向量转化为高层特征,并根据所述高层特征确定所述软件的类别,所述类别包括恶意软件和非恶意软件;计算模块204用于当所述软件属于恶意软件时,根据所述高层特征计算所述行为序列中行为对应的热力值;以及确定模块205用于根据所述热力值确定出所述行为序列中行为的恶意程度,其中,所述热力值越大,所述行为的恶意程度越大。

可选地,在一种实施例中,所述深度学习模型用于将所述输入向量转化为多个通道的高层特征,计算模块204包括:第一计算单元,用于计算每个通道的所述高层特征对所述恶意软件类别的敏感度;第二计算单元,用于根据所述敏感度确定所述高层特征对应的权重;第三计算单元,用于按照所述高层特征对应的权重将各个通道的所述高层特征进行加权求和,以得到所述行为序列对应的热力分布;第一确定单元,用于根据所述行为序列对应的热力分布确定所述热力值。

可选地,在一种实施例中,所述深度学习模型根据所述高层特征确定所述软件的类别具体为:根据所述高层特征输出所述软件在恶意软件类别上的得分,第一计算单元在计算每个通道的所述高层特征对所述恶意软件类别的敏感度时,具体执行的步骤包括:计算所述得分对所述高层特征的偏导数;当所述高层特征为二维特征图时,对所述偏导数取宽高维度的全局平均,以得到所述敏感度,当所述高层特征为一维特征向量时,对所述偏导数取宽维度的全局平均,以得到所述敏感度。

可选地,在一种实施例中,当所述高层特征为二维特征图时,所述热力分布包括多个与所述行为一一对应的热力向量,第一确定单元根据所述行为序列对应的热力分布确定所述热力值时,具体执行的步骤包括:提取所述热力向量中的最大值或者计算所述热力向量中正值的平均值,以得到所述行为对应的热力值。

可选地,在一种实施例中,所述恶意行为的确定装置还包括:处理模块和显示模型,其中,处理模块用于在第一确定单元根据所述行为序列对应的热力分布确定所述热力值之后,对所述行为序列中各行为对应的热力值进行处理,其中,若所述热力值小于所述预设阈值,将所述热力值置为0,所述热力值大于或等于所述预设阈值,则保持所述热力值不变,将所述处理后的热力值归一化至[0,255],显示模块用于将所述归一化后的热力值映射到RGB空间,行显示。

可选地,在一种实施例中,构建模块202包括:查找单元,用于在所述沙箱对应的行为字典中,查找所述行为序列中行为对应的标识;映射单元,用于将所述行为对应的标识转化为onehot编码,其中,将所述行为序列对应的onehot编码作为所述深度学习模型的输入向量。

可选地,在一种实施例中,生成模块201包括:获取单元,用于获取所述软件在沙箱环境中的运行日志,其中,所述运行日志包括多条行为,所述行为包括API名称;处理单元,用于通过所述运行日志中的API名称形成所述行为序列,其中,所述行为序列中所述API名称的顺序与所述行为的执行顺序一致。

可选地,在一种实施例中,采用以下步骤构建所述沙箱对应的行为字典:获取预设时间段内所述沙箱的多个运行日志;通过所述多个运行日志中的API名称构建所述行为字典。

可选地,在一种实施例中,所述行为字典包括N个API名称,查找单元在所述沙箱对应的行为字典中,查找所述行为序列中行为对应的标识时,具体执行的步骤包括:在所述行为字典中查找所述行为序列中的API名称;当所述API名称在所述行为字典中时,确定所述API名称所在行为对应的标识为所述API名称在所述行为字典中的位置序号;当所述API名称不在所述行为字典中时,确定所述API名称所在行为对应的标识为N+1。

可选地,在一种实施例中,映射单元在将所述行为对应的标识转化为onehot编码时,具体执行的步骤包括:设置所述onehot编码包括N+1个元素;当所述行为对应的标识为M时,设置所述onehot编码的第M个元素为1,其余元素为0。

可选地,在一种实施例中,通过所述多个运行日志中的API名称构建所述行为字典的步骤包括:针对所述多个运行日志中的每个运行日志,按行为执行顺序提取运行日志中的API名称,得到第一序列;去除所述第一序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第二序列;将所述多个运行日志对应的所述第二序列汇总,得到API名称集;将所述API名称集中相同的API名称去重,以得到所述行为字典。

可选地,在一种实施例中,处理单元通过所述运行日志中的API名称形成所述行为序列时,具体执行的步骤包括:按行为执行顺序提取所述软件对应运行日志中的API名称,得到第三序列;去除所述第三序列中API名称为TryToAnalyze之前和API名称为AnalyzeStop之后的API名称,得到第四序列;当所述第四序列中API名称的数量大于第一阈值且小于或等于第二阈值时,确定所述第四序列为所述行为序列,当所述第四序列中API名称的数量大于所述第二阈值时,截取所述第四序列中前所述第二阈值个API名称作为所述行为序列。

实施例四

本实施例四还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,本实施例的计算机设备01至少包括但不限于:可通过系统总线相互通信连接的存储器011、处理器012,如图5所示。需要指出的是,图5仅示出了具有组件存储器011和处理器012的计算机设备01,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器011(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器011可以是计算机设备01的内部存储单元,例如该计算机设备01的硬盘或内存。在另一些实施例中,存储器011也可以是计算机设备01的外部存储设备,例如该计算机设备01上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,存储器011还可以既包括计算机设备01的内部存储单元也包括其外部存储设备。本实施例中,存储器011通常用于存储安装于计算机设备01的操作系统和各类应用软件,例如实施例三的恶意行为的确定装置的程序代码等。此外,存储器011还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器012在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器012通常用于控制计算机设备01的总体操作。本实施例中,处理器012用于运行存储器011中存储的程序代码或者处理数据,例如行为恶意程度的确定方法等。

实施例五

本实施例五还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储恶意行为的确定装置,被处理器执行时实现实施例一的行为恶意程度的确定方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号