CN113918951B - 基于抽象语法树的恶意代码检测方法、装置及电子设备 - Google Patents
基于抽象语法树的恶意代码检测方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113918951B CN113918951B CN202111536652.3A CN202111536652A CN113918951B CN 113918951 B CN113918951 B CN 113918951B CN 202111536652 A CN202111536652 A CN 202111536652A CN 113918951 B CN113918951 B CN 113918951B
- Authority
- CN
- China
- Prior art keywords
- nodes
- syntax tree
- abstract syntax
- code
- code file
- 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
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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/24323—Tree-organised classifiers
-
- 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/562—Static detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种基于抽象语法树的恶意代码检测方法、装置及电子设备,该方法包括:将待检测代码文件转换为抽象语法树;利用预设的节点分类器对所述抽象语法树中的节点进行分类;对分类后的所述节点进行处理,生成控制流图;基于所述控制流图进行恶意代码检测。本申请可以尽可能多的提取待检测代码文件中隐藏的信息,实现恶意代码更加有效、准确的检测;且利用抽象语法树可以去除待检测代码文件的冗余,提取待检测代码文件中更加有效的代码信息,进一步提高恶意代码检测的有效性和准确性,并提高检测效率。
Description
技术领域
本申请涉及网络安全技术领域,具体涉及一种基于抽象语法树的恶意代码检测方法、装置及电子设备。
背景技术
基于网站的恶意代码,尤其是服务端的恶意代码,已经成为现在网络安全最大的威胁之一。恶意代码中PHP编写的恶意代码占据了很大的一部分,由于PHP自身的动态和弱类型等语言特性,使得恶意代码的检测变得极为困难。特别是经混淆和变种后的PHP恶意代码隐蔽性更强,更加难以检测出。
现有的恶意代码检测方法主要分为两类:一类是静态分析,另一类是动态行为分析。静态分析无法分析混淆代码,无法对对恶意代码进行有效检测;而动态分析在对多条运行路径分析时,通常只能执行某一条路径,例如,当包含多条路径时,由于模拟的x,y值的问题,最终只能执行一条不含有恶意代码的路径,从而可能造成误报,同时,由于只能执行一条路径,在进行分析检测时,获取的信息有限,无法对恶意代码进行有效检测。
发明内容
鉴于现有技术存在的上述问题,本申请的目的在于提供一种基于抽象语法树的恶意代码检测方法、装置及电子设备,能够尽可能多的提取恶意代码中的信息,提高恶意代码检测的准确率。
为了实现上述目的,本申请实施例提供一种基于抽象语法树的恶意代码检测方法,包括:
将待检测代码文件转换为抽象语法树;
利用预设的节点分类器对所述抽象语法树中的节点进行分类;
对分类后的所述节点进行处理,生成控制流图;
基于所述控制流图进行恶意代码检测。
在一些实施例中,利用预设的节点分类器对所述抽象语法树中的节点进行分类,包括:
判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点。
在一些实施例中,若所述抽象语法树中的节点为嵌套节点,所述方法还包括:
根据所述预设的节点分类器对所述嵌套节点中的各节点继续进行分类。
在一些实施例中,对分类后的所述节点进行处理,生成控制流图,包括:
基于所述分类后的节点,确定对应的抽象语法树分支;
基于所述抽象语法树分支,生成对应的第一代码文件。
在一些实施例中,基于所述控制流图进行恶意代码检测,包括:
对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码。
在一些实施例中,对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码,包括:
提取所述第一代码文件中的特征信息;
计算所述第一代码文件的特征信息与预设恶意代码的特征信息的相似度;
若所述相似度大于预设的相似度阈值,确定所述待检测代码文件为恶意代码。
在一些实施例中,将待检测代码文件转换为抽象语法树,包括:
遍历所述待检测代码文件的每一行代码,对所述每一行代码进行词法分析,生成抽象语法树。
本申请实施例还提供一种基于抽象语法树的恶意代码检测装置,包括:
转换模块,配置为将待检测代码文件转换为抽象语法树;
分类模块,配置为利用预设的节点分类器对所述抽象语法树中的节点进行分类;
生成模块,配置为对分类后的所述节点进行处理,生成控制流图;
检测模块,配置为基于所述控制流图进行恶意代码检测。
在一些实施例中,所述分类模块配置为:
判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点。
本申请实施例还提供一种电子设备,包括:
存储器,其中存储有计算机程序指令;
处理器,所述处理器执行所述计算机程序指令时实现上述的基于抽象语法树的恶意代码检测方法。
与现有技术相比较,本申请实施例提供的基于抽象语法树的恶意代码检测方法、装置及电子设备,通过将待检测代码文件转换为抽象语法树,并根据预设的节点分类器将抽象语法树中的各节点进行分类,然后对分类后的节点进行重构等处理,生成控制流图,再对控制流图中的代码进行恶意代码检测,可以尽可能多的提取待检测代码文件中隐藏的信息,实现恶意代码更加有效、准确的检测;且利用抽象语法树可以去除待检测代码文件的冗余,提取待检测代码文件中更加有效的代码信息,进一步提高恶意代码检测的有效性和准确性,并提高检测效率。
附图说明
在不一定按比例绘制的附图中,相同的附图标记可以在不同的视图中描述相似的部件。具有字母后缀或不同字母后缀的相同附图标记可以表示相似部件的不同实例。附图大体上通过举例而不是限制的方式示出各种实施例,并且与说明书以及权利要求书一起用于对所申请的实施例进行说明。在适当的时候,在所有附图中使用相同的附图标记指代同一或相似的部分。这样的实施例是例证性的,而并非旨在作为本装置或方法的穷尽或排他实施例。
图1为本申请实施例的基于抽象语法树的恶意代码检测方法的流程图;
图2为本申请实施例的基于抽象语法树的恶意代码检测方法的另一流程图;
图3为本申请实施例的基于抽象语法树的恶意代码检测方法的待检测代码文件的示意图;
图4为本申请实施例的基于抽象语法树的恶意代码检测装置的结构示意图。
具体实施方式
下面,结合附图对本申请的具体实施例进行详细的描述,但不作为本申请的限定。
应理解的是,可以对此处公开的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本申请的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本申请的实施例,并且与上面给出的对本申请的大致描述以及下面给出的对实施例的详细描述一起用于解释本申请的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本申请的这些和其它特征将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本申请进行了描述,但本领域技术人员能够确定地实现本申请的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
当结合附图时,鉴于以下详细说明,本申请的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本申请的具体实施例;然而,应当理解,所公开的实施例仅仅是本申请的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本申请模糊不清。因此,本文所公开的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本申请。
图1为本申请实施例的基于抽象语法树的恶意代码检测方法的流程图。如图1所示,本申请实施例提供了一种基于抽象语法树的恶意代码检测方法,包括:
S101:将待检测代码文件转换为抽象语法树。
抽象语法树(AST)是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
本实施例中,在获取待检测代码文件后,可以遍历所述待检测代码文件的每一行代码,对每一行代码进行词法分析,生成抽象语法树。
通过步骤S101的代码转换可以对待检测代码文件进行归一化处理,可以将没有实际意义的代码块(例如注释代码)进行删除,从而实现去除待检测代码文件的冗余,提高后续恶意代码检测效率。
待检测代码文件可以为PHP文件代码,也可以为Java代码或前端javascript代码等,本申请不具体限定。
S102:利用预设的节点分类器对所述抽象语法树中的节点(AST节点)进行分类。
在生成抽象语法树后,利用预设的节点分类器对抽象语法树中的各节点进行分类,确定各节点所属的分类类别。
在一些实施例中,如图2所示,步骤S102具体包括:
S1021:判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点。
其中,单级节点是指节点为单层次结构,节点对应的代码或代码片段可以独立执行,无需考虑其他节点;多级节点是指节点为多层次结构,不同节点之间存在上下级关系,即各节点具有一定的执行顺序执行;叶节点指不包含子节点(该节点即为终节点);嵌套节点是指节点中包含嵌套结构。
具体实施中,可以遍历抽象语法树中的各节点,对各节点进行分类。示例性地,在确定节点为单级节点后,后续可以直接对该节点进行处理。而在确定节点为多级节点后,可以挖掘多级节点中各节点之间的关联关系,进而得到对应的各代码或代码片段之间的逻辑关系,获取更加完善、有效的代码信息,便于后续恶意代码检测。
在一些实施例中,若所述抽象语法树中的节点为嵌套节点,所述方法还包括:
S1022:根据所述预设的节点分类器对所述嵌套节点中的各节点继续进行分类。
现有的抽象语法树中,由于待检测代码文件的嵌套结构(嵌套括号)可能被隐含在树的结构中,并没有以节点的形式呈现,因此,嵌套结构中所包含的代码信息便可能被忽略。本申请实施例中,在确定AST节点为嵌套节点(例如为第一嵌套节点)后,判断嵌套节点对应的代码是否转换为抽象语法树,若是,返回执行上述步骤S1021,继续对该节点中的子节点进行分类,判断各子节点是否属于上述四个节点类别,若继续判断出属于嵌套节点(例如为第二嵌套节点),则继续利用节点分类器对该第二嵌套节点中的各子节点进行分类,直至抽象语法树的节点中无嵌套节点。即通过上述步骤S1021和S1022的配合可以利用抽象语法树将待检测代码文件以最小结构进行划分,以便于获取更加细致、准确的待检测代码文件的信息。
可选地,若嵌套节点对应的代码未转换为抽象语法树,即步骤S101中将嵌套结构隐含在树结构中,可以对该隐含的嵌套结构代码继续进行转换,生成嵌套结构对应的子抽象语法树。然后执行步骤S1021和/或步骤S1022,对子抽象语法树中的各节点进行分类。
上述节点分类器可以使用大量的代码文件样本进行训练获得,例如可以通过构建卷积神经网络(CNN)并进行训练获得。节点分类器的各节点类别可以根据实际的检测需要进行确定或训练获得,本申请不具体限定。例如,节点类别还可以依据执行顺序划分为源节点、中转节点等。
S103:对分类后的所述节点进行处理,生成控制流图。
控制流图是一个过程和程序的抽象表示,代表了程序代码在执行过程中所有可能的执行路径。它用图的形式表示一个过程内所有基本快执行的可能流向,也能反映一个过程的实时执行过程。
本申请利用节点重构器对分类后的各节点进行重构,生成对应的代码文件,并根据各代码文件之间的逻辑关系,生成控制流图。
其中,每个节点类别的节点可以生成对应的代码文件。即本申请可以先将待检测代码文件转换为抽象语法树,然后对抽象语法树中各节点进行分类,并根据分类后的节点进行代码重构,将待检测代码文件划分为多个子文件(与各节点类别对应),提取出待检测代码文件中更加全面、有效的代码信息。
S104:基于所述控制流图进行恶意代码检测。
在生成控制流图后,可以对控制流图中的代码进行恶意代码检测,检测出的恶意代码即为待检测代码文件的恶意代码。
本申请实施例提供的恶意代码检测方法,通过将待检测代码文件转换为抽象语法树,并根据预设的节点分类器将抽象语法树中的各节点进行分类,然后对分类后的节点进行重构等处理,生成控制流图,再对控制流图中的代码进行恶意代码检测,可以尽可能多的提取待检测代码文件中隐藏的信息,实现恶意代码更加有效、准确的检测;且利用抽象语法树可以去除待检测代码文件的冗余,提取待检测代码文件中更加有效的代码信息,进一步提高恶意代码检测的有效性和准确性,并提高检测效率。
在一些实施例中,步骤S103具体包括如下步骤:
S1031:基于所述分类后的节点,确定对应的抽象语法树分支(简称AST分支);
S1032:基于所述抽象语法树分支,生成对应的第一代码文件。
根据分类后的节点,从抽象语法树中提取对应的抽象语法树分支,然后利用节点重构器,对该抽象语法树分支进行重构,生成对应的第一代码文件。
该第一代码文件为对待检测代码文件进行划分、重构后的代码文件片段,对待检测代码文件进行了更加全面、合理、有效的提取。
如图3所示,在一具体实施例中,根据所述分类后的节点,可以基于抽象语法树将待检测代码文件划分为如下四个AST分支,分别为[1,2]、[3,10]、 [4,5]、 [6],其中,中括号内的数字代表图3中的代码行。
[1,2]表示将既包含条件又包含执行函数的第一if语句作为第一AST分支,该第一AST分支对应的节点类别可以为多级节点;[3,10] 表示将嵌套的两个if语句(第二if语句和第三if语句)作为第二AST分支,该第二AST分支对应的节点类别可以为嵌套节点; [4,5]表示可以将嵌套的两个if语句中,第二if语句中的执行函数和第三if语句中的条件作为第三AST分支,该第三AST分支中,第二if语句中的执行函数decode_malicious()和第三if语句中的条件可以为第三AST分支的两个子分支,这两个子分支对应的两个子节点可以分别为单级节点; [6]表示第三if语句中的执行函数单独作为第四AST分支,该第四AST分支对应的节点可以为叶节点。
由上可知,本申请可以根据不同的节点类别确定对应的抽象语法树分支,基于不同的所述抽象语法树分支,生成对应的第一代码文件,以便对各第一代码文件分别进行恶意代码检测,实现更加有效、准确的检测。
上述各抽象语法树分支中,不同的抽象语法树分支之间可能存在一定的关联关系,例如第三AST分支和第四AST分支均为第二AST分支中的一部分,即可以对较小范围的代码进行检测,也可以对较大范围的代码进行检测,根据确定的AST分支生成的第一代码文件,分别对不同范围的代码进行检测,或逐级扩大(或缩小)范围进行检测,可以提高恶意代码检测的有效性和准确性。
可以理解的是,if-condition-then的条件跳转语句(例如上述的第一if语句),可以使用带有两个分支的多级节点来表示。
如果采用现有的动态分析技术对恶意样本进行分析,可能会发现样本的行为只会对应着上述四条AST分支中的第一条,从而产生漏报,而本申请能够提取出上述全部的四条AST分支,并生成对应的第一代码文件进行分析(可以对各第一代码文件分别进行分析,也可以整合后进行分析),可以实现恶意代码的有效、准确检测;对于静态分析检测技术而言,上述代码中copy_malware函数如果进行了混淆,便无法进行分析。而本申请中,基于节点类别提取待检测代码文件中的代码信息,便能够提取出copy_malware函数进行分析,无论其是否混淆,可以提高检测的准确性。
在一些实施例中,步骤S104,基于所述控制流图进行恶意代码检测,包括:
对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码。
具体实施中,可以通过相关的静态和/或动态检测引擎对第一代码文件进行检测,识别所述第一代码文件中的恶意代码,并将检测出的恶意代码进行标记。如果任意一个第一代码文件被标记为恶意,则该第一代码文件样本对应的样本(待检测代码文件)为恶意样本。静态和动态检测的主要区别在于是否需要运行程序代码。
在一些实施例中,对所述第一代码文件进行静态和/或动态检测分析,识别所述第一代码文件中的恶意代码,包括:
S201:提取所述第一代码文件中的特征信息;
S202:计算所述第一代码文件的特征信息与预设恶意代码的特征信息的相似度;
S203:若所述相似度大于预设的相似度阈值,确定所述待检测代码文件为恶意代码。
通过提取第一代码文件中的特征信息进行检测,可以对已知的恶意代码进行有效检测,对于一些未知的恶意代码,由于恶意代码的特征信息可能未知,因此可能无法有效检测出。
另一些实施例中,可以利用污点分析进行恶意代码检测,污点分析可以抽象成一个三元组<sources,sinks,sanitizers>的形式,其中,source 即污点源,代表直接引入不受信任的数据或者机密数据到系统中;sink即污点汇聚点,代表直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外界(违反数据保密性);sanitizer即无害处理,代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害。污点分析就是分析程序中由污点源引入的数据是否能够不经无害处理,而直接传播到污点汇聚点。如果不能,说明系统是信息流安全的;否则,说明系统产生了隐私数据泄露或危险数据操作等安全问题。
污点分析使用启发式的策略进行标记,例如把来自程序外部输入的数据统称为“污点”数据,保守地认为这些数据有可能包含恶意的攻击数据;然后,根据具体应用程序调用的 API 或者重要的数据类型,手工标记源和汇聚点;之后使用统计或机器学习技术自动地识别和标记污点源及汇聚点。通过污点分析可以对一些未知的恶意代码进行检测,实现更加高效、精确的恶意代码检测。
具体实施中,可以根据分析过程中是否需要运行程序,可以将污点分析分为静态污点分析和动态污点分析。静态污点分析在不运行且不修改代码的前提下,通过分析程序变量间的数据依赖关系来检测数据能否从污点源传播到污点汇聚点。动态污点分析在程序代码运行过程中,通过实时监控程序的污点数据在系统程序中的传播来检测数据能否从污点源传播到污点汇聚点。
图4为本申请实施例的基于抽象语法树的恶意代码检测装置的结构示意图。如图4所示,基于上述基于抽象语法树的恶意代码检测方法,本申请实施例提供一种基于抽象语法树的恶意代码检测装置,包括:
转换模块401,配置为将待检测代码文件转换为抽象语法树;
分类模块402,配置为利用预设的节点分类器对所述抽象语法树中的节点进行分类;
生成模块403,配置为对分类后的所述节点进行处理,生成控制流图;
检测模块404,配置为基于所述控制流图进行恶意代码检测。
在一些实施例中,所述分类模块402具体配置为:
判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点。
在一些实施例中,若所述抽象语法树中的节点为嵌套节点,所述分类模块402还配置为:
根据所述预设的节点分类器对所述嵌套节点中的各节点继续进行分类。
在一些实施例中,生成模块403具体配置为:
基于所述分类后的节点,确定对应的抽象语法树分支;
基于所述抽象语法树分支,生成对应的第一代码文件。
在一些实施例中,检测模块404具体配置为:
对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码。
在一些实施例中,检测模块404进一步配置为:
提取所述第一代码文件中的特征信息;
计算所述第一代码文件的特征信息与预设恶意代码的特征信息的相似度;
若所述相似度大于预设的相似度阈值,确定所述待检测代码文件为恶意代码。
在一些实施例中,转换模块401具体配置为:
遍历所述待检测代码文件的每一行代码,对所述每一行代码进行词法分析,生成抽象语法树。
可以理解的是,本申请实施例提供的基于抽象语法树的恶意代码检测装置与上述实施例中基于抽象语法树的恶意代码检测方法相对应,基于上述的基于抽象语法树的恶意代码检测方法,本领域的技术人员能够了解本申请实施例中基于抽象语法树的恶意代码检测装置具体实施方式以及其各种变化形式,基于抽象语法树的恶意代码检测方法实施例中的任何可选项也适用于基于抽象语法树的恶意代码检测装置,在此不再赘述。
本申请实施例还提供了一种电子设备,包括:
存储器,其中存储有计算机程序指令;
处理器,所述处理器执行所述计算机程序指令时实现上述的基于抽象语法树的恶意代码检测方法。
存储器可能包括易失性存储器(例如,随机存取存储器(random-access memory,RAM),其可包括易失性RAM、磁性RAM、铁电RAM以及任何其他适合的形式),也可能包括非易失性存储器(例如,磁盘存储器、闪速存储器、可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM)、电可擦除可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、基于忆阻器的非易失性固态存储器等)。
处理器可以是通用处理器,包括中央处理器CPU、网络处理器(networkprocessor,NP)等;还可以是数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
电子设备还可以包括通信接口和通信总线,通信接口用于与外接设备(例如网络设备)进行通信,处理器、存储器、通信接口之间通过所述通信总线进行相互通信。
电子设备包括但不限于服务器、网络安全设备、台式计算机、数字TV等固定终端设备,以及手持设备(例如手机、平板电脑等)、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)等移动终端设备。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述计算机可执行指令由处理器执行时,实现上述的基于抽象语法树的恶意代码检测方法。
以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。
Claims (6)
1.一种基于抽象语法树的恶意代码检测方法,其特征在于,包括:
将待检测代码文件转换为抽象语法树;
利用预设的节点分类器对所述抽象语法树中的节点进行分类;
对分类后的所述节点进行处理,生成控制流图;
基于所述控制流图进行恶意代码检测;
其中,利用预设的节点分类器对所述抽象语法树中的节点进行分类,包括:
判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点;
若所述抽象语法树中的节点为嵌套节点,所述方法还包括:
根据所述预设的节点分类器对所述嵌套节点中的各节点继续进行分类,直至所述抽象语法树的节点中无嵌套节点;
对分类后的所述节点进行处理,生成控制流图,包括:
基于所述分类后的节点,确定对应的抽象语法树分支;
基于所述抽象语法树分支,生成对应的第一代码文件。
2.根据权利要求1所述的方法,其特征在于,基于所述控制流图进行恶意代码检测,包括:
对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码。
3.根据权利要求2所述的方法,其特征在于,对生成的所述第一代码文件进行静态和/或动态检测,识别所述第一代码文件中的恶意代码,包括:
提取所述第一代码文件中的特征信息;
计算所述第一代码文件的特征信息与预设恶意代码的特征信息的相似度;
若所述相似度大于预设的相似度阈值,确定所述待检测代码文件为恶意代码。
4.根据权利要求1所述的方法,其特征在于,将待检测代码文件转换为抽象语法树,包括:
遍历所述待检测代码文件的每一行代码,对所述每一行代码进行词法分析,生成抽象语法树。
5.一种基于抽象语法树的恶意代码检测装置,其特征在于,包括:
转换模块,配置为将待检测代码文件转换为抽象语法树;
分类模块,配置为利用预设的节点分类器对所述抽象语法树中的节点进行分类;
生成模块,配置为对分类后的所述节点进行处理,生成控制流图;
检测模块,配置为基于所述控制流图进行恶意代码检测;
其中,所述分类模块配置为:
判断所述抽象语法树中的节点是否属于预设的节点类别,其中,所述预设的节点类别至少包括单级节点、多级节点、叶节点以及嵌套节点;
所述分类模块还配置为:若所述抽象语法树中的节点为嵌套节点,根据所述预设的节点分类器对所述嵌套节点中的各节点继续进行分类,直至所述抽象语法树的节点中无嵌套节点;所述生成模块配置为:
基于所述分类后的节点,确定对应的抽象语法树分支;
基于所述抽象语法树分支,生成对应的第一代码文件。
6.一种电子设备,其特征在于,包括:
存储器,其中存储有计算机程序指令;
处理器,所述处理器执行所述计算机程序指令时实现如权利要求1至4中任一项所述的基于抽象语法树的恶意代码检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111536652.3A CN113918951B (zh) | 2021-12-16 | 2021-12-16 | 基于抽象语法树的恶意代码检测方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111536652.3A CN113918951B (zh) | 2021-12-16 | 2021-12-16 | 基于抽象语法树的恶意代码检测方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113918951A CN113918951A (zh) | 2022-01-11 |
CN113918951B true CN113918951B (zh) | 2022-03-22 |
Family
ID=79249007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111536652.3A Active CN113918951B (zh) | 2021-12-16 | 2021-12-16 | 基于抽象语法树的恶意代码检测方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918951B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117008911A (zh) * | 2022-04-28 | 2023-11-07 | 三六零数字安全科技集团有限公司 | 基于抽象语法树的代码检测方法、装置、设备及存储介质 |
CN115577363A (zh) * | 2022-09-15 | 2023-01-06 | 华北电力科学研究院有限责任公司 | 恶意代码反序列化利用链的检测方法及装置 |
CN115981711B (zh) * | 2023-03-20 | 2023-06-27 | 花瓣云科技有限公司 | 一种代码处理方法及电子设备 |
CN117744087A (zh) * | 2023-12-07 | 2024-03-22 | 浙江大学 | 基于静态分析的智能设备远程代码执行漏洞检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860264A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 一种抽象语法树重构方法及装置 |
CN113158627A (zh) * | 2021-04-12 | 2021-07-23 | 微民保险代理有限公司 | 代码复杂度的检测方法及装置、存储介质、电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015831B2 (en) * | 2012-08-08 | 2015-04-21 | Synopsys, Inc | Method and apparatus for static taint analysis of computer program code |
CN108256325A (zh) * | 2016-12-29 | 2018-07-06 | 中移(苏州)软件技术有限公司 | 一种恶意代码变种的检测的方法和装置 |
US10678916B2 (en) * | 2018-03-20 | 2020-06-09 | Didi Research America, Llc | Malicious program detection |
CN110502897A (zh) * | 2018-05-16 | 2019-11-26 | 南京大学 | 一种基于混合分析的网页恶意JavaScript代码识别和反混淆方法 |
CN108875366A (zh) * | 2018-05-23 | 2018-11-23 | 四川大学 | 一种面向php程序的sql注入行为检测系统 |
CN110543770B (zh) * | 2019-09-02 | 2022-06-28 | 南瑞集团有限公司 | 一种开源软件的漏洞检测方法、装置及系统 |
-
2021
- 2021-12-16 CN CN202111536652.3A patent/CN113918951B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860264A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 一种抽象语法树重构方法及装置 |
CN113158627A (zh) * | 2021-04-12 | 2021-07-23 | 微民保险代理有限公司 | 代码复杂度的检测方法及装置、存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113918951A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113918951B (zh) | 基于抽象语法树的恶意代码检测方法、装置及电子设备 | |
CN107368417B (zh) | 一种漏洞挖掘技术测试模型的测试方法 | |
Salehi et al. | MAAR: Robust features to detect malicious activity based on API calls, their arguments and return values | |
US10430586B1 (en) | Methods of identifying heap spray attacks using memory anomaly detection | |
US9239922B1 (en) | Document exploit detection using baseline comparison | |
Savenko et al. | Dynamic Signature-based Malware Detection Technique Based on API Call Tracing. | |
Tian et al. | DKISB: Dynamic key instruction sequence birthmark for software plagiarism detection | |
WO2020019505A1 (zh) | 一种恶意软件检测方法及相关设备 | |
US10650145B2 (en) | Method for testing computer program product | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN116366377B (zh) | 恶意文件检测方法、装置、设备及存储介质 | |
US20230195895A1 (en) | Advanced file modification heuristics | |
Naik et al. | Augmented YARA rules fused with fuzzy hashing in ransomware triaging | |
CN114328208A (zh) | 代码检测方法及装置、电子设备、存储介质 | |
CN111339531B (zh) | 恶意代码的检测方法、装置、存储介质及电子设备 | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
Kim et al. | Runtime detection framework for android malware | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
CN110719278A (zh) | 一种网络入侵数据的检测方法、装置、设备及介质 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN113971284B (zh) | 基于JavaScript的恶意网页检测方法、设备及计算机可读存储介质 | |
CN112580044A (zh) | 用于检测恶意文件的系统和方法 | |
US9350723B2 (en) | Determination and classification of defense measures in web applications | |
Shi et al. | SFCGDroid: android malware detection based on sensitive function call graph | |
US20220237289A1 (en) | Automated malware classification with human-readable explanations |
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 |