基于Web日志的Webshell检测方法研究

2016-11-18 07:55石刘洋方
信息安全研究 2016年1期
关键词:日志页面服务器

石刘洋方 勇

(四川大学电子信息学院 成都 610064)(470862999@qq.com)



基于Web日志的Webshell检测方法研究

石刘洋方 勇

(四川大学电子信息学院 成都 610064)(470862999@qq.com)

提出了一种基于Web日志的轻量级的Webshell检测方法,通过对服务器日志文本文件进行分析,从文本特征、统计特征和页面关联特征3个角度检测Webshell,并通过实验对方法的可行性进行了验证.文本特征方面主要是对文件访问路径和提交的参数进行特征匹配,实验证明正常网页文件和Webshell文件在文件访问路径特征和提交的参数特征上有明显区别.在统计特征方面,首先是对比网页文件的访问频率,实验证明通过统计网页文件访问频率,结合网页文件目录深度、起始时间段和单位时间独立访客数,可准确识别异常文件.页面关联特征是通过计算网页文件的出入度找出孤立文件,实验表明,Webshell通常为孤立文件,和正常网页文件区分明显.

网站后门;Webshell;Web日志;Web安全;入侵检测

奇虎360公司安全播报平台2015年初发布的《2014年中国网站安全报告》*2014年中国网站安全报告(http://bobao.360.cn/news/detail/1118.html, 2015.1.13 )显示,在 199.6 万个检测网站中,存在后门(Webshell)的网站占比高达 41.2%,中国网站安全形势严峻.Webshell大多由网页脚本语言编写,具有动态交互的特性[1],常被入侵者用作对网站服务器操作的后门程序,网站被植入Webshell说明网站已被入侵[2].传统的Webshell检测手段通常采取在服务器部署WAF等防护设备或者运行后门查杀工具[3],对网站流量和本地文件进行检查代价较大,且对网站的访问性能有影响.而Web日志记录了网站被访问的情况,在Web安全的应用中,Web日志常被用来进行攻击事件的回溯和取证[4].针对上述情况,本文提出了一种基于Web日志的轻量级的Webshell检测方法,通过对服务器日志文本文件进行分析,从文本特征、统计特征和页面关联特征3个角度检测Webshell.

1 Web日志与Webshell的关联

Web日志是 Web 服务器(如IIS,Apache)记录用户访问行为产生的文件,标准的 Web 日志是纯文本格式,每行一条记录,对应客户端浏览器对服务器资源的一次访问,典型的日志包括来源地址、访问日期、访问时间、访问 URL 等丰富的信息[5],对日志数据进行分析不仅可以检测到可疑的攻击行为,还可以提取特定时间段特定 IP 对应用的访问行为.

Web日志的格式虽略有不同,但记录的内容基本一致.这里以IIS服务器下W3C格式的日志为例,如图1所示:

图1 日志示例

本文实验数据来自一台曾被入侵的IIS服务器脱敏后的日志文件(W3C格式),本文比较关注的几个字段说明如下[5].

date:发出请求日期.

time:发出请求时间.

s-ip:服务器IP地址.

cs-method:请求中使用的HTTP方法.

cs-uri-stem:URI资源,统一资源标识符(URI),即访问的页面文件.

cs-uri-query:URI查询,即访问网址的附带参数.

s-port:为服务配置的服务器端口号.

cs-username:用户名,访问服务器的已经过验证用户的名称.

c-ip:客户端IP地址.

cs(User-Agent):用户代理,客户端浏览器、操作系统等情况.

sc-status:协议状态,记录HTTP状态代码,如200表示成功,403表示没有权限,404表示找不到该页面.

通过Web日志我们可以知道,在某一个时刻某个访客访问了服务器的某个文件[6].经过分析可以从文本模式特征、访问频率特征、是否为孤立页面等角度检测Webshell.

2 检测方法设计

本文对基于Web日志的Webshell检测方法的设计思路如下:在对日志文件进行预处理后,分别对日志记录进行文本特征匹配、统计特征计算与文件关联性分析,最后对检测结果汇总,列出疑似的Webshell文件.

检测流程如图2所示.

图2 检测流程示意图

2.1 日志预处理

基于检测Webshell的目的,需要对原始的Web日志记录进行提取、分解、过滤、删除和合并,再转化成适合进行程序处理的格式.

日志预处理的步骤如下.

1) 数据清理

首先,需要删除访问失败的记录,比如sc-status字段值为404,删除不相关的日志字段,包括空字段以及sc-substatus和sc-win32-status等.

其次,由于Webshell通常为脚本页面,因此可删除静态的网站文件访问记录,如后缀为html,jpg,ico,css,js的文件[7].

但需注意,当网站存在文件包含漏洞或服务器解析漏洞时,需要注意异常文件名或URL,如“bg.asp:.jpg”和“databackup1.aspimgespage_1.html”,此类文件名或URL也能具备Webshell功能,因此需对此类特征记录进行保留.

2) 访客识别

访客识别的目的是从每条日志记录里把访客和被访问页面关联起来[7],通常情况下可以通过cs-username,c-ip和cs(User-Agent)标识一个访客,网站未设置登录功能时,可以采用IP和User-Agent来标识一个访客.初步分析,可以认为不同的IP地址代表不同的访客,当同一IP下可能存在多个访客,可以结合User-Agent进行判断,User-Agent通常会因为操作系统版本和浏览器版本而有所变化.如果IP地址和User-Agent都一样,也可以通过分析页面访问的规律来分析是否存在多个访客.在访客识别中可以排除爬虫程序,如cs(User-Agent)字段为“Baiduspider”,可以认为是百度爬虫.

3) 会话识别

会话(session)识别的目的是为了分析访客在浏览站点期间的一系列活动[7],比如访客首先访问了什么页面,其次访问了什么页面,在某个页面提交了哪些参数、停留时间等.通过分析用户的访问序列,可以判断页面之间的关联性[8].

2.2 文本特征匹配

文本特征匹配的思路是,通过本地搭建服务器环境,对多种Webshell页面进行访问测试和记录,提取日志信息,建立文本特征库.

在所有文本信息中,主要提取Webshell在Web日志访问中的URI资源(对应字段cs-uri-stem)特征和URI查询(对应字段cs-uri-query)特征[9].特征示例如表1所示:

表1 模式匹配特征示例

为了提高匹配覆盖率,通常将一类静态特征归纳成正则表达式的方式进行匹配,例如正则表达式“[0-9]{1,5}。asp”表示匹配文件名为1~5位阿拉伯数字的后缀为asp的文件[10].

除了基本的特征库的检测,为提高对未知Webshell的检测能力,可采用支持向量机(support vector machine, SVM)机器学习算法[11],通过对正常网站文件的访问特征集和Webshell文件访问特征集进行训练,来提高从Web日志中检测Webshell的能力[12].

对于Web日志中特征字段的分类学习,本质上是一种文本分类,文本分类是一个有指导的学习过程,它根据一个已经被标注的训练文本集合,找到文本属性(特征)和文本类别之前的关系模型(分类器),然后利用这种关系模型对新的文本进行类判定[13].

对于本文所要解决的问题,SVM算法可描述为将输入空间中的样本通过一种非线性函数关系映射到一个高维度特征空间中,使样本在该高维特征空间中线性可分,并找到样本在该维特征空间中的最优线性分类超平面[14].如式(1)[14]:

(1)

其中,k(χ,χi)表示核函数.

在SVM的多种核函数中,本文采用性能较优的径向基核函数作为SVM核函数,如式(2)[14]:

(2)

因此,基于SVM算法的分类器见式(3)[14]:

(3)

其中,σ表示核函数密度,ai表示拉格朗日乘子.

2.3 基于统计特征的异常文件检测

在统计特征中,主要考虑网页文件的访问频率,访问频率指的是一个网页文件在单位时间内的访问次数,通常正常的网站页面由于向访客提供服务因此受众较广,所以访问频率相对较高.而Webshell是由攻击者植入,通常只有攻击者清楚访问路径,访问频率相对较低[15].

网站开始运营时就会存在一定数量的正常页面,而Webshell通常在一段时间后才会出现,因此统计和计算页面访问频率时,针对某一页面,要采用该页面首次被访问到最后一次被访问的时间段作为统计区间,然后计算单位时间内的访问次数,得到访问频率.需要说明的是,单凭访问频率特征只能找出异常文件,无法确定一定是Webshell,一些正常页面的访问频率也会较低,比如后台管理页面或者网站建设初期技术人员留下的测试页面.

这里用f(A) 表示计算后的网站页面A的访问频率,Tfirst(A)表示网站页面A首次被访问的时间,Tend(A) 表示网站页面A最后一次被访问的时间,COUNTFE(A)表示网站页面A在时间Tfirst(A)到Tend(A)期间的被访问次数.

因此,网站页面A的访问频率计算如式(4):

(4)

时间单位可根据需要选择小时、天、星期、月等.

2.4 基于文件出入度的文件关联性检测

文件关联性主要是指网页文件之间是否有交互,即是否通过超链接关联起来引导用户访问.而孤立文件通常是指没有与其他页面存在交互的页面,一个网页文件的入度衡量的是访客是否从其他页面跳转到该页面,同理,一个网页文件的出度衡量的是访客是否会从该页面跳转到其他页面.正常网站页面会互相链接,因此会有一定的出入度,而Webshell通常与其他网站页面没有超链接,通常出入度为0[16].

需要注意的是,什么是孤立,与其他页面的交互度为多少算孤立,其都是相对的.而且,有的Webshell也会有一定的出入度,比如当Webshell采用超链接列出网站目录中的文件时就会产生与其他页面的交互.当需要多个脚本协同作用的Webshell 也会产生交互.同样,单凭文件出入度特征只能找出异常文件,无法确定一定是Webshell,一些正常页面的出入度也会较低,比如特意隐藏的独立后台管理页面或者网站建设初期技术人员留下的独立测试页面.

网页文件相互链接示意图如图3所示:

图3 网页文件链接示意

如图3所示,本文对上述网页文件出入度的统计如下,

index.asp:出度为2,入度为1;

Article_Show.asp:出度为1,入度为1;

Photo_View.asp:出度为0,入度为1;

test.asp:出度为0,入度为0 ,为孤立文件.

3 检测方法可行性验证

本节通过对比正常网页文件与Webshell在文本特征、统计特征和文件关联性特征上的区别,对第2节提出的检测方法进行可行性验证.本文实验数据来自一台曾被入侵的IIS服务器脱敏后的日志文件与Web目录文件.

首先采用第三方的基于本地文件特征的Webshell查杀工具“D盾Webshell查杀工具”,对测试的Web目录文件进行检测,检测结果如图4所示.

图4 D盾查杀结果示例截图

在“D盾Webshell查杀工具”检测结果的基础上,结合人工判断,最终选取10个确定的Webshell文件作为Webshell文件组.然后根据对网站目录的分析,基于涵盖不同目录深度和页面功能的考虑,人工选取10个正常网页文件作为正常文件组.正常文件组和Webshell文件组选取情况如表2所示:

表2 实验文件组的选取

3.1 文本特征对比

分别统计正常文件组和Webshell文件组的URI资源(对应字段cs-uri-stem)特征和URI查询(对应字段cs-uri-query)特征,看是否有较为明显的区别.如表3所示:

由实验数据可知,正常网页文件在URI资源特征和URI查询特征上,通常采取有意义的文件名和参数,文件路径和提交方式通常遵循编码规范;而Webshell文件的URI资源特征和URI查询特征呈现简短、随意、杂乱的特征,且常常出现畸形字符串.因此可判断Webshell文件和正常网页文件在日志中的访问特征有较为明显的区别,采用模式匹配和机器学习的方式进行分类检测思路可行,且便于实施.

3.2 统计特征计算和对比

本文分别统计正常文件组和Webshell文件组的访问频率,看是否有较为明显的区别.如表4所示:

表4 访问频率计算

通过对实验数据进行分析可得出如下结论.

1) 在目录深度一致、起始时间段较长的情况下(以大于30 d为判断依据),正常网页文件的访问频率明显高于Webshell文件.

3) 单从Webshell文件的访问频率来看,有的数据呈现访问频率较高的特征,仔细分析日志发现,该类Webshell往往是被攻击者当作一次性后门使用,而且访客单一,且有时攻击者会对自己上传的Webshell文件进行自动化地利用和扫描,导致较短时间内出现大量访问行为,呈现高频访问特征,如bg.asp;.jpg.经过分析和思考,为了准确判断此类Webshell,需要再结合文件的起始时间段和单位时间的独立访客数进行综合判断,当某个网页文件的呈现起始时间段较短、单位时间独立访客数较少的特征时,可首先判定为异常文件,再结合访问频率进行分析.这样便能有效解决误报问题.

通过测试数据可以看出,在基于Web日志进行Webshell检测的过程中,单凭网页文件访问频率特征,误报率较高.需要结合网页文件目录深度、起始时间段和单位时间独立访客数等特征进行综合判断.

综上所述,基于文件访问频率,结合网页文件目录深度、起始时间段和单位时间独立访客数等特征的Webshell检测方法可行.

3.3 页面关联性分析对比

本文分别统计正常文件组和Webshell文件组文件是否能从Web日志中发现多次出现的访问序列,访问序列反映当前页面与网站其他页面的关联性,若无,则判断为孤立文件.如表5所示:

表5 孤立文件判断

需要说明的是,从Web日志中发现出现过Shell.asp->9.asp,lpt4.000.asp->999.asp,9.asp.asp->.998.asp的访问序列,但均只出现过一次,经分析,均为攻击者先上传了一个Webshell然后再利用该Webshell上传后续后门文件形成的访问序列

实验数据显示,正常网页文件通常存在互相关联,而Webshell文件通常不存在文件之间的关联,关联性区分明显.

通过对Web日志进行分析发现,Web日志中保留了曾经存在过但是之后被删除的Webshell的访问记录,使得通过Web日志检测Webshell文件更加全面,弥补了本地Webshell文件检测无法追溯历史攻击的不足.

综上所述,通过从Web日志中分析页面关联性来检测Webshell文件的方法可行.

4 结 语

本文首先阐述了Web日志和Webshell的关联,然后提出了一种基于Web日志检测Webshell的轻量级检测方法,对日志记录的字段数据进行信息提取与分析处理,从文本特征、统计特征和页面关联特征3个角度对正常网页文件和Webshell文件进行区分和判断,在初期方法设计的基础上,通过多次实验分析,验证了本文设计的基于Web日志的Webshell检测方法的可行性和有效性.

[1]Hou Y T, Chang Y, Chen T, et al. Malicious Web content detection by machine learning[J]. Expert Systems with Applications, 2010, 37(1): 55-60

[2]丁辉. 网站被黑中毒WebShell木马的解决方案[J]. 计算机与网络, 2014, 40(3): 68-68

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

[4]李万新. Web日志数据挖掘在服务器安全方面的应用[J]. 逻辑学研究, 2007, 27(5): 116-118

[5]范春荣, 张战勇, 肖新华. 充分利用Web日志分析检测黑客入侵[J]. 石家庄铁路职业技术学院学报, 2009, 1(1): 84-88

[6]齐建军. 窃密型 WebShell 检测方法[J]. 计算机与网络, 2015, 41(13): 38-39

[7]彭薇. 网站Web日志数据预处理模型的建立[J]. 企业科技与发展: 下半月, 2010 (9): 28-31

[8]胡宏智, 王华. Web日志挖掘技术的应用研究[J]. 网络安全技术与应用, 2011 (5): 77-78

[9]段娟. 基于Web应用安全日志审计系统的研究与设计[D]. 北京: 北京邮电大学, 2015

[10]Xu Mingkun, Chen Xi, Hu Yan. Design of software to search ASP Web shell[J]. Procedia Engineering, 2012, 29: 123-127

[11]刘晓亮, 丁世飞, 朱红,等. SVM用于文本分类的适用性[J]. 计算机工程与科学, 2010, 32(6): 106-108

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

[13]熊志斌, 刘冬. 朴素贝叶斯在文本分类中的应用[J]. 软件导刊, 2013, 20(2): 49-51

[14]张晓明, 付强. SVM算法在Web服务蜜罐日志分析中的应用[J]. 沈阳大学学报: 自然科学版, 2013, 25(1): 35-38

[15]刘志宏, 孙长国. 基于Web访问日志的异常行为检测[J]. 计算机与网络, 2015, 41(13): 62-64

[16]陈宝国, 郑丽英. 基于Web日志文件的孤立点检测算法[J]. 计算机与数字工程, 2010, 38(5): 35-37

石刘洋硕士研究生,主要研究方向为Web安全.

470862999@qq.com

方 勇

博士,教授,主要研究方向为信息安全、网络信息对抗.

yfang@scu.edu.cn

附录A 原始实验数据.

Webshell Detection Method Research Based on Web Log

Shi Liuyang and Fang Yong

(CollegeofElectronicInformation,SichuanUniversity,Chengdu610064)

In this paper, a new method of Webshell detection based on Web log is proposed, which is based on the analysis of the server log text file, and the Webshell is detected from three angles: text feature, statistical feature and correlation feature. In the text feature, it is mainly to match the file access path and the parameters that are submitted. The experimental results show that the normal Web documents and Webshell files have obvious differences in the characteristics of the file access path and the parameters. In the statistical characteristics, the first is the comparison of the frequency of access to the file, and the experiment proved that the frequency of the Web page file access, combined with the depth of the Web page file directory, the starting time and the number of individual visitors, can accurately identify abnormal file. Page correlation is found by calculating the access of Web documents, the experiment shows that the Webshell is usually a solitary file, and the normal Web documents are clearly distinguished.

Website backdoor; Webshell; Web log; Web security; intrusion detection

表A1 访问频率计算比

续表A1

表A2 孤立文件判断

2015-12-25

TP393

猜你喜欢
日志页面服务器
刷新生活的页面
一名老党员的工作日志
答案
扶贫日志
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
雅皮的心情日志
游学日志
得形忘意的服务器标准
计算机网络安全服务器入侵与防御