一种基于数据依赖的漏洞特征提取方法及系统

文档序号:34487904发布日期:2023-06-17 15:38阅读:86来源:国知局
一种基于数据依赖的漏洞特征提取方法及系统

本发明属于计算机科学与,具体涉及一种针对程序漏洞利用代码,漏洞路径触发指令利用代码所需的关键数据依赖,提取漏洞特征的方法及系统。


背景技术:

1、漏洞利用代码特征提取,是当前网络攻击检测的重要手段,目前漏洞利用代码的特征提取通常针对于攻击代码和控制流劫持点实现,通过提取攻击代码中的return-oriented programming(rop)链特征,控制流劫持之后代码重定位特征、控制流劫持后实际执行的shellcode(攻击代码)的代码特征等,对输入的文件或网络数据进行匹配,检测其中是否存在漏洞利用代码。

2、随着程序混淆技术的不断进步,这些基于代码特征的漏洞利用代码检测方法越来越容易受到混淆技术手段的干扰。例如使用加密方法处理shellcode,在实际运行时动态解密;去除rop链等,具体表现在现在的漏洞利用代码往往经过混淆和处理,传统基于代码特征的检测能力难以满足实际工作的需求。

3、当前的漏洞利用代码特征提取技术,通常使用如下的几种方法:

4、1.提取rop链特征

5、提取rop链特征的主要方法是提取和检测rop链中的大量ret指令。由于rop链构建的原理是使用操作系统或程序库中的ret返回指令,通过构造堆栈中的数据,实现连续的ret控制流转移,运行攻击代码。所述方法的一个主要特征是使用了大量的ret指令。针对rop链进行检测的方法在实际应用中主要使用动态检测,但由于动态检测自身需要消耗大量系统资源,给程序运行速度带来影响,在实际应用中难以应对大量的网络和文件样本。

6、2.提取shellcode特征

7、提取shellcode特征的方法,其实质是传统的基于特征码的方法。主要思路是通过手工分析利用样本的特征,找到特征码中的部分数据或代码特征,作为所述shellcode的特征,用于检测漏洞利用代码。所述方法容易受到代码混淆、加密的干扰,具有较大的局限性。

8、3.提取重定位代码特征

9、由于shellcode通常将数据和代码混合在一起,因此在实施攻击时,往往原来计算的数据地址和攻击时的有差异,因此需要进行重定位。提取代码重定位特征,也就是记录shellcode用来重定位的2-3条指令。所述方法同样针对于代码文本特征实现,容易受到代码混淆的干扰,难以满足大量文本和网络数据中漏洞利用代码检测的需求。

10、综上,目前漏洞利用代码特征提取方法的主要缺陷在于:容易受到混淆技术手段的干扰。例如使用加密方法处理shellcode,在实际运行时动态解密;去除rop链等,具体表现在的漏洞利用代码往往经过混淆和处理,现有方法提取的特征难以满足实际工作的需求。


技术实现思路

1、针对现有漏洞利用代码特征提取主要针对代码文本特征实现,容易受到代码混淆的干扰,攻击者往往通过混淆、加密等方式逃避检测。本发明的目的在于提供一种针对漏洞触发和执行条件的特征提取方法及系统,通过分析触发漏洞所需的关键路径条件,当所述条件不满足时,漏洞路径不会被触发执行。本发明具有很好的检测能力,能够在较小时间和空间复杂度的情况下,有效检测漏洞利用代码。

2、一方面,本发明提供一种基于数据依赖的漏洞特征提取方法,其步骤包括:

3、将程序输入数据全部符号化,基于符号执行,追踪程序漏洞被利用的完整过程;

4、基于所述追踪的完整过程构建程序的控制流图,根据漏洞被触发的当前位置,计算从程序入口到所述当前位置的路径;

5、根据所述程序入口到当前位置的路径构建所述路径的控制依赖图,根据所述控制依赖图提取所述路径被执行所依赖的约束条件;

6、根据所述约束条件,构建漏洞利用代码检测规则,利用所述漏洞利用代码检测规则提取漏洞特征。

7、进一步地,通过动态符号执行的方法将所述程序输入数据全部符号化。

8、进一步地,所述程序输入数据包括文件信息、网络信息、注册表信息中的一种或多种。

9、进一步地,所述追踪程序漏洞被利用的完整过程是指:在程序执行过程中,实时计算每一条指令所操作的符号变量,直至程序漏洞被利用。

10、进一步地,所述漏洞被触发的当前位置为通过人工分析进行手工定位。

11、进一步地,提取所述路径被执行所依赖的约束条件的方法为:

12、根据所述控制依赖图,提取所述路径被执行的关键跳转;

13、根据所述关键跳转所附加的符号信息,逆向回溯原始的程序输入数据,判定输入中决定程序控制流转移数据的取值范围,所述取值范围即为所述路径被执行所依赖的约束条件。

14、进一步地,所述关键跳转为所述路径中的控制依赖节点末尾的条件跳转,该条件跳转包括jnz、jz、je、jge类intel条件跳转指令集合中的至少一种。

15、进一步地,所述漏洞利用代码检测规则为逻辑表达式集合,是所述约束条件的关联规则,当该规则被匹配时,表示发生了漏洞攻击,这是因为当相关约束条件被满足时,关键跳转均跳到了预期的方向,漏洞路径被触发。

16、另一方面,本发明还提供一种基于数据依赖的漏洞特征提取系统,包括存储器和处理器,在所述存储器上存储有计算机程序,所述处理器执行所述程序时实现上述方法的步骤。

17、又一方面,本发明还提供一种计算机可读存储介质,存储有计算机程序,所述程序被处理器执行时实现上述方法的步骤。

18、本发明取得的技术效果如下:

19、本发明能够针对漏洞自身的机理提取特征,只关注漏洞被触发所依赖的条件,当相关条件不满足时,程序不会走向存在脆弱点的路径,因而不会触发漏洞。本发明解决了传统漏洞利用代码特征提取所依赖的代码特征容易受到代码混淆干扰的问题,为程序漏洞利用代码检测提供了有力的支撑。



技术特征:

1.一种基于数据依赖的漏洞特征提取方法,其特征在于,步骤包括:

2.如权利要求1所述的方法,其特征在于,通过动态符号执行的方法将所述程序输入数据全部符号化。

3.如权利要求1所述的方法,其特征在于,所述程序输入数据包括文件信息、网络信息、注册表信息中的一种或多种。

4.如权利要求1所述的方法,其特征在于,所述追踪程序漏洞被利用的完整过程是指:在程序执行过程中,实时计算每一条指令所操作的符号变量,直至程序漏洞被利用。

5.如权利要求1所述的方法,其特征在于,所述漏洞被触发的当前位置为通过人工分析进行手工定位。

6.如权利要求1所述的方法,其特征在于,提取所述路径被执行所依赖的约束条件的方法为:根据所述控制依赖图,提取所述路径被执行的关键跳转;

7.如权利要求6所述的方法,其特征在于,所述关键跳转为所述路径中的控制依赖节点末尾的条件跳转,该条件跳转包括jnz、jz、je、jge类intel条件跳转指令集合中的至少一种。

8.如权利要求1所述的方法,其特征在于,所述漏洞利用代码检测规则为逻辑表达式集合,是所述约束条件的关联规则,当该规则被匹配时,表示发生了漏洞攻击。

9.一种基于数据依赖的漏洞特征提取系统,其特征在于,包括存储器和处理器,在所述存储器上存储有计算机程序,所述处理器执行所述程序时实现权利要求1至8任一项所述方法的步骤。

10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述程序被处理器执行时实现权利要求1至8任一项所述方法的步骤。


技术总结
本发明公开一种基于数据依赖的漏洞特征提取方法及系统,属于计算机科学与技术领域,通过分析触发漏洞所需的关键路径条件,当所述条件不满足时,漏洞路径不会被触发执行。本发明具有很好的检测能力,能够在较小时间和空间复杂度的情况下,有效检测漏洞利用代码。

技术研发人员:杨轶,黄桦烽,苏璞睿
受保护的技术使用者:中国科学院软件研究所
技术研发日:
技术公布日:2024/1/13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1