CN105069355A - webshell变形的静态检测方法和装置 - Google Patents

webshell变形的静态检测方法和装置 Download PDF

Info

Publication number
CN105069355A
CN105069355A CN201510528712.5A CN201510528712A CN105069355A CN 105069355 A CN105069355 A CN 105069355A CN 201510528712 A CN201510528712 A CN 201510528712A CN 105069355 A CN105069355 A CN 105069355A
Authority
CN
China
Prior art keywords
function
code
file
webshell
intermediate code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510528712.5A
Other languages
English (en)
Other versions
CN105069355B (zh
Inventor
胡安荣
陈奋
陈荣有
孙晓波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Meiya Pico Information Co Ltd
Original Assignee
Xiamen Meiya Pico Information Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xiamen Meiya Pico Information Co Ltd filed Critical Xiamen Meiya Pico Information Co Ltd
Priority to CN201510528712.5A priority Critical patent/CN105069355B/zh
Publication of CN105069355A publication Critical patent/CN105069355A/zh
Application granted granted Critical
Publication of CN105069355B publication Critical patent/CN105069355B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种webshell变形的静态检测方法和装置,所述方法包括:根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型;根据文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;在预设的虚拟机上解释执行所述中间代码,并在执行过程中利用所述内置函数库和异常行为规则库对中间代码的行为进行分析,判断相应的代码是否为恶意代码。本申请方案能够在有效识别变形后的webshell代码的同时,还能够避免现有hook方式可能会影响正常业务的问题。

Description

webshell变形的静态检测方法和装置
技术领域
本申请涉及webshell检测技术领域,特别地,涉及一种webshell变形的静态检测方法和装置。
背景技术
随着信息技术的高速发展,互联网已经成为人门生活中不可或缺的一部分。现在的人们衣、食、住、行、娱乐、社交、购物乃至生活的方方面面都已经离不开互联网,而黑客们每天也在怀着各自的目的尝试着各种方法做着危害人们生活的事,互联网的安全得到人们空前的关注。
webshell作为黑客入侵网站的重要工具,在黑客进行网站入侵过程中起到了非常重要的作用。顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
webshell是web入侵的常用脚本攻击工具。简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。然后黑客就可以用web的方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。再通过dos命令或者植入后门木马、利用服务器漏洞等达到提权的目的,从而旁注同服务器其他的网站。
由于网站编程语言语法灵活多变,黑客可以利用语法技巧对代码进行变换、变形甚至加密,让安全工作人员根本无法提取特征,或者虽然可提取特征,但稍加修改又可绕过查杀,于是对查杀算法提出了更高的要求。
面对各种webshell,现有技术一般使用特征码匹配的方式来判断脚本文件是否为恶意的webshell,这种方法将网站中的脚本与特征库中的特征进行严格的字符串匹配,若在脚本中发现特征字符串,则判定其为webshell;类似的,还可以使用正则表达式来描述特征码的,但本质是也是依赖于特征码。以上算法有着致命的弱点,不准确、误杀率高、特征库庞大且随时需要工作人员不断收集样本提取特征码,而最重要的缺点是极其容易被黑客通过语法变形绕过,也就是免杀,webshell变形也是各大安全服务厂商一直头疼的问题。
对于变形的webshell,单纯的特征匹配显得非常乏力,于是出现下面的查杀方法:编写web服务器插件,对部分关键函数进行hook并进行参数判断,即以动态方式对网页行为进行检测。其优点在于可以实时进行行为监测,且可以忽略所有变形技巧。但缺点是:由于webshell所使用的多数函数、对象等在正常脚本中也会使用,有时难以决策其是否为异常行为;另外,该方案由于增加了逻辑判断过程,会给web服务器进程增加一定的负担,影响web服务器反应速度,若技术人员处理不当,容易造成web服务器进程崩溃,进而影响web服务器的正常业务。
发明内容
本申请提供了一种webshell变形的静态检测方法,用于解决现有技术无法分辨webshell是否为正常脚本以及对webshell的行为检测可能会影响正常业务的问题。本申请还提供了一种webshell变形的静态检测装置,以保证上述方法在实际中的应用。
本申请提供的一种webshell变形的静态检测方法,包括:根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型;根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;在预设的虚拟机上解释执行所述中间代码,并在执行过程中利用所述内置函数库和异常行为规则库对中间代码的行为进行分析,判断相应的代码是否为恶意代码。
优选的,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;所述利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码,具体包括:对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;对过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;对上述拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
优选的,所述在预设的虚拟机上解释执行所述中间代码,利用所述内置函数库和异常行为规则库对中间代码的行为进行分析判断所述行为是否异常,具体包括:判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
优选的,所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合。
优选的,所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
优选的,所述待检测webshell文件的类型包括php、asp、jsp和cgi。
本申请提供的一种webshell变形的静态检测装置,包括:语言类别识别模块,用于根据待检测webshell文件内容中包括的语言特征判断文件类型;中间代码生成模块,用于根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;虚拟机模块,用于解释执行所述中间代码;恶意代码判断模块,用于根据所述内置函数库和异常行为规则库对虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码。
优选的,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;所述中间代码生成模块具体包括:脚本过滤子模块,用于对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;词法分析子模块,用于对所述脚本过滤子模块获得的过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;语法分析子模块,用于对所述词法分析子模块拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
优选的,所述恶意代码判断模块根据所述内置函数库和异常行为规则库虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码,具体包括:判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
优选的,所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合;所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
与现有技术相比,本申请具有以下优点:
本申请优选实施例利用配置有合理资源的虚拟机模拟真实的运行环境,并将webshell文件的脚本处理成虚拟机能够执行的中间代码,可以从代码中虚拟机上执行过程中的行为判断其是否为恶意代码,能够在有效识别变形后的webshell代码的同时,还能够避免现有hook方式可能会影响正常业务的问题。
在本申请进一步的优选实施例中,异常行为规则库中定义的规则属于一个类别的行为,而不是一个独立的行为,因此本申请无需庞大的特征库作为支撑。
附图说明
图1为本申请webshell变形的静态检测方法一实施例的流程图;
图2为本申请webshell变形的静态检测装置一实施例的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的核心发明构思之一在于:webshell为达到其恶意目的必然会做一些可疑行为,其直接表现形式就是:以某些参数调用某些函数,只是变形的webshell不管是函数名称还是参数名称都可在不同程度上进行变换。如果能够在一个模拟环境将其模拟运行一遍,既然webshell要做一些行为,那么总有一个或多个地方会遇到那个行为,在行为被触发时,变形过的部分也会原形毕露。为此,本申请采用如下方式进行分析:编写静态扫描引擎,在引擎中以合理的程度模拟真实环境,将脚本文件放在这个模拟环境中执行一遍,逐步解析各条语句,并且对于某些内容(比如需要浏览器GET或POST的数据)进行标识,如$_GET、$_POST、$_REQUEST、Request.Form等,在执行过程中进行行为分析,从而判断是否有恶意代码存在。
参照图1,示出了本申请webshell变形的静态检测方法第一实施例的流程,包括:
步骤S101:根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型;
例如,假如待检测webshell文件中包括有“<?php”和“?>”等信息,则可以认定该webshell文件的类型为php文件;如果待检测webshell文件中包括有“C#”和“System.”或“Microsoft.”等信息,则可以认定该webshell文件的类型为用C#编写的aspx文件。
步骤S102:根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;
对于不同类型的脚本文件,其语法语义结构都是不同的,其内置函数库包括的基础函数名称、参数也不尽相同,相应的,也需要定义不同的异常行为规则库。
在本优选实施例中,内置函数库一般仅包括必要的基础函数,如字符串相关函数、数学函数、常见的加密解密函数(至少应该包括base64_encode/base64_decode、urldecode/urlencode、md5等)。对这些函数的变形是比较非常常见的,在后续的虚拟机执行过程中也会调用,以还原出变形的结果。本优选实施例一般不设置其他的功能性函数(特别是敏感函数),比如eval。
异常行为规则库主要用于虚拟机在模拟执行过程中进行行为分析,其格式按用途可分为几种,以下面两种为例进行说明:
(1)敏感函数调用
格式:函数名称|参数抽象格式或具体内容|危险级别|描述。
说明:虚拟机在模拟执行过程中一旦发现这类函数调用,需要立即终止执行,并报告结果。
(2)大马规则
格式:函数1,函数2,函数3|危险级别|描述。
说明:当规则中所有函数都被调用后,需要立即终止执行,并报告结果。其中,上述规则按需要可设计多组,每组中包括有多个指定函数(即由多个指定函数组成的集合),满足任意一组规则(即虚拟机执行代码过程中调用了一个函数集合中的所有函数)即可判定为恶意脚本。
步骤S103:利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
在本优选实施例中,上述中间代码的生成过程具体可以包括如下步骤:
步骤S1031:对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;
以php脚本文件为例,文件中的“<html>”、“</html>”、“<body>”、“</body>”、“<?php”、“?>”等内容属于标记信息,文件中的“//单行注释”、“/*多行注释块*/”等内容属于注释信息。
以下述php脚本为例:<?Php$v=$_GET[cmd];eval($v);?>
过滤后的脚本内容变为:$v=$_GET[cmd];eval($v);
步骤S1032:对过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;
本优选实施例中的所述记号包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符等。
还是以上文的php脚本为例,过滤后的脚本经过经词法分析后,变成一个记号列表,如下表1所示。
表1:词法分析结果列表
名称 类型
$v 变量
赋值符
$_GET 变量
[ 分隔符
Cmd 变量
] 分隔符
语句结束符
Eval 函数调用
( 分隔符
$v 变量
) 分隔符
语句结束符
步骤S1033:对上述拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
对词法分析后生成的记号列表进行扫描,将复杂的表达式简化,如:可以将数组操作转换成函数调用、将嵌套的函数调用语句拆分成等价的多条语句、将面向对象的访问转换成对过程的访问、将用户自定义函数解析出来单独放到一个区域。
上面的例子中经语法分析以及解析后,可以得到表2所示的语法树。
表2:语法解析后的语法树列表
名称 类型
$v 变量
赋值符
i_array_item 函数调用
( 分隔符
$_GET 变量
分隔符
Cmd 变量
) 分隔符
语句结束符
Eval 函数调用
( 分隔符
$v 变量
) 分隔符
语句结束符
经过以上步骤,整个脚本进行大量语义简化,只包含函数定义、函数调用、基础运算符操作。对语法树进行扫描生成中间代码,区分代码区、数据区(为节约空间,可建立标识符表、字串表)。生成的中间代码格式可根据虚拟机的需要定义,或转换成等价的后缀表达式,只要能被虚拟机执行即可。
步骤S104:在预设的虚拟机上解释执行所述中间代码,并在执行过程中利用上述内置函数库和异常行为规则库对中间代码的行为进行分析,判断相应的代码是否为恶意代码。
本优选实施例中,所述预设的虚拟机设置有全局变量区和局部变量区,并基于堆栈的方式运行。
其中,对中间代码从头到尾顺序执行,遇到运算符或内置函数库里面函数就模拟执行;在执行过程中遇到函数调用还需要做一个记录(针对大马);若有自定义函数在整执行过程中并没有代码调用,则由虚拟机模拟参数进行测试调用;若函数既不是内置函数库中的函数,也不是自定义函数,则与异常行为规则库结合进行规则命中测试;若单个函数未命中则检查函数调用记录与大马规则进行比较(测试内容包含函数名称和参数值),若命中规则即中止整个过程,继续下一个文件的检测。
关于上述规则检测,包括:
(1)对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;
(2)对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;
(3)对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合。
由于是静态扫描,所以需要正确模拟某些函数运行时的参数,所述模拟参数至少包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容、SESSION内容。
在本申请方案中,优选用一种抽象的方式来定义规则,例如:
定义规则:php|eval|1|#client_submit#;
表示php脚本中有eval函数,并且第1个参数是$_GET[xx]或$_POST[xx]或$_REQUEST[xx]。由于在语法分析过程中已对这些浏览器获得的数据进行了识别,所以可以正确表示(参见第3页)。
本优选实施例与现有技术相比,具有如下优点:
(1)无需庞大的特征库;
(2)能够自动模拟各种运算符的操作,能够方便的识别变形脚本;
(3)能够模拟调用自定义函数的参数,数据库内容,远程文件内容,能够更智能的识别恶意脚本;
(4)与动态hook相比,本申请方案属于静态扫描引擎,不会影响正常业务的处理;
(5)采用抽象的方式定义规则,一条规则对应的是一类行为而非一个独立的行为;
另外,本申请方案还可用作代码安全审计,查杀力度更强、更彻底。
对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为根据本申请,某些步骤可以采用其他顺序或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参照图2,示出了本申请webshell变形的静态检测装置一实施例的结构框图,包括语言类别识别模块21、中间代码生成模块22、虚拟机模块23和恶意代码判断模块24,其中:
语言类别识别模块21,用于根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型。
例如,假如待检测webshell文件中包括有“<?php”和“?>”等信息,则可以认定该webshell文件的类型为php文件;如果待检测webshell文件中包括有“C#”和“System.”等信息,则可以认定该webshell文件的类型为用C#编写的aspx文件。
中间代码生成模块22,用于根据待检测webshell文件的类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
在本优选实施例中,所述中间代码包括代码区和数据区,代码区的代码包括函数定义、函数调用和基础运算操作符等;该中间代码生成模块32具体包括:
脚本过滤子模块221,用于对待检测webshell文件中的脚本进行扫描,去除标记和注释信息(如php文件中的“<html>”、“</html>”、“<body>”、“</body>”、“<?php”、“?>”等标记信息,“//单行注释”、“/*多行注释块*/”等注释信息),得到过滤后的脚本;
词法分析子模块222,用于对所述脚本过滤子模块221获得的过滤后的脚本内容进行词法分析,拆分生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;
语法分析子模块223,用于对所述词法分析子模块222拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
虚拟机模块23,用于解释执行所述中间代码;本优选实施例中,虚拟机模块23设置有全局变量区和局部变量区,基于堆栈的方式运行;
恶意代码判断模块24,用于根据所述内置函数库和异常行为规则库对虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码。该恶意代码判断模块24根据所述内置函数库和异常行为规则库虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码的方法,具体包括:
判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;对于运算符或内置函数库中包括的函数,直接模拟执行;对于函数调用,根据异常行为规则库判断其行为是否异常;对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断其行为是否异常。
其中,上述模拟参数具体可以为:浏览器以GET方式提供的参数、浏览器以POST方式提供的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和/或SESSION内容。
上述异常行为规则库具体可以包括敏感函数调用规则和大马规则(即包括有多个指定函数集合的规则);其中,对于敏感函数调用,判断其行为是否异常的方法是:测试函数名称与实际参数是否匹配;对于对象,判断其行为是否异常的方法是:测试对象类名、方法名以及实际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合。
需要说明的是,上述装置实施例属于优选实施例,所涉及的单元和模块并不一定是本申请所必须的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种webshell变形的静态检测方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种webshell变形的静态检测方法,其特征在于,包括:
根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型;
根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;
利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
在预设的虚拟机上解释执行所述中间代码,并在执行过程中利用所述内置函数库和异常行为规则库对中间代码的行为进行分析,判断相应的代码是否为恶意代码。
2.根据权利要求1所述的方法,其特征在于,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;所述利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码,具体包括:
对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;
对过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;
对上述拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
3.根据权利要求2所述的方法,其特征在于,所述在预设的虚拟机上解释执行所述中间代码,利用所述内置函数库和异常行为规则库对中间代码的行为进行分析判断所述行为是否异常,具体包括:
判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;
对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;
对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;
对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
4.根据权利要求3所述的方法,其特征在于,所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,
对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;
对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;
对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合。
5.根据权利要求3所述的方法,其特征在于,所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
6.根据权利要求1所述的方法,其特征在于,所述待检测webshell文件的类型包括php、asp、jsp和cgi。
7.一种webshell变形的静态检测装置,其特征在于,包括:
语言类别识别模块,用于根据待检测webshell文件内容中包括的语言特征判断文件类型;
中间代码生成模块,用于根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
虚拟机模块,用于解释执行所述中间代码;
恶意代码判断模块,用于根据所述内置函数库和异常行为规则库对虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码。
8.根据权利要求7所述的装置,其特征在于,所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;所述中间代码生成模块具体包括:
脚本过滤子模块,用于对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;
词法分析子模块,用于对所述脚本过滤子模块获得的过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;
语法分析子模块,用于对所述词法分析子模块拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
9.根据权利要求7所述的装置,其特征在于,所述恶意代码判断模块根据所述内置函数库和异常行为规则库虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码,具体包括:
判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;
判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;
对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;
对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;
对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
10.根据权利要求9所述的装置,其特征在于,
所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合;
所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
CN201510528712.5A 2015-08-26 2015-08-26 webshell变形的静态检测方法和装置 Active CN105069355B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510528712.5A CN105069355B (zh) 2015-08-26 2015-08-26 webshell变形的静态检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510528712.5A CN105069355B (zh) 2015-08-26 2015-08-26 webshell变形的静态检测方法和装置

Publications (2)

Publication Number Publication Date
CN105069355A true CN105069355A (zh) 2015-11-18
CN105069355B CN105069355B (zh) 2018-09-11

Family

ID=54498718

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510528712.5A Active CN105069355B (zh) 2015-08-26 2015-08-26 webshell变形的静态检测方法和装置

Country Status (1)

Country Link
CN (1) CN105069355B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置
CN106228068A (zh) * 2016-07-21 2016-12-14 江西师范大学 基于混合特征的Android恶意代码检测方法
CN106250761A (zh) * 2016-07-28 2016-12-21 广州爱九游信息技术有限公司 一种识别web自动化工具的设备、装置及方法
CN106650437A (zh) * 2016-12-29 2017-05-10 广州华多网络科技有限公司 webshell检测方法和装置
CN106845221A (zh) * 2016-11-09 2017-06-13 哈尔滨安天科技股份有限公司 一种基于语法形式的脚本类文件格式识别方法和系统
CN107103237A (zh) * 2016-02-23 2017-08-29 阿里巴巴集团控股有限公司 一种恶意文件的检测方法及装置
CN107104924A (zh) * 2016-02-22 2017-08-29 阿里巴巴集团控股有限公司 网站后门文件的验证方法及装置
CN107341399A (zh) * 2016-04-29 2017-11-10 阿里巴巴集团控股有限公司 评估代码文件安全性的方法及装置
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统
CN107888554A (zh) * 2016-09-30 2018-04-06 腾讯科技(深圳)有限公司 服务器攻击的检测方法和装置
CN108062474A (zh) * 2016-11-08 2018-05-22 阿里巴巴集团控股有限公司 文件的检测方法及装置
CN108229168A (zh) * 2017-12-29 2018-06-29 哈尔滨安天科技股份有限公司 一种嵌套类文件的启发式检测方法、系统及存储介质
CN108304721A (zh) * 2018-03-21 2018-07-20 河北师范大学 一种恶意代码检测系统
CN109784052A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 软件行为检测的管理方法及服务端、终端、系统
CN109992967A (zh) * 2019-03-12 2019-07-09 福建拓尔通软件有限公司 一种在文件上传时实现自动检测文件安全性的方法及系统
CN110096264A (zh) * 2019-04-29 2019-08-06 珠海豹好玩科技有限公司 一种代码运行方法及装置
CN110457869A (zh) * 2019-07-23 2019-11-15 Oppo广东移动通信有限公司 程序编译加密方法、装置、存储介质及电子设备
CN111163094A (zh) * 2019-12-31 2020-05-15 奇安信科技集团股份有限公司 网络攻击检测方法、网络攻击检测装置、电子设备和介质
CN112668005A (zh) * 2020-12-30 2021-04-16 北京天融信网络安全技术有限公司 webshell文件的检测方法及装置
CN114006706A (zh) * 2020-07-13 2022-02-01 深信服科技股份有限公司 网络安全检测方法、系统、计算机装置及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101244945B1 (ko) * 2011-06-23 2013-04-05 주식회사 티벨로 메타 패턴을 이용한 웹쉘 탐지 장치
KR101348590B1 (ko) * 2012-12-12 2014-01-09 (주)론스텍 네트워크 인라인 필터링을 이용한 웹쉘 차단 방법
CN104298923A (zh) * 2014-09-28 2015-01-21 北京奇虎科技有限公司 漏洞类型识别方法以及装置
CN104331663A (zh) * 2014-10-31 2015-02-04 北京奇虎科技有限公司 web shell的检测方法以及web服务器
CN104765883A (zh) * 2015-04-30 2015-07-08 中电运行(北京)信息技术有限公司 一种用于Webshell的检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101244945B1 (ko) * 2011-06-23 2013-04-05 주식회사 티벨로 메타 패턴을 이용한 웹쉘 탐지 장치
KR101348590B1 (ko) * 2012-12-12 2014-01-09 (주)론스텍 네트워크 인라인 필터링을 이용한 웹쉘 차단 방법
CN104298923A (zh) * 2014-09-28 2015-01-21 北京奇虎科技有限公司 漏洞类型识别方法以及装置
CN104331663A (zh) * 2014-10-31 2015-02-04 北京奇虎科技有限公司 web shell的检测方法以及web服务器
CN104765883A (zh) * 2015-04-30 2015-07-08 中电运行(北京)信息技术有限公司 一种用于Webshell的检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孟正 等: "Linux下基于SVM分类器的WebShell检测方法研究", 《技术研究》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107104924B (zh) * 2016-02-22 2020-10-09 阿里巴巴集团控股有限公司 网站后门文件的验证方法及装置
CN107104924A (zh) * 2016-02-22 2017-08-29 阿里巴巴集团控股有限公司 网站后门文件的验证方法及装置
CN107103237A (zh) * 2016-02-23 2017-08-29 阿里巴巴集团控股有限公司 一种恶意文件的检测方法及装置
CN107341399A (zh) * 2016-04-29 2017-11-10 阿里巴巴集团控股有限公司 评估代码文件安全性的方法及装置
CN106228068A (zh) * 2016-07-21 2016-12-14 江西师范大学 基于混合特征的Android恶意代码检测方法
CN106250761B (zh) * 2016-07-28 2019-12-20 广州爱九游信息技术有限公司 一种识别web自动化工具的设备、装置及方法
CN106250761A (zh) * 2016-07-28 2016-12-21 广州爱九游信息技术有限公司 一种识别web自动化工具的设备、装置及方法
CN106101145B (zh) * 2016-08-10 2019-11-15 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置
CN107888554A (zh) * 2016-09-30 2018-04-06 腾讯科技(深圳)有限公司 服务器攻击的检测方法和装置
CN108062474A (zh) * 2016-11-08 2018-05-22 阿里巴巴集团控股有限公司 文件的检测方法及装置
CN108062474B (zh) * 2016-11-08 2022-01-11 阿里巴巴集团控股有限公司 文件的检测方法及装置
CN106845221A (zh) * 2016-11-09 2017-06-13 哈尔滨安天科技股份有限公司 一种基于语法形式的脚本类文件格式识别方法和系统
CN106650437A (zh) * 2016-12-29 2017-05-10 广州华多网络科技有限公司 webshell检测方法和装置
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统
CN107516041B (zh) * 2017-08-17 2020-04-03 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统
CN108229168A (zh) * 2017-12-29 2018-06-29 哈尔滨安天科技股份有限公司 一种嵌套类文件的启发式检测方法、系统及存储介质
CN108229168B (zh) * 2017-12-29 2021-07-20 哈尔滨安天科技集团股份有限公司 一种嵌套类文件的启发式检测方法、系统及存储介质
CN108304721A (zh) * 2018-03-21 2018-07-20 河北师范大学 一种恶意代码检测系统
CN109784052A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 软件行为检测的管理方法及服务端、终端、系统
CN109992967A (zh) * 2019-03-12 2019-07-09 福建拓尔通软件有限公司 一种在文件上传时实现自动检测文件安全性的方法及系统
CN110096264A (zh) * 2019-04-29 2019-08-06 珠海豹好玩科技有限公司 一种代码运行方法及装置
CN110457869A (zh) * 2019-07-23 2019-11-15 Oppo广东移动通信有限公司 程序编译加密方法、装置、存储介质及电子设备
CN111163094A (zh) * 2019-12-31 2020-05-15 奇安信科技集团股份有限公司 网络攻击检测方法、网络攻击检测装置、电子设备和介质
CN111163094B (zh) * 2019-12-31 2022-04-19 奇安信科技集团股份有限公司 网络攻击检测方法、网络攻击检测装置、电子设备和介质
CN114006706A (zh) * 2020-07-13 2022-02-01 深信服科技股份有限公司 网络安全检测方法、系统、计算机装置及可读存储介质
CN112668005A (zh) * 2020-12-30 2021-04-16 北京天融信网络安全技术有限公司 webshell文件的检测方法及装置

Also Published As

Publication number Publication date
CN105069355B (zh) 2018-09-11

Similar Documents

Publication Publication Date Title
CN105069355A (zh) webshell变形的静态检测方法和装置
Li et al. Libd: Scalable and precise third-party library detection in android markets
CN109922052B (zh) 一种结合多重特征的恶意url检测方法
CN106572117B (zh) 一种WebShell文件的检测方法和装置
CN106055980B (zh) 一种基于规则的JavaScript安全性检测方法
CN105653956B (zh) 基于动态行为依赖图的Android恶意软件分类方法
CN109361643B (zh) 一种恶意样本的深度溯源方法
CN106557695B (zh) 一种恶意应用检测方法和系统
CN107341399B (zh) 评估代码文件安全性的方法及装置
CN103279710B (zh) Internet信息系统恶意代码的检测方法和系统
CN107241296B (zh) 一种Webshell的检测方法及装置
Cui et al. Malicious URL detection with feature extraction based on machine learning
CN108712448A (zh) 一种基于动态污点分析的注入式攻击检测模型
CN103748853A (zh) 用于对数据通信网络中的协议消息进行分类的方法和系统
CN105787366A (zh) 基于组件关系的安卓软件可视化安全分析方法
CN111104579A (zh) 一种公网资产的识别方法、装置及存储介质
CN108229170B (zh) 利用大数据和神经网络的软件分析方法和装置
CN104184728A (zh) 一种Web应用系统的安全检测方法及安全检测装置
Wang et al. LSCDroid: Malware detection based on local sensitive API invocation sequences
CN113821804A (zh) 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统
CN113158251B (zh) 应用程序隐私泄露检测方法、系统、终端及介质
CN105488400A (zh) 一种恶意网页综合检测方法及系统
Li et al. Large-scale third-party library detection in android markets
CN112685771A (zh) 日志脱敏方法、装置、设备及存储介质
CN112688966A (zh) webshell检测方法、装置、介质和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant