CN113360912A - 恶意软件检测方法、装置、设备及存储介质 - Google Patents

恶意软件检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113360912A
CN113360912A CN202110905738.2A CN202110905738A CN113360912A CN 113360912 A CN113360912 A CN 113360912A CN 202110905738 A CN202110905738 A CN 202110905738A CN 113360912 A CN113360912 A CN 113360912A
Authority
CN
China
Prior art keywords
software
graph
detected
function call
function
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.)
Pending
Application number
CN202110905738.2A
Other languages
English (en)
Inventor
贾鹏
王炎
方勇
吴小王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan University
Original Assignee
Sichuan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan University filed Critical Sichuan University
Priority to CN202110905738.2A priority Critical patent/CN113360912A/zh
Publication of CN113360912A publication Critical patent/CN113360912A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供一种恶意软件检测方法、装置、设备及存储介质,涉及网络信息安全技术领域,所述方法包括:静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;结合所述语义特征向量与所述函数调用图,生成属性函数调用图;将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息。本申请的恶意软件检测方法能够自动化的提取二进制程序的语义特征和结构特征,将语义特征和结构特征结合通过图神经网络进行判断,改善了现有检测方法中存在的特征表示不完备、漏报率和误报率较高的问题,能够快速准确检测恶意软件。

Description

恶意软件检测方法、装置、设备及存储介质
技术领域
本申请实施例涉及网络信息安全技术领域,具体而言,涉及一种恶意软件检测方法、装置、设备及存储介质。
背景技术
计算机技术的高速发展使人们日常生活更加便捷的同时,也促使黑客的攻击手段和技术不断提高,导致网络攻击问题日益严重,网络空间的安全威胁数量逐年递增,而恶意软件是所有安全威胁中的占比最大一类。恶意软件是指对计算机***造成破坏或执行不良操作的程序。攻击者可以通过恶意软件攻击计算机***,实现特权提升、远程控制、隐私窃取等目的,并进一步攻击计算机网络中的其他终端。
早期的恶意软件结构简单,并且不采用复杂的保护技术,安全厂商能够使用签名等技术对其进行检测。但是,计算机技术日新月异,恶意软件也不断采用新的攻击方法来实施恶意攻击。首先,新一代的恶意软件可以同时使用多个不同的进程,并使用一些混淆技术来隐藏自身,从而使其可以持久存在于***中。其次,为了绕过或禁用各种安全机制来实现恶意行为,新恶意软件使用了更复杂的代码、结构和技术,使其更具破坏性且更难被检测。
而现有的恶意软件检测方法在新一代的恶意软件的检测上存在无法应对未知恶意软件、误报和漏报情况高的缺点。因此,为了解决日趋严重的网络空间安全问题,新的有效的恶意软件检测方法的提出变得刻不容缓。
发明内容
本申请实施例提供一种恶意软件检测方法、装置、设备及存储介质,旨在解决以上至少一项技术问题。
本申请实施例第一方面提供一种恶意软件检测方法,所述方法包括:
静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;
对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;
结合所述语义特征向量与所述函数调用图,生成属性函数调用图;
将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息。
可选地,所述静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图,包括:
判断所述二进制文件是否采用加壳技术;
当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
根据所述汇编代码构建所述待检测软件的函数调用图。
可选地,所述对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量,包括:
规范化处理所述汇编代码,得到规范化汇编代码;
将每个函数的规范化汇编代码转为多个格式规范的词法单元token;
将每个token映射为向量表示;
聚合函数内所有token的向量表示,得到函数的语义特征向量。
可选地,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层;
所述将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息,包括:
将所述属性函数调用图输入图神经网络层,获取程序嵌入向量表示;
其中,所述全连接层用于判断所述程序嵌入向量表示与恶意属性的非线性关系;
所述激活层用于依据所述非线性关系预测所述待检测软件的恶意属性信息。
本申请实施例第二方面提供一种恶意软件检测装置,所述装置包括:
静态分析信息提取器,用于静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;
语义特征提取器,用于对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;
结构特征组合器,用于结合所述语义特征向量与所述函数调用图,生成属性函数调用图;
图神经网络分类模型,用于依据所述属性函数调用图检测所述待检测软件的恶意属性信息。
可选地,所述静态分析信息提取器,包括:
查壳单元,用于判断所述二进制文件是否采用加壳技术;
脱壳单元,用于当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
反汇编单元,用于对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
函数调用图提取单元,用于根据所述汇编代码构建所述待检测软件的函数调用图。
可选地,所述语义特征提取器,包括:
规范化子模块,用于规范化处理所述汇编代码,得到规范化汇编代码;
词法单元token转换子模块,用于将每个函数的规范化汇编代码转为多个格式规范的词法单元token;
向量表示转换子模块,用于将每个token映射为向量表示;
聚合子模块,用于聚合函数内所有token的向量表示,得到函数的语义特征向量。
可选地,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层;
图神经网络层,用于接收所述属性函数调用图,获取程序嵌入向量表示;
全连接层,用于接收所述图神经网络层传递的所述程序嵌入向量表示,判断所述程序嵌入向量表示与恶意属性的非线性关系;
激活层,用于接收所述全连接层传递的所述非线性关系,依据所述非线性关系预测所述待检测软件的恶意属性信息。
本申请实施例第三方面提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法。
本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请第一方面所述的方法。
采用本申请提供的恶意软件检测方法,检测对象为二进制程序,无需程序源码,不依赖于重量级的程序分析技术,能够自动化的提取二进制程序的语义特征向量与函数调用图,特征提取速度快,提取出的函数特征向量和函数调用图分别表示了程序的语义特征和程序的结构特征,将语义特征和结构特征这两个深层特征进行结合通过图神经网络分类模型进行预测,得到恶意属性信息,本申请能够快速准确检测恶意软件,改善了现有检测方法中存在的特征表示不完备、漏报率和误报率较高的问题。
除上述优点外,本申请的方法还具有以下优势:一、由于检测对象为二进制程序,不依赖于程序源码,除更符合实际应用中的需求外,还能同时支持Windows***下的PE文件和Linux***下的ELF文件,能够检测实际的大部分二进制文件。二、本申请的方法不需要二进制领域的专业知识,能够自动化的提取二进制文件特征,节省了大量的人力物力,并且采用深度学习方法进行恶意软件检测,可以通过增量训练的方法进一步提高模型检测效果,与传统的恶意软件检测方法相比,节约计算资源,通用性更高。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的恶意软件检测方法的流程图;
图2是本申请一实施例提出的函数调用图;
图3是本申请一实施例提出的函数调用图与函数语义特征向量结合的示意图;
图4是本申请一实施例提出的恶意软件检测装置的功能模块的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
恶意软件检测技术经历了基于签名、基于传统机器学习算法到现在基于深度学习方法的历程。基于签名的方法检测速度快,但是无法应对未知恶意软件。基于传统机器学习的方法能处理大规模的可疑样本,但是依赖于人工设计和提取特征。需要对恶意软件进行深入的分析,分析人员需要高级的编程知识、深厚的文件***知识、扎实的代码检查能力和逆向工程能力。但是,该领域专家数量不足以应对日益增长的恶意软件攻击。
现有的基于深度学习的检测方法能够自动的从原始输入提取特征进行检测,如基于控制流图的检测方法,其为程序内的每个函数建立控制流图,汇总所有函数的控制流图形成总控制流程图,通过图神经网络检测总控制流程图判断是否为恶意软件,又如基于灰度图的检测方法,其将原始二进制文件转换为灰度图进行检测,其通过灰度来判断其是否为恶意软件,综上可以看出目前的恶意深度学习检测方法过于依赖训练数据、只利用单一的浅层特征,因此其存在较高的误报和漏报情况。
本申请为了解决上述恶意软件检测中存在的问题,提出了一种新的恶意软件检测方法,使用轻量级的静态分析技术提取恶意软件的结构信息与语义信息,通过深度学习方法基于结构信息与语义信息对二进制软件进行检测,能够实现对恶意软件的快速准确检测。
参考图1,图1是本申请一实施例提出的恶意软件检测方法的流程图。如图1所示,该方法包括以下步骤:
步骤S110、静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图。
对待检测软件的二进制文件进行静态分析,提取程序中所包括的汇编代码的详细信息。根据得到的汇编代码,提取函数的调用关系构建函数调用图。
在本申请一个可选实施例中,所述静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图,包括:
1、判断所述二进制文件是否采用加壳技术;
加壳技术的全称为可执行程序资源压缩,加壳可阻止外部程序或软件对程序本身进行反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,可实现隐藏程序真正的OEP(入口点)的目的。但是该方法通常被恶意软件所利用,来绕过扫描。
2、当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
当检测到待检测软件的二进制文件采用了加壳技术时,对二进制文件进行脱壳,脱壳方法可根据对应的加壳方法进行选择。如果没有加壳,则不进行脱壳处理。
3、对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
将脱壳后的二进制文件转为汇编为汇编代码,采用线性扫描算法和递归扫描算法提取逻辑地址(如004011E3)中的二进制文件,将读取的二进制文件如1000100111011转换汇编代码,如 push、mov等
4、根据所述汇编代码构建所述待检测软件的函数调用图。
根据提取出的汇编代码,通过识别函数头部、尾部等边界信息提取出所有函数,并根据转移指令信息获取函数的调用关系并构建函数调用图,生成的函数调用图表示了程序内部函数的调用关系,如图2所示,图2示出了一个程序的函数调用图,如图2所示main函数调用copy函数, copy函数又调用copy_fifo、copy_file、copy_special、setfile这四个函数,函数调用图能够表示了程序内部的结构信息,其能够帮助理解程序各部分的功能分野、函数之间的层次关系。函数调用图不同于表示程序执行过程的控制流程图,控制流图侧重于反应程序的执行状态等信息。
步骤S120、对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量。
得到待检测软件中的每个函数汇编代码的汇编代码后,将其的汇编代码进行转换得到每个函数的语义特征向量。
在本申请一个实施例中,所述对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量,包括:
A、规范化处理所述汇编代码,得到规范化汇编代码;
由于每一个程序使用的数值常量、字符串都是不同的,而这些值不与功能实现的语义特征存在关联,其只是表示编程者语言使用上的特征,如果将其加入不仅会干扰恶意软件检测,还会导致词向量模型中的词袋较大,不利于检测方法的扩展。因此需要对汇编代码进行规范化处理,规范化处理规则为:将汇编指令中的数值常量替换为字符“N”,将汇编指令中的字符串替换为字符“M”,然后使用符号“-”连接汇编指令的操作码与操作数,示例的,原始汇编代码如
Figure 713330DEST_PATH_IMAGE001
Figure 319892DEST_PATH_IMAGE002
,依据规范化处理规则进行规范得到规范化后的汇编代码push_N和call_M。
B、将每个函数的规范化汇编代码转为多个格式规范的词法单元token;
对于程序内的每个函数,都需要将其规范化处理后的汇编代码分解为多个token,token部分场景译为词法单元,其是对函数进行结构扫描的产物,表示一种语法结构,依据函数的结构将其转换为符合格式规范的token,例如,直接将规范化后的每一行汇编指令作为一个token,得到token集合(Push-ebp,mov-ebp-esp,sub-esp-N,push-N,retn,……),
C、将每个token映射为向量表示。
每个函数的token集合都将被输入预设的词向量模型,集合内每个token映射为向量表示,如将步骤B中的token集合映射为以下向量表示
Figure 313255DEST_PATH_IMAGE003
D、聚合函数内所有token的向量表示,得到函数的语义特征向量。
对于程序内的每一个函数,都需要函数内所有token的向量表示进行聚合,生成函数的语义特征向量,聚合方法可采用平均值计算、加权计算等,如将步骤C的向量表示聚合得到以下函数语义特征向量
Figure 67585DEST_PATH_IMAGE004
本申请的词向量模型是通过训练的,预先采用汇编代码语料库训练基础Word2Vec词向量模型,使其能够每个token映射到汇编代码的语言空间中进行向量表示。
函数的语义特征向量包含了函数的语义特征,其表示了函数的语法、语言含义、表层特征等。
步骤S130、结合所述语义特征向量与所述函数调用图,生成属性函数调用图。
将步骤S120生成的函数语义特征向量与步骤S110生成的程序函数调用图组合生成带属性信息的函数调用图AFCG。如图3所示,图3示出了函数调用图与函数语义特征向量结合的示意图,将函数语义特征与程序结构特征结合生成属性函数调用图。属性函数调用图是一种高维稀疏的图结构数据,其节点表示函数,每个节点附带有属性特征,节点与节点之间的边表示函数之间的调用关系。
步骤S140、将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息。
将属性函数调用图输入图神经网络分类模型中,首先,模型会依据属性函数调用图生成程序嵌入向量表示,程序嵌入向量表示是基于属性函数调用图生成的一种向量表示形式,如
Figure 804597DEST_PATH_IMAGE005
,程序嵌入向量表示结合了程序的语义特征和结构特征,进一步的,模型依据程序嵌入向量表示生成恶意属性信息如0或1,得到恶意属性信息后根据模型训练时对恶意属性信息的设置(如0代表待检测软件为正常程序,1代表待检测软件为恶意程序)即可知道待检测软件是否为恶意程序等信息。
本申请一个实施例中,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层。
所述将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息,包括:
将所述属性函数调用图输入图神经网络层,获取程序嵌入向量表示;
图网络是一种可以在基于图形数据上运行的一般深度学习架构,它是一种基于图结构的广义神经网络。图网络一般是将底层图形作为计算图,并通过在整张图上传递、转换和聚合节点特征信息,从而学习神经网络基元以生成单节点嵌入向量。
本申请图神经网络层采用Struc2vec图神经网络结构,并且本申请的图神经网络的每一层还添加了注意力机制,使节点聚合时能够采用注意力机制进行聚合,经过图神经网络层将输出得到一个包含语义信息和结构信息的程序嵌入向量表示。
结构特征包含了程序内部各部分执行过程中的关联关系,能够表示与程序功能相关的信息,由于恶意软件往往需要执行与良性程序不同的特定的功能,所以其结构特征往往与良性程序的结构特征存在差异,而且不同恶意家族的软件也会存在不一样的特性。但是由于各种混淆技术,或者恶意软件制作者会更改代码,所以如果采用单独的结构特征会导致较高的误报率。另一方面,单纯的语义特征缺又不足以应对复杂的各种恶意软件。
本申请认为在考虑语义特征的基础上还需要考虑了结构特征,将语义特征与结构特征相结合,因为不管代码如何的更改,程序所要执行的特定功能的语义却是不变的,本申请通过属性函数调用图、图神经网络将程序的结构特征和语义特征进行结合生成程序嵌入向量表示进行判断,相比单独训练结构特征和语义特征可以提取更加丰富且精准的隐藏信息,提升恶意软件检测的性能。
其中,所述全连接层用于判断所述程序嵌入向量表示与恶意属性的非线性关系;
所述激活层用于依据所述非线性关系预测所述待检测软件的恶意属性信息。
全连接层后接激活层,二者共同构成了一个判别器。将程序嵌入向量表示输入全连接层,全连接层在训练阶段已经学习了恶意属性与输入的特征之间的关系,其在接收到图神经网络层输入的程序嵌入向量表示向量将依据其学习的关系判断当前输入特征与恶意属性的非线性关系,激活层接收的全连接层输出的非线性关系,从而输出待检测软件的恶意属性信息,属性信息是预设的,其能够用于表示待检测软件的多种恶意信息:待检测软件是/不是恶意软件,待检测软件为何种恶意家族。
本申请的判别器可以是二分类模型也可以是多分类模型,当采用二分类模型时,其判断待检测软件为正常软件或恶意软件,示例的,图神经网络层得到程序嵌入向量表示输出如
Figure 327982DEST_PATH_IMAGE006
后,将该向量分别输入二分类判别器,二分类器输出为0则表示该程序为正常程序,输出为1则表示该程序为恶意程序。当采用多分类模型,其判断待检测软件的恶意家族类别,例如将程序嵌入向量表示输出如
Figure 757826DEST_PATH_IMAGE007
输入多分类器,将输出属于各恶意家族的概率,如(A:0.1,B:0.2,C:0.6,D:0.1),取概率最高的恶意家族为预测结果,如该恶意软件为C类恶意家族。通过双分类器,本申请的方法既能够完成恶意软件检测任务亦能完成恶意软件家族分类任务。
通过分类器的灵活选择,本申请的方法不仅支持恶意软件检测任务,还能够进行恶意软件家族分类。实际使用中具体选择二分类或者多分类应当根据具体情况进行选择。如仅需要判断软件是否恶意时等简单场景时即可仅使用二分类,当使用于一些复杂场景如需要判断恶意软件家族使则需要使用多分类。当然,无论选择分类模型都应当经过训练后使用。
采用本申请提供的恶意软件检测方法,检测对象为二进制程序,无需程序源码,不依赖于重量级的程序分析技术,能够自动化的提取二进制程序的语义特征向量与函数调用图,特征提取速度快,提取出的函数特征向量和函数调用图分别表示了程序的语义特征和程序的结构特征,将语义特征和结构特征这两个深层特征进行结合通过图神经网络分类模型进行预测,得到恶意属性信息,本申请能够快速准确检测恶意软件,改善了现有检测方法中存在的特征表示不完备、漏报率和误报率较高的问题。
除上述优点外,本申请的方法还具有以下优势:一、由于检测对象为二进制程序,不依赖于程序源码,除更符合实际应用中的需求外,还能同时支持Windows***下的PE文件和Linux***下的ELF文件,能够检测实际的大部分二进制文件。二、本申请的方法不需要二进制领域的专业知识,能够自动化的提取二进制文件特征,节省了大量的人力物力,并且采用深度学习方法进行恶意软件检测,可以通过增量训练的方法进一步提高模型检测效果,与传统的恶意软件检测方法相比,节约计算资源,通用性更高。
基于同一发明构思,本申请一实施例提供一种恶意软件检测装置。参考图4,图4是本申请一实施例提出的恶意软件检测装置的示意图。如图4所示,该装置包括:
静态分析信息提取器410,用于静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;
静态分析信息提取器负责提取目标二进制程序中的汇编代码和函数调用图。
在本申请一个实施例中,所述静态分析信息提取器,包括:
查壳单元,用于判断所述二进制文件是否采用加壳技术;
脱壳单元,用于当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
反汇编单元,用于对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
函数调用图提取单元,用于根据所述汇编代码构建所述待检测软件的函数调用图。
静态分析信息提取器由查壳脱壳单元、反汇编单元和函数调用图提取单元组成。
查壳脱壳单元负责将采用保护技术的二进制程序进行识别和脱壳处理以便进一步分析。其对目标二进制程序进行查壳脱壳处理,如果发现二进制程序采用了加壳技术,则利用自动脱壳技术进行处理,否则不处理;反汇编单元负责对二进制程序进行逆向操作,通过线性扫描算法和递归扫描算法提取二进制程序的汇编代码。函数调用图提取单元则根据提取出的汇编代码,通过识别函数头部、尾部等边界信息提取出所有函数,并根据转移指令信息获取函数的调用关系并构建函数调用图。
语义特征提取器420,用于对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;
语义特征提取器根据静态分析信息提取器中得到的汇编代码信息进行汇编指令嵌入转换,得到每一条汇编指令对应的嵌入向量。
语义特征提取器根据静态分析提取器中得到的汇编指令信息进行二进制程序的语义特征提取。该发明将汇编指令视作单词,函数汇编代码视作由汇编指令组成的文本,通过词嵌入技术将汇编指令转为嵌入向量,进一步通过将函数内汇编指令的嵌入向量聚合获取函数的语义特征向量。
在本申请的一个实施例中,所述语义特征提取器,包括:
规范化子模块,用于规范化处理所述汇编代码,得到规范化汇编代码;
token转换子模块,用于将每个函数的规范化汇编代码转为多个格式规范的token;
向量表示转换子模块,用于将每个token映射为向量表示;
聚合子模块,用于聚合函数内所有token的向量表示,得到函数的语义特征向量。
将汇编指令规范化,规范化处理规则为:将汇编指令中的数值常量替换为字符“N”,将汇编指令中的字符串替换为字符“M”,然后使用符号“-”连接汇编指令的操作码与操作数,经过处理后汇编指令转为格式规范的token。
根据token转换子模块获取到的token构建语料库,并训练Word2Vec词向量模型;基于训练好的词向量模型将每个token映射为向量表示;将函数内所有token的向量表示聚合生成函数的向量表示。
结构特征组合器430,用于结合所述语义特征向量与所述函数调用图,生成属性函数调用图;
结构特征组合器根据静态分析提取器中得到的函数调用图,静态分析信息提取器410中生成的程序函数调用图是结构特征,以及语义特征提取器得到的函数语义特征,函数语义特征是语义特征提取器620生成的函数向量,将函数语义特征和函数调用图组合生成带属性信息的函数调用图AFCG。属性函数调用图是一种高维稀疏的图结构数据,其节点表示函数,每个节点附带有属性特征,节点与节点之间的边表示函数之间的调用关系。通过将构建的图结构数据输入到图神经网络学习,将输出得到一个包含语义信息和结构信息的程序嵌入向量表示。最后可以通过对该嵌入向量表示的分类实现对二进制程序的分类。
图神经网络分类模型440,用于依据所述属性函数调用图检测所述待检测软件的恶意属性信息。
在本申请一个实施例中,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层;
图神经网络层,用于接收所述属性函数调用图,获取程序嵌入向量表示;
全连接层,用于接收所述图神经网络层传递的所述程序嵌入向量表示,判断所述程序嵌入向量表示与恶意属性的非线性关系;
激活层,用于接收所述全连接层传递的所述非线性关系,依据所述非线性关系预测所述待检测软件的恶意属性信息。
将结构特征组合器430生成的AFCG输入已经训练Struc2vec图神经网络模型,并在函数聚合时采用注意力机制进行聚合;
在图神经网络之后继续构建一个全连接层和一个激活层来进行分类任务。
分类任务包括:恶意软件检测与恶意软件家族分类,恶意软件检测将构建一个二分类模型,该模型判断二进制程序为正常软件或恶意软件;恶意软件家族分类将构建一个多分类模型,该模型输出二进制程序的恶意家族类别。
因此全连接层和激活层构成的恶意软件分类器可以为恶意软件检测单元或者恶意家族分类单元。恶意软件分类器通过构建深度学习模型对图神经网络层生成的程序嵌入向量表示进行分类输出二进制程序的分类结果。恶意软件检测实质上是一个二分类任务,恶意家族分类是一个多分类任务,在实际应用时可以设置分类模型的输出类别数量选择具体的任务。
在实际应用前,可以通过收集大量的二进制程序对图神经网络分类模型进行训练,使图神经网络和判别器能够适用于二进制程序预测场景中,然后将预训练模型部署到实际检测环境中,由于模型已经经过训练,因此实际检测时每个样本的处理时间非常短,有效提升恶意软件检测的效率。此外,深度学习模型可以进行增量训练进一步提高恶意软件检测的准确度。
恶意软件检测装置工作流程如下:确定二进制目标程序后,首先静态分析信息提取器会将目标二进制程序转为汇编代码,然后提取其中所含有的汇编指令信息和函数调用信息。汇编指令信息通过语义特征提取器提取出二进制程序的语义特征,该特征将与函数调用信息一同作为结构特征组合器的输入。结构特征组合器将函数语义特征和函数调用图的结构特征组合,并利用图神经网络训练生成二进制程序的嵌入向量表示。恶意软件分类器通过对嵌入向量分类完成对二进制文件的分类。
基于同一发明构思,本申请另一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的恶意软件检测方法。
基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的恶意软件检测方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种恶意软件检测方法、装置、设备及存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种恶意软件检测方法,其特征在于,所述方法包括:
静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;
对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;
结合所述语义特征向量与所述函数调用图,生成属性函数调用图;
将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息。
2.根据权利要求1所述方法,其特征在于,所述静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图,包括:
判断所述二进制文件是否采用加壳技术;
当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
根据所述汇编代码构建所述待检测软件的函数调用图。
3.根据权利要求1所述方法,其特征在于,所述对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量,包括:
规范化处理所述汇编代码,得到规范化汇编代码;
将每个函数的规范化汇编代码转为多个格式规范的词法单元token;
将每个token映射为向量表示;
聚合函数内所有token的向量表示,得到函数的语义特征向量。
4.根据权利要求1所述方法,其特征在于,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层;
所述将所述属性函数调用图输入图神经网络分类模型得到所述待检测软件的恶意属性信息,包括:
将所述属性函数调用图输入图神经网络层,获取程序嵌入向量表示;
其中,所述全连接层用于判断所述程序嵌入向量表示与恶意属性的非线性关系;
所述激活层用于依据所述非线性关系预测所述待检测软件的恶意属性信息。
5.一种恶意软件检测装置,其特征在于,所述装置包括:
静态分析信息提取器,用于静态分析待检测软件的二进制文件,得到所述待检测软件的汇编代码和函数调用图;
语义特征提取器,用于对所述汇编代码进行转换,得到所述待检测软件中每个函数的语义特征向量;
结构特征组合器,用于结合所述语义特征向量与所述函数调用图,生成属性函数调用图;
图神经网络分类模型,用于依据所述属性函数调用图检测所述待检测软件的恶意属性信息。
6.根据权利要求5所述装置,其特征在于,所述静态分析信息提取器,包括:
查壳单元,用于判断所述二进制文件是否采用加壳技术;
脱壳单元,用于当所述二进制文件采用加壳技术时,利用自动脱壳技术对所述二进制文件进行处理;
反汇编单元,用于对脱壳后的二进制文件进行反汇编,获得所述待检测软件的汇编代码;
函数调用图提取单元,用于根据所述汇编代码构建所述待检测软件的函数调用图。
7.根据权利要求5所述装置,其特征在于,所述语义特征提取器,包括:
规范化子模块,用于规范化处理所述汇编代码,得到规范化汇编代码;
词法单元token转换子模块,用于将每个函数的规范化汇编代码转为多个格式规范的词法单元token;
向量表示转换子模块,用于将每个token映射为向量表示;
聚合子模块,用于聚合函数内所有token的向量表示,得到函数的语义特征向量。
8.根据权利要求5所述装置,其特征在于,所述图神经网络分类模型包括:图神经网络层、全连接层和激活层,所述图神经网络层后接所述全连接层,所述全连接层后接所述激活层;
图神经网络层,用于接收所述属性函数调用图,获取程序嵌入向量表示;
全连接层,用于接收所述图神经网络层传递的所述程序嵌入向量表示,判断所述程序嵌入向量表示与恶意属性的非线性关系;
激活层,用于接收所述全连接层传递的所述非线性关系,依据所述非线性关系预测所述待检测软件的恶意属性信息。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1至4中任一所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1至4中任一所述的方法。
CN202110905738.2A 2021-08-09 2021-08-09 恶意软件检测方法、装置、设备及存储介质 Pending CN113360912A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110905738.2A CN113360912A (zh) 2021-08-09 2021-08-09 恶意软件检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110905738.2A CN113360912A (zh) 2021-08-09 2021-08-09 恶意软件检测方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113360912A true CN113360912A (zh) 2021-09-07

Family

ID=77540696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110905738.2A Pending CN113360912A (zh) 2021-08-09 2021-08-09 恶意软件检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113360912A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113688393A (zh) * 2021-10-27 2021-11-23 南京聚铭网络科技有限公司 恶意软件类型检测方法、装置及存储介质
CN113918171A (zh) * 2021-10-19 2022-01-11 哈尔滨理工大学 一种新的使用扩展控制流图的反汇编方法
CN114077741A (zh) * 2021-11-01 2022-02-22 清华大学 软件供应链安全检测方法和装置、电子设备及存储介质
CN114139153A (zh) * 2021-11-02 2022-03-04 武汉大学 基于图表示学习的恶意软件可解释性分类方法
CN114817925A (zh) * 2022-05-19 2022-07-29 电子科技大学 基于多模态图特征的安卓恶意软件检测方法及***
CN114817924A (zh) * 2022-05-19 2022-07-29 电子科技大学 基于ast和跨层分析的安卓恶意软件检测方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908963A (zh) * 2018-01-08 2018-04-13 北京工业大学 一种自动化检测恶意代码核心特征方法
CN111538989A (zh) * 2020-04-22 2020-08-14 四川大学 基于图卷积网络和主题模型的恶意代码同源性分析方法
CN112329013A (zh) * 2019-08-05 2021-02-05 四川大学 一种基于图卷积网络和主题模型的恶意代码分类的方法
CN112800423A (zh) * 2021-01-26 2021-05-14 北京航空航天大学 一种二进制代码授权漏洞检测方法
CN112966271A (zh) * 2021-03-18 2021-06-15 中山大学 一种基于图卷积网络的恶意软件检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908963A (zh) * 2018-01-08 2018-04-13 北京工业大学 一种自动化检测恶意代码核心特征方法
CN112329013A (zh) * 2019-08-05 2021-02-05 四川大学 一种基于图卷积网络和主题模型的恶意代码分类的方法
CN111538989A (zh) * 2020-04-22 2020-08-14 四川大学 基于图卷积网络和主题模型的恶意代码同源性分析方法
CN112800423A (zh) * 2021-01-26 2021-05-14 北京航空航天大学 一种二进制代码授权漏洞检测方法
CN112966271A (zh) * 2021-03-18 2021-06-15 中山大学 一种基于图卷积网络的恶意软件检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
凌云等: "《智能信息检索》", 31 December 2006, 中国科学技术出版社 *
杨频等: "基于汇编指令词向量特征的恶意软件检测研究", 《信息安全研究》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918171A (zh) * 2021-10-19 2022-01-11 哈尔滨理工大学 一种新的使用扩展控制流图的反汇编方法
CN113688393A (zh) * 2021-10-27 2021-11-23 南京聚铭网络科技有限公司 恶意软件类型检测方法、装置及存储介质
CN114077741A (zh) * 2021-11-01 2022-02-22 清华大学 软件供应链安全检测方法和装置、电子设备及存储介质
CN114139153A (zh) * 2021-11-02 2022-03-04 武汉大学 基于图表示学习的恶意软件可解释性分类方法
CN114817925A (zh) * 2022-05-19 2022-07-29 电子科技大学 基于多模态图特征的安卓恶意软件检测方法及***
CN114817924A (zh) * 2022-05-19 2022-07-29 电子科技大学 基于ast和跨层分析的安卓恶意软件检测方法及***
CN114817924B (zh) * 2022-05-19 2023-04-07 电子科技大学 基于ast和跨层分析的安卓恶意软件检测方法及***

Similar Documents

Publication Publication Date Title
Vinayakumar et al. Robust intelligent malware detection using deep learning
Xiao et al. Malware detection based on deep learning of behavior graphs
CN113360912A (zh) 恶意软件检测方法、装置、设备及存储介质
CN111460446B (zh) 基于模型的恶意文件检测方法及装置
KR102093275B1 (ko) 악성코드 감염 유도정보 판별 시스템, 프로그램이 기록된 저장매체 및 방법
US11580222B2 (en) Automated malware analysis that automatically clusters sandbox reports of similar malware samples
CN111753290B (zh) 软件类型的检测方法及相关设备
KR101858620B1 (ko) 기계 학습을 이용한 자바스크립트 분석 장치 및 방법
CN110572393A (zh) 一种基于卷积神经网络的恶意软件流量分类方法
CN110362995B (zh) 一种基于逆向与机器学习的恶意软件检测及分析***
CN112989358B (zh) 提高基于深度学习的源代码漏洞检测健壮性的方法及装置
Kakisim et al. Sequential opcode embedding-based malware detection method
Dewanje et al. A new malware detection model using emerging machine learning algorithms
AlGarni et al. An efficient convolutional neural network with transfer learning for malware classification
Li et al. Deep learning algorithms for cyber security applications: A survey
CN111400713A (zh) 基于操作码邻接图特征的恶意软件族群分类方法
CN113222053B (zh) 基于RGB图像和Stacking多模型融合的恶意软件家族分类方法、***和介质
CN113468524B (zh) 基于rasp的机器学习模型安全检测方法
Masabo et al. Improvement of malware classification using hybrid feature engineering
KR102437278B1 (ko) 머신러닝과 시그니처 매칭을 결합한 문서형 악성코드 탐지 장치 및 방법
Čeponis et al. Evaluation of deep learning methods efficiency for malicious and benign system calls classification on the AWSCTD
Kalyan et al. Detection of malware using cnn
Pranav et al. Detection of botnets in IoT networks using graph theory and machine learning
CN116702143A (zh) 基于api特征的恶意软件智能检测方法
US20230306106A1 (en) Computer Security Systems and Methods Using Self-Supervised Consensus-Building Machine Learning

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210907

RJ01 Rejection of invention patent application after publication