WebShell检测方法、计算机设备及计算机存储介质技术

技术编号:35907867 阅读:16 留言:0更新日期:2022-12-10 10:46
本申请实施例公开了一种WebShell检测方法、计算机设备及计算机存储介质。本申请实施例包括:基于虚拟执行的思路确定目标代码样本是否为可疑的WebShell样本,再对可疑WebShell样本的含污点路径做符号执行,即收集目标代码样本的路径约束和关键变量约束,并根据该路径约束和关键变量约束生成约束表达式,判断此约束表达式是否符合预设结果以此来确定目标代码样本中的敏感函数能否真正被触发执行,最终给出样本是否为WebShell的结论。因此,相比于相关技术方案,本申请实现了检测准确性和性能开销之间的权衡,能够识别代码开发者在代码中自定义的过滤操作,有效降低误报。有效降低误报。有效降低误报。

【技术实现步骤摘要】
WebShell检测方法、计算机设备及计算机存储介质


[0001]本申请实施例涉及网络安全领域,具体涉及一种WebShell检测方法、计算机设备及计算机存储介质。

技术介绍

[0002]程序分析是指以某种语言书写的程序为对象,对其内部的运作流程进行分析,程序分析包括数据流分析及控制流分析等。WebShell检测作为一种程序分析手段,其针对WebShell这种程序进行分析和检测,WebShell是一种以网页文件形式存在的命令执行程序,也称为后门文件,是黑客入侵网站常用的重要手段,通常以asp、php、jsp或者cgi等网页文件形式存在。
[0003]业务代码经常使用一些过滤函数或者校验代码来对外部输入进行检查,现有的基于静态或动态污点分析的方案很难处理此类逻辑,要么忽略校验,将可疑参数都打上污点标记,引起误报;要么默认校验安全,去除污点标记,引起漏报。例如,对于文件上传类的样本,WebShell检测往往不会对业务代码做参数过滤/校验,因而攻击者可以上传包括脚本文件在内的任意文件,从而进一步执行恶意代码,即漏报现象;但对于无恶意的业务代码,文件上传功能通常会做严格校验,如不能上传后缀为.php或者.jsp的脚本文件,或者只能上传限定格式的文件(如图像文件),即误报现象。
[0004]因此,亟需一种能够对业务代码中WebShell样本进行准确检测的方案。

技术实现思路

[0005]本申请实施例提供了一种WebShell检测方法、计算机设备及计算机存储介质,用于准确检测代码样本中的WebShell样本。
[0006]本申请实施例第一方面提供了一种WebShell检测方法,所述方法包括:
[0007]获取目标代码样本,判断所述目标代码样本是否包括参数可控的敏感函数;
[0008]若是,则收集所述目标代码样本中的目标代码片段的关键变量约束和路径约束;
[0009]根据所述关键变量约束和所述路径约束生成约束表达式,并求解所述约束表达式,得到约束求解结果;
[0010]当所述约束求解结果符合预设结果时,确定所述目标代码样本为WebShell样本;
[0011]当所述约束求解结果不符合预设结果时,确定所述目标代码样本不是WebShell样本。
[0012]本申请实施例第二方面提供了一种计算机设备,所述计算机设备包括:
[0013]判断单元,用于获取目标代码样本,判断所述目标代码样本是否包括参数可控的敏感函数;
[0014]约束收集单元,用于若所述目标代码样本包括参数可控的敏感函数,则收集所述目标代码样本中的目标代码片段的关键变量约束和路径约束;
[0015]生成单元,用于根据所述关键变量约束和所述路径约束生成约束表达式;
[0016]求解单元,用于求解所述约束表达式,得到约束求解结果;
[0017]确定单元,用于当所述约束求解结果符合预设结果时,确定所述目标代码样本为WebShell样本;
[0018]所述确定单元还用于当所述约束求解结果不符合预设结果时,确定所述目标代码样本不是WebShell样本。
[0019]本申请实施例第三方面提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前述第一方面的方法。
[0020]本申请实施例第四方面提供了一种计算机存储介质,计算机存储介质中存储有指令,该指令在计算机上执行时,使得计算机执行前述第一方面的方法。
[0021]从以上技术方案可以看出,本申请实施例具有以下优点:
[0022]本实施例中,基于虚拟执行的思路确定目标代码样本是否为可疑的WebShell样本,再对可疑WebShell样本的含污点路径做符号执行,即收集目标代码样本的路径约束和关键变量约束,并根据该路径约束和关键变量约束生成约束表达式,判断此约束表达式是否符合预设结果以此来确定目标代码样本中的敏感函数能否真正被触发执行,最终给出样本是否为WebShell的结论。因此,相比于相关技术方案,本申请实现了检测准确性和性能开销之间的权衡,能够识别代码开发者在代码中自定义的过滤操作,有效降低误报。
附图说明
[0023]图1为本申请实施例中WebShell检测方法一种应用场景示意图;
[0024]图2为本申请实施例中WebShell检测方法一个流程示意图;
[0025]图3为本申请实施例中WebShell检测方法另一流程示意图;
[0026]图4为本申请实施例中目标代码样本以及目标代码样本对应的控制流图一种示例性示意图;
[0027]图5为本申请实施例中命令执行型的PHP伪代码一种样例的示意图;
[0028]图6为本申请实施例中计算机设备一种结构示意图;
[0029]图7为本申请实施例中计算机设备另一结构示意图。
具体实施方式
[0030]本申请实施例提供了一种WebShell检测方法、计算机设备及计算机存储介质,用于准确检测代码样本中的WebShell样本。
[0031]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0032]本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他
的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0033]在相关方案中,较精确的WebShell检测方案大多使用污点分析的思路,但是单纯的静态/动态分析难以对污点的无害化处理(或过滤、校验)做准确建模以及难以准确判断过滤是否充分进而在必要时消除污点,这是WebShell检测典型的误报来源。静态符号执行可以解决这一问题,但WebShell会利用动态脚本语言的复杂特性进行变形、绕过,如果单纯采用符号执行,存在难以收集约束、求解约束等问题,开销也较大。
[0034]为此,本申请提出了虚拟执行和符号执行相结合的WebShell检测方案,虚拟执行面对正常样本和WebShell均能够进行,可以达到极高的检出率和较低的误报率,符号执行再有针对性地降低误报,例如可处理非WebShell被误判为WebShell的情形。通过虚拟执行和符号执行相结合的方式对WebShell样本进行检测,实现了性能开销和检测效果的均衡。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种WebShell检测方法,其特征在于,所述方法包括:获取目标代码样本,判断所述目标代码样本是否包括参数可控的敏感函数;若是,则收集所述目标代码样本中的目标代码片段的关键变量约束和路径约束;根据所述关键变量约束和所述路径约束生成约束表达式,并求解所述约束表达式,得到约束求解结果;当所述约束求解结果符合预设结果时,确定所述目标代码样本为WebShell样本;当所述约束求解结果不符合预设结果时,确定所述目标代码样本不是WebShell样本。2.根据权利要求1所述的方法,其特征在于,所述判断所述目标代码样本是否包括参数可控的敏感函数,包括:使用虚拟执行的静态分析建立所述目标代码样本的控制流图,并使用虚拟执行的动态分析确定所述控制流图的代码路径,其中所述代码路径关联至少一个基本代码块,所述基本代码块包括变量的可能取值的集合;确定所述代码路径的多个分支中满足所述基本代码块的判断条件的第一分支,以及确定所述代码路径的多个分支中不满足所述基本代码块的判断条件的第二分支,将所述第二分支剪除;合并所述第一分支以取所述第一分支的基本代码块中变量的可能取值的并集,判断所述并集是否存在可控的取值;若是,则确定所述目标代码样本包括所述参数可控的敏感函数;若否,则确定所述目标代码样本不包括所述参数可控的敏感函数。3.根据权利要求1所述的方法,其特征在于,所述收集所述目标代码样本中的目标代码片段的关键变量约束和路径约束,包括:确定所述目标代码样本中过滤函数前后预设数量的多段代码为所述目标代码片段;声明所述目标代码片段中所述过滤函数之前的目标变量对应的符号变量s,收集关于所述符号变量s的关键变量约束和路径约束。4.根据权利要求1所述的方法,其特征在于,所述根据所述关键变量约束和所述路径约束生成约束表达式,包括:确定所述目标代码样本中由所述路径约束指向的多个路径;分别生成每个所述路径在所述关键变量约束下的约束表达式。5.根据权利要求1所述的方法,其特征在于,所述求解所述约束表达式,得到约束求解结果,包括:将所述约束表达式输入求解器进行求解,并获得所述求解器输出的所述约束表达式的约束求...

【专利技术属性】
技术研发人员:杨荣海黄忠强艾江俊
申请(专利权)人:深信服科技股份有限公司
类型:发明
国别省市:

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

1