CN109462575B - 一种webshell检测方法及装置 - Google Patents
一种webshell检测方法及装置 Download PDFInfo
- Publication number
- CN109462575B CN109462575B CN201811142616.7A CN201811142616A CN109462575B CN 109462575 B CN109462575 B CN 109462575B CN 201811142616 A CN201811142616 A CN 201811142616A CN 109462575 B CN109462575 B CN 109462575B
- Authority
- CN
- China
- Prior art keywords
- script file
- web script
- tested
- file
- webshell
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- 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
- G06F21/563—Static detection by source code analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明实施例公开了一种webshell检测方法及装置,该方法包括:将待测试的web脚本文件中的内容转换为抽象语法树;提取抽象语法树的特征向量;将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。将待测试的web脚本文件中的内容转换为抽象语法树。提取抽象语法树中的特征向量后,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。通过上述方式,可以轻易的确定web脚本文件中语句、函数、函数来源以及语句之间的关联关系等。也即是web脚本文件中的最本质信息,还可以提高准确率和工作效率,降低维护成本。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种webshell检测方法及装置。
背景技术
现有的webshell检测方法包括两大类,网络检测和脚本文件检测。其中,网络检测为分析动态生成的网页和HTTP消息交互过程。而脚本文件检测包括静态检测、动态检测和日志文件检测。
网络检测需要部署网络流量旁路硬件设备或者在网关上部署专门的软件,相对文件来说,投入成本较高,对硬件和软件性能要求高。这种检测方法需要过滤巨量的网络数据,从中捕捉到攻击者上传的Webshell,或者攻击者与Webshell的交互数据。这种检测只能定位到某台机器正在被使用的Webshell,很难发现还没有被攻击者使用的Webshell。
动态检测需要捕获Web脚本调用的函数,以及函数的参数。但是,正常的运行环境不会报告出这些信息。这就需要更改环境,使得可以在运行中可以采集到程序调用的函数和函数的参数。这种采集工作是有代价的,会带来脚本运行性能的下降。
静态检测的主要方法有三个,基于数据哈希值的特征检测、基于混淆特征的检测、和正则表达式匹配。基于数据哈希值的检测最简单,其原理是检测者事先构造一个哈希值的数据库,其中存储大量已经发现的Webshell脚本全部或部分内容的哈希值,判断过程就是查找一个Web脚本的哈希值是否存在于数据库之中。这种检测方法的问题是稍微变换脚本的内容,哈希值就会变化。所以,这种检测方法只对已知的Webshell有效,很难检测未知的和变种的Webshell。基于混淆特征的检测主要应对的是这样一个事实,大多数Webshell会使用混淆手段。基于混淆特征的检测针对几种常见的混淆特征值进行检测,比如信息熵、重合指数和压缩比等。这种检测手段对于未经混淆的Webshell检测效果不佳,另外对于包含大量图像内容的脚本文件误报率较高。正则表达式匹配法的原理是针对已知的Webshell代码构造正则表达式库,检测Webshell时,就是读入Webshell内容看能否在匹配库中找到匹配。目前,正则表达式匹配是主流的webshell检测方法,此方法已广为人知,网络黑客在网上流传各种绕过这些检测的方法,通常是添加注释,添加无用的语句,将一句代码拆分为多句等。在攻与防之间形成了“军备竞赛”。在实践中这种方法检测的效果取决于特征库的更新速度。日志检测则存在其滞后性,不能及时采取有效的预防措施。
发明内容
本发明实施例的目的在于提供一种webshell检测方法及装置,用以减少系统资源的占用、提高webshell检测率,降低开发和维护成本等目的。
为实现上述目的,本发明实施例提供一种webshell检测方法,该方法包括:
将待测试的web脚本文件中的内容转换为抽象语法树;
提取抽象语法树的特征向量;
将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
本发明实施例具有如下优点:将待测试的web脚本文件中的内容转换为抽象语法树。提取抽象语法树中的特征向量后,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。通过上述方式,可以轻易的确定web脚本文件中语句、函数、函数来源以及语句之间的关联关系等。也即是web脚本文件中的最本质信息,而通过机器学习算法对特征向量分类,还可以提高准确率和工作效率,降低维护成本。
为实现上述目的,本发明实施例提供一种webshell检测装置,该装置包括:
转换单元,用于将待测试的web脚本文件中的内容转换为抽象语法树;
提取单元,用于提取抽象语法树的特征向量;
处理单元,用于将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
本发明实施例具有如下优点:将待测试的web脚本文件中的内容转换为抽象语法树。提取抽象语法树中的特征向量后,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。通过上述方式,可以轻易的确定web脚本文件中语句、函数、函数来源以及语句之间的关联关系等。也即是web脚本文件中的最本质信息,而通过机器学习算法对特征向量分类,还可以提高准确率和工作效率,降低维护成本。
附图说明
图1为本发明实施例1提供的一种webshell检测方法流程示意图;
图2为本发明提供的一种基于操作码构造抽象语法树的示意图;
图3为本发明实施例2提供的一种webshell检测装置结构示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效。
须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、右”、“中间”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
实施例1
本发明实施例1提供了一种webshell检测方法,具体如图1所示,图1为本发明实施例提供的一种webshell检测方法流程示意图,该方法包括:
步骤110,将待测试的web脚本文件中的内容转换为抽象语法树。
步骤120,提取抽象语法树的特征向量。
步骤130,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
可选的,待测试的web脚本文件中的内容可以是web脚本文件操作码。而将待测试的web脚本文件中内容转换为抽象语法树,则可以包括:
采集待测试的web脚本文件中的操作码。然后将操作码转换为抽象语法树。
在一个具体例子中,web脚本文件的操作码如下:
<?php
$x=base64_decode("YXNzZXJ0");
$x($_POST['c']);
?>
操作码包括两条语句,第一条语句中包含混淆后的代码字符串“YXNzZXJ0”,对其进行解码,然后赋值给变量x;第二条语句动态执行变量x所存储的代码。其参数是通过HTTPPOST字段传输的变量c的值。操作码编译后的语句如表1所示:
表1操作码示例
而将操作码转化为抽象语法树具体过程如下:
INIT_DYNAMIC_CALL是这棵语法树的根节点,包括两个参数。一个是在第5条操作码中的“!0”,另一个是第8条操作码中的“$4”。“!0”由第4条操作码“ASSIGN”得到,再向前关联到第1条操作码“base64_decode”,“base64_decode”的参数由第2条操作码提供。“INIT_DYNAMIC_CALL”的另一个参数“$4”由第7条操作码和第6条操作码共同提供。因此,在语法树中,将具体的'YXNzZXJ0'就可以转换为表示base64编码的“$base64$”。具体的语法树抽象示意图如图2所示。通过构造抽象语法树可以屏蔽掉注释,从而让添加注释混淆代码的攻击手段失效。而让语句之间根据内在的语义关联起来,例如本实施例中,为了有助于说明,因此只列举了两条语句。实际的攻击者为了混淆代码使代码不易检测,会在这两条代码之间增加大量的无用代码。利用抽象语法树可以忽略这些无用代码将两条或更多条有实际语义关联的代码关联起来。
然后,利用国际上流行的机器学习算法,从抽象语法树中提取特征向量,并对提取的特征向量进行分类。从而确定待测试的web脚本文件为webshell文件还是为正常的web脚本文件。
其中,提取特征向量,以及将特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果,然后根据分类结果确定待测试的web脚本文件为webshell文件还是正常的web脚本文件的过程均为现有技术,这里不做过多介绍。
可选的,在将特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果之前,方法还包括:
利用样本数据对预设定的机器学习训练模型进行训练,获取机器学习最优模型,其中样本数据包括已知的正常web脚本文件和webshell文件。
本发明实施例提供的一种webshell检测方法,将待测试的web脚本文件中的内容转换为抽象语法树。提取抽象语法树中的特征向量后,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。通过上述方式,可以轻易的确定web脚本文件中语句、函数、函数来源以及语句之间的关联关系等。也即是web脚本文件中的最本质信息,而通过机器学习算法对特征向量分类,还可以提高准确率和工作效率,降低维护成本。
实施例2
与上述实施例1相对应的,本发明实施例2提供了一种webshell检测装置,具体如图3所示,图3为本发明实施例提供的一种webshell检测装置结构示意图,该装置包括:转换单元301、提取单元302以及处理单元303。
转换单元301,用于将待测试的web脚本文件中的内容转换为抽象语法树。
提取单元302,用于提取抽象语法树的特征向量。
处理单元303,用于将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
可选的,处理单元303具体用于:将特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果;
根据分类结果确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
可选的,处理单元303还用于,利用样本数据对预设定的机器学习训练模型进行训练,获取机器学习最优模型,其中样本数据包括已知的正常web脚本文件和webshell文件。
可选的,待测试的web脚本文件中的内容包括:web脚本文件操作码;转换单元301具体用于:
采集待测试的web脚本文件中的操作码;
将操作码转换为抽象语法树。
本发明实施例提供的一种webshell检测装置中各部件所执行的功能均已在实施例1所提供的一种webshell检测方法中做了详细说明,这里将不再赘述。
本发明实施例提供的一种webshell检测装置,将待测试的web脚本文件中的内容转换为抽象语法树。提取抽象语法树中的特征向量后,将特征向量代入预设定的机器学习算法中,确定待测试的web脚本文件为webshell文件或者为正常的web脚本文件。通过上述方式,可以轻易的确定web脚本文件中语句、函数、函数来源以及语句之间的关联关系等。也即是web脚本文件中的最本质信息,而通过机器学习算法对特征向量分类,还可以提高准确率和工作效率,降低维护成本。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (5)
1.一种webshell检测方法,其特征在于,所述方法包括:
将待测试的web脚本文件中的内容转换为抽象语法树;
提取所述抽象语法树的特征向量;
将所述特征向量代入预设定的机器学习算法中,确定所述待测试的web脚本文件为webshell文件或者为正常的web脚本文件;
将所述特征向量代入预设定的机器学习算法中,确定所述待测试的web脚本文件为webshell文件或者为正常的web脚本文件,具体包括:
将所述特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果;
根据所述分类结果确定所述待测试的web脚本文件为webshell文件或者为正常的web脚本文件;
所述将所述特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果之前,所述方法还包括:
利用样本数据对预设定的机器学习训练模型进行训练,获取机器学习最优模型,其中所述样本数据包括已知的正常web脚本文件和webshell文件;
所述待测试的web脚本文件中的内容包括:web脚本文件操作码;所述将所述待测试web脚本文件中的内容转换为抽象语法树,具体包括:
采集所述待测试的web脚本文件中的操作码;
将所述操作码转换为抽象语法树;
所述操作码包括两条语句,第一条语句中包含混淆后的代码字符串“YXNzZXJ0”,对其进行解码,然后赋值给变量x;第二条语句动态执行变量x所存储的代码,其参数是通过HTTPPOST字段传输的变量c的值;
通过构造抽象语法树屏蔽掉注释,让添加注释混淆代码的攻击手段失效,让语句之间根据内在的语义关联起来;
操作码编译后的语句包括:INIT_FCALL;SEND_VAL;DO_ICALL;ASSIGN;INIT_DYNAMIC_CALL;FETCH_FUNC_ARG;FETCH_DIM_FUNC_ARG;SEND_VAR_EX;DO_FCALL和RETURN;
将操作码转化为抽象语法树具体过程如下:
INIT_DYNAMIC_CALL是这棵语法树的根节点,包括两个参数,一个是在第5条操作码中的“!0”,另一个是第8条操作码中的“$4”;
“!0”由第4条操作码“ASSIGN”得到,再向前关联到第1条操作码“base64_decode”,“base64_decode”的参数由第2条操作码提供;
“INIT_DYNAMIC_CALL”的另一个参数“$4”由第7条操作码和第6条操作码共同提供。
2.一种webshell检测装置,采用如权利要求1的webshell检测方法,其特征在于,所述装置包括:
转换单元,用于将待测试的web脚本文件中的内容转换为抽象语法树;
提取单元,用于提取所述抽象语法树的特征向量;
处理单元,用于将所述特征向量代入预设定的机器学习算法中,确定所述待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
3.根据权利要求2所述的装置,其特征在于,所述处理单元具体用于:将所述特征向量代入预设定的机器学习最优模型中进行分类,获取分类结果;
根据所述分类结果确定所述待测试的web脚本文件为webshell文件或者为正常的web脚本文件。
4.根据权利要求3所述的装置,其特征在于,所述处理单元还用于,利用样本数据对预设定的机器学习训练模型进行训练,获取机器学习最优模型,其中所述样本数据包括已知的正常web脚本文件和webshell文件。
5.根据权利要求4所述的装置,其特征在于,所述待测试的web脚本文件中的内容包括:web脚本文件操作码;所述转换单元具体用于:
采集所述待测试的web脚本文件中的操作码;
将所述操作码转换为抽象语法树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811142616.7A CN109462575B (zh) | 2018-09-28 | 2018-09-28 | 一种webshell检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811142616.7A CN109462575B (zh) | 2018-09-28 | 2018-09-28 | 一种webshell检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109462575A CN109462575A (zh) | 2019-03-12 |
CN109462575B true CN109462575B (zh) | 2021-09-07 |
Family
ID=65607097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811142616.7A Active CN109462575B (zh) | 2018-09-28 | 2018-09-28 | 一种webshell检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109462575B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110162973B (zh) * | 2019-05-24 | 2021-04-09 | 新华三信息安全技术有限公司 | 一种Webshell文件检测方法及装置 |
CN113094706A (zh) * | 2020-01-08 | 2021-07-09 | 深信服科技股份有限公司 | 一种WebShell检测方法、装置、设备及可读存储介质 |
CN113111346A (zh) * | 2020-01-13 | 2021-07-13 | 深信服科技股份有限公司 | 一种多引擎WebShell脚本文件检测方法及系统 |
CN111695117B (zh) * | 2020-06-12 | 2023-10-03 | 国网浙江省电力有限公司信息通信分公司 | 一种webshell脚本检测方法及装置 |
CN112052451A (zh) * | 2020-08-17 | 2020-12-08 | 北京兰云科技有限公司 | 一种webshell检测方法和装置 |
CN112597498A (zh) * | 2020-12-29 | 2021-04-02 | 天津睿邦安通技术有限公司 | 一种webshell的检测方法、系统、装置及可读存储介质 |
CN113239352B (zh) * | 2021-04-06 | 2022-05-17 | 中国科学院信息工程研究所 | 一种Webshell检测方法及系统 |
CN113190849B (zh) * | 2021-04-28 | 2023-03-03 | 重庆邮电大学 | Webshell脚本检测方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2608487A1 (en) * | 2011-12-22 | 2013-06-26 | Thibaud Arnault | Method, system and computer program product for providing composite web application |
CN106572117A (zh) * | 2016-11-11 | 2017-04-19 | 北京安普诺信息技术有限公司 | 一种WebShell文件的检测方法和装置 |
CN106911686A (zh) * | 2017-02-20 | 2017-06-30 | 杭州迪普科技股份有限公司 | WebShell检测方法及装置 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
-
2018
- 2018-09-28 CN CN201811142616.7A patent/CN109462575B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2608487A1 (en) * | 2011-12-22 | 2013-06-26 | Thibaud Arnault | Method, system and computer program product for providing composite web application |
CN106572117A (zh) * | 2016-11-11 | 2017-04-19 | 北京安普诺信息技术有限公司 | 一种WebShell文件的检测方法和装置 |
CN106911686A (zh) * | 2017-02-20 | 2017-06-30 | 杭州迪普科技股份有限公司 | WebShell检测方法及装置 |
CN107516041A (zh) * | 2017-08-17 | 2017-12-26 | 北京安普诺信息技术有限公司 | 基于深度神经网络的WebShell检测方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109462575A (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109462575B (zh) | 一种webshell检测方法及装置 | |
CN103095681B (zh) | 一种检测漏洞的方法及装置 | |
KR101083311B1 (ko) | 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법 | |
CN107341399B (zh) | 评估代码文件安全性的方法及装置 | |
CN102592080B (zh) | flash恶意文件检测方法及装置 | |
CN109922052A (zh) | 一种结合多重特征的恶意url检测方法 | |
CN109190372A (zh) | 一种基于字节码的JavaScript恶意代码检测模型 | |
CN103177215A (zh) | 基于软件控制流特征的计算机恶意软件检测新方法 | |
CN109525567A (zh) | 一种针对网站实施参数注入攻击的检测方法与系统 | |
CN112685738B (zh) | 一种基于多级投票机制的恶意混淆脚本静态检测方法 | |
CN113194058B (zh) | Web攻击检测方法、设备、网站应用层防火墙及介质 | |
Li et al. | FEPDF: a robust feature extractor for malicious PDF detection | |
CN103914657A (zh) | 一种基于函数特征的恶意程序检测方法 | |
CN105653949A (zh) | 一种恶意程序检测方法及装置 | |
CN112287342A (zh) | 物联网固件动态检测方法、装置、电子设备以及存储介质 | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
Zhang et al. | A php and jsp web shell detection system with text processing based on machine learning | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
Bai et al. | Dynamic k-gram based software birthmark | |
CN110826062B (zh) | 恶意软件的检测方法及装置 | |
CN112257076A (zh) | 一种基于随机探测算法和信息聚合的漏洞检测方法 | |
CN108573148B (zh) | 一种基于词法分析的混淆加密脚本识别方法 | |
CN115688108B (zh) | 一种webshell静态检测方法及系统 | |
CN111125704A (zh) | 一种网页挂马识别方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |