CN115659330A - 一种基于内存取证和图神经网络的恶意代码检测方法 - Google Patents

一种基于内存取证和图神经网络的恶意代码检测方法 Download PDF

Info

Publication number
CN115659330A
CN115659330A CN202211113528.0A CN202211113528A CN115659330A CN 115659330 A CN115659330 A CN 115659330A CN 202211113528 A CN202211113528 A CN 202211113528A CN 115659330 A CN115659330 A CN 115659330A
Authority
CN
China
Prior art keywords
function
memory
program
graph
mirror image
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
CN202211113528.0A
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.)
North University of China
Beijing Institute of Technology BIT
Original Assignee
North University of China
Beijing Institute of Technology BIT
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 North University of China, Beijing Institute of Technology BIT filed Critical North University of China
Priority to CN202211113528.0A priority Critical patent/CN115659330A/zh
Publication of CN115659330A publication Critical patent/CN115659330A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于内存取证和图神经网络的恶意代码检测方法,涉及软件安全技术领域,本发明利用内存取证和图神经网络相结合的方式,减少了检测方法对于专家知识的依赖,同时提高了针对加壳恶意代码的检测效率以及对于未知样本的泛化能力。该方法包括如下步骤:获取目标程序的内存镜像。从内存镜像中提取目标程序中的函数以及函数之间的调用关系。利用自然语言处理NLP(Natural Language Processing)方法获取内存镜像中每个函数的语义表示,获得每个函数的语义向量。利用函数的语义向量构建目标程序的语义嵌入的函数调用图FCG(FunctionCall Graph),利用图神经网络GNN(Graph Neural Network)模型来分析语义嵌入的FCG以进行恶意代码识别,获得检测结果。

Description

一种基于内存取证和图神经网络的恶意代码检测方法
技术领域
本发明涉及软件安全技术领域,具体涉及一种基于内存取证和图神经网络 的恶意代码检测方法。
背景技术
恶意代码是指带有攻击意图所编写的一段代码,包括陷门、逻辑炸弹、特 洛伊木马、蠕虫、病毒等多种形式,会对计算机或网络系统造成严重危害。
恶意代码是当今互联网用户面临的主要威胁之一,恶意代码可以对计算机 造成各种形式的损害,它会导致电脑具有运行速度变慢甚至崩溃、磁盘空间减 少、网络互动增加等异常行为,还可以被用来获取互联网用户的个人信息,如 银行信息、密码等,已经严重危害到了人们的数据和财产安全。这些恶意代码 可以根据它的传播方式或行为特性进行分类,主要包括病毒、蠕虫、木马、间 谍软件、勒索软件等。根据AV-Test最近的报告,到2021年,互联网上总共出 现了13.12亿个恶意软件,这些海量的恶意程序对软件安全构成了严重威胁。
恶意代码检测是一种能够识别出恶意程序的方法,主要分为静态检测和动 态检测两种。静态检测是指利用静态特征(例如,字节序列和字符串)来检测 可疑程序而不执行它们。静态方法的主要优点是快速且可扩展地检测恶意程序。 但是,如果目标程序采用高级混淆技术(例如加密和打包),则静态方法将无法 区分良性程序和恶意程序。与静态方法不同,动态方法依赖于分析程序的运行 时特性,需要先运行目标程序。即使程序被很好地打包或加密,恶意行为最终 也会在运行时暴露出来。因此,动态方法能够识别隐藏其恶意活动的高级恶意 软件。
鉴于基于签名和启发式检测方法的缺陷,研究人员和网络安全公司将注意 力转向了深度学习方法,尤其是卷积神经网络在图像处理领域取得了十分优异 的成绩。因此在进行恶意代码检测时,通常会把恶意程序转化为图像或者矩阵, 然后再按照深度学习的步骤进行训练,最终获得一个检测准确率较高的模型。
将恶意程序转换为图像后进行深度学习的方法有很多种,较常见的方法有 以下两种:
方法一:通过静态分析目标二进制程序将其转换为灰度图。一个二进制程 序的每个字节范围在00到0xFF之间,可以对应灰度图的0到255。通过设置长 和宽,可将程序的字节序列转换为矩阵。其中,矩阵中每一项可对应灰度图中 每一个像素点。最后,利用深度学习算法对灰度图进行分析,识别对应的恶意 程序。
方法二:将样本程序运行时调用的API序列信息转换为一个矩阵。利用API Hook或者程序插桩技术分析恶意程序在系统运行时调用的API序列信息,将每 个API调用信息转化为词向量,而每个样本程序运行时获得到的API序列列表 则抽象成一个矩阵。最后,通过深度学习算法对矩阵进行分析,以识别对应的 恶意程序。
加壳是指在原代码的执行流程前加入一段加密的过程,加壳程序在执行时 需要先解压再执行。早期,技术人员可以直接通过检测程序是否加壳或者混淆 来判断该程序是否具有恶意行为。但是加壳技术不仅能阻止恶意代码被分析, 对于正常程序也开始采用加壳技术来保护程序的知识产权。因此,加壳文件被 判定为恶意代码的方法并不可取,需要新的技术对程序进行检测。加壳的过程 包括:
1)原始代码的代码段、数据段、资源段被加壳器进行加密和压缩,将这些 字节段作为新程序的数据段。
2)在加壳部分的前面再加上一个新的PE头。
3)将解密所用到的密钥保存在新程序中。如图1所示。
加壳后的文件包括:新的PE头、加壳部分、解压存根——用于解压代码。 在加壳过程中,原来的入口点和加壳区会被重新定向。新的程序和正常程序一 样都是可执行的,但是其行为通过反汇编可以看出,该程序只有一个函数就是 对加壳的部分进行解压,再执行。这个过程使得识别导入地址表(IAT)和原始入 口点变得很困难。在函数导入表中主要是解密函数,如Base64编码和哈希算法 等函数,该类函数主要是对加壳部分的文件进行解密,解密后恢复出原始程序 的PE头和不同的节区,再执行原始的程序。对加壳的程序进行反汇编或者提取 特征后的结果相差不大,因为提取到的特征都是壳体的特征,所以该机理能够 有效地躲避静态检测和特征提取。
加壳程序在执行时相当于执行两个程序,首先运行解压程序进行解压,再 执行原程序的真正功能。对于恶意代码,该方法能够阻止安全专家通过调试分 析其执行流程从而提取特征;对于正常程序,以往的破解人员能够通过调试程 序逆向创建盗版程序或者通过调试对程序的注册码认证过程进行逆向破解,从 而开发注册码生成器等工具。即通过加壳能够防止不法分子的逆向破解,因此 仅仅通过判断加壳就断定一个程序是否恶意具有很高的误报率。
目前对于加壳恶意程序的检测技术目前较少,大都基于专业人员手工分析。 而手工分析方法人力成本高,检测效率低,很难应对当下复杂的互联网环境。
许多动态获取到的恶意程序特征可能会被恶意程序干扰,例如利用沙箱获 取到的恶意程序API信息。但这些API信息可能是恶意程序故意调用进行伪装 的,因此分析这些信息可能会对检测结果造成一定的影响。
机器学习和深度学习方法学习到的特征过于单一,往往只是关注了恶意程 序中某一方面的行为,导致特征与特征之间没有逻辑性。现有的网络模型对于 恶意文件主要是通过LSTM、CNN等算法进行建模。这种基于语义或者基于空间 结构的模型对于未知程序的泛化能力较弱。
因此针对加壳恶意程序目前依旧存在检测困难的问题,如何提高针对加壳 恶意代码的检测效率以及提升未知样本的泛化能力,是目前亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种基于内存取证和图神经网络的恶意代码检测 方法,本发明利用内存取证和图神经网络相结合的方式,减少了检测方法对于 专家知识的依赖,同时提高了针对加壳恶意代码的检测效率以及对于未知样本 的泛化能力。
为达到上述目的,本发明提供的一种基于内存取证和图神经网络的恶意代 码检测方法,包括如下步骤:
步骤一:获取目标程序的内存镜像。
步骤二:从内存镜像中提取目标程序中的函数以及函数之间的调用关系。
步骤三:利用自然语言处理NLP方法获取内存镜像中每个函数的语义表示, 获得每个函数的语义向量。
步骤四:利用函数的语义向量构建目标程序的语义嵌入的函数调用图FCG, 利用图神经网络GNN模型来分析语义嵌入的FCG以进行恶意代码识别,获得检 测结果。
进一步地,步骤一中,获取目标程序的内存镜像,具体为:采用Procdump 工具来提取目标程序的内存镜像,获得目标程序的内存dump文件然后分析其中 的程序代码,所提取的内存dump文件中包含目标程序的整个虚拟内存地址空间。
进一步地,步骤二中,从内存镜像中提取程序汇编指令序列以及程序的控 制流图CFG,具体为:获取目标程序的内存镜像后,利用SMDA工具从内存镜像 中提取程序汇编指令序列并恢复程序的控制流图,具体地:SMDA工具利用递归 反汇编算法和启发式规则来识别内存中的函数及函数之间的调用关系;SMDA工 具为每个识别的函数分配一个置信度值,过滤置信度值低于设定阈值的函数。
进一步地,步骤三:利用自然语言处理NLP方法获取内存镜像中每个函数 的语义表示,获得每个函数的语义向量具体为:对于内存镜像中每个所识别的 函数,其包含一系列的汇编指令;针对函数的汇编指令进行规范化处理。在对 汇编指令进行规范化处理后,使用Doc2vec模型将函数转换为语义向量。
进一步地,针对函数的汇编指令进行规范化处理,具体为:一条汇编指令 包括两个部分:一个操作码、一个或多个操作数;应用正则表达式来批量替换 出现在操作数中的内存地址;设置操作数阈值,低于操作数阈值的为小操作数, 否则为大操作数,仅保留小操作数并用统一标识符来替换大操作数。
进一步地,步骤四:利用函数的语义向量构建目标程序的语义嵌入的函数 调用图FCG,利用图神经网络GNN模型来分析语义嵌入的FCG以进行恶意代码识 别,获得检测结果,具体为:
函数调用图FCG定义为有向图G=(V,E),其中V是节点集,E是边集;对于 每个节点vi∈V,都有一个特征向量xi表示函数的语义向量;对于每条边eij∈E, 都有一条从节点vi到节点vj的有向边来表示函数vi调用函数vj
利用GNN的一种模型-简化的GraphSAGE模型来获取不同函数间相互交互的 结构信息。
有益效果:
1、本发明提供的一种基于内存取证和图神经网络的恶意代码检测方法,在 现有恶意代码检测方法的基础上,提高恶意代码的检测准确率,使用动态分析 方式以及内存取证技术提取内存镜像用以区分加壳的恶意程序和正常程序以及 不加壳的恶意程序和正常程序。将内存镜像中的语义信息与结构信息相结合可 以提高恶意代码的检测能力。基于图神经网络模型可以聚合含有特征嵌入的函 数调用图并且可以提高本发明对未知程序的语义感知和泛化能力。
2、本发明通过构建函数调用图的方式,将内存镜像进行反汇编后的程序汇 编指令序列与函数间结构信息相结合并对其进行分析以提高恶意代码检测的准 确率。
3、本发明将函数调用图中的汇编指令序列所组成的函数用Doc2vec嵌入后 的向量来表示,该方法可以使语义相同的函数具有相似的向量表示,同时图的 有向边用该函数的调用关系来表示有效保障了特征间的逻辑关系。
4、本发明采用基于GraphSAGE构建的图分类模型能够通过训练聚合节点邻 居的函数,将图神经网络拓展成具有归纳学习能力的网络,对于未知节点具有 较强的泛化能力。
附图说明
图1程序加壳、去壳流程图;
图2基于内存取证和图神经网络的恶意代码检测方法框架图;
图3PV-DM和PV-DBOW方法;
图4函数调用图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了了一种基于内存取证和图神经网络的恶意代码检测方法。
图2示出了该检测方法的总体框架。如图2所示,一种基于内存取证和图 神经网络的恶意代码检测方法主要分为四个阶段,分别是内存取证、特征提取、 特征向量化和恶意代码检测。
内存取证阶段主要是获取目标程序的内存镜像,其中包含程序的运行时代 码和内存中的数据。
特征提取阶段主要是从内存镜像中提取程序汇编指令序列以及程序的控制 流图(CFG)。
特征向量化阶段主要是利用自然语言处理(NLP)方法来获取每个函数的语 义表示,从而使相似的函数产生相似的向量。
恶意代码检测阶段主要是构建该程序的函数调用图(FCG)并利用图神经网 络(GNN)模型来分析语义嵌入后的FCG以进行恶意代码识别。
每个阶段的具体流程如下:
内存取证阶段
程序的函数功能代码在运行时会暴露在内存中。因此,本发明使用Procdump 工具来提取程序的内存镜像,获得目标程序的内存dump文件然后分析其中的程 序代码。所提取的内存dump文件中包含了目标程序的整个虚拟内存地址空间, 该空间内即包括运行时代码和数据。
ProcDump是一个基于命令行的内存取证程序,其主要目的是监视应用程序 中存在的CPU崩溃现象并在崩溃期间生成内存转储以及通过进程号获取对应进 程的内存镜像,这样能够避免先提取整个系统内存镜像,再提取具体进程镜像 的繁琐过程。
特征提取阶段
获取目标进程的内存镜像后,利用SMDA工具从该内存镜像中提取程序汇编 指令序列并恢复程序的控制流图。每个函数是由一系列的汇编指令组成的。
具体来说,SMDA工具利用递归反汇编算法和启发式规则来识别内存中的函 数及函数之间的调用关系。由于内存中程序代码和数据可能存在混合在同一内 存区域的问题,SMDA工具不能保证所有识别的函数结果都是正确的。为此,该 工具将为每个识别的函数分配一个置信度值,该置信度值用于过滤一些置信度 值较低的函数。例如,如果该函数包含未知指令,则置信度值会很小。在本发 明中,将置信度值设置为0.5以进行函数识别。
SMDA是一个轻量级的递归反汇编开源程序(下载地址: https://github.com/danielplohmann/smda),该程序能够从内存镜像中恢复程 序的控制流图(Control FlowGraph)。它基于Capstone开源库构建内存镜像 分析器,目前支持x86和x64指令集并且可以分析任意内存转储。该工具的输 出是函数、基本块和指令的集合,并且可以推断出函数之间的调用关系。
特征向量化阶段
对于内存镜像中每个所识别的函数,其包含一系列的汇编指令。为了便于 计算,本发明不考虑函数内部的控制流。一条指令包括两个部分:一个操作码 和一个(或多个)操作数。操作码的类型是有限的,而操作数有各种可能的值。 为了保留操作数的关键信息,本发明提出了一种简单的方法来规范化指令操作 数,即应用正则表达式来批量替换出现在操作数中的内存地址(例如,函数地 址和跳转地址)。因为小操作数通常出现在相对寻址和索引寻址过程中,而大操 作数经常出现在算术运算中,因此本发明只保留小操作数并用统一标识符来替 换大操作数。本发明通过设定一个操作数阈值来区分大小操作数,例如可设定 操作数阈值为255,大于阈值则为大操作数,小于阈值则为小操作数。
在对原始指令进行规范化后,选取NLP方法中的一种进行语义向量的提取, 本发明实施例中使用Doc2vec模型将函数(一个函数包含若干条汇编指令)转 换为语义向量。该模型可以从可变长度的指令中学习固定长度的特征表示。它 可以很好地处理不同功能函数包含不同种类和数量指令的情况。有两种不同的 方法(即PV-DM和PV-DBOW)来训练Doc2vec模型。PV-DM采用固定的上下文 窗口来生成函数向量,用于预测代码中的下一个指令。PV-DBOW随机抽取指令进 行预测,从而学习函数向量。图3展示了本发明的训练方法即PV-DM和PV-DBOW 方法,该方法可以使相似的函数产生相似的向量。
恶意代码检测阶段
通过Doc2vec模型可以将程序函数编码为有意义的向量。为了对函数调用 进行建模,本发明将函数调用图定义为有向图G=(V,E),其中V是节点集,E是 边集。对于每个节点vi∈V,都有一个特征向量xi表示函数的语义向量。对于每 条边eij∈E,都有一条从节点vi到节点vj的有向边来表示函数vi调用函数vj。图 4详细展示了本发明构建的函数调用图。通过融合函数调用图中的语义信息,就 可以更加准确地判断出该程序中是否存在恶意行为。
图4示出了函数调用图,其每个节点代表一个函数,边代表函数之间的调 用关系。
图神经网络(GNN)是一类基于深度学习的处理图域信息的方法。由于其较 好的性能和可解释性,GNN在各个领域都越来越受欢迎,包括社交网络、推荐系 统、交通运输、生命科学。图是一种非欧式数据结构,包括节点(顶点)和连 接在一起的边来表示信息。
图神经网络(GNN)的一个动机来自于图的嵌入,它学习如何用低维向量表 示图节点、边或子图。在机器学习中,往往需要人为设计特征,并且通过人为 定义的特征对特征向量进行填充。一般都是使用特定的位来表示特征,向量中 该位的数字表示特征的数量或者有无,这极大地限制了向量的表示范围,并且 对于手工提取的特征并不能保证其覆盖所有特征。
图神经网络的核心工作就是对图在空间域的节点嵌入信息进行卷积操作。 即用神经网络聚合节点邻居的信息嵌入并在节点之间传递和接受有关其邻居的 信息。考虑具有初始嵌入的目标节点:它从邻居那里接收边缘神经网络传递的 信息并将这些边缘的数据汇总(比如,最大池化,平均池化等),然后传递到节 点的激活单元以获取该节点的一组新的嵌入向量。
GNN主流算法有图卷积神经网络(GCN)、图自编码器、图生成网络、图循环 网络以及图注意力网络。其中,GCN的计算可以分为基于频域和基于空域两种方 式。这里主要介绍一个经典的基于空域的算法GraphSAGE,它从两个方面对传统 的GCN做了改进,第一点是在训练时将GCN的全图采样优化到部分以节点为中 心的邻居抽样,这使得大规模图数据的分布式训练成为可能,并且使得网络可 以学习没有见过的节点,这也使得GraphSAGE可以做归纳学习。第二点是 GraphSAGE研究了若干种邻居聚合的方式,并通过实验和理论分析对比了不同聚 合方式的优缺点。
本发明使用图神经网络(GNN)来分析恶意软件中不同函数之间的复杂交互。 一般来说,GNN将图节点从稀疏的高维嵌入空间转换为密集的低维嵌入空间。因 此,本发明通过Doc2vec模型最初生成的节点嵌入向量作为初始特征向量,利 用了一种GNN模型,即简化的GraphSAGE模型,来获取不同函数间相互交互的 结构信息。通过应用多层GraphSAGE对图节点进行进一步编码,以迭代生成节 点嵌入向量。在GraphSAGE中,有两个步骤。第一步是随机抽样一个固定大小 的节点邻居子集;第二步是将采样节点的特征信息聚合到目标节点的单个向量 中。
具体来说,在第k层GraphSAGE中,节点vi的聚合信息公式如下:
Figure BDA0003844556220000091
其中
Figure BDA0003844556220000092
表示节点vi在第k层的隐藏嵌入,N(vi)表示节点vi的采样邻域, |N(vi)|表示N(vi)的大小。自传递函数(fself)和消息传递函数(fmsg)用于从 节点本身和第k-1层中的邻域节点累积信息。σ表示ReLU激活函数。为简单起 见,本发明应用神经网络来实现自传递和消息传递功能。因此,节点嵌入可以 进一步表示为:
Figure BDA0003844556220000093
其中
Figure BDA0003844556220000094
Figure BDA0003844556220000095
表示在第k-1层学习的不同神经网络参数即变换矩阵, 下标为1时表示第一个变换矩阵,下标为2时表示第二个变换矩阵。在k个 GraphSAGE层的迭代之后,得到了
Figure BDA0003844556220000101
vi∈G的节点嵌入。接下来,为了获得表 示内存镜像的图级(graph-level)嵌入向量zm,本发明在所有节点嵌入上利用 最大池化函数,如公式(3)所示。具体而言,将GraphSAGE层数(即k)设置 为2,并将每一层采样节点邻居的数量设置为20。
Figure BDA0003844556220000102
在得到图级(graph-level)嵌入向量zm后,应用两个多层感知机神经网络 (MLP)来计算分配给恶意标签的概率。通过这种方式,嵌入向量被投影到一个标 量。为了确保预期的恶意概率在[0,1]的范围内,本发明使用sigmoid函数计算 概率如下:
pm=sigmoid(MLPθ2(MLPθ1(zm))) (4)
其中pm表示预测概率,MLPθ1和MLPθ2表示要训练的MLP层(有两个MLP 层θ1为第一层神经网络,θ2为第二层神经网络)。
为了预测给定内存镜像的最终标签ym,本发明将恶意代码预测概率pm与预 定义的阈值ζ进行比较。如果概率值较大,则表明该内存镜像中包含恶意代码。 否则,表明该内存镜像是正常的。标签预测过程表示如下:
Figure BDA0003844556220000103
其中,ym即为本发明方法输出的检测结果。
在训练过程中,本发明应用如下的二元交叉熵损失函数:
Figure BDA0003844556220000104
其中L为损失函数,其中
Figure BDA0003844556220000105
是内存镜像的真实标签,pm是通过本发明计算 的内存镜像恶意概率。
本发明利用动态检测方法,在虚拟机中运行样本程序,避免了恶意程序加 壳、变形、多态所造成的干扰。相较于灰度图切割会导致特征连续性被破坏的 问题,本发明通过提取程序内存镜像的方式得以解决且提取后的特征更具有语 义信息和结构特性。
本发明重点关注样本程序的控制流信息,而不是程序运行时调用的API信 息,避免了对程序API函数调用的拦截。在构建图特征的过程中,将函数内的 语义特征和函数间的结构特征相结合,使得构建的函数调用图获取的特征更加 全面,增强了模型的语义感知和泛化能力。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保 护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,包括如下步骤:
步骤一:获取目标程序的内存镜像;
步骤二:从所述内存镜像中提取目标程序中的函数以及函数之间的调用关系;
步骤三:利用自然语言处理NLP方法获取所述内存镜像中每个函数的语义表示,获得每个函数的语义向量;
步骤四:利用函数的语义向量构建所述目标程序的语义嵌入的函数调用图FCG,利用图神经网络GNN模型来分析语义嵌入的FCG以进行恶意代码识别,获得检测结果。
2.如权利要求1所述的一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,所述步骤一中,获取目标程序的内存镜像,具体为:
采用Procdump工具来提取目标程序的内存镜像,获得目标程序的内存dump文件然后分析其中的程序代码,所提取的内存dump文件中包含目标程序的整个虚拟内存地址空间。
3.如权利要求1或2所述的一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,所述步骤二中,从所述程序内存镜像中提取程序汇编指令序列以及程序的控制流图CFG,Control Flow Graph,具体为:
获取目标程序的内存镜像后,利用SMDA工具从所述内存镜像中提取程序汇编指令序列并恢复程序的控制流图,具体地:所述SMDA工具利用递归反汇编算法和启发式规则来识别内存中的函数及函数之间的调用关系;所述SMDA工具为每个识别的函数分配一个置信度值,过滤置信度值低于设定阈值的函数。
4.如权利要求1或2所述的一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,所述步骤三:利用自然语言处理NLP方法获取所述内存镜像中每个函数的语义表示,获得每个函数的语义向量具体为:
对于内存镜像中每个所识别的函数,其包含一系列的汇编指令;针对函数的汇编指令进行规范化处理;
在对汇编指令进行规范化处理后,使用Doc2vec模型将函数转换为语义向量。
5.如权利要求4所述的一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,所述针对函数的汇编指令进行规范化处理,具体为:一条汇编指令包括两个部分:一个操作码、一个或多个操作数;应用正则表达式来批量替换出现在操作数中的内存地址;设置操作数阈值,低于操作数阈值的为小操作数,否则为大操作数,仅保留小操作数并用统一标识符来替换大操作数。
6.如权利要求1、2或5任一所述的一种基于内存取证和图神经网络的恶意代码检测方法,其特征在于,所述步骤四:利用函数的语义向量构建所述目标程序的语义嵌入的函数调用图FCG,利用图神经网络GNN模型来分析语义嵌入的FCG以进行恶意代码识别,获得检测结果,具体为:
函数调用图FCG定义为有向图G=(V,E),其中V是节点集,E是边集;对于每个节点vi∈V,都有一个特征向量xi表示函数的语义向量;对于每条边eij∈E,都有一条从节点vi到节点vj的有向边来表示函数vi调用函数vj
利用GNN的一种模型-简化的GraphSAGE模型来获取不同函数间相互交互的结构信息进行内存镜像中恶意代码识别。
CN202211113528.0A 2022-09-14 2022-09-14 一种基于内存取证和图神经网络的恶意代码检测方法 Pending CN115659330A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211113528.0A CN115659330A (zh) 2022-09-14 2022-09-14 一种基于内存取证和图神经网络的恶意代码检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211113528.0A CN115659330A (zh) 2022-09-14 2022-09-14 一种基于内存取证和图神经网络的恶意代码检测方法

Publications (1)

Publication Number Publication Date
CN115659330A true CN115659330A (zh) 2023-01-31

Family

ID=84983941

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211113528.0A Pending CN115659330A (zh) 2022-09-14 2022-09-14 一种基于内存取证和图神经网络的恶意代码检测方法

Country Status (1)

Country Link
CN (1) CN115659330A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116611062A (zh) * 2023-04-21 2023-08-18 中国人民解放军战略支援部队信息工程大学 基于图卷积网络的内存恶意进程取证方法与系统
CN117354067A (zh) * 2023-12-06 2024-01-05 南京先维信息技术有限公司 一种恶意代码检测方法及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116611062A (zh) * 2023-04-21 2023-08-18 中国人民解放军战略支援部队信息工程大学 基于图卷积网络的内存恶意进程取证方法与系统
CN116611062B (zh) * 2023-04-21 2023-12-01 中国人民解放军战略支援部队信息工程大学 基于图卷积网络的内存恶意进程取证方法与系统
CN117354067A (zh) * 2023-12-06 2024-01-05 南京先维信息技术有限公司 一种恶意代码检测方法及系统
CN117354067B (zh) * 2023-12-06 2024-02-23 南京先维信息技术有限公司 一种恶意代码检测方法及系统

Similar Documents

Publication Publication Date Title
Gibert et al. The rise of machine learning for detection and classification of malware: Research developments, trends and challenges
Nguyen et al. A novel graph-based approach for IoT botnet detection
Aslan et al. A new malware classification framework based on deep learning algorithms
Ni et al. Malware identification using visualization images and deep learning
Chowdhury et al. Malware analysis and detection using data mining and machine learning classification
Canfora et al. An hmm and structural entropy based detector for android malware: An empirical study
Ling et al. Adversarial attacks against Windows PE malware detection: A survey of the state-of-the-art
CN115659330A (zh) 一种基于内存取证和图神经网络的恶意代码检测方法
Obaidat et al. Jadeite: A novel image-behavior-based approach for java malware detection using deep learning
Yan et al. A survey of adversarial attack and defense methods for malware classification in cyber security
Martinelli et al. Model checking and machine learning techniques for HummingBad mobile malware detection and mitigation
Kakisim et al. Sequential opcode embedding-based malware detection method
AU2022215147B2 (en) Machine learning methods and systems for determining file risk using content disarm and reconstruction analysis
Kang et al. A study on variant malware detection techniques using static and dynamic features
Van Ouytsel et al. Analysis of machine learning approaches to packing detection
Mane et al. Review of malware detection using deep learning
Chang et al. A Survey on Malware Detection based on API Calls
Rozenberg et al. A method for detecting unknown malicious executables
Wolsey The State-of-the-Art in AI-Based Malware Detection Techniques: A Review
Hashemi et al. IFMD: image fusion for malware detection
Alazab et al. Malicious code detection using penalized splines on OPcode frequency
Ling et al. Short review on metamorphic malware detection in hidden Markov models
Nadeem et al. Intelligent malware defenses
Yaseen et al. A Deep Learning-based Approach for Malware Classification using Machine Code to Image Conversion
Poornima et al. Effective Feature Extraction via N-Skip Gram Instruction Embedding Model using Deep Neural Network for designing Anti-Malware Application

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