APP下载

Webshell研究综述:检测与逃逸之间的博弈

2018-06-29龙啸方勇黄诚刘亮

网络空间安全 2018年1期
关键词:检测技术

龙啸 方勇 黄诚 刘亮

摘 要:Webshell是Web攻击中常见的一种木马形式,在整个攻击链中,Webshell被用于权限维持并作为下一步入侵的跳板。针对不断发展的检测与逃逸技术,尤其是人工智能影响下的新兴技术,综述了近年来Webshell检测和逃逸方面的研究进展。论文介绍了随着互联网发展而不断演化的攻击方式以及应对攻击的检测模型,阐述了包括静态规则匹配、异常行为分析、动态执行和基于深度学习等检测方法,从博弈的角度重点讨论了检测与逃逸相互之间所产生的影响。最后总结了现有的研究难题,展望了Webshell未来的研究方向。

关键词:Webshell;检测技术;逃逸技术

中图分类号:TP309 文献标识码:A

A survey on webshell: game of detection and escape

Abstract: Webshell is a common trojan in Web attacks. It is always used for permission maintenance and next step attacks. In this paper, the researches on the detection and escape of Webshell had been reviewed especially the emerging technologies under the influence of artificial intelligence. This paper introduced the evolution of attack methods and detection model with the development of the Internet. Meanwhile, it expounded several detections such as static rules matching, abnormal behavior analysis, dynamic analysis and deep learning. The important is to illustrate the interaction between detection and escape in the game. Finally it summarized the existing research problems and put forward the research direction.

Key words: webshell; detection technique; escape technique

1 引言

隨着网络技术的不断更新,网络应用能够提供的交互功能越来越强大,丰富的功能扩大了网络攻击面,使得个人、企业甚至是国家的敏感信息暴露在风险中。而在网络攻击链中,Webshell作为一种可以进行文件操作和命令执行的恶意程序,被大量攻击者用于控制Web服务主机[1]。根据绿盟科技2017年上半年发布的《2017上半年DDoS与Web应用攻击态势报告》指出,2017年上半年攻击者对该公司所防御的Web站点发起了2465万次Web应用层攻击,占所管理网站总数的82%,其中教育、政府、金融等领域成为主要的攻击目标[2]。作为黑客的常用工具,Webshell可以用于非法访问网站资源,甚至用于控制具有Web功能的关键设施,严重威胁着国家网络空间安全。

2 Webshell的定义以及攻击原理

2.1 定义

Webshell是指攻击者基于Web编程语言特性编写的一类恶意脚本,当攻击者攻陷Web应用程序后,使用这样的恶意脚本来持久化访问权限或者提升访问权限[3]。由于Webshell本身一般并不具有攻击或者利用远程漏洞的能力,所以往往由攻击者利用远程漏洞攻陷Web应用后,再将恶意文件注入失陷主机进行使用。

一个典型的Webshell脚本如图1所示,通常包含一个脚本语言类型声明,执行用户代码的指令以及用户需要执行的代码。主流的脚本语言类型包括PHP、ASP、ASP.NET、JSP等,如图2所示,展示了攻击者向漏洞应用添加恶意后门的过程。

Webshell以代码展现形式分类可以分为三类。

(1)非编码Webshell,恶意源代码直接写在普通文件中,可以直接阅读的Webshell形式。

(2)编码Webshell,源代码经过编码后存储于文件之中,无法直接人工辨认,需要经过解码处理,常见的编码方式为base64编码、混淆编码。攻击者通常会使用编码后门的方式来进行逃逸。

(3)无文件Webshell,无文件Webshell是由于Web应用程序代码中使用了危险的命令执行函数而产生的,攻击者利用漏洞传递可控变量进入危险函数,就可以发动Webshell攻击。

Webshell从用途分类可以分为五类。

(1)通用型Webshell,具有Web木马所需的复杂功能,包括文件上传、文件操作、数据库访问、权限提升、系统命令执行、内网扫描等功能。

(2)数据库型Webshell,专门用于数据库数据窃取的恶意程序。

(3)上传型Webshell,只具有上传接口的恶意程序,可以为其他恶意程序的上传提供通道,常用于隐蔽权限维持。

(4)一句话Webshell,只具有简单的脚本执行语句,通常需要配合木马管理端工具,如Shellstack、Cknife等。

(5)穿透型Webshell,专门提供内网穿透的恶意程序,可以将内网服务器转发到公网,扩大网络边界攻击面。

2.2 攻击原理

Webshell的种类有很多,不同的脚本语言所实现的恶意代码结构也不尽相同。这些代码能够发动攻击的根本原因来自于Web应用交互方式和编程语言本身所具有的特点,这里将从远程参数传递和本地函数调用两个层面来进行分析。

2.2.1 远程参数传递

由于Web应用程序的交互特性,用户通过客户端发送携带有参数的请求,常见的HTTP请求有GET型和POST型两种。这些请求被特定的代码接受并处理后,会将结果返回给请求者,基于这种远程传递机制,用户可以发送携带有特定参数的请求。如果攻击者通过应用漏洞将Webshell植入服务器,就可以利用该机制访问恶意文件完成远程参数传递。

2.2.2 本地函数调用

Web应用中常用的编程语言都提供文件操作、系统命令执行、数据库操作等接口。一次完整的Webshell攻击由攻击者远程传递命令参数给木马文件,木马文件根据不同的参数执行相应的函数,再将执行结果返回给攻击者。在整个攻击过程中,参数传递属于正常的HTTP协议交互,所执行的函数也是编程语言本身的功能,这些特性给Webshell的检测带来了很大的难度。

3 Webshell攻击检测技术

对Webshell的检测识别主要分为基于后门文件的检测方式、基于交互流量的检测方式以及基于Web日志的检测方式。这三种检测方式分别对应了攻击发生前、攻击发生时和攻击发生后三个阶段。Webshell攻击发生前,攻击者需要向服务器传递相应的恶意文件,因此基于文件的检测方式主要针对恶意文件本身进行检测,阻止文件的传递;而基于流量的检测方式主要在攻击者与服务器交互过程中,通过协议层面的流量分析来标记识别恶意行为;基于日志的检测方式通常是在攻击发生后,通过全面的分析入侵日志,还原整个攻击过程,以此来定位识别恶意后门。

3.1 基于文件的检测技术

这种检测技术通过文件特征、文件哈希、文件动态行为、文件访问时间、访问频率、文件权限等属性来鉴别恶意文件。

由于检测速度快、检测特征明显,相关领域针对恶意攻击的研究多集中在基于文件的检测方法上。其中被广泛提到的是Ben Hagen于2011年设计实现的NeoPI[4]。NeoPI是一款文件恶意性定量工具,它从文件字符长度、信息熵和重合因子等角度综合分析待检测文件,但是该款工具只做定量检测,并不对文件做定性评价。另一款相似的PHP后门检测工具是Luczko的PHP shell detector[5],它主要通过比较未知文件和已知Webshell文件的MD5值来判断恶意程序是否存在,由于MD5的HASH特性,这种方法存在极大的漏报率。胡健康等人使用基于决策树的检测方法[6],将一个完整的文件特征分为文档属性、基本属性和高级属性三类,对三类属性使用C4.5算法分类识别,准确率可以达到98.03%。Dinh Tu, Truong等人综合上述研究成果[7],给出了Webshell不同构成结构更加细致的量化指标。孟正等人在对比了SVM和决策树算法后[8],认为使用SVM进行特征匹配拥有更好的泛化能力。除了基于静态特征进行检测之外,研究者们还希望通过动态特征来识别Webshell行为,杜海章等人利用PHP钩子机制[9],从PHP编程语言的编译底层出发,对敏感数据和敏感函数进行劫持检测,提出了一种动态检测的思路。

随着Webshell检测技术研究的不断深入,普通的恶意文件可以轻易的被检测算法所识别,攻击者在这种情况下,利用脚本语言的一些特性对恶意文件进行编码混淆。针对这一情况,朱魏魏等人将最近邻分类引入SVM之中[10],提出了一种NN-SVM模型,利用最近邻特征来抵抗混淆逃逸。马艳发在研究中特别对比了不同特征在普通检测和变异检测中的差异性[11],论文指出特殊字符信息熵和引号信息熵特征在变异检测上表现较好,但是在检测普通Webshell时不够理想。与研究领域共同发展的还有工程界用于实际防护的主机检测引擎,Le等人在论文中使用了50多种国内外不同公司提供的检测引擎[12],对Webshell文件进行检测,从结果中可以看出,基于静态特征检测的工程实现还不够理想。鉴于此,研究者们进行了新的尝试,易楠等人在语义层将PHP語言提取为抽象语法树[13],进而利用巴科斯范式对不同的PHP代码作无歧义转义,最后在语义层进行恶意检测。贾文超等人采用随机森林改进算法[14],针对不同功能的三种Webshell,提出了公共特征和独有特征,结合RASP技术采集动态行为构成特征空间,利用改进算法进行导向式特征随机选择,准确率达到97.2%。而Sun等人提出了一种矩阵分解模型[15],对文件进行矩阵分解后做逻辑回归预测。

基于文件的Webshell检测直观的对恶意文件本身进行分析,一方面建立已有文件的样本库,另一方面采集恶意文件在系统层面或者文件内容层面的静态特征,同时可以结合动态分析技术。然而,基于Webshell文件的检测需要能够取得恶意文件,这使得该技术在针对无文件Webshell进行检测时存在瓶颈。

3.2 基于流量的检测技术

基于流量的检测主要分析攻击者与Webshell交互时的流量,在HTTP协议的请求和响应中寻找可疑信息。

Yang等人在入侵检测研究中提到了基于流量层面对Webshell进行检测[16],他们在研究中使用Snort结合ModSecurity模块对流量中的关键字进行检测,以此来识别Web攻击。叶飞等人使用SVM算法[17],通过检测流量中传递的HTML文档的网页编码方式、网页元信息等特征,判断是否存在Webshell攻击,该模型的准确率达到75.67%。Starov等人在2016年的论文中从流量层面对Webshell本身进行了一次全面的评估[18],他们收集了1449个恶意样本,涵盖c99、r57、WSD等多个样本家族。他们的论文从隐匿性、接口特性和逃逸检测等方面进行分析,利用蜜罐对恶意样本进行观察,总结了不同恶意样本在执行时的客户端行为和服务端行为,更为重要的是,他们对恶意样本中存在的隐藏后门进行了细致的研究,通过流量分析找到那些以Webshell使用者作为目标的攻击者。

由于流量在传递过程中复杂而又庞大,针对流量的检测技术面临着流量还原、实时性能、特征维度、流量噪音等多方面的制约因素,但是,深度学习技术的日趋成熟将会为这种检测方式带来技术变革。

3.3 基于日志的检测技术

服务器往往会以日志的形式记录全部的Web请求,通过分析系统日志,可以对整个攻击过程进行溯源分析,特别适合于分析未被发现的Webshell绕过策略。

Xie等人通过KNN算法来聚类日志中的Webshell行为与正常访问行为[19],通过无监督学习的方法发现日志中的异常攻击。潘杰在基于机器学习的Webshell检测关键技术研究中提出了使用OneClass-SVM[20]进行聚类分析,与此同时,论文中还使用了人工神经网络检测上传之后的文件。前述的研究主要针对日志文本特征进行无监督机器学习,而石刘洋等人在检测日志文本特征的同时[21],提出结合统计特征以及文件访问之间的关联特征,他通过研究发现日志中对Webshell的访问频率记录与正常记录存在明显的差异,利用这种差异可以有效提升日志检测的准确率。

基于日志的检测技术可以有效还原整个攻击链过程,利用日志中的上下文信息可以获取黑客的攻击行为和攻击意图,但是完整的日志信息一般需要在攻击完成后才能获取到,存在一定的检测滞后性,因此需要研究如何利用机器学习技术对交互过程中的日志进行分析甚至预测攻击者的下一步行为,通过预测下一行为可以提前终止可疑攻击。

4 Webshell检测逃逸技术

早在2011年,Sasi等人在安全会议上对当时的Webshell攻击、检测和逃逸方法进行了演讲,展示使用字符拼接和多参数混淆来绕过当时已经存在的NeoIP等早期检测工具。可以看到,学术界对于Webshell逃逸技术进行的研究相对较少[22],而黑客技术圈,如t00ls论坛、Reddit安全话题圈等更热衷于逃逸技术的讨论。通过总结分析,常用的检测逃逸技术有五种。

4.1 字符串加密技术

通过对字符串中的敏感特征进行加密处理,将其可逆的映射到另一个字符串,在访问时再进行解密执行。这种逃逸技术广泛用于各种免杀Webshell中,以PHP语言为例,内置有base64、rot13等加密方式。为了更好的抵御检测,有些恶意程序使用自定义加解密函数进行逃逸,其中Weevely就是一款著名的Webshell加密工具[23]。表1展示了加密前后的Webshell。可以看到通过使用正则替换、base64编码之后,恶意文件的敏感特征得到了很好的隐藏。

针对加密技术,学者们提出使用密码学中的重合因子进行分析,结合信息熵来做判断。这种方法在一定程度上可以起到检测效果,但是出于保护知识产权和防止源码泄露的目的,许多正常的应用也会使用加密混淆技术来处理代码,这种情况下,基于上述手段的检测就存在误报的可能性。

4.2 字符串拆分构造技术

利用ASCII码特性由两个不同的字符运算得到新的字符,再结合字符串拼接特性即可完成代码混淆。如表2所示。通过对“#”、“|”、“~”等特殊符号的异或计算,可以得到“POST”,以此类推,可以构造出相应的Webshell。

基于语义层面的检测技术能够有效应对这种逃逸方式,无论代码中的构造方式如何,编译到底层的opcode都会表现出同样的结构形式。

4.3 流量加密技术

流量加密是一种能有效对抗流量检测的逃逸技术,与字符串加密不同的是,这种技术利用Webshell中的加解密函数解密接收到的攻击指令,加密发送的回复给攻击者的信息。

4.4 文件包含技术

文件包含技术通过将恶意程序差分成多个文本或图片,再通过包含操作进行整合。由于恶意特征被分散到不同的文件中,会影响检测模型的评估。针对这种情况,通过分析不同文件之间的调用关系以及流量层面的可疑特征能够提高模型的检测效果。

4.5 其他逃逸技术

其他逃逸技术还包括在隐蔽位置隐藏攻击载荷、加载其他脚本組件以及无文件攻击等方法,这些方法往往针对某一个检测特征具有很好的逃逸效果。

5 结束语

本文系统概括了网络安全领域对Webshell的定义以及攻击原理,收集总结了近10年来安全研究人员针对Webshell检测的研究成果,分类比对了不同检测方式在作用域、检测特征以及实际效果之间的差异。另外,从相互博弈的角度分析了黑客圈中常用的Webshell检测逃逸技术,通过分析我们可以看出检测和逃逸永远是不断对抗进步的过程。

经过整理研究,对该领域有三个展望。

(1)传统的机器学习已经被广泛用于检测技术中,但是传统的机器学习受到检测特征的制约,这使得我们需要人为挖掘不同的特征来进行选择。而深度学习拥有特征的自学习功能,那么,是否能够将深度学习在文本、语音、图像领域的成功模型迁移到安全检测中?我们认为深度学习迁移的难度首先在于样本,安全领域的样本收集存在着一定的难度;其次,深度学习模型更侧重对具有局部关联性的数据做关联性建模,如何将Webshell数据处理成为合适的数学结构也是值得我们思考的。

(2)在被动检测的基础上,我们如何利用已有的社会工程学、蜜罐技术、指纹跟踪技术来实现主动的Webshell攻击源追踪、Webshell攻击源污染以及Webshell攻击诱捕,将网络犯罪行为抵挡在萌芽阶段。

(3)将研究领域的检测算法用于工程界的检测引擎中时,受到检测时间、检测效率、实现成本等多种因素的影响,因此需要学者们和工程师们一同设计更具有实践价值的检测模型。

参考文献

[1] Markus J, Zulfikar R. Crimeware: Understanding New Attacks and Defenses[J]. Upper Saddle River, 2008.

[2] NSFOCUS. 2017上半年DDoS与Web应用攻击态势报告[EB/OL] (2017-08)[2017-11-6].

http://blog.nsfocus.net/wp-content/uploads/2017/08/201701-NSFOCUS-DDoS-Web%E6%8A%A5%E5%91%8A0802.pdf 2017.11.

[3] Starov O, Dahse J, Ahmad S S, et al. No honor among thieves: A large-scale analysis of malicious web shells[C]//Proceedings of the 25th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2016: 1021-1032.

[4] Behrens S, Hagen B. Web shell detection using NeoPI [EB/OL]. (2012-04-13)[2017-11-6].

http: //resources.infosecinstitute.com/web-shell-detection/

[5] Luczko P, Thornton J. PHP shell detector[EB/OL].(2012-06-12)[2013-10-10].

https://github.com/emposha/PHP-Shell-Detector.

[6] 胡建康,徐震,馬多贺,杨婧. 基于决策树的Webshell检测方法研究[J].网络新媒体技术,2012,1(06):15-19.

[7] Tu T D, Guang C, Xiaojun G, et al. Webshell detection techniques in web applications[C]//Computing, Communication and Networking Technologies (ICCCNT), 2014 International Conference on. IEEE, 2014: 1-7.

[8] 孟正,梅瑞,张涛,文伟平. Linux下基于SVM分类器的WebShell检测方法研究[J]. 信息网络安全,2014,(05):5-9.

[9] 杜海章,方勇. PHP Webshell实时动态检测[J].网络安全技术与应用,2014,(12):120-121+125

[10] 朱魏魏,胡勇.基于NN-SVM的Webshell检测方法[J].通信与信息技术, 2015 (2): 55-58.

[11] 马艳发. 基于WAF入侵检测和变异WebShell检测算法的Web安全研究[D].天津理工大学,2016.

[12] Le V G, Nguyen H T, Lu D N, et al. A Solution for Automatically Malicious Web Shell and Web Application Vulnerability Detection[C]//International Conference on Computational Collective Intelligence. Springer International Publishing, 2016: 367-378.

[13] 易楠,方勇,黄诚,刘亮.基于语义分析的Webshell检测技术研究[J].信息安全研究,2017,3(02):145-150.

[14] 贾文超,戚兰兰,施凡,胡荣贵.采用随机森林改进算法的Webshell检测方法[J/OL].计算机应用研究,2018,(04):(2017-04-01).

[15] Sun X, Lu X, Dai H. A Matrix Decomposition based Webshell Detection Method[C]//Proceedings of the 2017 International Conference on Cryptography, Security and Privacy. ACM, 2017: 66-70.

[16] Yang C H, Shen C H. Implement web attack detection engine with snort by using modsecurity core rules[C]//Fourth the E-Learning and Information Technology Symposium (EITS 09). 2009.

[17] 叶飞,龚俭,杨望.基于支持向量机的Webshell黑盒检测[J].南京航空航天大学学报,2015,47(06):924-930.

[18] Starov O, Dahse J, Ahmad S S, et al. No honor among thieves: A large-scale analysis of malicious web shells[C]//Proceedings of the 25th International Conference on World Wide Web. International World Wide Web Conferences Steering Committee, 2016: 1021-1032.

[19] Xie M, Hu J. Evaluating host-based anomaly detection systems: A preliminary analysis of adfa-ld[C]//Image and Signal Processing (CISP), 2013 6th International Congress on. IEEE, 2013, 3: 1711-1716.

[20] 潘杰.基于机器学习的WebShell检测关键技术研究[D].中国民航大学,2015

[21] 石刘洋,方勇.基于Web日志的Webshell检测方法研究[J].信息安全研究,2016,2(01):66-73.

[22] 王亚丽. Webshell 查杀逃逸技术研究[J].网络安全技术与应用, 2017, 9: 044.

[23] Kali Tools. Weevely. [EB/OL]. https://tools.kali.org/maintaining-access/weevely.

猜你喜欢

检测技术
工厂空气污染与污染检测技术
计算机软件安全漏洞检测技术
前海合作区建设工程检测技术应用研究
有关我国特种设备检测技术现状的分析与展望
食品安全检测技术研究现状
公路工程试验检测存在的问题及措施
煤矿机电产品检测技术
浅谈现代汽车检测技术与安全管理
食品安全检测技术存在的主要问题及对策探究