用机器学习方法检测基于PHP的web shell进展回顾

2019-12-23 10:52戴梦杰刘真岩彭夕茈张金全
网络安全技术与应用 2019年5期
关键词:机器样本特征

◆戴梦杰 罗 颖 刘真岩 彭夕茈 张金全



用机器学习方法检测基于PHP的web shell进展回顾

◆戴梦杰 罗 颖 刘真岩 彭夕茈 张金全

(成都信息工程大学网络空间安全学院 四川 610225)

本文简述了web shell分类和基于PHP的web shell的变形及检测方法,回顾了用机器学习方法检测基于PHP的web shell的现状,最后从样本准备、特征提取和实现方法等方面给出了提高机器学习算法检测效果的改进方向。

机器学习;web shell;PHP

0 引言

web shell又叫网站后门,是一种基于Web服务的程序,以网页文件存在的命令执行环境[1]。它原本是为网站管理者远程管理系统提供方便。但是,入侵者也可以通过网页文件的代码漏洞获得上传权限,再将包含后门的网页文件上传至服务器。

这种后门网页文件与正常网页具有相同的运行环境和服务端口,都通过80端口进行数据交换,加上各种用于反检测特征技术应用到后门网页文件上,使得传统基于特征码匹配的检测方式很难及时检测出新的变种,因此能够绕过很多防火墙。

1 web shell的分类

根据web shell的大小和功能,可以将web shell分成大马、小马和一句话木马。大马功能全面,小马体积小、隐蔽性强,但所拥有的功能较少,通常只能用于文件上传以及为数据库提权;一句话木马是指仅有一行代码完成的可动态接收脚本指令并执行的脚本,多用于代码执行一些关键函数,比如中国菜刀用的一句话PHP木马。攻击者在发现漏洞后,往往先上传一句话木马,配合相关工具获得更多权限,然后上传大马,实现对服务器的控制。

web开发语言有很多,常用到的包括ASP、JSP、Python、Perl和PHP等。与其他web开发语言相比,使用PHP进行web开发具有高性能、可扩展性、低成本等优势。因而被广泛地用来开发网站。用PHP开发的网站,服务器也更适合运行PHP的web shell。

2 基于PHP的web shell的变形

web shell本质上是可以执行恶意功能的PHP代码文件,其代码结构主要由数据传递和数据执行两部分组成[1]。比如一句话木马,数据执行部分为eval(),数据传递部分为$_POST['pwd']。web shell为了逃避检测,会对数据传递部分和数据执行部分进行修改。

另外,在形式上,为保证web shell不被服务器的管理员发现,入侵者需要在上传web shell的同时对其采取如下的一系列保护措施[2]。比如:在web shell代码中插入一些注释;对控制代码(或数据)在发送或使用前进行加密,在运行前再进行解密;对特征函数或参数进行多重编码,使页面存在的一些规律发生改变,降低被检测到的概率;在不影响功能的前提下,入侵者将函数名、变量名、常量名等标识进行分拆,在使用的时候再将名字拼接起来以起到躲避检测的作用等等。

3 机器学习方法检测基于PHP的web shell的现状

百度安全web防护产品线负责人刘焱在其著作《Web安全之机器学习入门》中,提到了用朴素贝叶斯来进行检测。其中黑样本从网上收集,白样本来自WordPress源码、PHPCMS源码、phpMyAdmin源码、PHP的一个框架YII的源码和smarty源码。对于朴素贝叶斯而言,需要假设样本的特征各维度两两独立。如果维度高,一个可能问题就是维度之间的独立性会变差,造成朴素贝叶斯的假设不成立,从而不可行。

在其后的著作《web安全之深度学习实战》中,作者使用了深度学习的MLP和CNN算法来实现web shell的检测。其中,基于词袋&TF-IDF模型的MLP准确率和召回率综合表现较佳,基于opcode序列模型的CNN准确率较高。

石刘洋等提出了一个基于web日志的web shell检测方法,该方法利用了支持向量机(SVM)模型,对日志记录的字段数据进行信息提取与分析处理,从文本特征、统计特征和负面关联特征3个角度对正常网页文件和web shell文件进行区分和判断,验证了方法的可行性和有效性。

变形的web shell无非是隐藏了执行数据部分或者数据传递部分,不过无论怎么变形本质上还是去调用eval、调用system、exec等命令执行函数。杜海章等通过PHP扩展来实现hook,hook这些PHP函数或语法结构。不过web承受着大量的访问请求,增加PHP扩展的性能和稳定性是一个严峻的考验,另外在服务器比较多的公司存在推广和部署成本问题。

Behrens等的检测程序NeoPI针对5种常见web shell的混淆特征进行检测,包括:信息熵、最长单词、重合指数、特征和压缩比。该检测方法可以完成一些变体的标记,但没有从恶意代码的根本特征上解决web shell检测问题,需要管理员人工分析以便做出是否web shell的决定。Luczko等的web shell Detector是一个PHP脚本,使用一个较大的web shell特征库,可以用来识别PHP/cgi/asp/aspx的web shell,识别率高,但对于新的web shell,如果特征库没有及时更新,则不能检测出来。

4 用机器学习方法检测基于PHP的web shell的改进方向

为了提高算法检测的准确性,可以从以下几个方面进行改进。

(1)在样本准备方面,收集大量的基于PHP的web shell及各种变形,进行合理的分类,减少不必要的重复。由于没有统一的样本库,因而样本的来源各异,样本数量的差异也很大。一些研究者是从github网站下载别人准备的黑样本,一些研究者没有说明样本来源。比如,朱魏魏等采集了420个web shell和从CMS中提取的480个正常PHP页面作为实验数据。戴桦等使用了1200个不存在Web Shell 的PHP页面和447个存在web Shell的PHP页面。Truong Dinh Tu等用了12982正常页面和169web shell页面。

由于在机器学习中,持有大量的数据是非常重要的。在下载网上的web shell样本的同时,需要对样本进行分类,同时去掉重复的样本,因为重复的代码会影响数据出现的频率。确保现有的web shell类型在训练样本中都存在,尤其是web shell的各种变形文件。如果对样本进行合理分类,包含到现有每一个已知类型的web shell变形,应该有助于算法的准确性。

(2)在特征提取方面,研究者广泛使用机器学习的词袋和TF-IDF模型。该模型直接作为web shell检测,有研究者提出了异义。词袋&TF-IDF模型提取的特征,可以作为参考特征之一,但在专业的安全人员看来不够好,同时词袋&TF-IDF模型没有考虑词语出现的位置。在信息安全中,词条出现在文档的不同位置时,对文档的区分度的贡献大小是不一样的。又如,TF&IDF模型没有考虑到特征项在类间和类内的分布情况。另外,在web shell检测中,词频的意义和作用与通常的自然语言处理也不尽相同。

结合PHP的特性,在特征提取阶段,对常规的词袋&TF-IDF模型进行修改,使之更适合完成web shell的检测,包括词条出现的位置、词频的意义在web shell检测中的作用。紧密结合web shell程序的特征,提高算法分类的准确度。

(3)在实现上,只有少数研究者在使用机器学习进行web shell检测时,考虑了web shell的PHP特性,尤其是动态特性。在现有检测PHP的web shell的方法中,机器学习方法更多是针对web shell的静态特征进行的。实际上,PHP网页包括静态特性和动态特性。在静态特征方面,基于PHP的web shell与使用其他脚本语言在语法等方面有一定差异性。在PHP代码执行过程中,由于PHP是解释型语言,代码需要被翻译成字节码后由ZEND引擎进行解析执行。只有少数研究者简单的利用了字节码进行web shell的检测。在研究PHP的内核实现机制和PHP扩展的基础上,深挖web shell的原理和执行机制,结合机器学习进行检测。这样可以把PHP的这些特点和机器学习结合起来进行web shell的检测。

5 结束语

本文回顾了机器学习用于检测用PHP语言编写的webshell的现状,并结合机器学习算法检测web shell的特点,给出了提高检测准确度的改进方向。

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

[2]戴桦,李景,卢新岱,孙歆.智能检测web Shell的机器学习算法[J].网络与信息安全学报,2017,3(4):51-57.

[3]刘焱.Web安全之机器学习入门[M].机械工业出版社,2017.9.

[4]刘焱.Web安全之深度学习实战[M].机械工业出版社,2017.12.

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

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

[7]Truong Dinh Tu,Cheng Guang,Guo Xiaojun,Pan Wubin. Evil-hunter:a novel web shell detection system base-d on scoring scheme[J].Journal of Southeast University(Engli-sh Edition),Vo1.30,No.3,pp. 278-284.

[8]Behrens S,Hagen B. Web shell detection using NeoPI. http://resources. infosec- institute.com/web-shell-detection/.

[9]王亚丽.webshell 查杀逃逸技术研究[J].网络安全技术与应用,2017,(9):75-76.

[10]龙啸,方勇,黄诚,刘亮.webshell研究综述:检测与逃逸之间的博弈[J].网络空间安全,2018,9(1):62-68.

猜你喜欢
机器样本特征
机器狗
离散型随机变量的分布列与数字特征
机器狗
用样本估计总体复习点拨
抓特征解方程组
不忠诚的四个特征
规划·样本
未来机器城
随机微分方程的样本Lyapunov二次型估计
“官员写作”的四个样本