CN112966271A - 一种基于图卷积网络的恶意软件检测方法 - Google Patents

一种基于图卷积网络的恶意软件检测方法 Download PDF

Info

Publication number
CN112966271A
CN112966271A CN202110289916.3A CN202110289916A CN112966271A CN 112966271 A CN112966271 A CN 112966271A CN 202110289916 A CN202110289916 A CN 202110289916A CN 112966271 A CN112966271 A CN 112966271A
Authority
CN
China
Prior art keywords
graph
instruction sequence
assembly instruction
layer
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.)
Granted
Application number
CN202110289916.3A
Other languages
English (en)
Other versions
CN112966271B (zh
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.)
Sun Yat Sen University
Original Assignee
Sun Yat Sen 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 Sun Yat Sen University filed Critical Sun Yat Sen University
Priority to CN202110289916.3A priority Critical patent/CN112966271B/zh
Publication of CN112966271A publication Critical patent/CN112966271A/zh
Application granted granted Critical
Publication of CN112966271B publication Critical patent/CN112966271B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明为克服恶意软件检测技术中未考虑程序文件中的语义特征,或存在文件语义信息丢失,导致恶意软件检测准确率低的缺陷,提出一种基于图卷积神经网络的恶意软件检测方法,包括以下步骤:采集二进制文件并进行预处理,从中得到函数的汇编指令序列;构造汇编指令语料库,在汇编指令语料库的基础上训练汇编指令的词向量模型;构建训练样本库;对训练样本库进行预处理,从中抽取函数调用图及其每个函数的汇编指令序列;构建基于图卷积网络的恶意软件检测模型,将从样本库中获得的汇编指令序列作为输入,并根据对应的词向量模型及函数调用图对所述恶意软件检测模型进行训练;将所述完成训练的恶意软件检测模型对待检测的软件进行检测,输出检测结果。

Description

一种基于图卷积网络的恶意软件检测方法
技术领域
本发明涉及网络安全技术领域,更具体地,涉及一种基于图卷积网络的恶意软件检测方法。
背景技术
在现代互联网中,恶意软件层出不穷。根据MalwareBytes实验室的调查,截至2019年,全球恶意软件总数增加至5.05亿。利用多态技术,同一个恶意软件可以产生数十个甚至上百个不同的变种。因此,在实践中,手工检测恶意软件是不现实的,开发自动化恶意软件检测技术是极其重要的。
目前研究者们提出了许多自动化的检测技术。这些技术主要可以分为两类:静态检测与动态检测。静态检测是指在不运行软件的条件下,通过分析程序的文件头、文件内容等来实现恶意软件检测;动态检测则是通过收集软件运行时的行为来实现恶意行为的检测。由于静态检测并不执行文件,已有的方法主要是从文件中提取一些静态特征来进行分析。现有静态特征主要包括文件头特征、字符熵、字符串特征、opcode n-gram等。其中,大多数特征主要关注了可执行文件在文件结构上的特征,并未考虑文件中的语义特征;而opcode n-gram特征虽然能在一定程度上保留文件的语义信息,但是由于其未考虑指令的操作数,语义信息会有一定的丢失;此外,绝大多数方法都没有考虑函数之间的调用关系。
发明内容
本发明为克服上述现有技术所述的未考虑程序文件中的语义特征,或存在文件语义信息丢失,导致恶意软件检测准确率低的缺陷,提供一种基于图卷积网络的恶意软件检测方法。
为解决上述技术问题,本发明的技术方案如下:
一种基于图卷积网络的恶意软件检测方法,包括以下步骤:
S1:采集二进制文件并进行预处理,从二进制文件中得到函数的汇编指令序列;
S2:将所述汇编指令序列作为语料库,在汇编指令语料库上训练汇编指令的词向量模型;
S3:采集大量的恶意软件样本和正常软件样本,构建训练样本库;
S4:对训练样本库样本进行预处理,从每个样本中抽取函数调用图及每个函数的汇编指令序列;
S5:构建基于图卷积网络的恶意软件检测模型,将从样本库中获得的汇编指令序列作为输入,并根据对应的词向量模型及函数调用图对所述恶意软件检测模型进行训练;
S6:将所述完成训练的恶意软件检测模型对待检测的软件进行检测,输出检测结果。
作为优选方案,所述S1步骤中,对二进制文件进行预处理的步骤包括利用反汇编工具分析所述二进制文件,抽取所述二进制文件中每个函数的汇编指令序列。
作为优选方案,所述S11步骤中还包括以下步骤:对抽取的汇编指令序列进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用替换为FUNC。
作为优选方案,所述S2步骤中,将所述语料库中的每个指令序列视为文档,每个指令序列中的指令视为单词,构建skip-gram模型并对其进行训练,得到汇编指令的词向量模型,该模型将汇编指令转化为d维向量。
作为优选方案,所述S4步骤中,对训练样本库样本进行预处理的步骤包括:
S41:对所述训练样本库样本进行脱壳:采用查壳工具对训练样本库样本进行检测,检测其是否经过加壳处理:若是,则进一步识别其加壳算法,根据所述加壳算法选用相应的脱壳工具进行脱壳,得到原始样本文件,若无法脱壳,则直接丢弃所述训练样本库样本;若否,则执行S42步骤;
S42:利用反汇编工具分析所述训练样本库样本,抽取所述训练样本库样本的函数调用图及其中每个函数的汇编指令序列。
作为优选方案,S42步骤中还包括对抽取的汇编指令序列进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用替换为FUNC。
替换完毕后得到的汇编指令序列结果描述如下:
对于一个二进制训练样本库样本文件Fi,抽取的结果包括函数调用图和函数汇编指令序列的集合
Figure BDA0002981942340000031
其中,函数调用图是一个二元组FCGi=(Ni,Ei)。其中,
Figure BDA0002981942340000032
为调用图中节点的集合,每个节点
Figure BDA0002981942340000033
对应文件中的一个函数
Figure BDA0002981942340000034
Figure BDA0002981942340000035
为有向边的集合,保存了函数间的调用关系,Ei中的元素
Figure BDA0002981942340000036
表示函数
Figure BDA0002981942340000037
在文件Fi中调用了
Figure BDA0002981942340000038
Si为汇编指令序列的集合,其中的元素
Figure BDA0002981942340000039
为函数
Figure BDA00029819423400000310
经过处理后得到的汇编指令序列。
作为优选方案,步骤S5所述恶意软件检测模型包括依次连接的嵌入层、GRU(GateRecurrent Unit)层、图卷积层和全连接层,其中,所述GRU层为一个单层双向的GRU层;所述图卷积层包括2个Structure2Vec层;所述全连接层包括带一个隐藏层的全连接神经网络。
作为优选方案,所述S5步骤中,将所述函数调用图和函数指令序列作为输入对所述恶意软件检测模型进行训练的步骤包括:
S51:将所述词向量模型权重加载到嵌入层;
S52:从样本库中取出一个样本的函数调用图FCGi及其汇编指令序列集合Si
S53:将Si中每个汇编指令序列输入所述嵌入层,将每个汇编指令序列
Figure BDA00029819423400000311
转化为向量序列
Figure BDA00029819423400000312
得到向量序列集合
Figure BDA00029819423400000313
S54:将所述Vi中的向量序列输入所述GRU层,将每个向量序列
Figure BDA00029819423400000314
转化为一个dGRU维向量
Figure BDA00029819423400000315
得到一维向量的集合
Figure BDA00029819423400000316
S55:对于每个函数,将其生成的向量附加到其在函数调用图中对应的顶点上,得到函数调用图
Figure BDA00029819423400000317
S56:将所述属性函数调用图
Figure BDA00029819423400000318
输入所述Structure2Vec层中进行两轮迭代更新计算,得到新的属性函数调用图
Figure BDA00029819423400000319
将属性函数调用图
Figure BDA00029819423400000320
中每个结点的向量进行平均,得到最终的图嵌入向量gi
S57:将所述图嵌入向量gi输入所述全连接层中进行预测,并根据预测结果和真实的结果计算损失loss,根据损失loss计算结果采用优化器对所述恶意软件检测模型的权重进行更新;
S58:重复执行S52~57步骤至损失loss收敛。
作为优选方案,所述图卷积层中对属性函数调用图
Figure BDA00029819423400000321
应用Structure2Vec算法进行两轮更新,其中:
属性函数调用图
Figure BDA0002981942340000041
是一个三元组:
Figure BDA0002981942340000042
式中,Ni和Ei的意义与FCGi中相同;。
Figure BDA0002981942340000043
是向量的集合,存储了Ni中每个节点对应的一维向量,元素
Figure BDA0002981942340000044
Figure BDA0002981942340000045
对应;
第一轮在AFCGi上进行更新后得到新的属性函数调用图
Figure BDA0002981942340000046
第二轮在属性函数调用图
Figure BDA0002981942340000047
上进行更新得到新的属性函数调用图
Figure BDA0002981942340000048
Figure BDA0002981942340000049
其更新过程为:
Figure BDA00029819423400000410
Figure BDA00029819423400000411
Figure BDA00029819423400000412
Figure BDA00029819423400000413
Figure BDA00029819423400000414
对属性函数调用图
Figure BDA00029819423400000415
中每个节点向量平均得到属性函数调用图AFCGi的向量表示gi,其表达公式如下:
Figure BDA00029819423400000416
作为优选方案,所述全连接层包括一个dhidden*dGRU的矩阵W1、一个2*dhidden的矩阵W2、一个dhidden维的向量b1以及一个2维的向量b2;所述全连接层输出一个二维向量yi,所述二维向量yi中的两个元素分别为
Figure BDA00029819423400000417
Figure BDA00029819423400000418
其中元素
Figure BDA00029819423400000419
表示二进制文件Fi为正常软件的概率,元素
Figure BDA00029819423400000420
表示二进制文件Fi为恶意软件的概率,当
Figure BDA00029819423400000421
时表示待检测样本为恶意软件,否则表示待检测样本为正常软件;
其中,所述全连接层的计算公式如下:
yi=softmax(W2σ(W1gi+b1)+b2)
Figure BDA00029819423400000422
式中,σ(x)为sigmoid函数。
与现有技术相比,本发明技术方案的有益效果是:本发明通过收集大量的二进制文件训练汇编指令的词向量模型,对二进制文件进行分析并抽取其中的函数调用图和函数的指令序列,并将其应用于训练基于图神经网络与循环神经网络GRU的恶意软件检测模型,能够充分使用二进制文件中的语义信息,且充分考虑了汇编指令中的操作数,更好地保留了汇编指令的语义信息,进而有效提高恶意软件检测准确率。
附图说明
图1为本发明的基于图卷积网络的恶意软件检测方法的流程图。
图2为本发明的基于图卷积网络的恶意软件检测方法的流程图。
图3为实施例的汇编代码处理示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提出一种基于图卷积网络的恶意软件检测方法,如图1~2所示,为本实施例的基于图卷积网络的恶意软件检测方法的流程图。
本实施例提出的基于图卷积网络的恶意软件检测方法中,包括以下步骤:
S1:采集二进制文件并进行预处理,从中得到函数的汇编指令序列。
本步骤中,二进制文件的采集来源包括恶意样本库中PE格式的各类恶意软件、操作系统常见动态链接库(如msvcrt.dll)、互联网上可获取的良性软件。
对二进制文件进行预处理的步骤包括利用反汇编工具如IDApro或Angr,对二进制文件进行静态分析,从每个二进制文件的二进制函数中提取汇编指令序列。
进一步的,对抽取的汇编指令序列中每条指令进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用替换为FUNC;
如图3所示,为本实施例中对于某Ramnit软件中的函数处理前后的结果。其中,利用反汇编工具得到的Ramnit中某个函数的汇编指令序列如图左所示,根据上述规则对每条指令进行替换操作得到最终的汇编指令序列如图右所示。
S2:将所述汇编指令序列作为语料库,在汇编指令语料库上训练汇编指令的词向量模型。
本步骤中,将所述语料库中的每个指令序列视为文档,每个指令序列中的指令视为单词,构建skip-gram模型并对其进行训练,得到每个指令到向量的映射mapins→vec,即训练汇编指令的词向量模型。
其中映射mapins→vec用于将汇编指令转化为d维的向量表示。
S3:采集大量的恶意软件样本和正常软件样本,构建训练样本库;
本步骤中,恶意软件样本从Malshare,VirusTotal,VXHeaven等在线恶意样本库中下载;正常软件样本从各类软件官网、应用市场进行下载。
S4:预处理训练样本库样本,从每个样本中抽取函数调用图及每个函数的汇编指令序列。
本步骤中,收集的恶意软件样本和良性软件样本也属于二进制文件,但是与S1中的二进制文件在用途上不同,本步骤收集的二进制文件用于训练恶意软件检测模型而非词向量模型。其中,对样本进行预处理的步骤包括:
S41:对所训练样本库样本进行脱壳;其中,采用查壳工具对训练样本库样本进行检测,检测其是否经过加壳处理:若是,则进一步识别其加壳算法,根据所述加壳算法选用相应的脱壳工具进行脱壳,得到原始样本文件,若无法脱壳,则直接丢弃所述训练样本库样本;若否,则直接执行S42步骤;
S42:利用反汇编工具如IDApro或Angr,对训练样本库样本文件进行静态分析,从每个训练样本库样本文件中提取函数调用图及其中每个二进制函数的汇编指令序列。为了便于叙述,此处将处理的训练样本库样本文件记为Fi,提取的调用图记作FCGi=(Ni,Ei),文件中的函数记为
Figure BDA0002981942340000061
函数
Figure BDA0002981942340000062
是取的指令序列记为
Figure BDA0002981942340000063
其中,
Figure BDA0002981942340000064
为函数调用图中节点的集合,每个节点
Figure BDA0002981942340000065
对应函数
Figure BDA0002981942340000066
Figure BDA0002981942340000067
为有向边的集合,保存了函数间的调用关系,Ei中的元素
Figure BDA0002981942340000068
表示函数
Figure BDA0002981942340000069
在文件Fi中调用了
Figure BDA00029819423400000610
lij表示指令序列Sij的长度;li表示文件Fi中函数的数量。
进一步的,在提取每条指令
Figure BDA00029819423400000611
对候进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用替换为FUNC。
S5:构建恶意软件检测模型,将S4中的汇编指令序列作为输入,并根据对应的词向量模型及函数调用图FCGi对所述恶意软件检测模型进行训练。
本步骤中,恶意软件检测模型包括依次连接的嵌入层、GRU层、图卷积层和全连接层,其中,GRU层为一个单层双向的GRU层;图卷积层包括2个Structure2Vec层;全连接层包括带一个隐藏层的全连接神经网络。
对恶意软件检测模型进行训练的步骤包括:
S51:将所述词向量模型maβins→vec权重加载到嵌入层,之后可以直接利用嵌入层将指令序列转换为向量序列;
S52:从样本库中取出一个样本的函数调用图FCGi及其汇编指令序列集合Si
S53:将Si中每个汇编指令序列输入所述嵌入层,将每个汇编指令序列
Figure BDA0002981942340000071
转化为向量序列
Figure BDA0002981942340000072
得到向量序列集合
Figure BDA0002981942340000073
S54:将所述Vi中的向量序列输入所述GRU层,将每个向量序列
Figure BDA0002981942340000074
转化为一个dGRU维向量
Figure BDA0002981942340000075
得到一维向量的集合
Figure BDA0002981942340000076
S55:对于每个函数,将其生成的向量附加到其在函数调用图中对应的顶点上,得到函数调用图
Figure BDA0002981942340000077
S56:将所述属性函数调用图
Figure BDA0002981942340000078
输入所述Structure2Vec层中进行两轮迭代更新计算,得到新的属性函数调用图
Figure BDA0002981942340000079
将属性函数调用图
Figure BDA00029819423400000710
中每个结点的向量进行平均,得到最终的图嵌入向量gi
图卷积层中对属性函数调用图
Figure BDA00029819423400000711
应用Structure2Vec算法进行两轮更新,其中:
属性函数调用图
Figure BDA00029819423400000712
是一个三元组:
Figure BDA00029819423400000713
式中,Ni和Ei的意义与FCGi中相同;是向量的集合,存储了Ni中每个节点对应的一维向量,元素
Figure BDA00029819423400000714
Figure BDA00029819423400000720
对应;
第一轮在AFCGi上进行更新后得到新的属性函数调用图
Figure BDA00029819423400000716
第二轮在属性函数调用图
Figure BDA00029819423400000717
上进行更新得到新的属性函数调用图
Figure BDA00029819423400000718
Figure BDA00029819423400000719
其更新过程为:
Figure BDA0002981942340000081
Figure BDA0002981942340000082
Figure BDA0002981942340000083
Figure BDA0002981942340000084
Figure BDA0002981942340000085
式中,W10为一个300*300的矩阵,W21为一个300*300的矩阵;
对属性函数调用图
Figure BDA0002981942340000086
中每个节点向量平均得到属性函数调用图AFCGi的向量表示gi,其表达公式如下:
Figure BDA0002981942340000087
S57:将所述图嵌入向量gi输入所述全连接层中进行预测,并根据预测结果和真实的结果计算损失loss,根据损失loss计算结果采用优化器对所述恶意软件检测模型的权重进行更新;
其中,全连接层包括一个1024*300的矩阵W1、一个2*1024的矩阵W2、一个1024维的向量b1以及一个2维的向量b2;所述全连接层输出一个二维向量yi,所述二维向量yi中的两个元素分别为
Figure BDA0002981942340000088
Figure BDA0002981942340000089
其中元素
Figure BDA00029819423400000810
表示二进制文件Fi为正常软件的概率,元素
Figure BDA00029819423400000811
定示二进制文件Fi为恶意软件的概率,当
Figure BDA00029819423400000812
时表示待检测样本为恶意软件,否则表示待检测样本为正常软件;
其中,所述全连接层的计算公式如下:
yi=softmax(W2σ(W1gi+b1)+b2)
Figure BDA00029819423400000813
式中,σ(x)为sigmoid函数;
S58:重复执行S52~57步骤至损失loss收敛。
进一步的,本实施例中采用交叉熵损失函数计算损失loss,利用梯度下降算法对恶意软件检测模型进行训练。
S6:将所述完成训练的恶意软件检测模型对待检测的恶意软件进行检测,输出检测结果。
其中,对于待测软件K,恶意软件检测模型输出一个二维向量yK,yK的两个维度分别为检测为正常软件的概率
Figure BDA0002981942340000091
和检测为恶意软件的概率
Figure BDA0002981942340000092
Figure BDA0002981942340000093
时表示待检测样本为恶意软件,否则表示待检测样本为正常软件。
本实施例通过收集大量的二进制文件训练汇编指令的词向量模型,采用静态分析对二进制文件进行分析并抽取其中的函数调用图和函数的指令序列,并将其应用于训练基于图神经网络与循环神经网络GRU的恶意软件检测模型,能够充分使用二进制文件中的语义信息,且充分考虑了汇编指令中的操作数,更好地保留了汇编指令的语义信息,进而有效提高恶意软件检测准确率。
此外,本实施例直接利用无监督的skip-gram生成指令的词向量表示并使用GRU生成语义特征,无需人工定义特征,同时还考虑了函数调用图的结构,采用图神经网络提取函数调用图的结构特征,可以更好地捕捉到恶意软件的程序结构;将函数的语义表示与文件的函数调用图结合起来得到属性函数调用图AFCG,并利用图神经网络Structure2Vec将AFCG中的信息聚合起来获得属性函数调用图AFCG的图嵌入,用于进一步对软件进行检测,能够充分考虑二进制文件中的语义特征及函数之间的调用关系,进一步提高恶意软件检测准确率。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种基于图卷积网络的恶意软件检测方法,其特征在于,包括以下步骤:
S1:采集二进制文件并进行预处理,从二进制文件中得到函数的汇编指令序列;
S2:将所述汇编指令序列作为语料库,在汇编指令语料库上训练汇编指令的词向量模型;
S3:采集大量的恶意软件样本和正常软件样本,构建训练样本库;
S4:对训练样本库样本进行预处理,从每个样本中抽取函数调用图及每个函数的汇编指令序列;
S5:构建基于图卷积网络的恶意软件检测模型,将从样本库中获得的汇编指令序列作为输入,并根据对应的词向量模型及函数调用图对所述恶意软件检测模型进行训练;
S6:将所述完成训练的恶意软件检测模型对待检测的软件进行检测,输出检测结果。
2.根据权利要求1所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S1步骤中,对二进制文件进行预处理的步骤包括利用反汇编工具分析所述二进制文件,抽取所述二进制文件中每个函数的汇编指令序列。
3.根据权利要求2所述的基于图卷积网络的恶意软件检测方法,其特征在于,对抽取的汇编指令序列进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用替换为FUNC。
4.根据权利要求1所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S2步骤中,将所述语料库中的每个指令序列视为文档,每条指令视为单词,构建skip-gram模型并对其进行训练,得到汇编指令的词向量模型,该模型将汇编指令转化为d维向量。
5.根据权利要求1所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S4步骤中,对训练样本库样本进行预处理的步骤包括:
S41:对所述训练样本库样本进行脱壳:采用查壳工具对训练样本库样本进行检测,检测其是否经过加壳处理:若是,则进一步识别其加壳算法,根据所述加壳算法选用相应的脱壳工具进行脱壳,得到原始样本文件,若无法脱壳,则直接丢弃所述训练样本库样本;若否,则执行S42步骤;
S42:利用反汇编工具分析所述训练样本库样本,抽取所述训练样本库样本的函数调用图及其中每个函数的汇编指令序列。
6.根据权利要求5所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S42步骤中还包括对抽取的汇编指令序列进行以下替换操作:
(1)将汇编指令序列中的立即数替换为IMM;
(2)将汇编指令序列中的直接内存访问替换为MEM;
(3)将汇编指令序列中的函数名引用的指令替换为FUNC。
7.根据权利要求1所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S5步骤中,恶意软件检测模型包括依次连接的嵌入层、GRU层、图卷积层和全连接层,其中,所述嵌入层权重来源于训练的词向量模型;所述GRU层为一个单层双向的GRU层;所述图卷积层包括2个Structure2Vec层;所述全连接层包括带一个隐藏层的全连接神经网络。
8.根据权利要求1所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述S5步骤中,将所述函数调用图和函数指令序列作为输入对所述恶意软件检测模型进行训练的步骤包括:
S51:将所述词向量模型权重加载到嵌入层;
S52:从样本库中取出一个样本的函数调用图FCGi及其汇编指令序列集合Si
S53:将所述Si中每个汇编指令序列输入所述嵌入层,将每个汇编指令序列
Figure FDA0002981942330000021
转化为向量序列
Figure FDA0002981942330000022
得到向量序列集合
Figure FDA0002981942330000023
S54:将所述Vi中的向量序列输入所述GRU层,将每个向量序列
Figure FDA0002981942330000024
转化为一个dGRU维向量
Figure FDA0002981942330000025
得到一维向量的集合
Figure FDA0002981942330000026
S55:对于每个函数,将其生成的向量附加到其在函数调用图中对应的顶点上,得到函数调用图
Figure FDA0002981942330000027
S56:将所述属性函数调用图
Figure FDA0002981942330000028
输入所述Structure2Vec层中进行两轮迭代更新计算,得到新的属性函数调用图
Figure FDA0002981942330000029
将属性函数调用图
Figure FDA00029819423300000210
中每个结点的向量进行平均,得到最终的图嵌入向量gi
S57:将所述图嵌入向量gi输入所述全连接层中进行预测,并根据预测结果和真实的结果计算损失loss,根据损失loss计算结果采用优化器对所述恶意软件检测模型中的权重进行更新;
S58:重复执行S52~57步骤至损失loss收敛。
9.根据权利要求8所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述图卷积层中对属性函数调用图AFCGi应用Structure2Vec算法进行两轮更新,其中:
属性函数调用图
Figure FDA0002981942330000031
是一个三元组:
Figure FDA0002981942330000032
式中,
Figure FDA0002981942330000033
为调用图中节点的集合,每个节点
Figure FDA0002981942330000034
对应文件中的一个函数
Figure FDA0002981942330000035
Figure FDA0002981942330000036
为有向边的集合,保存了函数间的调用关系,Ei中的元素
Figure FDA0002981942330000037
表示函数
Figure FDA0002981942330000038
在文件Fi中调用了
Figure FDA0002981942330000039
Figure FDA00029819423300000310
是向量的集合,存储了Ni中每个顶点对应的一维向量,元素
Figure FDA00029819423300000311
Figure FDA00029819423300000312
对应;
第一轮在AFCGi上进行更新后得到新的属性函数调用图
Figure FDA00029819423300000313
第二轮在属性函数调用图
Figure FDA00029819423300000314
上进行更新得到新的属性函数调用图
Figure FDA00029819423300000315
Figure FDA00029819423300000316
其更新过程为:
Figure FDA00029819423300000317
Figure FDA00029819423300000318
Figure FDA00029819423300000319
Figure FDA00029819423300000320
Figure FDA00029819423300000321
式中,W10为一个dGRU*dGRU的矩阵,W21为一个dGRU*dGRU的矩阵;
对属性函数调用图
Figure FDA00029819423300000322
中每个节点向量平均得到属性函数调用图
Figure FDA00029819423300000323
的向量表示gi,其表达公式如下:
Figure FDA00029819423300000324
10.根据权利要求8所述的基于图卷积网络的恶意软件检测方法,其特征在于,所述全连接层包括一个dhidden*dGRU的矩阵W1、一个2*dhidden的矩阵W2、一个dhidden维的向量b1以及一个2维的向量b2;所述全连接层输出一个二维向量yi,所述二维向量yi中的两个元素分别为
Figure FDA0002981942330000041
Figure FDA0002981942330000042
其中元素
Figure FDA0002981942330000043
表示二进制文件Fi为正常软件的概率,元素
Figure FDA0002981942330000044
表示二进制文件Fi为恶意软件的概率,当
Figure FDA0002981942330000045
时表示待检测样本为恶意软件,否则表示待检测样本为正常软件;
其中,所述全连接层的计算公式如下:
yi=softmax(W2σ(W1gi+b1)+b2)
Figure FDA0002981942330000046
式中,σ(x)为sigmoid函数。
CN202110289916.3A 2021-03-18 2021-03-18 一种基于图卷积网络的恶意软件检测方法 Active CN112966271B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110289916.3A CN112966271B (zh) 2021-03-18 2021-03-18 一种基于图卷积网络的恶意软件检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110289916.3A CN112966271B (zh) 2021-03-18 2021-03-18 一种基于图卷积网络的恶意软件检测方法

Publications (2)

Publication Number Publication Date
CN112966271A true CN112966271A (zh) 2021-06-15
CN112966271B CN112966271B (zh) 2022-09-16

Family

ID=76279126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110289916.3A Active CN112966271B (zh) 2021-03-18 2021-03-18 一种基于图卷积网络的恶意软件检测方法

Country Status (1)

Country Link
CN (1) CN112966271B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360912A (zh) * 2021-08-09 2021-09-07 四川大学 恶意软件检测方法、装置、设备及存储介质
CN113688393A (zh) * 2021-10-27 2021-11-23 南京聚铭网络科技有限公司 恶意软件类型检测方法、装置及存储介质
CN113821799A (zh) * 2021-09-07 2021-12-21 南京邮电大学 基于图卷积神经网络的恶意软件多标签分类方法
CN114640502A (zh) * 2022-02-17 2022-06-17 南京航空航天大学 一种基于流量指纹和图数据特征的安卓恶意软件检测方法及检测系统
CN114816997A (zh) * 2022-03-29 2022-07-29 湖北大学 一种基于图神经网络与双向gru特征抽取的缺陷预测方法
CN115098857A (zh) * 2022-06-15 2022-09-23 天津大学 一种可视化恶意软件的分类方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259388A (zh) * 2020-01-09 2020-06-09 中山大学 一种基于图卷积的恶意软件api调用序列检测方法
CN112163219A (zh) * 2020-08-27 2021-01-01 北京航空航天大学 一种基于词嵌入和gcn的恶意程序识别和分类方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259388A (zh) * 2020-01-09 2020-06-09 中山大学 一种基于图卷积的恶意软件api调用序列检测方法
CN112163219A (zh) * 2020-08-27 2021-01-01 北京航空航天大学 一种基于词嵌入和gcn的恶意程序识别和分类方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
WEILONG LI 等: "A simple function embedding approach for binary", 《2020 IEEE INTL CONF ON PARALLEL & DISTRIBUTED PROCESSING WITH APPLICATIONS, BIG DATA & CLOUD COMPUTING, SUSTAINABLE》 *
张雪涛 等: "基于GCN 的安卓恶意软件检测模型", 《软件导刊》 *
彭汇: "基于图表示学习的恶意软件检测", 《中国优秀硕士学位论文全文数据库》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113360912A (zh) * 2021-08-09 2021-09-07 四川大学 恶意软件检测方法、装置、设备及存储介质
CN113821799A (zh) * 2021-09-07 2021-12-21 南京邮电大学 基于图卷积神经网络的恶意软件多标签分类方法
CN113821799B (zh) * 2021-09-07 2023-07-28 南京邮电大学 基于图卷积神经网络的恶意软件多标签分类方法
CN113688393A (zh) * 2021-10-27 2021-11-23 南京聚铭网络科技有限公司 恶意软件类型检测方法、装置及存储介质
CN114640502A (zh) * 2022-02-17 2022-06-17 南京航空航天大学 一种基于流量指纹和图数据特征的安卓恶意软件检测方法及检测系统
CN114816997A (zh) * 2022-03-29 2022-07-29 湖北大学 一种基于图神经网络与双向gru特征抽取的缺陷预测方法
CN114816997B (zh) * 2022-03-29 2023-08-18 湖北大学 一种基于图神经网络与双向gru特征抽取的缺陷预测方法
CN115098857A (zh) * 2022-06-15 2022-09-23 天津大学 一种可视化恶意软件的分类方法及装置
CN115098857B (zh) * 2022-06-15 2024-07-12 天津大学 一种可视化恶意软件的分类方法及装置

Also Published As

Publication number Publication date
CN112966271B (zh) 2022-09-16

Similar Documents

Publication Publication Date Title
CN112966271B (zh) 一种基于图卷积网络的恶意软件检测方法
CN111639344B (zh) 一种基于神经网络的漏洞检测方法及装置
Zhang et al. CNN-FL: An effective approach for localizing faults using convolutional neural networks
Lee et al. Learning binary code with deep learning to detect software weakness
CN113312500B (zh) 一种面向大坝安全运行的事件图谱构建方法
CN110135157B (zh) 恶意软件同源性分析方法、系统、电子设备及存储介质
CN110348214B (zh) 对恶意代码检测的方法及系统
CN113190849B (zh) Webshell脚本检测方法、装置、电子设备及存储介质
WO2017151757A1 (en) Recurrent neural feedback model for automated image annotation
CN111259388A (zh) 一种基于图卷积的恶意软件api调用序列检测方法
CN113900923B (zh) 一种跨指令集架构的二进制函数相似性检查系统及方法
CN116361801B (zh) 基于应用程序接口语义信息的恶意软件检测方法及系统
CN111651762A (zh) 一种基于卷积神经网络的pe恶意软件检测方法
CN111092894A (zh) 一种基于增量学习的webshell检测方法、终端设备及存储介质
CN111913702A (zh) 一种基于图神经网络的软件系统中关键类的识别方法
CN110990058B (zh) 软件相似性度量方法及装置
CN111914254A (zh) 一种基于弱耦合sgan的恶意软件家族分类器生成方法、装置及可读存储介质
CN115587597B (zh) 基于子句级关系图的方面词的情感分析方法以及装置
CN115146279A (zh) 程序漏洞检测方法、终端设备及存储介质
Kakisim et al. Sequential opcode embedding-based malware detection method
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
CN115098857A (zh) 一种可视化恶意软件的分类方法及装置
CN115221517A (zh) 一种开源存储库恶意包检测方法及系统
CN117354067B (zh) 一种恶意代码检测方法及系统
CN117454190A (zh) 日志数据分析方法和装置

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