恶意代码反序列化利用链的检测方法及装置制造方法及图纸

技术编号:36250493 阅读:17 留言:0更新日期:2023-01-07 09:43
本申请提供一种恶意代码反序列化利用链的检测方法及装置,涉及软件测试领域,包括:利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树;遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系生成待检测利用链;检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链。本申请能够确定待检测利用链是否为恶意代码反序列化利用链,从而自动发现恶意代码。代码。代码。

【技术实现步骤摘要】
恶意代码反序列化利用链的检测方法及装置


[0001]本申请涉及软件测试领域,具体是一种恶意代码反序列化利用链的检测方法及装置。

技术介绍

[0002]代码缺陷检测方法可以分为静态分析方法及动态分析方法。其中,静态分析又分为人工分析方式、自动化工具分析方式及机器扫描与人工审核相结合的分析方式。在此技术基础上,当今中大型代码缺陷检测的主流手段是依靠自动化工具与人工审核相结合的方式,通过自动化工具检测可能存在的漏洞,再由人工逐条检查是否存在误判。
[0003]在众多的安全漏洞中,恶意代码利用链漏洞是一种危害很大但又不易被机器检测到的代码缺陷。该漏洞由多种函数相结合构成,有些函数在程序达到某种特殊条件时会自动触发,一旦构成完整代码利用链则可以实现任意文件读取甚至能够完成远程命令执行。由于硬件及软件资源的限制,很多情况下无法配置环境进行动态分析,从而导致机器无法自动检测出该漏洞,即使判定可能存在,也由于追踪流的复杂度极大,给人工审核增加极大负担。目前,尚无一种较好的能够自动实现恶意代码利用链漏洞检出的方法。

技术实现思路

[0004]针对现有技术中的问题,本申请提供一种恶意代码反序列化利用链的检测方法及装置,能够确定待检测利用链是否为恶意代码反序列化利用链,从而自动发现恶意代码。
[0005]为解决上述技术问题,本申请提供以下技术方案:
[0006]第一方面,本申请提供一种恶意代码反序列化利用链的检测方法,包括:
[0007]利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树;其中,所述抽象语法树的叶子节点用于表征所述待检测代码中各函数的功能描述信息;所述抽象语法树的分支结构用于表征所述各函数的调用关系;
[0008]遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系生成待检测利用链;
[0009]检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链。
[0010]进一步地,所述利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树,包括:
[0011]根据所述正则表达式提取所述待检测代码中的所述代码特征属性;所述代码特征属性包括类名、成员方法名、成员变量名及函数调用符;
[0012]根据所述代码特征属性生成所述抽象语法树;其中,所述抽象语法树的根节点用于表征所述类名;所述抽象语法树的中间节点用于表征所述成员方法名;所述叶子节点中的功能描述信息包括所述成员变量名及函数调用符。
[0013]进一步地,所述遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系
生成待检测利用链,包括:
[0014]遍历所述叶子节点,并根据所述叶子节点中的功能描述信息选取反序列化传参函数作为所述尾端函数入链;
[0015]根据所述调用关系选取普通函数及具有预设功能的魔法函数,并按照所述调用关系对应的调用顺序将选取的普通函数及具有预设功能的魔法函数依次入链,得到所述中间调用函数;
[0016]遍历所述抽象语法树的各节点,选取赋值函数和/或非被调用函数作为所述开端函数入链,得到所述待检测利用链。
[0017]进一步地,所述检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链,包括:
[0018]追踪所述待检测代码中的传参点,并探测对应的数据流是否可由所述传参点执行到所述开端函数;
[0019]若所述数据流能由所述传参点执行到所述开端函数且所述中间调用函数为所述魔法函数,则执行所述魔法函数,并检查对应的返回值及返回类型是否符合所述魔法函数的调用条件;
[0020]若符合所述调用条件,检查所述尾端函数是否能够完成文件读取和/或命令执行;若能,所述待检测利用链为所述恶意代码反序列化利用链。
[0021]第二方面,本申请提供一种恶意代码反序列化利用链的检测装置,包括:
[0022]语法树构建单元,用于利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树;其中,所述抽象语法树的叶子节点用于表征所述待检测代码中各函数的功能描述信息;所述抽象语法树的分支结构用于表征所述各函数的调用关系;
[0023]利用链生成单元,用于遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系生成待检测利用链;
[0024]利用链检测单元,用于检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链。
[0025]进一步地,所述语法树构建单元,包括:
[0026]特征属性生成模块,用于根据所述正则表达式提取所述待检测代码中的所述代码特征属性;所述代码特征属性包括类名、成员方法名、成员变量名及函数调用符;
[0027]语法树构建模块,用于根据所述代码特征属性生成所述抽象语法树;其中,所述抽象语法树的根节点用于表征所述类名;所述抽象语法树的中间节点用于表征所述成员方法名;所述叶子节点中的功能描述信息包括所述成员变量名及函数调用符。
[0028]进一步地,所述利用链生成单元,包括:
[0029]尾端入链模块,用于遍历所述叶子节点,并根据所述叶子节点中的功能描述信息选取反序列化传参函数作为所述尾端函数入链;
[0030]中间入链模块,用于根据所述调用关系选取普通函数及具有预设功能的魔法函数,并按照所述调用关系对应的调用顺序将选取的普通函数及具有预设功能的魔法函数依次入链,得到所述中间调用函数;
[0031]开端入链模块,用于遍历所述抽象语法树的各节点,选取赋值函数和/或非被调用
函数作为所述开端函数入链,得到所述待检测利用链。
[0032]进一步地,所述利用链检测单元,包括:
[0033]开端函数检测模块,用于追踪所述待检测代码中的传参点,并探测对应的数据流是否可由所述传参点执行到所述开端函数;
[0034]魔法函数检测模块,用于当所述数据流能由所述传参点执行到所述开端函数且所述中间调用函数为所述魔法函数时,执行所述魔法函数,并检查对应的返回值及返回类型是否符合所述魔法函数的调用条件;
[0035]尾端函数检测模块,用于若符合所述调用条件,检查所述尾端函数是否能够完成文件读取和/或命令执行;若能,所述待检测利用链为所述恶意代码反序列化利用链。
[0036]第三方面,本申请提供一种电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述恶意代码反序列化利用链的检测方法的步骤。
[0037]第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述恶意代码反序列化利用链的检测方法的步骤。
[0038]第五方面,本申请提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种恶意代码反序列化利用链的检测方法,其特征在于,包括:利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树;其中,所述抽象语法树的叶子节点用于表征所述待检测代码中各函数的功能描述信息;所述抽象语法树的分支结构用于表征所述各函数的调用关系;遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系生成待检测利用链;检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链。2.根据权利要求1所述的恶意代码反序列化利用链的检测方法,其特征在于,所述利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树,包括:根据所述正则表达式提取所述待检测代码中的所述代码特征属性;所述代码特征属性包括类名、成员方法名、成员变量名及函数调用符;根据所述代码特征属性生成所述抽象语法树;其中,所述抽象语法树的根节点用于表征所述类名;所述抽象语法树的中间节点用于表征所述成员方法名;所述叶子节点中的功能描述信息包括所述成员变量名及函数调用符。3.根据权利要求1所述的恶意代码反序列化利用链的检测方法,其特征在于,所述遍历所述抽象语法树,并根据所述功能描述信息及所述调用关系生成待检测利用链,包括:遍历所述叶子节点,并根据所述叶子节点中的功能描述信息选取反序列化传参函数作为所述尾端函数入链;根据所述调用关系选取普通函数及具有预设功能的魔法函数,并按照所述调用关系对应的调用顺序将选取的普通函数及具有预设功能的魔法函数依次入链,得到所述中间调用函数;遍历所述抽象语法树的各节点,选取赋值函数和/或非被调用函数作为所述开端函数入链,得到所述待检测利用链。4.根据权利要求3所述的恶意代码反序列化利用链的检测方法,其特征在于,所述检测所述待检测利用链的开端函数、尾端函数及中间调用函数,并确定所述待检测利用链是否为恶意代码反序列化利用链,包括:追踪所述待检测代码中的传参点,并探测对应的数据流是否可由所述传参点执行到所述开端函数;若所述数据流能由所述传参点执行到所述开端函数且所述中间调用函数为所述魔法函数,则执行所述魔法函数,并检查对应的返回值及返回类型是否符合所述魔法函数的调用条件;若符合所述调用条件,检查所述尾端函数是否能够完成文件读取和/或命令执行;若能,所述待检测利用链为所述恶意代码反序列化利用链。5.一种恶意代码反序列化利用链的检测装置,其特征在于,包括:语法树构建单元,用于利用待检测代码中的正则表达式提取代码特征属性,以构建所述待检测代码的抽象语法树;其中,所述抽象语法树的叶子节点用于表征所述待检测代码中各函数的功能描述信息;所述抽象语法树的分支结构用于表征所述各...

【专利技术属性】
技术研发人员:司冠林孙跃高冉馨张月景森李敏董彬侯聪徐小天陈威
申请(专利权)人:国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1