CN105069355B - webshell变形的静态检测方法和装置 - Google Patents
webshell变形的静态检测方法和装置 Download PDFInfo
- Publication number
- CN105069355B CN105069355B CN201510528712.5A CN201510528712A CN105069355B CN 105069355 B CN105069355 B CN 105069355B CN 201510528712 A CN201510528712 A CN 201510528712A CN 105069355 B CN105069355 B CN 105069355B
- Authority
- CN
- China
- Prior art keywords
- function
- code
- webshell
- file
- 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.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 18
- 230000003068 static effect Effects 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims abstract description 161
- 238000000034 method Methods 0.000 claims abstract description 76
- 206010000117 Abnormal behaviour Diseases 0.000 claims abstract description 40
- 230000008569 process Effects 0.000 claims abstract description 33
- 238000013515 script Methods 0.000 claims description 57
- 230000006399 behavior Effects 0.000 claims description 27
- 238000012360 testing method Methods 0.000 claims description 22
- 238000004088 simulation Methods 0.000 claims description 16
- 230000014509 gene expression Effects 0.000 claims description 10
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 235000014510 cooky Nutrition 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 206010019233 Headaches Diseases 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- 231100000869 headache Toxicity 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static 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作为黑客入侵网站的重要工具,在黑客进行网站入侵过程中起到了非常重要的作用。顾名思义,“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 (7)
1.一种webshell变形的静态检测方法,其特征在于,包括:
根据待检测webshell文件内容中包括的语言特征判断该文件的文件类型;
根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;
利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
在预设的虚拟机上解释执行所述中间代码,并在执行过程中利用所述内置函数库和异常行为规则库对中间代码的行为进行分析,判断相应的代码是否为恶意代码;
所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;
所述待检测webshell文件的类型包括php、asp、jsp和cgi;
所述在预设的虚拟机上解释执行所述中间代码,利用所述内置函数库和异常行为规则库对中间代码的行为进行分析判断所述行为是否异常,具体包括:
判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;
对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;
对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;
对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
2.根据权利要求1所述的方法,其特征在于,所述利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码,具体包括:
对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;
对过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;
对上述拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
3.根据权利要求1所述的方法,其特征在于,所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,
对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;
对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;
对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合。
4.根据权利要求1所述的方法,其特征在于,所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
5.一种webshell变形的静态检测装置,其特征在于,包括:
语言类别识别模块,用于根据待检测webshell文件内容中包括的语言特征判断文件类型;
中间代码生成模块,用于根据待检测webshell文件的文件类型,确定要使用的词法语法分析器、内置函数库和异常行为规则库;利用所述词法语法分析器对待检测webshell文件进行词法和语法分析生成中间代码;
虚拟机模块,用于解释执行所述中间代码;
恶意代码判断模块,用于根据所述内置函数库和异常行为规则库对虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码;
所述中间代码包括代码区和数据区,所述代码区的代码包括函数定义、函数调用和基础运算操作符;所述待检测webshell文件的类型包括php、asp、jsp和cgi;
所述恶意代码判断模块根据所述内置函数库和异常行为规则库虚拟机模块执行中间代码的过程中的行为进行分析,判断相应的代码是否为恶意代码,具体包括:判断所述中间代码中包括的每个语句的类型,并根据所述语句的类型执行后续相应的操作;对于函数调用,根据异常行为规则库判断该函数调用是否为恶意代码;对于在执行过程中并没有代码调用的自定义函数,利用模拟参数进行测试调用;对于既不是内置函数库中的函数,也不是自定义函数,根据异常行为规则库判断该函数是否为恶意代码。
6.根据权利要求5所述的装置,其特征在于,所述中间代码生成模块具体包括:
脚本过滤子模块,用于对待检测webshell文件中的脚本进行扫描,去除标记和注释信息,得到过滤后的脚本;
词法分析子模块,用于对所述脚本过滤子模块获得的过滤后的脚本内容进行词法分析,生成由一系列记号组成的列表;其中所述记号的类型包括对象类声明、函数声明、数字常量、字符串常量、变量、函数调用和运算符;
语法分析子模块,用于对所述词法分析子模块拆分生成的列表进行语法分析,将复杂的表达式简化,生成所述虚拟机能够解释执行的中间代码。
7.根据权利要求5所述的装置,其特征在于,
所述异常行为规则库包括敏感函数调用规则和包括有指定函数集合的大马规则;其中,对于敏感函数调用,判断其是否为恶意代码的方法是:测试函数名称与实际参数是否匹配;对于对象,判断其是否为恶意代码的方法是:测试对象类名、方法名以及实际参数是否匹配;对于大马,判断方法为:测试在整个执行过程中是否存在大马规则中包括的指定函数集合;
所述模拟参数包括:浏览器以GET方式获得的参数、浏览器以POST方式获得的参数、脚本读取本地文件的内容、脚本读取远程文件的内容、COOKIES内容和SESSION内容。
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 CN105069355A (zh) | 2015-11-18 |
CN105069355B true 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) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107104924B (zh) * | 2016-02-22 | 2020-10-09 | 阿里巴巴集团控股有限公司 | 网站后门文件的验证方法及装置 |
CN107103237A (zh) * | 2016-02-23 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种恶意文件的检测方法及装置 |
CN107341399B (zh) * | 2016-04-29 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 评估代码文件安全性的方法及装置 |
CN106228068B (zh) * | 2016-07-21 | 2019-03-05 | 江西师范大学 | 基于混合特征的Android恶意代码检测方法 |
CN106250761B (zh) * | 2016-07-28 | 2019-12-20 | 广州爱九游信息技术有限公司 | 一种识别web自动化工具的设备、装置及方法 |
CN106101145B (zh) * | 2016-08-10 | 2019-11-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种网站漏洞检测方法及装置 |
CN107888554B (zh) * | 2016-09-30 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 服务器攻击的检测方法和装置 |
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检测方法和装置 |
CN107516041B (zh) * | 2017-08-17 | 2020-04-03 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
CN108229168B (zh) * | 2017-12-29 | 2021-07-20 | 哈尔滨安天科技集团股份有限公司 | 一种嵌套类文件的启发式检测方法、系统及存储介质 |
CN108304721A (zh) * | 2018-03-21 | 2018-07-20 | 河北师范大学 | 一种恶意代码检测系统 |
CN109784052B (zh) * | 2018-12-29 | 2021-07-20 | 360企业安全技术(珠海)有限公司 | 软件行为检测的管理方法及服务端、终端、系统 |
CN109992967A (zh) * | 2019-03-12 | 2019-07-09 | 福建拓尔通软件有限公司 | 一种在文件上传时实现自动检测文件安全性的方法及系统 |
CN110096264A (zh) * | 2019-04-29 | 2019-08-06 | 珠海豹好玩科技有限公司 | 一种代码运行方法及装置 |
CN110457869B (zh) * | 2019-07-23 | 2022-03-22 | Oppo广东移动通信有限公司 | 程序编译加密方法、装置、存储介质及电子设备 |
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文件的检测方法及装置 |
CN117807595B (zh) * | 2023-12-28 | 2024-08-20 | 北京火山引擎科技有限公司 | 反弹shell检测方法、装置、电子设备及存储介质 |
Citations (5)
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的检测方法 |
-
2015
- 2015-08-26 CN CN201510528712.5A patent/CN105069355B/zh active Active
Patent Citations (5)
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)
Title |
---|
Linux下基于SVM分类器的WebShell检测方法研究;孟正 等;《技术研究》;20140531;第2014年卷(第5期);第5-9页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105069355A (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105069355B (zh) | webshell变形的静态检测方法和装置 | |
CN106961419B (zh) | WebShell检测方法、装置及系统 | |
CN106055980B (zh) | 一种基于规则的JavaScript安全性检测方法 | |
Rathnayaka et al. | An efficient approach for advanced malware analysis using memory forensic technique | |
CN110266669A (zh) | 一种Java Web框架漏洞攻击通用检测与定位的方法及系统 | |
KR101044274B1 (ko) | 악성 사이트 검출 장치, 방법 및 컴퓨터 프로그램이 기록된 기록매체 | |
CN103279710B (zh) | Internet信息系统恶意代码的检测方法和系统 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
TW201629832A (zh) | 一種識別病毒變種的方法及裝置 | |
Ceccato et al. | SOFIA: An automated security oracle for black-box testing of SQL-injection vulnerabilities | |
CN105491053A (zh) | 一种Web恶意代码检测方法及系统 | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
CN104462962B (zh) | 一种检测未知恶意代码和二进制漏洞的方法 | |
CN107103237A (zh) | 一种恶意文件的检测方法及装置 | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
Li et al. | Large-scale third-party library detection in android markets | |
CN114386032A (zh) | 电力物联网设备的固件检测系统及方法 | |
CN113158197A (zh) | 一种基于主动iast的sql注入漏洞检测方法、系统 | |
CN108595953A (zh) | 对手机应用进行风险评估的方法 | |
CN109933977A (zh) | 一种检测webshell数据的方法及装置 | |
US20240054210A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
CN112817877A (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN110287722B (zh) | iOS应用中用于隐私条例检查的敏感权限提取方法 | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 |
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 |