webshell变形的静态检测方法和装置的制造方法

文档序号:9350282阅读:360来源:国知局
webshell变形的静态检测方法和装置的制造方法
【技术领域】
[0001] 本申请涉及Webshell检测技术领域,特别地,涉及一种webshell变形的静态检测 方法和装置。
【背景技术】
[0002] 随着信息技术的高速发展,互联网已经成为人门生活中不可或缺的一部分。现在 的人们衣、食、住、行、娱乐、社交、购物乃至生活的方方面面都已经离不开互联网,而黑客们 每天也在怀着各自的目的尝试着各种方法做着危害人们生活的事,互联网的安全得到人们 空前的关注。
[0003]webshell作为黑客入侵网站的重要工具,在黑客进行网站入侵过程中起到了非常 重要的作用。顾名思义,"web"的含义是显然需要服务器开放web服务,"shell"的含义是 取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务 器的某种程度上操作的权限。由于webshell大多是以动态脚本的形式出现,也有人称之为 网站的后门工具。
[0004]webshell是web入侵的常用脚本攻击工具。简单的说来,webshell就是一个asp 或Php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在 网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通 过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命 令等。再通过dos命令或者植入后门木马、利用服务器漏洞等达到提权的目的,从而旁注同 服务器其他的网站。
[0005] 由于网站编程语言语法灵活多变,黑客可以利用语法技巧对代码进行变换、变形 甚至加密,让安全工作人员根本无法提取特征,或者虽然可提取特征,但稍加修改又可绕过 查杀,于是对查杀算法提出了更高的要求。
[0006] 面对各种webshell,现有技术一般使用特征码匹配的方式来判断脚本文件是否为 恶意的webshell,这种方法将网站中的脚本与特征库中的特征进行严格的字符串匹配,若 在脚本中发现特征字符串,则判定其为webshell;类似的,还可以使用正则表达式来描述 特征码的,但本质是也是依赖于特征码。以上算法有着致命的弱点,不准确、误杀率高、特征 库庞大且随时需要工作人员不断收集样本提取特征码,而最重要的缺点是极其容易被黑客 通过语法变形绕过,也就是免杀,webshell变形也是各大安全服务厂商一直头疼的问题。
[0007] 对于变形的webshell,单纯的特征匹配显得非常乏力,于是出现下面的查杀方法: 编写web服务器插件,对部分关键函数进行hook并进行参数判断,即以动态方式对网页行 为进行检测。其优点在于可以实时进行行为监测,且可以忽略所有变形技巧。但缺点是:由 于webshell所使用的多数函数、对象等在正常脚本中也会使用,有时难以决策其是否为异 常行为;另外,该方案由于增加了逻辑判断过程,会给web服务器进程增加一定的负担,影 响web服务器反应速度,若技术人员处理不当,容易造成web服务器进程崩溃,进而影响web 服务器的正常业务。

【发明内容】

[0008] 本申请提供了一种webshell变形的静态检测方法,用于解决现有技术无法分辨 webshell是否为正常脚本以及对webshell的行为检测可能会影响正常业务的问题。本申 请还提供了一种webshell变形的静态检测装置,以保证上述方法在实际中的应用。
[0009] 本申请提供的一种webshell变形的静态检测方法,包括:根据待检测webshell文 件内容中包括的语言特征判断该文件的文件类型;根据待检测webshell文件的文件类型, 确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器 对待检测webshell文件进行词法和语法分析生成中间代码;在预设的虚拟机上解释执行 所述中间代码,并在执行过程中利用所述内置函数库和异常行为规则库对中间代码的行为 进行分析,判断相应的代码是否为恶意代码。
[0010] 优选的,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函 数调用和基础运算操作符;所述利用所述词法语法分析器对待检测webshell文件进行词 法和语法分析生成中间代码,具体包括:对待检测webshell文件中的脚本进行扫描,去除 标记和注释信息,得到过滤后的脚本;对过滤后的脚本内容进行词法分析,生成由一系列记 号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变 量、函数调用和运算符;对上述拆分生成的列表进行语法分析,将复杂的表达式简化,生成 所述虚拟机能够解释执行的中间代码。
[0011] 优选的,所述在预设的虚拟机上解释执行所述中间代码,利用所述内置函数库和 异常行为规则库对中间代码的行为进行分析判断所述行为是否异常,具体包括:判断所述 中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;对于函 数调用,根据异常行为规则库判断该函数调用是否为恶意代码;对于在执行过程中并没有 代码调用的自定义函数,利用模拟参数进行测试调用;对于既不是内置函数库中的函数,也 不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
[0012] 优选的,所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大 马规则;其中,对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际 参数是否匹配;对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实 际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包 括的指定函数集合。
[0013] 优选的,所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获 得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION 内容。
[0014] 优选的,所述待检测webshell文件的类型包括php、asp、jsp和cgi。
[0015] 本申请提供的一种webshell变形的静态检测装置,包括:语言类别识别模块,用 于根据待检测webshell文件内容中包括的语言特征判断文件类型;中间代码生成模块,用 于根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异 常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生 成中间代码;虚拟机模块,用于解释执行所述中间代码;恶意代码判断模块,用于根据所述 内置函数库和异常行为规则库对虚拟机模块执行中间代码的过程中的行为进行分析,判断 相应的代码是否为恶意代码。
[0016] 优选的,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函 数调用和基础运算操作符;所述中间代码生成模块具体包括:脚本过滤子模块,用于对待 检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;词法分 析子模块,用于对所述脚本过滤子模块获得的过滤后的脚本内容进行词法分析,生成由一 系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串 常量、变量、函数调用和运算符;语法分析子模块,用于对所述词法分析子模块拆分生成的 列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
[0017] 优选的,所述恶意代码判
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1