CN111368304B - 一种恶意样本类别检测方法和装置及设备 - Google Patents
一种恶意样本类别检测方法和装置及设备 Download PDFInfo
- Publication number
- CN111368304B CN111368304B CN202010241438.4A CN202010241438A CN111368304B CN 111368304 B CN111368304 B CN 111368304B CN 202010241438 A CN202010241438 A CN 202010241438A CN 111368304 B CN111368304 B CN 111368304B
- Authority
- CN
- China
- Prior art keywords
- function
- partition
- malicious sample
- graph
- malicious
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims description 30
- 238000005192 partition Methods 0.000 claims abstract description 168
- 238000000034 method Methods 0.000 claims abstract description 90
- 239000011159 matrix material Substances 0.000 claims abstract description 69
- 238000009826 distribution Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 406
- 230000008569 process Effects 0.000 claims description 41
- 230000011218 segmentation Effects 0.000 claims description 35
- 238000005516 engineering process Methods 0.000 claims description 20
- 239000013598 vector Substances 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012549 training Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 28
- 230000008878 coupling Effects 0.000 description 11
- 238000010168 coupling process Methods 0.000 description 11
- 238000005859 coupling reaction Methods 0.000 description 11
- 238000000638 solvent extraction Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 3
- 244000035744 Hura crepitans Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种恶意样本类别检测方法和装置及设备,包括:获取恶意样本并基于虚拟系统程序运行恶意样本得到对应的函数调用图;将函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示得到邻接矩阵;根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;并将该分区映射为目标函数调用图,提取目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。本发明可以通过分离恶意样本的本地函数及分类预测模型,解决叠加壳保护后恶意样本特征趋于一致,同源判断的效果不理想及需要对控制流程图的大小进行标准化处理的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种恶意样本类别检测方法和装置及设备。
背景技术
随着网络信息技术的发展,恶意软件已成为危害网络公共安全的主要威胁之一,恶意软件通过恶意代码实现,恶意代码具有同源性,即不同的恶意代码是否源自同一套恶意代码或是否由同一个作者、团队编写,其是否具有内在关联性、相似性。随着开源社区的出现,基于同一家族的恶意代码被变种成功的情况层出不穷。这些恶意代码变种形成的恶意软件结构相似但不相同,配合壳保护技术的应用,恶意代码的家族特征被稀释隐藏,使得恶意代码样本的同源性判定成为了一个棘手的问题。
壳保护技术主要通过加壳器实现,加壳器属于一种封装工具,它可以在反病毒软件或复杂的恶意代码分析过程中,隐藏恶意代码的存在,还能缩小恶意代码可执行文件的大小,因此加壳器在恶意代码编写者中很受欢迎。所有的加壳器都是将一个可执行文件作为输入,输出一个新的可执行文件。被加壳的可执行文件经过压缩,加密或者其他转换,目的是使他们难以被识别,难以被逆向分析。
当前的恶意代码同源性检测功能,主要存在以下问题:
1)当前恶意代码检测,主要利用动态或静态分析获取恶意代码的特征信息,如指令序列、API(Application Programming Interface,应用程序接口)调用序列或图结构特征等。不同恶意代码样本之间的上述特征信息没有显著的差异,叠加壳保护技术后,其特征更加趋于一致,最终导致通过分析恶意代码的特征信息来进行同源判断的效果不理想;
2)程序的控制流程图以程序的执行流程为特征,展现系统各部分执行的流动过程,当前对控制流程图的处理是为了适应用在图片处理和自然语言处理中的深度学习模型,需要对控制流图的大小进行标准化的处理。
发明内容
本发明提供一种恶意样本类别检测方法和装置及设备,用以解决叠加壳保护后恶意样本特征趋于一致,同源性判断的效果不理想及需要对控制流程图的大小进行标准化处理的问题。
根据本申请实施例的第一方面,提供一种恶意样本类别检测方法,该方法包括:
获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;
将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
可选地,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区,包括:
以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;
滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区。
可选地,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区,包括:
当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定满足分割条件;
确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
可选地,确定满足分割条件时交叉点位置,包括:
若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置。
可选地,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,还包括:
根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置。
可选地,满足以下公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ|,d(A0)-d(A3)≥|σ|
d(A2)-d(A1)≥|σ|,d(A2)-d(A3)≥|σ|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ为设定值。
可选地,还包括:
若确定所述恶意样本的壳函数为非指定类型的壳函数,则将所述函数调用图作为目标函数调用图。
可选地,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别,包括:
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令;
通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
可选地,通过图嵌入技术提取所述控制流程图的特征,包括:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征。
可选地,通过以下方式预训练分类预测模型,包括:
获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
可选地,获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图,包括:
基于虚拟系统程序运行所述恶意样本,得到执行所述恶意样本的机器码;
通过对所述机器码进行反汇编操作得到汇编指令,对所述汇编指令进行划分确定所述汇编指令的各函数;
基于所述各函数间的调用关系得到所述恶意样本对应的函数调用图。
根据本申请实施例的第二方面,提供一种恶意样本类别检测装置,该装置包括:
运行模块,用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
表示模块,用于将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
定位模块,用于根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;
确定模块,用于将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
可选地,所述定位模块用于通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区,具体用于:
以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;
滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区。
可选地,所述定位模块用于确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区,具体用于:
当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定满足分割条件;
确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
可选地,所述定位模块用于确定满足分割条件时交叉点位置,具体用于:
若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置。
可选地,所述定位模块用于确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,还用于:
根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置。
可选地,满足以下公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ|,d(A0)-d(A3)≥|σ|
d(A2)-d(A1)≥|σ|,d(A2)-d(A3)≥|σ|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ为设定值。
可选地,还包括:
若确定所述恶意样本的壳函数为非指定类型的壳函数,则将所述函数调用图作为目标函数调用图。
可选地,所述确定模块用于提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别,具体用于:
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令;
通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
可选地,所述确定模块用于通过图嵌入技术提取所述控制流程图的特征,具体用于:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征。
可选地,所述确定模块用于通过以下方式预训练分类预测模型,具体用于:
获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
可选地,所述运行模块用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图,具体用于:
基于虚拟系统程序运行所述恶意样本,得到执行所述恶意样本的机器码;
通过对所述机器码进行反汇编操作得到汇编指令,对所述汇编指令进行划分确定所述汇编指令的各函数;
基于所述各函数间的调用关系得到所述恶意样本对应的函数调用图。
根据本申请实施例的第三方面,提供一种恶意样本类别检测设备,包括:存储器和处理器;
其中,所述存储器用于存储程序,所述处理器用于执行所述存储器中的程序,以实现本申请实施例上述第一方面涉及的任一可能涉及的方法。
根据本申请实施例的第四方面,提供一种芯片,所述芯片与用户设备中的存储器耦合,使得所述芯片在运行时调用所述存储器中存储的程序指令,实现本申请实施例上述各个方面以及各个方面涉及的任一可能涉及的方法。
根据本申请实施例的第五方面,提供一种计算机可读存储介质,该计算机存储介质存储有程序指令,当其在计算机上运行时,使得计算机执行本申请实施例上述各个方面以及各个方面涉及的任一可能涉及的方法。
根据本申请实施例的第六方面,提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本申请实施例上述各个方面以及各个方面涉及的任一可能涉及的方法。
另外,第二方面至第六方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
利用本发明提供的一种恶意样本类别检测方法和装置及设备,具有以下有益效果:
本发明提供的一种恶意样本类别检测方法和装置及设备,可以通过将函数调用图映射为邻接矩阵,根据邻接矩阵的密度定位属于本地函数的调用函数的分区,使得恶意样本中本地函数和壳函数得以分离,在通过分类预测模型预测时更容易通过恶意样本中本地函数的特征预测恶意样本的类别,且本申请提取目标函数调用图的特征输入到分类预测模型,避免了现有技术中需要将控制流程图的大小进行标准化处理的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种恶意样本类别检测方法示意图;
图2为本发明实施例提供的一种有向图示意图;
图3为本发明实施例提供的一种将目标函数调用图中的各函数展开得到各函数对应的控制流程图的方法示意图;
图4为本发明实施例提供的一种通过图嵌入技术提取控制流程图的特征并映射为低维向量的方法示意图;
图5为本发明实施例提供的一种分类预测模型预训练方法示意图;
图6为本发明实施例提供的一种加密壳保护的恶意样本的邻接矩阵示意图;
图7为本发明实施例提供的一种虚拟机壳保护的恶意样本的邻接矩阵示意图;
图8为本发明实施例提供的一种通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区的方法示意图;
图9为本发明实施例提供的一种区分加密壳和虚拟机壳的方法示意图;
图10为本发明实施例提供的一种通过十字坐标分割邻接矩阵示意图;
图11为本发明实施例提供的一种通过十字坐标分割邻接矩阵示意图;
图12为本申请实施例提供的一种通过十字坐标分割邻接矩阵示意图;
图13为本发明实施例提供的一种通过十字坐标分割邻接矩阵示意图;
图14为本发明实施例提供的一种恶意样本类别检测方法示意图;
图15为本发明实施例提供的一种恶意样本类别检测装置示意图;
图16为本发明实施例提供的一种恶意样本类别检测设备示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了方便理解,下面对本发明实施例中涉及的名词进行解释:
1)本地函数:本地函数指的是恶意样本为实现系统永驻、与主控服务器通信等功能而封装的恶意行为函数,也即恶意样本的自定义函数,在恶意样本开始运行后,对其所执行的CALL指令进行判断,CALL指令地址指向一个非系统调用函数时,该地址是一个本地函数的指令起始地址;
2)函数调用图:函数调用图用来表示恶意样本中各函数之间的调用关系;
具体的,本申请实施例中,函数调用图还分为本地函数调用图和壳函数调用图,壳函数为壳的自定义函数。
3)基本块:一段有序指令序列,从第一条指令顺序执行到序列的最后一条指令,基本块中除了最后一条指令外,序列中的其他指令不会是分支或者跳转指令。
4)控制流程图(Control Flow Graph,CFG):每一个函数展开可以得到一个控制流程图,恶意样本开始运行后,将其所执行的指令集按JMP、RET等跳转指令分隔为基本块,一个函数中的基本块之间根据跳转方向联通构成控制流程图。
具体的,本申请实施例中将控制流程图定义为有向图C={V,E},其中C表示控制流程图,V表示有向图的节点集合,每一个基本块为一个节点,E表示有向图的边集合,每一次跳转为一条有向边。
本发明实施例描述的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。其中,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
一个恶意行为的产生并不会是一蹴而就的,必定有上下文的语义相关联,由一系列的函数调用及控制流程最终产生。同源的恶意代码在具体行为操作上有着相同或相似的代码片段,如函数的调用、自定义的加解密函数等,其实现的功能相同或相近,同源恶意代码由于其实施的功能相似或相近、同一作者编写习惯等原因,除去编译器自动产生的代码外,其行为操作的代码片段非常相似,因此可以通过提取恶意样本的特征进行恶意样本的同源性判定。
当前的恶意样本叠加壳保护技术后,其特征更加趋于一致,最终导致通过分析恶意代码的特征信息来进行同源判断的效果不理想,存在壳的执行流程与恶意样本的执行流程难以分隔,恶意样本变种之间特征难以提取的问题,且当前恶意样本对应的控制流图大小不一致,普通卷积神经网络无法处理。
鉴于以上问题,本申请提供一种恶意样本类别检测方法,用于检测恶意样本的同源性,通过分离恶意样本的壳执行流程和恶意样本自身行为函数的执行流程,将恶意样本自身行为函数从恶意样本中分离出来,更容易检测恶意样本的同源性,且通过提取目标函数调用图特征的方法,解决恶意样本对应的控制流图大小不一致,普通卷积神经网络无法处理的问题。
如图1所示,为本申请提供的一种恶意样本类别检测方法,该方法通过对获得的恶意样本进行类别检测,确定恶意样本的同源性,包括:
步骤S101,获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
本申请实施例中,采用沙箱作为虚拟系统程序运行获取的恶意样本,在沙箱中运行恶意样本后,得到恶意样本对应的机器码,机器码指将硬件序列号经过一系列加密、散列形成的一串序列号;
通过对所述机器码进行反汇编操作得到汇编指令,本申请实施例采用反汇编工具进行反汇编操作,可选地,在此不限定具体的反汇编工具,本领域技术人员可以根据实际需求设置。
得到汇编指令后,根据汇编指令CALL(跳转指令)对上述汇编指令进行划分,确定所述汇编指令的各函数,其中,各函数之间具有调用关系,具体的,调用关系指在程序中通过对函数的调用来执行函数体;
基于各函数间的调用关系得到所述恶意样本对应的函数调用图,本申请实施例中将函数调用图定义为有向图G={V,E},其中G表示函数调用图,V表示有向图的节点集合,每一个函数为一个节点,E表示有向图的边集合,每一次调用为一条有向边。
步骤S102,将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
有向图逻辑结构分为两部分:V和E集合,其中,用一个一维数组存放图中所有节点数据,用一个二维数组存放节点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。
调用函数对函数调用图中各函数是否有调用关系可以用不同的取值表示,可选地,当调用函数对各函数有调用关系时,将取值设置为1,当调用函数对各函数无调用关系时,将取值设置为0,也可以设置为其他的数值。通过上述不同取值得到邻接矩阵,且函数调用图中函数的数量,为对应邻接矩阵的阶数,例如,如图2所述,图中共有5个节点,节点间箭头表示有调用关系,则根据图2能够得到一个5*5的邻接矩阵,对应的邻接矩阵表示如下:
步骤S103,根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;
通过函数调用图对应的邻接矩阵的连通性能够较直观的表达壳函数和本地函数的耦合关系,本申请实施例通过邻接矩阵的连通性差异分离壳函数和本地函数,这种联通性差异可用有向图密度表示,具体的,本申请实施例中,有向图密度与邻接矩阵密度均表示邻接矩阵中表示有调用关系的取值的密度,可选地,密度公式为:
其中,E代表有向边的数量,N代表节点数量,通过该密度公式得到表示有调用关系的取值的密度分布;
上述满足密度分区分割条件,即通过表示有调用关系的取值的密度能够区分本地函数对应的分区,并定位属于本地函数的调用函数的分区。
步骤S104,将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
确定属于本地函数的调用函数的分区后,将该分区对应的邻接矩阵映射为目标函数调用图,具体的,按照上述将有向图映射为邻接矩阵的规则,将该分区对应的邻接矩阵映射为目标函数调用图;
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令,目标函数调用图的每个节点,也即每一个函数,都将被替换为每个目标函数对应的控制流程图;
将各函数展开得到各函数对应的控制流程图的方法是,当执行到指令调用本地函数的CALL指令时,移除包含CALL的指令,将包含CALL指令的基本块上下分割为[上]和[下],为CALL调用的目标函数生成控制流程图并添加有向边,使[上]指向包含控制流程图入口指令的基本块,使包含控制流程图返回指令的基本块指向[下],如图3所示,为本申请实施例中提供的将目标函数调用图中的各函数展开得到各函数对应的控制流程图的过程。
得到控制流程图后,通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别;
具体的,通过图嵌入技术提取所述控制流程图的特征,包括:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征,其中,可以提取上述任意一种作为通过图嵌入技术提取所述控制流程图的特征,可选地,可以提取上述几种特征的任意组合作为通过图嵌入技术提取所述控制流程图的特征,本申请实施例中,将上述三种特征共同作为通过图嵌入技术提取所述控制流程图的特征,如图4所述,为通过图嵌入技术提取所述控制流程图的特征并映射为低维向量的流程图。
本申请实施例中使用的图嵌入技术可以但不限于包括动态图卷积网络DGCNN和1-D CNN卷积模型,DGCNN中增加了多个图卷积层(Graph convolution layer)与一个排序池化层(Sort Pooling layer),其中,图卷积层中使用以下公式对控制流程图结构根据图卷积层数进行迭代运算:
Zt为上一层图卷积中对应公式的输出,Z0=X,X为上述提取的特征对应的特征向量,Wt为图卷积层的权重矩阵,取值为随机取值,维度等于t层中神经元的数量,f为激活函数RELU,公式如下:
f=max(x,0)
使用上述迭代运算公式迭代h次后,将得到的矩阵进行拼接得到[Z1,Z2...Zh-1,Zh]。
排序池化层中,将上述第h轮迭代的输出Zh的最后一个维度的值对应的特征进行降序排列,最后,根据1-D CNN卷积模型的卷积核数量k裁剪排列后的特征。当图中存在n个顶点时,若n>k,裁剪顶点数至k个;若n<k,则以零向量补齐特征至k,最后将裁剪排列后的特征输入传统1-D CNN卷积模型。
本申请实施例中,通过以下方式预训练分类预测模型,具体步骤如图5所示:
步骤S501,获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
恶意样本类别标签也即恶意样本的同源性标签。
步骤S502,将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
壳保护技术可分为两类:加密壳和虚拟机壳,对于被加密壳保护的恶意样本,恶意样本的函数由壳函数与本地函数组成。在运行过程中,壳函数不会调用本地函数,本地函数不会调用壳函数,壳函数和本地函数的耦合度低;对于被虚拟机壳保护的恶意样本,其函数的执行流程已经按照统一的逻辑被重构,壳函数与本地函数融为一体,耦合度高。
加密壳所属的壳函数之间具有连通性,但是加密壳所属的壳函数与本地函数之间不具备连通性,同理,本地函数之间也具备连通性,如图6所示,为使用加密壳保护的恶意样本的函数调用图对应的邻接矩阵,其中,图中仅示出表示有调用关系的取值,并用点进行表示,由图6可以得到,使用加密壳保护的恶意样本的邻接矩阵存在两个点集,位于左上角的点集代表首先被调用的壳函数,位于右下角的点集代表随后被调用的本地函数,如图7所示,为使用虚拟机壳保护的恶意样本的函数调用图对应的邻接矩阵,使用虚拟机保护的恶意样本的邻接矩阵则不存在明显分布趋势,因此,可以通过上述特征,将加密壳技术保护的恶意样本中壳函数和本地函数分离,具体过程如下所述;
下面介绍本申请实施例提供的通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区的步骤,如图8所示,包括:
步骤S801,以邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;
本申请实施例中,通过十字坐标将邻接矩阵划分为以四个分区,通过计算每个分区对应的密度来分离本地函数和壳函数,其中,每个分区都是一个二维矩阵,每个分区中表示有调用关系的取值的密度见上述有向图密度公式,在此不再赘述;
通过以邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,可以对邻接矩阵进行多种分割,也即邻接矩阵交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区。
步骤S802,滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区。
在滑动过程中共对邻接矩阵进行了多种分割,具体的,滑动结束后,分割的次数为函数调用图中函数的数量减一;
分割条件为当第一象限分区和第三象限分区的密度之和小于预设阈值,预设阈值可以为提前设定的,可以变换的参数,对于加密壳保护的恶意样本的邻接矩阵存在两个点集,位于左上角的点集代表首先被调用的壳函数,位于右下角的点集代表随后被调用的本地函数,当第一象限分区和第三象限分区的密度之和小于预设阈值,此时第二象限分区对应的壳函数对应分区,第四象限对应本地函数对应分区,此时确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区;
进一步的,若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置,此时第二象限分区中壳函数对应的密度最大,第四象限分区中本地函数对应的密度最大,可以最大程度将壳函数和本地函数分离,且最少可能遗漏本地函数。
可选地,加密壳保护的恶意样本中壳函数和本地函数耦合度低,但是虚拟机壳保护的恶意样本中壳函数与本地函数耦合度较高,因此本申请实施例还提供一种区分加密壳和虚拟机壳的方法,如图9所示:
步骤S901,根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
满足以下公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ|,d(A0)-d(A3)≥|σ|
d(A2)-d(A1)≥|σ|,d(A2)-d(A3)≥|σ|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ为设定值,上述4个公式中σ并不完全相同,本领域技术人员可以根据需求进行设定;
此时,指定类型的壳函数为本地函数与壳函数耦合度低的壳函数,可选地,本申请实施例中设置指定类型的壳函数为加密壳函数,但是对于其他本地函数与壳函数耦合度低时对应的壳函数,本申请提供的方法也同样适用。
当不满足上述条件时,则表示恶意样本中壳函数与本地函数耦合度高,例如虚拟机壳类型的壳函数或者其他类型的壳函数,则此时将函数调用图作为目标函数调用图。
步骤S902,若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置。
在满足上述区分壳函数类型的条件下,当确定为指定类型的壳函数时,将确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,此时将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
加密壳函数对恶意样本提取特征有严重的干扰,有必要在分类前将壳函数与恶意行为函数进行分离,若壳类型被判定为加密壳,则仅保留邻接矩阵的第四象限分区对应的调用函数作为目标函数。虚拟机壳对恶意样本提取特征有严重的干扰但无法分离。若壳类型被判定为虚拟机壳,可以按照被虚拟机重构后的恶意样本作为一个新的家族进行分类。例如,为被虚拟机壳“VMProtect”保护的恶意软件家族“gh0s t”生成新的恶意样本家族“VMProtect.gh0st”。
下面结合具体的实施例,介绍本申请实施例提出的将加密壳技术保护的恶意样本中壳函数和本地函数分离方法,如下所示:
以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,设置交叉点为i,函数调用图中函数的数量为m,则可将邻接矩阵A∈Zm×m分割为四个子矩阵,如图10所示:
A0 i*(m-i),A1∈Zi*i,A2∈(m-i)*i,A3∈Z(m-i)*(m-i)
四个矩阵的密度分别为:
d(A0),d(A1),d(A2),d(A3)
以加密壳为例,对于m阶邻接矩阵,十字坐标的滑动过程可以分为3个阶段:
1)当十字坐标的交叉点由元素M0滑动至顶点Mi-1时,A0与A2包含部分壳函数,因此d(A0)>min(d(A0)),d(A2)>min(d(A2)),如图11所示;
2)当十字坐标的交叉点滑动至顶点Mi时,A0与A2即不包含壳函数,又不包含本地函数,由于壳函数和本地函数之间不具备连通性,则此时对应d(A0)=min(d(A0)),d(A2)>min(d(A2)),如图12所示;
3)当十字坐标的交叉点由元素Mi+1滑动至顶点Mm-1时,A0与A2包含部分本地函数,因此d(A0)>min(d(A0)),d(A2)>min(d(A2)),如图13所示。
滑动结束后,共产生了m-1种分割,此时选择从中选择d(A0)与d(A2)之和最小的分割方式,将此时A3子矩阵对应的分区映射为目标函数调用图。
可选地,本申请实施例在获取恶意样本之后,首先将恶意样本使用开源查壳工具,按查壳工具识别的壳名称对恶意样本进行初步分类。
下面结合具体实施例介绍本申请提供的一种恶意样本类别检测方法,如图14所示,包括:
步骤S1401,基于虚拟系统程序运行所述恶意样本,得到执行恶意样本的机器码;
步骤S1402,通过对机器码进行反汇编操作得到汇编指令,对汇编指令进行划分确定汇编指令的各函数;
步骤S1403,基于各函数间的调用关系得到恶意样本对应的函数调用图;
步骤S1404,将函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
步骤1405,以邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,交叉点每滑动到任一元素时,将邻接矩阵划分为四个分区;
步骤S1406,根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定恶意样本的壳函数是否为指定类型的壳函数,若是,执行步骤S1407,否则执行步骤S1408,;
步骤S1407,当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区,将属于本地函数的调用函数的分区映射为目标函数调用图;
步骤S1408,若确定恶意样本的壳函数为非指定类型的壳函数,则将函数调用图作为目标函数调用图;
步骤S1409,将目标函数调用图中的各函数展开得到各函数对应的控制流程图;
步骤S1410,通过图嵌入技术提取控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
以上对本发明中一种恶意样本类别检测方法进行说明,以下对执行上述恶意样本类别检测方法的装置进行说明。
请参阅图15本发明实施例提供的一种恶意样本类别检测装置,包括:
运行模块1501,用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
表示模块1502,用于将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
定位模块1503,用于根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;
确定模块1504,用于将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
可选地,所述定位模块用于通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区,具体用于:
以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;
滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区。
可选地,所述定位模块用于确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区,具体用于:
当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定满足分割条件;
确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
可选地,所述定位模块用于确定满足分割条件时交叉点位置,具体用于:
若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置。
可选地,所述定位模块用于确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,还用于:
根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置。
可选地,满足以下公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ|,d(A0)-d(A3)≥|σ|
d(A2)-d(A1)≥|σ|,d(A2)-d(A3)≥|σ|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ为设定值。
可选地,还包括:
若确定所述恶意样本的壳函数为非指定类型的壳函数,则将所述函数调用图作为目标函数调用图。
可选地,所述确定模块用于提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别,具体用于:
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令;
通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
可选地,所述确定模块用于通过图嵌入技术提取所述控制流程图的特征,具体用于:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征。
可选地,所述确定模块用于通过以下方式预训练分类预测模型,具体用于:
获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
可选地,所述运行模块用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图,具体用于:
基于虚拟系统程序运行所述恶意样本,得到执行所述恶意样本的机器码;
通过对所述机器码进行反汇编操作得到汇编指令,对所述汇编指令进行划分确定所述汇编指令的各函数;
基于所述各函数间的调用关系得到所述恶意样本对应的函数调用图。
上面从模块化功能实体的角度对本申请实施例中的一种恶意样本类别检测装置进行了描述,下面从硬件处理的角度对本申请实施例中的恶意样本类别检测设备进行描述。
请参阅图16,本申请实施例中一种恶意样本类别检测设备,包括:
至少一个处理器1601和至少一个存储器1602,以及总线系统1609;
其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行下列过程:
获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
根据表示有调用关系的取值的密度分布,通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区;
将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
图16是本申请实施例提供的一种恶意样本类别检测设备示意图,该设备1600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(英文全称:central processing units,英文简称:CPU)1601(例如,一个或一个以上处理器)和存储器1602,一个或一个以上存储应用程序1604或数据1605的存储介质1603(例如一个或一个以上海量存储设备)。其中,存储器1602和存储介质1603可以是短暂存储或持久存储。存储在存储介质1603的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对信息处理装置中的一系列指令操作。更进一步地,处理器1601可以设置为与存储介质1603通信,在设备1600上执行存储介质1603中的一系列指令操作。
设备1600还可以包括一个或一个以上有线或无线网络接口1607,一个或一个以上输入输出接口1608,和/或,一个或一个以上操作系统1606,例如Windows Server,Mac OSX,Unix,Linux,FreeBSD等。
可选地,所述处理器用于通过满足密度分区分割条件时对应的分区,定位属于本地函数的调用函数的分区,具体用于:
以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;
滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区。
可选地,所述处理器用于确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区,具体用于:
当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定满足分割条件;
确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
可选地,所述处理器用于确定满足分割条件时交叉点位置,具体用于:
若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置。
可选地,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,还包括:
根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置。
可选地,满足以下公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ|,d(A0)-d(A3)≥|σ|
d(A2)-d(A1)≥|σ|,d(A2)-d(A3)≥|σ|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ为设定值。
可选地,还包括:
若确定所述恶意样本的壳函数为非指定类型的壳函数,则将所述函数调用图作为目标函数调用图。
可选地,所述处理器用于提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别,具体用于:
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令;
通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
可选地,所述处理器用于通过图嵌入技术提取所述控制流程图的特征,具体用于:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征。
可选地,所述处理器用于通过以下方式预训练分类预测模型,具体用于:
获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
可选地,所述处理器用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图,具体用于:
基于虚拟系统程序运行所述恶意样本,得到执行所述恶意样本的机器码;
通过对所述机器码进行反汇编操作得到汇编指令,对所述汇编指令进行划分确定所述汇编指令的各函数;
基于所述各函数间的调用关系得到所述恶意样本对应的函数调用图。
本发明实施例还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述实施例提供的恶意样本类别检测的方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序包括程序指令,当所述程序指令被电子设备执行时,使所述电子设备执行上述实施例提供的恶意样本类别检测方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上对本申请所提供的技术方案进行了详细介绍,本申请中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种恶意样本类别检测方法,其特征在于,该方法包括:
获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
根据表示有调用关系的取值的密度分布,以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区;
将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
2.根据权利要求1所述的方法,其特征在于,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区,包括:
当第一象限分区和第三象限分区的密度之和小于预设阈值时,确定满足分割条件;
确定满足分割条件时交叉点位置,将该交叉点位置对应的分区中第四象限分区,定位为本地函数的调用函数的分区。
3.根据权利要求2所述的方法,其特征在于,确定满足分割条件时交叉点位置,包括:
若满足分割条件的交叉点位置为多个时,确定第一象限分区和第三象限分区的密度之和最小对应的交叉点位置。
4.根据权利要求1~3任一所述的方法,其特征在于,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,还包括:
根据滑动过程中不同指定分区的密度分布是否出现差异特征,确定所述恶意样本的壳函数是否为指定类型的壳函数;
若是指定类型的壳函数,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,将该交叉点位置对应的分区中的第四象限分区,定位为属于本地函数的调用函数的分区。
5.根据权利要求4所述的方法,其特征在于,满足以下全部公式时,确定不同指定分区的密度分布是否出现差异特征,包括:
d(A0)-d(A1)≥|σ1|,d(A0)-d(A3)≥|σ2|
d(A2)-d(A1)≥|σ3|,d(A2)-d(A3)≥|σ4|
其中,d(A0)为第一象限分区的密度,d(A1)为第二象限分区的密度,d(A2)为第三象限分区的密度,d(A3)为第四象限分区的密度,σ1、σ2、σ3、σ4为设定值。
6.根据权利要求4所述的方法,其特征在于,还包括:
若确定所述恶意样本的壳函数为非指定类型的壳函数,则将所述函数调用图作为目标函数调用图。
7.根据权利要求1所述的方法,其特征在于,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别,包括:
将所述目标函数调用图中的各函数展开得到各函数对应的控制流程图,所述控制流程图由基本块构成,每个基本块为一段有序指令;
通过图嵌入技术提取所述控制流程图的特征并映射为低维向量后,输入到分类预测模型确定所述恶意样本的类别。
8.根据权利要求7所述的方法,其特征在于,通过图嵌入技术提取所述控制流程图的特征,包括:
提取控制流程图中每个基本块最长的机器码指令长度、机器码指令条数以及每个基本块调用其他基本块及被其他基本块调用的次数作为所述特征。
9.根据权利要求1所述的方法,其特征在于,通过以下方式预训练分类预测模型,包括:
获取包括多个样本的样本集,每个样本包括恶意样本及恶意样本类别标签;
将样本集中恶意样本作为输入,以输出所述恶意样本的类别标签为目标进行网络模型训练得到所述分类预测模型。
10.根据权利要求1所述的方法,其特征在于,获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图,包括:
基于虚拟系统程序运行所述恶意样本,得到执行所述恶意样本的机器码;
通过对所述机器码进行反汇编操作得到汇编指令,对所述汇编指令进行划分确定所述汇编指令的各函数;
基于所述各函数间的调用关系得到所述恶意样本对应的函数调用图。
11.一种恶意样本类别检测装置,其特征在于,该装置包括:
运行模块,用于获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
表示模块,用于将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
定位模块,用于根据表示有调用关系的取值的密度分布,以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区;
确定模块,用于将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
12.一种恶意样本类别检测设备,其特征在于,包括:存储器、处理器;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,包括如下步骤:
获取恶意样本并基于虚拟系统程序运行所述恶意样本,得到所述恶意样本对应的函数调用图;
将所述函数调用图中任一函数作为调用函数,将调用函数对函数调用图中各函数是否有调用关系用不同的取值表示,得到邻接矩阵;
根据表示有调用关系的取值的密度分布,以所述邻接矩阵主对角线上的元素为十字坐标的交叉点滑动十字坐标,所述交叉点每滑动到任一元素时,将所述邻接矩阵划分为四个分区;滑动结束后,确定分区密度在滑动过程中满足分割条件时对应的交叉点位置,根据该交叉点位置对应的分区,定位属于本地函数的调用函数的分区;
将属于本地函数的调用函数的分区映射为目标函数调用图,提取所述目标函数调用图的特征并输入到分类预测模型确定所述恶意样本的类别。
13.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当其在计算机上运行时,使得计算机执行如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241438.4A CN111368304B (zh) | 2020-03-31 | 2020-03-31 | 一种恶意样本类别检测方法和装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010241438.4A CN111368304B (zh) | 2020-03-31 | 2020-03-31 | 一种恶意样本类别检测方法和装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111368304A CN111368304A (zh) | 2020-07-03 |
CN111368304B true CN111368304B (zh) | 2022-07-05 |
Family
ID=71212147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010241438.4A Active CN111368304B (zh) | 2020-03-31 | 2020-03-31 | 一种恶意样本类别检测方法和装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111368304B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116018B (zh) * | 2020-09-25 | 2024-05-14 | 奇安信科技集团股份有限公司 | 样本分类方法、装置、计算机设备、介质和程序产品 |
CN112256823B (zh) * | 2020-10-29 | 2023-06-20 | 众阳健康科技集团有限公司 | 一种基于邻接密度的语料数据抽样方法及系统 |
CN114564562B (zh) * | 2022-02-22 | 2024-05-14 | 平安科技(深圳)有限公司 | 基于答案指导的题目生成方法、装置、设备及存储介质 |
CN114640507B (zh) * | 2022-02-28 | 2024-03-12 | 天翼安全科技有限公司 | 一种WebShell的检测方法、装置及存储介质 |
CN115098857B (zh) * | 2022-06-15 | 2024-07-12 | 天津大学 | 一种可视化恶意软件的分类方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341399A (zh) * | 2016-04-29 | 2017-11-10 | 阿里巴巴集团控股有限公司 | 评估代码文件安全性的方法及装置 |
CN109190653A (zh) * | 2018-07-09 | 2019-01-11 | 四川大学 | 基于半监督密度聚类的恶意代码家族同源性分析技术 |
CN110704840A (zh) * | 2019-09-10 | 2020-01-17 | 中国人民公安大学 | 一种基于卷积神经网络cnn的恶意软件检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3430557B1 (en) * | 2016-03-15 | 2021-04-21 | Carbon Black, Inc. | System and method for reverse command shell detection |
-
2020
- 2020-03-31 CN CN202010241438.4A patent/CN111368304B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341399A (zh) * | 2016-04-29 | 2017-11-10 | 阿里巴巴集团控股有限公司 | 评估代码文件安全性的方法及装置 |
CN109190653A (zh) * | 2018-07-09 | 2019-01-11 | 四川大学 | 基于半监督密度聚类的恶意代码家族同源性分析技术 |
CN110704840A (zh) * | 2019-09-10 | 2020-01-17 | 中国人民公安大学 | 一种基于卷积神经网络cnn的恶意软件检测方法 |
Non-Patent Citations (3)
Title |
---|
Classifying Packed Malware Represented as Control Flow Graphs using Deep Graph Convolutional Neural Network;Yakang Hua等;《2020 International Conference on Computer Engineering and Application (ICCEA)》;20200529;全文 * |
Semi-supervised Classification for Dynamic Android Malware Detection;Li Chen等;《CCS "17: Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security》;20171103;全文 * |
基于函数调用图的Android恶意程序检测技术研究与实现;林舒婕;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20180315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111368304A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111368304B (zh) | 一种恶意样本类别检测方法和装置及设备 | |
CN110399770B (zh) | 基于利用物理特性增强对象生成针对对象的机器学习模型 | |
CN110135157B (zh) | 恶意软件同源性分析方法、系统、电子设备及存储介质 | |
US10679055B2 (en) | Anomaly detection using non-target clustering | |
CN112434721A (zh) | 一种基于小样本学习的图像分类方法、系统、存储介质及终端 | |
US10366277B2 (en) | Automated methods and systems for identifying and characterizing face tracks in video | |
Jerripothula et al. | Cats: Co-saliency activated tracklet selection for video co-localization | |
EP3002686A1 (en) | Language identification | |
US10762678B2 (en) | Representing an immersive content feed using extended reality based on relevancy | |
US20190108218A1 (en) | Automated term extraction | |
Li et al. | Towards efficient graph convolutional networks for point cloud handling | |
US20150007120A1 (en) | Clustering using n-dimensional placement | |
KR20210048865A (ko) | 로봇 프로세스 자동화 장치 및 그것의 변경점 탐지 방법 | |
CN104484671A (zh) | 应用于移动平台的目标检索系统 | |
Lias-Rodriguez et al. | An algorithm for computing typical testors based on elimination of gaps and reduction of columns | |
Nguyen et al. | Context from within: Hierarchical context modeling for semantic segmentation | |
US12050522B2 (en) | Graph machine learning for case similarity | |
Bergamasco et al. | A graph-based technique for semi-supervised segmentation of 3D surfaces | |
CN117354067B (zh) | 一种恶意代码检测方法及系统 | |
CN113283432A (zh) | 图像识别、文字排序方法及设备 | |
KR20150112832A (ko) | 산출 프로그램, 산출 장치 및 산출 방법 | |
JP2019504430A (ja) | 画像処理方法及びデバイス | |
CN112613550A (zh) | 一种数据分类方法、装置及相关设备 | |
US11334358B2 (en) | Hardware accelerator having reconfigurable instruction set and reconfigurable decoder | |
CN107818125A (zh) | 通过simd处理器寄存器对数据进行迭代评估 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |