基于云的webshell攻击检测方法、装置及网关的制作方法_2

文档序号:9380243阅读:来源:国知局
人员统计的能够直接确定存在webshell攻击特征的语句。在通过还原规则将改动过的特征语句还原后,可以获得原始的特征语句,此时,网关再通过与基本特征语句进行比对,就可以判断出还原后的特征语句是否为预设的基本特征语句,从而得出脚本文件是否为webshell攻击文件。
[0038]105、若还原后的特征语句与基本特征语句相同,则确定脚本文件为webshell攻击文件。
[0039]由于基本特征语句为攻击敏感语句,所以当网关检测出还原后的特征语句与基本特征语句相同时,可以确定该还原后的特征语句为攻击敏感语句,从而得知脚本文件中存在攻击敏感语句,进而确定该脚本文件为webshell攻击文件。反之,当网关检测出还原后的特征语句与基本特征语句不同时,可以确定该还原后的特征语句不是攻击敏感语句,从而得知脚本文件中不存在攻击敏感语句,进而确定该脚本文件不是webshell攻击文件。
[0040]示例性的,网关检测到“eval ($/*xyz*/{ “_P”.“OST”} [ ‘op’ ]); ”中存在两种特征变形痕迹,分别为注释语句和预设特征字符,所以网关需要根据对应特征变形痕迹的还原规则对其进行还原。在实际应用中,对于注释语句和预设特征字符的还原规则均为删除操作,所以将注释语句与预设特征字符都删除后,得到的还原后的特征语句为“eval ($_P0ST[ ‘op’]); ”。将该特征语句与基本特征语句进行比较,可判断出脚本文件是否为webshell攻击文件。若基本特征语句中包含“eval ($_P0ST [ ‘op’]); ”,则还原后的特征语句与基本特征语句相同,从而得出该脚本文件为webshell攻击文件;若基本特征语句中不包含“eval ($_P0ST[ ‘op’]); ”,则还原后的特征语句与基本特征语句不同,从而还需要继续对脚本文件中的其他特征语句进行判断,才可确定该脚本文件是否为webshell攻击文件。
[0041]需要说明的是,在实际应用中,只有当网关确定其所截获的脚本文件不是webshell攻击文件时,才将该脚本文件继续上传到网站服务器,而当该脚本文件是webshell攻击文件时,不再将该脚本文件上传到网站服务器,从而保证了上传到网站服务器的脚本文件为安全的文件。
[0042]本发明实施例提供的基于云的webshell攻击检测方法,能够在外部向网站服务器发送脚本文件时,截获该脚本文件,并基于云平台先对该脚本文件进行特征变形痕迹的检测,再将改动过的特征语句进行还原,最后将还原后的特征语句与基本特征语句进行比较,若相同,贝lJ判定该脚本文件为webshell攻击文件。与现有技术中仅进行基本特征语句的检测方法相比,本发明通过先将改动后的特征语句进行还原,使得被打乱的特征语句还原为原有的特征语句,再与基本特征语句进行比对,使得隐藏在脚本文件中的基本特征语句被检测出来,从而确定该脚本文件为webshell攻击文件。
[0043]进一步的,依据上述方法实施例可知,当预设的特征变形痕迹只包含一种特征变形痕迹时,网关仅检测脚本文件中是否存在该特征变形痕迹;当预设的特征变形痕迹中包括多种特征变形痕迹时,网关会同时检测脚本文件中是否存在该多种特征变形痕迹,或者按照顺序依次检测该脚本文件中是否存在该多种特征变形痕迹。在检测出特征变形痕迹后,需要将改动过的特征语句还原,然而对于不同类型的特征变形痕迹具有不同的还原方法,下面针对不同情况进行介绍:
[0044]情况一:当特征变形痕迹包括注释语句时,网关会基于云平台检测脚本文件中是否存在注释语句。若脚本文件中存在注释语句,则将注释语句删除;若脚本文件中不存在注释语句,则无需进行注释语句的删除操作。
[0045]由于注释语句并不参与程序的执行,所以当黑客在特征语句中添加注释语句后,也不影响该特征语句本身的功能。当该特征语句为基本特征语句时,该脚本文件就是webshell攻击文件。但是在该特征语句中添加了注释语句后,改动后的特征语句就不再与基本特征语句相同了,因此需要将添加的注释语句删除,才能得到原始的特征语句,以便更精确地检测出本质上与基本特征语句相同的语句,从而避免发生webshell攻击文件漏检的现象。
[0046]在实际应用中,注释语句的检测主要是通过检测注释标识,例如:“//”、“/*”、“*/”等。例如,网关检测到一条特征语句“eva/*XXXXX*/l($_P0ST[ ‘a’]); ”中包含“/*”和“*/”注释标识,则将携带有注释标识的注释语句删除,从而获得添加注释语句前的语句,即“eval($_P0ST[ ‘a’]); ”。在获得改动前的特征语句后,将其与基本特征语句进行比对。若基本特征语句中包含“eval($_P0ST[ ‘a’]); ”,则还原后的特征语句与基本特征语句相同,从而得出该脚本文件为webshell攻击文件;若基本特征语句中不包含“eval ($_P0ST[ ‘a’]),则还原后的特征语句与基本特征语句不同,从而还需要继续对脚本文件中的其他特征语句进行判断,才可确定该脚本文件是否为webshell攻击文件。
[0047]情况二:当特征变形痕迹包括变量赋值字符时,网关会基于云平台检测脚本文件中是否存在变量赋值字符。若脚本文件中存在变量赋值字符,则将被赋值的变量还原;若脚本文件中不存在变量赋值字符,则无需进行变量还原操作。
[0048]在实际应用中,编程人员常常通过给特征语句中的变量赋值,即用新的变量来代替旧变量,从而使得该特征语句发生形式上的改变,而实际功能不变。在这种情况下,仅将变量赋值后的特征语句与基本特征语句进行比对,是无法检测出其隐藏的webshell攻击特征的。因此,网关需要先将被赋值的变量还原,以获得原始的特征语句,才可精确地判断出该特征语句是否为基本特征语句,从而正确地判断出该脚本文件是否为webshell攻击文件。
[0049]具体的,变量赋值字符主要包括变量赋值标识,即“=”,也可以包括其他具有赋值功能的字符,在此不作限定。
[0050]例如,脚本文件中有如下代码:
[0051]$aaa = e ;
[0052]$bbb = V ;
[0053]$ccc = a ;
[0054]$ddd = I ;
[0055]$xsser = $_P0ST[ ‘op,];
[0056]“$aaa”.“$bbb”.“$ccc”.“$ddd”($xsser);
[0057]网关在上述代码中检测到变量特征字符(即“ = ”),并且检测到““$aaa”.“$bbb”.“$ccc”.“$ddd”($xsser); ”语句中的 $aaa、$bbb、$ccc、$ddd 和 $xsser 分别是给 e、v、a、1、和$_P0ST[ ‘op’]赋的新变量,因此网关需要将这些新变量还原为原始变量,还原后的代码变为“eval ($_P0ST[ ‘op’]); ”,再将此特征语句与基本特征语句进行比较。若基本特征语句中包含“eval($_P0ST[ ‘op’]); ”,则该脚本文件为webshell攻击文件;若基本特征语句中不包含“eval($_P0ST[ ‘op’]); ”,则需要继续对脚本文件中的其他特征语句进行判断,才能确定该脚本文件是否为webshell攻击文件。
[0058]情况三:当特征变形痕迹包括预设特征字符时,网关会基于云平台检测脚本文件中是否存在预设特征字符。若脚本文件中存在预设特征字符,则将预设特征字符删除;若脚本文件中不存在预设特征字符,则无需进行预设特征字符删除操作。
[0059]在实际应用中,黑客常常通过在特征语句中添加拼接符等字符来打乱一个完整的函数名或者变量名等等,从而仅通过基本特征语句无法检测出来该特征语句中存在的webshell攻击特征,因此需要将含有预设特征字符的特征语句还原,才可更进一步地检测出该特征语句是否是含有webshell攻击特征的语句,从而判断该脚本文件是否为webshell攻击文件。
[0060]例如,网关检测到““e”.“V”, “a”.“I”($_P0ST[ ‘a’]); ”中含有拼接符双引号和点,所以将该特征语句中的双引号和点删除后,可以获得原始的语句,即“eval($_P0ST[ ‘a’ ]); ”。此时,将“eval($_P0ST[ ‘a’ ]); ”与基本特征语句比对,若基本特征语句中包含“eval($_P0ST[ ‘a’ ]); ”,则该脚本文件为webshell攻击文件,若基本特征语句中不包含“eval($_P0ST[ ‘a’]); ”,则需要继续对脚本文件中的其他特征语句进行判断,才能确定该脚本文件是否为webshell攻击文件。
[0061]情况四:当特征变形痕迹包括预设特征函数名时,网关会基于云平台检测脚本文件中是否存在预设特征函数名。若脚本文件中存在预设特征函数名,则根据特征函数功能的逆功能对对应特征函数的语句进行还原;若脚本文件中不存在预设特征函
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1