CN115310087A - 一种基于抽象语法树的网站后门检测方法和系统 - Google Patents

一种基于抽象语法树的网站后门检测方法和系统 Download PDF

Info

Publication number
CN115310087A
CN115310087A CN202210939608.5A CN202210939608A CN115310087A CN 115310087 A CN115310087 A CN 115310087A CN 202210939608 A CN202210939608 A CN 202210939608A CN 115310087 A CN115310087 A CN 115310087A
Authority
CN
China
Prior art keywords
abstract syntax
syntax tree
token
variable
codes
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
CN202210939608.5A
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.)
Changsha Fireline Cloud Network Technology Co ltd
Original Assignee
Changsha Fireline Cloud Network Technology Co ltd
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 Changsha Fireline Cloud Network Technology Co ltd filed Critical Changsha Fireline Cloud Network Technology Co ltd
Priority to CN202210939608.5A priority Critical patent/CN115310087A/zh
Publication of CN115310087A publication Critical patent/CN115310087A/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
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking

Abstract

本发明公开了一种基于抽象语法树的网站后门检测方法和系统,所述方法包括:获取检测到的代码,通过词法分析将字符串形式的所述代码转化为token序列,将所述token序列转化为抽象语法树,构建tokens语句;利用语义分析的标注检查、数据和控制流分析检测所述tokens语句的语义合法性,并进行逻辑分析;根据代码运行顺序遍历所述抽象语法树的节点,并判断每个节点token类型,根于预先配置的修改规则对每个抽象语法树节点进行修改,使得抽象语法树解混淆和解密;对修改后的代码进行恶意代码检测,并根据预先配置的webshell规则检测出匹配的恶意代码。

Description

一种基于抽象语法树的网站后门检测方法和系统
技术领域
本发明涉及网站检测技术,特别涉及一种基于抽象语法树的网站后面门检测方法和系统。
背景技术
网站后门是黑客持久化控制计算机的常用手段,网站后门往往隐藏在众多正常文件之中,如何发现网站后门是保护计算机安全重要的方式。然后对于网站后门,黑客往往会对其进行加密和混淆,使网站后门不会被常规的检测方式识别和发现,而目前现有技术识别网站后门的主要技术是通过正则匹配恶意代码片段进行识别。现有正则匹配恶意代码片段进行识别的方法主要存在如下技术缺陷:一:黑客对恶意代码片段进行混淆和拆解后传统正则识别方式无法检测识别,二:传统正则在考虑检测率时如果使用比较宽松的检测规则存在一定的误报性。
发明内容
本发明其中一个发明目的在于提供一种基于抽象语法树的网站后门检测方法和系统,所述方法和系统在基于抽象语法树可以在语法解析层次对恶意代码片段进行合并,从而实现解混淆和解密的效果,可以获取完整的恶意代码。
本发明另一个发明目的在于提供一种基于抽象语法树的网站后门检测方法和系统,所述方法和系统通过语法树对恶意代码进行研判,从而可以解决传统正则匹配误报和正则规则复杂的问题。
本发明另一个发明目的在于提供一种基于抽象语法树的网站后门检测方法和系统,所述方法和系统根据token类型对语法树进行修改,保存抽象语法树中的常量和不因外部数据传入而修改的值,将可以修改为常量的节点修改为常量,通过对token类型的修改,使得不同恶意代码类型可以进行合并,从而可以使得原来无法检测出的恶意代码可以被检测出,提高恶意代码的识别准确率。
为了实现至少一个上述发明目的,本发明进一步提供一种基于抽象语法树的网站后门检测方法,所述方法包括:
获取检测到的代码,通过词法分析将字符串形式的所述代码转化为token序列,将所述token序列转化为抽象语法树,构建tokens语句;
利用语义分析的标注检查、数据和控制流分析检测所述tokens语句的语义合法性,并进行逻辑分析;
根据代码运行顺序遍历所述抽象语法树的节点,并判断每个节点token类型,根于预先配置的修改规则对每个抽象语法树节点进行修改,使得抽象语法树解混淆和解密;
对修改后的代码进行恶意代码检测,并根据预先配置的webshell规则检测出匹配的恶意代码。
根据本发明其中一个较佳实施例,将所述token代码转化为抽象语法树时,进一步验证所述抽象语法树的语法,用于抛出错误语法。
根据本发明另一个较佳实施例,所述语义分析的标注检查、数据及控制流分析检查语义合法性方法包括:变量使用前是否已被声明,或变量与赋值之间的数据类型是否能够匹配,或检查局部变量在使用前是否有赋值,或检查方法的每条路径是否都有返回值,或是否所有的受检查异常都被正确处理。
根据本发明再一个较佳实施例,对遍历的每个抽象语法树节点判断的token类型包括Variable、Expression和FuncCall,并且根据所述预先配置的修改规则对所述Variable、Expression和FuncCall分别进行修改。
根据本发明另一个较佳实施例,若当前抽象语法树的token类型为Variable,则对所述Variable判断是否可变为常量,若所述Variable可变为常量,则将所述Variable修改为常量,否则不再对所述Variable进行修改。
根据本发明再一个较佳实施例,若当前抽象语法树节点的token类型为Expression,则根据所述预先配置的修改规则判断所述Expression是否可执行,若当前Expression可执行,则执行Expression,否则不执行Expression。
根据本发明另一个较佳实施例,若当前抽象语法树节点的token类型为FuncCall,则根据所述预先配置的修改规则判断所述FuncCall是否可以求值,若可求值,则对所述FuncCall进行求值,否则不再进行求值。
根据本发明再一个较佳实施例,所述预先配置的修改规则包括:保存和替换语法树中出现的常量,以及保存定义的函数或者方法不会因为外部传入数据而改变的值。
为了实现至少一个上述发明目的,本发明进一步提供一种基于抽象语法树的网站后门检测系统,所述系统执行上述一种基于抽象语法树的网站后门检测方法。
本发明进一步提供一种计算机可读存储介质,所述计算机可读介质存储有计算机程序,所述计算机程序可被处理器执行上述一种基于抽象语法树的网站后门检测方法。
附图说明
图1显示的是本发明一种基于抽象语法树的网站后门检测方法流程示意图。
图2显示的是本发明中抽象语法树解析流程示意图。
图3显示的是本发明中抽象语法树修改前的结构示意图。
图4显示的是本发明中抽象语法树修改后的结构示意图。
图5显示的是本发明中抽象语法树中恶意代码一种评判规则示意图。
具体实施方式
以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。
可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。
请结合图1-图5,本发明公开了一种基于抽象语法树的网站后门检测方法和系统,所述方法包括:需要将代码内容转化为抽象语法树的结构,通过对所述抽象语法树进行修改,基于修改规则的抽象语法树可以使得恶意代码的片段可以合并,通过预先设置的恶意文件判断规则,将修改后的抽象语法树转换为代码,进一步将转换后的代码进行检测,由于修改后的抽象语法树可以实现恶意代码解混淆和解密的效果,因此通过预先配置的修改规则对抽象语法树的修改后的转化代码可以有效地提高恶意代码的匹配成功率。
具体而言,请参考图2,本发明利用词法分析,将字符串形式的代码转化为token(标记)序列。其中所述一个token为一个字符串,所述token为构成源代码的最小单位赋予每个片段响应属性值。将所述词法分析获得的token按照预先设置的文法规则转化为抽象语法树(ATS),需要说明的是将所述token转化为抽象语法树的过程是将至少一个token转化为句子的过程。其中在所述token转化为抽象语法树的过程中需要对所述抽象语法树进行校验,校验的内容包括但不仅限于判断token是否存在,判断token的值是否存在等。若在校验过程中出现语法错误,则在抽象语法树构建过程中抛出语法错误。继续参考图2举例说明,当获取的代码字符串为var a=1的代码时,通过所述词法分析将所述代码转换为4个类型的token,4个类型的token分别为:typ:“keyword”,value:“var”;typ:“identitifier”,value:“a”;typ:“punctuator”,value:“=”;typ:“numberic”,value:“1”。将上述4个类型的token进行语法分析验证,并验证token是否存在,判断token的值是否存在等。
在完成所述语法分析验证后,进一步将验证正确的token进行语义分析,其中所述语义分析方法包括:对标注进行语义检查,以及数据及控制流分析检查语义合法性,并对抽象语法树进行逻辑判断,其中所述对标注进行语义检查,以及数据及控制流分析检查语义合法性方法包括:检查变量使用前是否已被声明、变量与赋值之间的数据类型是否能够匹配、检查局部变量在使用前是否有赋值、方法的每条路径是否都有返回值、是否所有的受查异常都被正确处理了。其中所述对标注进行语义检查,以及数据及控制流分析检查语义合法性是对结构正确的源程序进行的上下文有关联性质的审查。在完成审查后最终生成所述抽象语法树。
进一步的,在完成所述抽象语法树的构建后,预先配置抽象语法树的修改规则。按照代码正常运行的顺序遍历所述抽象语法树的每个节点,并判断抽象语法树节点的类型,进一步根据所述抽象语法树的修改规则分别执行对应节点类型的修改操作,需要说明的是,所述抽象语法树节点类型包括:Variable、Expression和FuncCall。所述预先配置的抽象语法树修改规则根据抽象语法树节点类型不同而不同,当按程序运行顺序遍历到的抽象语法树节点类型为Variable时,需要判断Variable节点是否可变为常量,若可变为常量,则可将所述Variable节点变为常量,否则Variable节点不再修改。当按程序运行顺序遍历到的抽象语法树节点类型为Expression时,则需要判断Expression节点是否可执行,若可执行则执行Expression节点,若不可执行,则不再执行Expression节点,当按程序运行顺序遍历到的抽象语法树节点类型为FuncCall时,需要判断所述FuncCall节点是否可以求值,若可以求值,则执行所述FuncCall节点求值,若不可以求值,则对所述FuncCall节点不再求值。
需要说明的是,所述抽象语法树的修改规则还包括:保存和替换语法树中出现的常量以及定义的函数或者方法等不会因为外部传入数据而改变的值。请继续参考图3和图4显示的代码,其中该代码$a的属性由于在$a='a'.'s'.'s'.'e'.'r'.'t'这个节点中判断为常量,因此在$a($_GET['cmd'])这个节点中将$a的属性由变量修改为常量,值为assert。
本发明需要预先配置危险文件“webshell”的判断规则,其中所述危险判断规则为根据传入的不同危险函数的类型和危险位置设定,具体危险函数和危险规则分别为:'assert'=>0,'eval'=>0,'filter_var'=>2,'yaml_parse'=>3,'preg_replace'=>1,'preg_filter'=>1,'mb_ereg_replac e_callback'=>1,'array_reduce'=>1,'array_map'=>0,'array_filter'=>1,'array_walk'=>1,'uasort'=>1,'usort'=>1,'array_udiff'=>2,'call_user_func_array'=>0,'stream_socket_ser ver'=>0,'proc_open'=>0,'popen'=>0,'pcntl_exec'=>0,'shell_exec'=>0,'exec'=>0,'passth ru'=>0,'fputs'=>1,'fopen'=>0,'system'=>0,'register_shutdown_function'=>0,'array_inte rsect_uassoc'=>2,'file_put_contents'=>1,'fwrite'=>1,'mysql_connect'=>0,'create_funct ion'=>1。其中上述分号内为对应的危险函数,对应危险函数箭头所指向的数值为该危险函数传入点的位置。比如assert为危险函数,其传入点位置为0,也就是当assert的第一个参数为污点时判断为webshell。
当所述抽象树完成修改后,进一步将完成修改的抽象数进行代码转换,将转换后的代码根据所述危险文件“webshell”的判断规则进行检测,得到是否是恶意代码,若是则输出恶意代码的判断结果。举例来说:代码在处理前的结构为:
$a='a'.'s'.'s'.'e'.'r'.'t';
$a($_GET['cmd']);
此时,代码处于被混淆的状态,通过上述的抽象语法树修改规则处理后的结构为:
$a='assert';
assert($_GET['cmd']);
进一步采用包括但不仅限于正则规则对所述处理后的代码进行危险文件检测,比如正则规则为assert\(\$_),处理前无法识别,但在处理后可以识别该代码,从而完成恶意代码解混淆和解密操作下的检测识别,大幅提高恶意代码的识别准确率。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。

Claims (10)

1.一种基于抽象语法树的网站后门检测方法,其特征在于,所述方法包括:
获取检测到的代码,通过词法分析将字符串形式的所述代码转化为token序列,将所述token序列转化为抽象语法树,构建tokens语句;
利用语义分析的标注检查、数据和控制流分析检测所述tokens语句的语义合法性,并进行逻辑分析;
根据代码运行顺序遍历所述抽象语法树的节点,并判断每个节点token类型,根于预先配置的修改规则对每个抽象语法树节点进行修改,使得抽象语法树解混淆和解密;
对修改后的代码进行恶意代码检测,并根据预先配置的webshell规则检测出匹配的恶意代码。
2.根据权利要求1所述的一种基于抽象语法树的网站后门检测方法,其特征在于,将所述token代码转化为抽象语法树时,进一步验证所述抽象语法树的语法,用于抛出错误语法。
3.根据权利要求1所述的一种基于抽象语法树的网站后门检测方法,其特征在于,所述语义分析的标注检查、数据及控制流分析检查语义合法性方法包括:变量使用前是否已被声明,或变量与赋值之间的数据类型是否能够匹配,或检查局部变量在使用前是否有赋值,或检查方法的每条路径是否都有返回值,或是否所有的受检查异常都被正确处理。
4.根据权利要求1所述的一种基于抽象语法树的网站后门检测方法,其特征在于,对遍历的每个抽象语法树节点判断的token类型包括Variable、Expression和FuncCall,并且根据所述预先配置的修改规则对所述Variable、Expression和FuncCall分别进行修改。
5.根据权利要求4所述的一种基于抽象语法树的网站后门检测方法,其特征在于,若当前抽象语法树的token类型为Variable,则对所述Variable判断是否可变为常量,若所述Variable可变为常量,则将所述Variable修改为常量,否则不再对所述Variable进行修改。
6.根据权利要求4所述的一种基于抽象语法树的网站后门检测方法,其特征在于,若当前抽象语法树节点的token类型为Expression,则根据所述预先配置的修改规则判断所述Expression是否可执行,若当前Expression可执行,则执行Expression,否则不执行Expression。
7.根据权利要求4所述的一种基于抽象语法树的网站后门检测方法,其特征在于,若当前抽象语法树节点的token类型为FuncCall,则根据所述预先配置的修改规则判断所述FuncCall是否可以求值,若可求值,则对所述FuncCall进行求值,否则不再进行求值。
8.根据权利要求1所述的一种基于抽象语法树的网站后门检测方法,其特征在于,所述预先配置的修改规则包括:保存和替换语法树中出现的常量,以及保存定义的函数或者方法不会因为外部传入数据而改变的值。
9.一种基于抽象语法树的网站后门检测系统,所述系统执行权利要求1-8中任意一项所述的一种基于抽象语法树的网站后门检测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储有计算机程序,所述计算机程序可被处理器执行权利要求1-8中任意一项所述的一种基于抽象语法树的网站后门检测方法。
CN202210939608.5A 2022-08-05 2022-08-05 一种基于抽象语法树的网站后门检测方法和系统 Pending CN115310087A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210939608.5A CN115310087A (zh) 2022-08-05 2022-08-05 一种基于抽象语法树的网站后门检测方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210939608.5A CN115310087A (zh) 2022-08-05 2022-08-05 一种基于抽象语法树的网站后门检测方法和系统

Publications (1)

Publication Number Publication Date
CN115310087A true CN115310087A (zh) 2022-11-08

Family

ID=83860307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210939608.5A Pending CN115310087A (zh) 2022-08-05 2022-08-05 一种基于抽象语法树的网站后门检测方法和系统

Country Status (1)

Country Link
CN (1) CN115310087A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116186705A (zh) * 2022-11-17 2023-05-30 北京东方通科技股份有限公司 基于源代码静态分析的软件安全代码分析器及其检测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116186705A (zh) * 2022-11-17 2023-05-30 北京东方通科技股份有限公司 基于源代码静态分析的软件安全代码分析器及其检测方法

Similar Documents

Publication Publication Date Title
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
US8635602B2 (en) Verification of information-flow downgraders
US11048798B2 (en) Method for detecting libraries in program binaries
US9690946B2 (en) Security analysis using relational abstraction of data structures
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
CN109344611B (zh) 应用的访问控制方法、终端设备及介质
EP3566166B1 (en) Management of security vulnerabilities
CN109670318B (zh) 一种基于核控制流图循环验证的漏洞检测方法
CN111159697B (zh) 一种密钥检测方法、装置及电子设备
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN112131573A (zh) 安全漏洞的检测方法、装置及存储介质
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN115310087A (zh) 一种基于抽象语法树的网站后门检测方法和系统
CN109214179B (zh) 一种程序模块安全检测方法及装置
JP7235126B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
US20230141948A1 (en) Analysis and Testing of Embedded Code
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
RU168346U1 (ru) Устройство выявления уязвимостей
US20150200961A1 (en) Determination and classification of defense measures in web applications
CN113886812A (zh) 检测防护方法、系统、计算机设备及可读存储介质
CN117349803B (zh) 代码解混淆方法、装置、电子设备及计算机可读存储介质
CN116305131B (zh) 脚本静态去混淆方法及系统
US20240045955A1 (en) Identifying security events in programming code for logging
CN113742724A (zh) 一种网络协议软件的安全机制缺陷检测方法
CN115906077A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 301-02, Complex Building 6, Luchen Homeland, No. 368, Dongfanghong Middle Road, High tech Development Zone, Changsha, Hunan 410000

Applicant after: Changsha Fireline Cloud Network Technology Co.,Ltd.

Address before: 25001-05, Hunan Lugu Information Port, No. 658 Lugu Avenue, Changsha Hi tech Development Zone, 410000, Hunan

Applicant before: Changsha Fireline Cloud Network Technology Co.,Ltd.