CN111259388B - 一种基于图卷积的恶意软件api调用序列检测方法 - Google Patents

一种基于图卷积的恶意软件api调用序列检测方法 Download PDF

Info

Publication number
CN111259388B
CN111259388B CN202010021827.6A CN202010021827A CN111259388B CN 111259388 B CN111259388 B CN 111259388B CN 202010021827 A CN202010021827 A CN 202010021827A CN 111259388 B CN111259388 B CN 111259388B
Authority
CN
China
Prior art keywords
api
function
api call
registry
sequence information
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
Application number
CN202010021827.6A
Other languages
English (en)
Other versions
CN111259388A (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 CN202010021827.6A priority Critical patent/CN111259388B/zh
Publication of CN111259388A publication Critical patent/CN111259388A/zh
Application granted granted Critical
Publication of CN111259388B publication Critical patent/CN111259388B/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种基于图卷积的恶意软件API调用序列检测方法,包括以下步骤:采集并记录大量软件样本运行时的进程及子进程的API调用序列信息;对API调用序列信息进行向量化处理;抽取API函数的参数关系、依赖关系以及顺序关系;建立API调用图;将API调用图输入到图卷积神经网络中进行训练,得到恶意软件检测网络模型;将待检测的可执行文件运行时的进程及子进程的API调用序列信息进行采集,构建待检测的可执行文件的API调用图,然后将待检测的可执行文件的API调用图输入恶意软件检测网络模型中,若恶意软件检测网络模型的输出结果为1,则表示判定结果为恶意软件;若恶意软件检测网络模型的输出结果为0,则表示判定结果为正常软件。

Description

一种基于图卷积的恶意软件API调用序列检测方法
技术领域
本发明涉及网络安全技术领域,更具体地,涉及一种基于图卷积的恶意软件 API调用序列检测方法。
背景技术
现有的恶意软件检测技术主要包括静态检测与动态检测,其中静态检测主要是指在不运行软件的条件下,分析程序的二进制文件内容从而实现恶意软件检测,其主要技术包括汇编代码分析、文件头分析、文件图像分析等,一般可以给出恶意软件的特征码用于后续检测;动态检测则通过对软件运行时的行为进行监测和记录,分析并识别其中的异常行为实现恶意软件检测的目的,能够很好地抵抗代码混淆等静态保护措施。
目前主流的分析恶意软件方法为动态检测,而现有的基于深度学习的恶意行为检测方法大多以API函数名序列作为分析对象,然而这些方法并不能充分地利用API调用序列中的信息。目前现有的基于深度学习的恶意行为检测方法仅仅将 API函数名序列作为序列进行建模,没有考虑API调用之间的各种关系;此外,现有的基于深度学习的恶意行为检测方法仅仅把文件名、注册表项等参数作为普通字符串进行处理,不能很好地利用这些文件和注册表项本身的性质。
发明内容
本发明为克服上述现有技术所述的没有考虑API调用之间的各种关系、无法充分利用API参数的缺陷,提供一种基于图卷积的恶意软件API调用序列检测方法。
为解决上述技术问题,本发明的技术方案如下:
一种基于图卷积的恶意软件API调用序列检测方法,包括以下步骤:
S1:采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,其中,所述API调用序列信息包括API函数和API参数;
S2:对所述API调用序列信息进行向量化处理;
S3:根据所述经过向量化处理的API调用序列信息,抽取所述API函数的参数关系、依赖关系以及顺序关系;
S4:根据所述经过向量化处理的API调用序列信息以及所述抽取的依赖关系建立API调用图;
S5:将所述API调用图输入到图卷积神经网络中进行训练,得到恶意软件检测网络模型;
S6:将待检测的可执行文件运行时的进程及子进程的API调用序列信息进行采集,执行S2~S4步骤得到所述待检测的可执行文件的API调用图,然后将所述待检测的可执行文件的API调用图输入所述恶意软件检测网络模型中,若所述恶意软件检测网络模型的输出结果为1,则表示判定结果为恶意软件;若所述恶意软件检测网络模型的输出结果为0,则表示判定结果为正常软件。
本技术方案中,采用将API调用访问的文件和注册表项编码作为向量,同时结合API之间的依赖关系为将API调用序列建立API调用图,利用图卷积网络构建恶意软件监测模型,并将API调用图及其标签作为输入对所述恶意软件检测模型进行训练,得到完成训练的恶意软件检测模型应用于恶意软件API调用序列检测。
优选地,所述S1步骤中,采用动态分析工具采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,通过反病毒引擎或人工分析得到所述软件样本的标签并记录。
优选地,所述API调用序列信息中的API函数包括但不仅限于函数名、进程ID、调用时间、线程ID、返回值;所述API调用序列信息中的API参数包括但不仅限于访问的文件名、访问的注册表路径、访问的动态链接库名、文件/注册表句柄、指针。
优选地,所述S2步骤中,对所述API调用序列信息进行向量化处理的具体步骤包括:
S21:采用word2vec算法对所述API调用序列信息中的函数名进行向量化,得到各函数名的向量化表示;
S22:采用metapath2vec算法对所述API调用序列信息中的访问的文件名进行向量化,得到文件名的向量化表示;
S23:采用metapath2vec算法对所述API调用序列信息中的访问的注册表路径进行向量化,得到注册表路径的向量化表示。
优选地,所述S21步骤中,其具体步骤包括:对所述API调用序列信息进行处理,提取所述API调用序列信息中的函数名,并将所述函数名根据调用时间进行排序,获得函数名序列,然后采用word2vec算法对所述函数名序列进行向量化处理,得到所述函数名序列中各函数名的向量化表示。
优选地,所述S22步骤中,其具体步骤包括:对所述调用序列信息进行统计,获得所有访问的文件名集合Sf;以所述文件名集合Sf中的文件名以及软件作为节点,以软件与文件访问关系作为边,建立文件访问关系图,然后在所述文件访问关系图上采用metapath2vec算法进行节点嵌入,得到文件名的向量化表示。
优选地,所述S23步骤中,其具体步骤包括:对所述调用序列信息进行统计,获得所有访问的注册表路径集合Sreg;以所述注册表路径集合Sreg中的注册表项和软件作为节点,以所述注册表路径集合Sreg中的软件与注册表的访问关系作为边,建立注册表访问关系图,然后在所述注册表访问关系图上采用metapath2vec 算法进行节点嵌入,获得注册表路径的向量化表示。
优选地,所述S3步骤中,抽取所述API函数的参数关系、依赖关系以及顺序关系的具体步骤包括:
S31:抽取所述API函数的参数关系:若某个API调用使用了文件名或注册表作为参数,则表示API调用与该文件或注册表存在参数关系;
S32:抽取所述API函数的参数依赖关系:对每一个API调用序列,遍历其中API调用参数中的指针或句柄,若API调用apia时使用了由API调用apia返回或修改的指针或句柄作为参数,则表示调用apib在参数上依赖于调用apia,存在依赖关系;
S33:抽取所述API函数的参数顺序关系:在同一程序中,若API调用apib在API调用apia之后调用,则表示调用apib在参数上与调用apia存在顺序关系;
其中,apia和apib表示API函数。
优选地,所述S4步骤中,建立API调用图的具体步骤包括:
S41:对于每个所述API调用序列信息,将API调用的函数名、访问的文件名、访问的注册表路径作为节点,并在每个节点上附加相应的向量化表示;
S42:在所述节点的基础上,根据所述API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边,并为每条有向边附加一个表示关系类型的向量
Figure RE-GDA0002422315510000031
优选地,所述S42步骤中,根据所述API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边的具体步骤包括:
1)根据所述API函数的参数关系,由API的函数名节点向相应的存在参数关系的参数节点连接一条有向边;
2)根据所述API函数的参数依赖关系,由存在参数依赖关系的apia的函数名节点向apib的函数名节点连接一条有向边;
3)根据所述API函数的参数顺序关系,由存在顺序关系的apia的函数名节点向apib的函数名节点连接一条有向边。
与现有技术相比,本发明技术方案的有益效果是:采用将API调用访问的文件和注册表项编码为向量的方法,同时结合API调用之间的参数关系、时序关系以及依赖关系,将API调用序列建模为API调用图,输入到图卷积神经网络中训练,构建恶意软件检测模型,能够结合更全面的信息,且信息的组织结构更加灵活,能够有效提高恶意软件API调用序列检测的准确率。
附图说明
图1为本发明的基于图卷积的恶意软件API调用序列检测方法的流程图。
图2为实施例1的文件访问图。
图3为实施例1的注册表访问图。
图4为实施例1的API调用图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提出一种基于图卷积的恶意软件API调用序列检测方法,如图1 所示,为本实施例的基于图卷积的恶意软件API调用序列检测方法的流程图。
本实施例提出的基于图卷积的恶意软件API调用序列检测方法中,包括以下步骤:
S1:采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,其中,API调用序列信息包括API函数和API参数。
本实施例中,采用动态分析工具采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,通过反病毒引擎或人工分析得到软件样本的标签并记录。其中,调用序列信息中的API函数包括函数名、进程ID、调用时间、线程 ID、返回值,API参数包括访问的文件名、访问的注册表路径、访问的动态链接库名、文件/注册表句柄、指针。
S2:对API调用序列信息进行向量化处理;其具体步骤如下:
S21:采用word2vec算法对API调用序列信息中的函数名进行向量化,得到各函数名的向量化表示,具体的,提取所述API调用序列信息中的函数名,并将函数名根据调用时间进行排序,获得函数名序列,然后采用word2vec算法对所述函数名序列进行向量化处理,得到函数名序列中各函数名的向量化表示;
S22:采用metapath2vec算法对API调用序列信息中的访问的文件名进行向量化,得到文件名的向量化表示,具体的,对调用序列信息进行统计,获得所有访问的文件名集合Sf,以文件名集合Sf中的文件名以及软件作为节点,以软件与文件访问关系作为边,建立文件访问关系图,然后在所述文件访问关系图上采用metapath2vec算法进行节点嵌入,得到文件名的向量化表示;
S23:采用metapath2vec算法对API调用序列信息中的访问的注册表路径进行向量化,得到注册表路径的向量化表示,具体的,获得所有访问的注册表路径集合Sreg,以注册表路径集合Sreg中的注册表项和软件作为节点,以所述注册表路径集合Sreg中的软件与注册表的访问关系作为边,建立注册表访问关系图,然后在注册表访问关系图上采用metapath2vec算法进行节点嵌入,获得注册表路径的向量化表示。
S3:根据经过向量化处理的API调用序列信息,抽取API函数的参数关系、依赖关系以及顺序关系;其具体步骤如下:
S31:抽取API函数的参数关系:若某个API调用使用了文件名或注册表作为参数,则表示API调用与该文件或注册表存在参数关系;
S32:抽取API函数的参数依赖关系:对每一个API调用序列,遍历其中 API调用参数中的指针或句柄,若API调用apia时使用了由API调用apia返回或修改的指针或句柄作为参数,则表示调用apib在参数上依赖于调用apia,存在依赖关系;
S33:抽取API函数的参数顺序关系:在同一程序中,若API调用apib在 API调用apia之后调用,则表示调用apib在参数上与调用apia存在顺序关系;
其中,apia和apib表示API函数。
S4:根据经过向量化处理的API调用序列信息以及抽取的依赖关系建立API 调用图;其具体步骤如下:
S41:对于每个API调用序列信息,将API调用的函数名、访问的文件名、访问的注册表路径作为节点,并在每个节点上附加相应的向量化表示;
S42:在节点的基础上,根据API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边,并为每条有向边附加一个表示关系类型的向量
Figure RE-GDA0002422315510000061
S5:将API调用图以及通过反病毒引擎或人工分析得到软件样本的标签输入到图卷积神经网络中进行训练,得到恶意软件检测网络模型;
S6:将待检测的可执行文件运行时的进程及子进程的API调用序列信息进行采集,执行S2~S4步骤得到待检测的可执行文件的API调用图,然后将待检测的可执行文件的API调用图输入恶意软件检测网络模型中,若恶意软件检测网络模型的输出结果为1,则表示判定结果为恶意软件;若恶意软件检测网络模型的输出结果为0,则表示判定结果为正常软件。
在具体实施过程中,首先,采用各种动态分析软件如沙箱、代码插桩工具对大量软件样本运行时产生的API调用信息进行收集,并通过反病毒引擎或人工分析得到软件样本的标签并记录,其中,API调用信息包括软件样本自身的调用信息及其子进程的调用信息。
本实施例中进行了6个API调用,对于每一个次API调用,都会有一个对应的字典存储API调用的函数名、调用时间、进程id、线程id以及参数等信息。
然后,对所采集的API调用序列信息进行向量化处理,此步骤主要对函数名、文件名以及注册表项进行向量化操作。对于函数名,本实施例将从API调用序列中提取函数名序列,并利用Word2vec算法实现函数名的向量化。对于文件和注册表,本实施例将利用程序与它们之间的访问关系以及他们自身的路径来构建图表示,然后利用metapath2vec算法实现对文件与注册表的向量化。
本实施例中,对每个程序的API调用序列进行遍历,抽取出其中每个API 调用的函数名,得到API函数名序列。对于API调用序列,我们将得到的API 函数名序列为S1=["NtOpenKey","NtQueryValueKey","NtClose","NtCreateFile", "NtWriteFile","NtClose"],然后利用所有API函数名序列中出现过的函数名构建 API函数名集合Dict,将Dict集合中的每个元素进行one-hot编码,并将函数名序列中的函数名替换为对应的one-hot编码,获得编码后的函数名序列,对此序列应用Word2Vec算法,为每一个API函数名生成函数名的向量化表示。
对于文件路径,本实施例对每个程序的API调用序列进行统计分析,提取出每个文件读写过的文件路径集合。对于API调用序列,当发现该程序对一个文件进行了读写操作,因此该程序访问的文件路径集合为:
F={"C:\\Users\\weilong\\AppData\\Local\\Temp\\06ea48657f7e9f20bb7a3099f0 73b9fbe54d4f46c9829024ffd2ebbd066e060f.dll"},
将文件路径按照路径关系组织为一个树状结构,树状结构的内部节点代表目录,叶节点代表相应的文件。同时将每个可执行程序也作为节点加入到图中,如果程序在运行过程中读写过某个文件,那么在程序节点与文件节点之间连接一条无向边。这样可以构建一个由磁盘文件、目录以及可执行程序组成的无向图,该无向图不仅保留了各个文件的路径,而且还保留了程序对文件的读写关系。例如,若我们对三个可执行文件的API调用序列进行分析,得到它们的文件访问集合并构建文件访问图,其集合具体如下:
F1={"C:\\Windows\\SYSTEM32\\MSCOREE.DLL.local","C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscoreei.dll","C:\\Windows\\Microsoft.NET\\Fra mework\\Upgrades.2.0.50727\\mscoreei.dll"};
F2={"C:\\Users\\weilong\\AppData\\Local\\Temp\\config.json"};
F3={"C:\\Windows\\Globalization\\Sorting\\sortdefault.nls","C:\\Users\\user1\\A ppData\\Local\\Temp\\crypt32.dll"},
如图2所示,为本实施例中由上述三个集合构建的文件访问图,然后选取一种metapath模式,对获得的文件访问图应用metapath2vec算法,获得每个文件和路径的向量表示。
对于注册表路径,对每个程序的API调用序列进行统计分析,提取出每个程序访问或修改过的注册表路径。例如,对于图1中的API调用序列进行分析,获得的注册表路径集合为:
Reg={"HKEY_CURRENT_USER\\Control Panel\\Desktop\\PreferredUILanguages","HKEY_CURRENT_USER\\Control Panel\\Desktop"},
然后将注册表路径按照路径关系组织为一个树状结构,树状结构中的内部节点代表一个目录,各节点代表相应的注册表项。同时将每个程序也作为节点加入到图中,如果该程序在运行过程中访问过某个注册表项,那么在程序与注册表之间连接一条无向边。这样就可以构建一个由注册表、注册表目录以及可执行程序组成的、包含了可执行程序与注册表之间访问关系的无向图。当我们对三个API 调用序列进行分析,得到的API访问集合如下:
Reg1={"HKEY_CURRENT_USER\\Software\\Borland\\Locales","HKEY_CURRENT_USER\\Software\\Embarcadero\\Locales"};
Reg2={"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\GRE_Initialize","HKEY_LOCAL_MACHINE\\SOFTWARE\\ Microsoft\\Windows NT\\CurrentVersion\\GRE_Initialize\\DisableMetaFiles"};
Reg3={"KEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\OLEAUT"}。
如图3所示,为本实施例中由上述三个集合构建的注册表访问图,然后选取一种metapath模式,对上述获得的注册表访问图应用metapath2vec算法,获得每个注册表项的向量化表示。
对于API调用序列中出现的函数,抽取API函数之间、函数与参数之间依赖关系。其中,若某个API调用使用了文件名或者注册表作为参数,则称API 调用与该文件或注册表存在参数关系;若在同一程序中,API调用B在API调用A之后紧接着被调用,则称调用A与调用B之间存在顺序关系;对每一个API 调用序列,遍历其中API调用参数中的句柄与地址,如果调用A对句柄或地址的内容进行了修改,且调用B使用该句柄或地址,则称调用B在参数上依赖于调用A。
完成API函数的参数关系、依赖关系以及顺序关系的抽取后,根据经过向量化处理的API调用序列信息以及抽取的依赖关系建立API调用图,其中,对于每个API调用序列,将API调用的函数名、访问的文件以及访问的注册表作为节点,并在每个节点上附加相应的向量表示;在节点的基础上,根据API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边,并为每条有向边附加一个表示关系类型的向量
Figure RE-GDA0002422315510000081
完成API调用图的构建。如图4所示,为本实施例中根据上述API调用序列生成的API调用图。
将API调用图及其标签输入到现有的图卷积神经网络中进行训练,得到最终的恶意软件检测模型。在实际应用中,将待检测的可执行文件运行时的进程及子进程的API调用序列信息进行采集,构建待检测的可执行文件的API调用图,然后将待检测的可执行文件的API调用图输入上述完成训练的恶意软件检测网络模型中,若恶意软件检测网络模型的输出结果为1,则表示判定结果为恶意软件;若恶意软件检测网络模型的输出结果为0,则表示判定结果为正常软件。
本实施例中,采用将API调用访问的文件和注册表项编码为向量的方法,同时结合API调用之间的参数关系、时序关系以及依赖关系,将API调用序列建模为API调用图,输入到图卷积神经网络中训练,构建恶意软件检测模型,能够结合更全面的信息,且信息的组织结构更加灵活,能够有效提高恶意软件API 调用序列检测的准确率。此外,结合图卷积神经网络进行模型构建,其采用的图卷积算法中的卷积操作可以并行进行,能够有效减少训练时间。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (9)

1.一种基于图卷积的恶意软件API调用序列检测方法,其特征在于,包括以下步骤:
S1:采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,其中,所述API调用序列信息包括API函数和API参数;
S2:对所述API调用序列信息进行向量化处理;
S3:根据经过向量化处理的API调用序列信息,抽取所述API函数的参数关系、依赖关系以及顺序关系;所述S3步骤中,抽取所述API函数的参数关系、依赖关系以及顺序关系的具体步骤包括:
S31:抽取所述API函数的参数关系:若某个API调用使用了文件名或注册表作为参数,则表示API调用与该文件或注册表存在参数关系;
S32:抽取所述API函数的依赖关系:对每一个API调用序列,遍历其中API调用参数中的指针或句柄,若API调用apia时使用了由API调用apib返回或修改的指针或句柄作为参数,则表示调用apia在参数上依赖于调用apib,存在依赖关系;
S33:抽取所述API函数的顺序关系:在同一程序中,若API调用apib在API调用apia之后调用,则表示调用apib在参数上与调用apia存在顺序关系;
其中,apia和apib表示API函数;
S4:根据经过向量化处理的API调用序列信息以及抽取的API函数的参数关系、依赖关系以及顺序关系建立API调用图;
S5:将所述API调用图输入到图卷积神经网络中进行训练,得到恶意软件检测网络模型;
S6:将待检测的可执行文件运行时的进程及子进程的API调用序列信息进行采集,执行S2~S4步骤得到所述待检测的可执行文件的API调用图,然后将所述待检测的可执行文件的API调用图输入所述恶意软件检测网络模型中,若所述恶意软件检测网络模型的输出结果为1,则表示判定结果为恶意软件;若所述恶意软件检测网络模型的输出结果为0,则表示判定结果为正常软件。
2.根据权利要求1所述的恶意软件API调用序列检测方法,其特征在于:所述S1步骤中,采用动态分析工具采集并记录大量软件样本运行时的进程及子进程的API调用序列信息,通过反病毒引擎或人工分析得到所述软件样本的标签并记录。
3.根据权利要求2所述的恶意软件API调用序列检测方法,其特征在于:所述API调用序列信息中的API函数包括但不仅限于函数名、进程ID、调用时间、线程ID、返回值;所述API调用序列信息中的API参数包括但不仅限于访问的文件名、访问的注册表路径、访问的动态链接库名、文件/注册表句柄、指针。
4.根据权利要求3所述的恶意软件API调用序列检测方法,其特征在于:所述S2步骤中,对所述API调用序列信息进行向量化处理的具体步骤包括:
S21:采用word2vec算法对所述API调用序列信息中的函数名进行向量化,得到各函数名的向量化表示;
S22:采用metapath2vec算法对所述API调用序列信息中的访问的文件名进行向量化,得到文件名的向量化表示;
S23:采用metapath2vec算法对所述API调用序列信息中的访问的注册表路径进行向量化,得到注册表路径的向量化表示。
5.根据权利要求4所述的恶意软件API调用序列检测方法,其特征在于:所述S21步骤中,其具体步骤包括:对所述API调用序列信息进行处理,提取所述API调用序列信息中的函数名,并将所述函数名根据调用时间进行排序,获得函数名序列,然后采用word2vec算法对所述函数名序列进行向量化处理,得到所述函数名序列中各函数名的向量化表示。
6.根据权利要求4所述的恶意软件API调用序列检测方法,其特征在于:所述S22步骤中,其具体步骤包括:对所述调用序列信息进行统计,获得所有访问的文件名集合Sf;以所述文件名集合Sf中的文件名以及软件作为节点,以软件与文件访问关系作为边,建立文件访问关系图,然后在所述文件访问关系图上采用metapath2vec算法进行节点嵌入,得到文件名的向量化表示。
7.根据权利要求4所述的恶意软件API调用序列检测方法,其特征在于:所述S23步骤中,其具体步骤包括:对所述调用序列信息进行统计,获得所有访问的注册表路径集合Sreg;以所述注册表路径集合Sreg中的注册表项和软件作为节点,以所述注册表路径集合Sreg中的软件与注册表的访问关系作为边,建立注册表访问关系图,然后在所述注册表访问关系图上采用metapath2vec算法进行节点嵌入,获得注册表路径的向量化表示。
8.根据权利要求3所述的恶意软件API调用序列检测方法,其特征在于:所述S4步骤中,建立API调用图的具体步骤包括:
S41:对于每个所述API调用序列信息,将API调用的函数名、访问的文件名、访问的注册表路径作为节点,并在每个节点上附加相应的向量化表示;
S42:在所述节点的基础上,根据所述API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边,并为每条有向边附加一个表示关系类型的向量
Figure FDA0003762002260000031
9.根据权利要求8所述的恶意软件API调用序列检测方法,其特征在于:所述S42步骤中,根据所述API函数的参数关系、依赖关系以及顺序关系添加节点之间的有向边的具体步骤包括:
1)根据所述API函数的参数关系,由API的函数名节点向相应的存在参数关系的参数节点连接一条有向边;
2)根据所述API函数的依赖关系,由存在依赖关系的apia的函数名节点向apib的函数名节点连接一条有向边;
3)根据所述API函数的顺序关系,由存在顺序关系的apia的函数名节点向apib的函数名节点连接一条有向边。
CN202010021827.6A 2020-01-09 2020-01-09 一种基于图卷积的恶意软件api调用序列检测方法 Active CN111259388B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010021827.6A CN111259388B (zh) 2020-01-09 2020-01-09 一种基于图卷积的恶意软件api调用序列检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010021827.6A CN111259388B (zh) 2020-01-09 2020-01-09 一种基于图卷积的恶意软件api调用序列检测方法

Publications (2)

Publication Number Publication Date
CN111259388A CN111259388A (zh) 2020-06-09
CN111259388B true CN111259388B (zh) 2023-01-17

Family

ID=70948599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010021827.6A Active CN111259388B (zh) 2020-01-09 2020-01-09 一种基于图卷积的恶意软件api调用序列检测方法

Country Status (1)

Country Link
CN (1) CN111259388B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783100B (zh) * 2020-06-22 2022-05-17 哈尔滨工业大学 基于图卷积网络对代码图表示学习的源代码漏洞检测方法
CN113971285A (zh) * 2020-07-24 2022-01-25 深信服科技股份有限公司 一种终端恶意进程识别方法、装置、设备及可读存储介质
CN112163219A (zh) * 2020-08-27 2021-01-01 北京航空航天大学 一种基于词嵌入和gcn的恶意程序识别和分类方法
CN112966271B (zh) * 2021-03-18 2022-09-16 中山大学 一种基于图卷积网络的恶意软件检测方法
CN112989347B (zh) * 2021-04-15 2023-06-09 重庆大学 一种用于识别恶意软件的方法及装置、设备
CN113569206A (zh) * 2021-06-30 2021-10-29 深信服科技股份有限公司 一种软件识别方法、系统、设备及计算机可读存储介质
CN113568836B (zh) * 2021-07-30 2022-09-13 江苏易安联网络技术有限公司 多时间序列的样本特征提取方法以应用其的软件检测方法
CN114491529B (zh) * 2021-12-20 2024-05-17 西安电子科技大学 基于多模态神经网络的安卓恶意应用程序识别方法
CN114338188B (zh) * 2021-12-30 2024-01-30 杭州电子科技大学 一种基于进程行为序列分片的恶意软件智能云检测系统
CN114816997B (zh) * 2022-03-29 2023-08-18 湖北大学 一种基于图神经网络与双向gru特征抽取的缺陷预测方法
CN114722391B (zh) * 2022-04-07 2023-03-28 电子科技大学 一种对安卓恶意程序进行检测的方法
CN114896514B (zh) * 2022-07-14 2022-09-30 西安电子科技大学 一种基于图神经网络的Web API标签推荐方法
CN116089955B (zh) * 2022-12-01 2023-09-26 之江实验室 一种基于windows操作系统的系统调用去噪方法及装置
CN117131497A (zh) * 2023-02-28 2023-11-28 荣耀终端有限公司 一种软件检测方法及电子设备
CN116204892B (zh) * 2023-05-05 2023-08-08 中国人民解放军国防科技大学 漏洞处理方法、装置、设备以及存储介质
CN116361801B (zh) * 2023-06-01 2023-09-01 山东省计算中心(国家超级计算济南中心) 基于应用程序接口语义信息的恶意软件检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184160A (zh) * 2015-07-24 2015-12-23 哈尔滨工程大学 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法
CN109543410A (zh) * 2018-11-20 2019-03-29 北京理工大学 一种基于语义映射关联的恶意代码检测方法
CN109614795A (zh) * 2018-11-30 2019-04-12 武汉大学 一种事件感知的安卓恶意软件检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184160A (zh) * 2015-07-24 2015-12-23 哈尔滨工程大学 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法
CN109543410A (zh) * 2018-11-20 2019-03-29 北京理工大学 一种基于语义映射关联的恶意代码检测方法
CN109614795A (zh) * 2018-11-30 2019-04-12 武汉大学 一种事件感知的安卓恶意软件检测方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
基于API序列特征和统计特征组合的恶意样本检测框架;芦效峰等;《清华大学学报(自然科学版)》;20180411(第05期);全文 *
基于API序列的恶意软件检测研究;于渤;《科技资讯》;20171213(第35期);全文 *
基于图卷积网络的恶意代码聚类;刘凯 等;《四川大学学报(自然科学版)》;20190731;第654-660页 *
基于图结构的恶意代码同源性分析;赵炳麟等;《通信学报》;20171130;全文 *
基于注意力机制的恶意软件调用序列检测;张岚等;《计算机科学》;20191215(第12期);全文 *

Also Published As

Publication number Publication date
CN111259388A (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN111259388B (zh) 一种基于图卷积的恶意软件api调用序列检测方法
He et al. Identifying impactful service system problems via log analysis
CN107590388B (zh) 恶意代码检测方法和装置
US20190138731A1 (en) Method for determining defects and vulnerabilities in software code
US10198580B2 (en) Behavior specification, finding main, and call graph visualizations
Sager et al. Detecting similar Java classes using tree algorithms
TWI553503B (zh) 產生候選鈎點以偵測惡意程式之方法及其系統
CN105184160A (zh) 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法
CN113468525B (zh) 针对二进制程序的相似漏洞检测方法及装置
CN112632535B (zh) 攻击检测方法、装置、电子设备及存储介质
CN107526970B (zh) 基于动态二进制平台检测运行时程序漏洞的方法
Ganz et al. Explaining graph neural networks for vulnerability discovery
CN111026433A (zh) 基于代码变更历史的软件代码质量问题自动修复方法、系统及介质
CN112966271A (zh) 一种基于图卷积网络的恶意软件检测方法
CN107506622B (zh) 一种基于内存对象访问序列的软件动态胎记及抄袭检测方法
CN115100739B (zh) 人机行为检测方法、系统、终端设备及存储介质
CN115022026A (zh) 一种区块链智能合约威胁检测装置及方法
Ban et al. Fam: featuring android malware for deep learning-based familial analysis
CN116578980A (zh) 基于神经网络的代码分析方法及其装置、电子设备
Pirch et al. Tagvet: Vetting malware tags using explainable machine learning
CN108959922B (zh) 一种基于贝叶斯网的恶意文档检测方法及装置
CN114398069A (zh) 一种基于交叉指纹分析的公共组件库精确版本识别方法及系统
CN116595534A (zh) 一种solidity智能合约的缺陷检测方法
CN111079145B (zh) 基于图处理的恶意程序检测方法
Vahedi et al. Cloud based malware detection through behavioral entropy

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