一种webshell的检测方法和检测系统与流程

文档序号:11951572阅读:333来源:国知局
一种webshell的检测方法和检测系统与流程
本发明涉及网络安全检测技术,尤其涉及一种webshell的检测方法和检测系统。
背景技术
:webshell是以asp,php,jsp,python或者cgi等网页脚本文件存在的一种命令执行环境,也可以称作为一种网页后门。黑客在入侵了网站服务器后,通常会将webshell后门文件与网站服务器web目录下正常的网页文件混在一起,然后就可以使用浏览器来访问webshell后门文件,得到webshell命令执行环境,从而取得对网站服务器的某种程度上的操作权限,以达到控制网站服务器的目的。因此,为了维护网站服务器的安全性,需要对webshell进行检测。webshell具有很强的隐蔽性,一般和正常的文件混在一起,甚至隐藏在正常的文件以及图片中,因此检测难度很大。常见的webshell的检测方式有多种,有的基于HTTP访问日志分析,有的对web脚本文件进行特征库匹配进行分析等,但是由于webshell实现方式多样,使用单一的方式进行检测很容易出现误报和漏报,且黑客很容易绕过检测机制实现免杀。技术实现要素:本发明的目的之一是提供一种webshell的检测方法,其能够基于被检测文件的多个特征属性筛选出web应用服务器上的web目录中的文件中为webshell的文件,从而防止web应用服务器被黑客控制,提升web应用服务器的安全性。根据上述目的,本发明提出了一种webshell的检测方法,其包括步骤:遍历web应用服务器上的web目录中的文件,对文件的特征进行检测,获得N种特征属性;构建特征属性集合X={a1,a2,a3,……an},其中a1,a2,a3,……an分别对应表示N种特征属性;构建类别集合C={y1,y2},其中y1表示文件不是webshell,y2表示文件是webshell;分别计算P(y1|X)和P(y2|X),并根据计算结果进行判断:如果P(y1|X)>P(y2|X),则判断文件不是webshell,反之则判断文件是webshell;其中,计算P(y1|X)和P(y2|X)的步骤为:(1)获取足够的webshell样本以及正常文件样本,训练统计出文件分别为y1和y2时,其特征属性分别是a1,a2,a3,……an的概率P(a1|y1),P(a1|y2),P(a2|y1),P(a2|y2),……,P(an|y1),P(an|y2);(2)根据下述模型公式计算出P(y1|X)和P(y2|X):P(yi|X)=P(X|yi)P(yi)P(X),]]>P(X|yi)P(yi)=P(a1|yi)P(a2|yi)...P(an|yi)P(yi)=P(yi)Πj=1nP(aj|yi),]]>其中,i为1或2,P(yi|X)表示文件出现特征属性集合为X时文件为yi的概率,P(X|yi)表示文件为yi时文件出现特征属性集合为X的概率,P(X)表示所有所述样本中一个文件出现特征属性集合为X的概率,P(yi)表示所有所述样本中类别为yi的概率。本发明所述的webshell的检测方法的构思主要是:现有技术通常是通过单一检测方法检测webshell,但无论哪种方法都会存在较高的误报率和漏报率。发明人考虑将各种单一检测方法进行整合,在综合多个检测结果的基础上判断被检测文件是否为webshell,从而提高判断准确度,降低webshell的误报率和漏报率。进一步考虑,通过检测获取文件的多个特征属性,然后使用朴素贝叶斯分类算法进行分类,以判断文件是正常文件还是webshell。本发明方法通过所述步骤,基于样本分析统计文件分别为y1和y2时,其特征属性分别是a1,a2,a3,……an的概率,然后基于该概率用朴素贝叶斯分类算法计算当文件特征属性分别是a1,a2,a3,……an时,其类别为y1和y2的概率P(y1|X)和P(y2|X),根据P(y1|X)是否大于P(y2|X)判断文件是否不是webshell,以筛选出web应用服务器上的web目录中的文件中为webshell的文件,通过对该文件加以处理,可以防止web应用服务器被黑客控制,提升web应用服务器的安全性。需要说明的是,本发明方法中,由于P(X)不变,比较P(y1|X)和P(y2|X)时只需要比较P(X|y1)P(y1)和P(X|y2)P(y2)。而根据公式可以得出,比较P(X|y1)P(y1)和P(X|y2)P(y2)时只需要比较与。进一步地,本发明所述的webshell的检测方法中,所述对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测的至少其中两项,以获得与其对应的5种特征属性的至少其中两种特征属性。文本重合指数是一种判断文本是否被加密的指标,使用该指标可以检测代码被混淆的webshell,因为很多webshell混淆都采用了加密的方式。由于一个完全随机的字符串其文本重合指数为0.0385,因此文件的文本重合指数越接近0.0385,则越说明其有加密的特征,文本文件为webshell的可能性也就越高。文本重合指数的计算方法是:设文本B={b1,b2,……bk},是一个包含了K个字符的字符串,文本B的文本重合指数记为lc(B),定义为文本B中两个随机字符相同的概率。文本B的文本重合指数lc(B)的计算公式如下:lc(B)=Σk=1K(fk*(fk-1))/K(K-1),]]>其中fk代表文本B中字母bk出现的比率。文本信息熵可以理解为信息的复杂度,如果一个信息越有序和简单,则其信息熵越低,而一个信息越混乱且复杂,则其信息熵越高。对于功能比较复杂,且做了混淆的webshell,其信息熵也越高,是webshell的可能性也越高。计算文本的信息熵,通常是通过过滤掉文本中的空格,中文等信息,然后解析出文本中的所有ASCII编码,使用ASCII码计算文本的熵值。文本信息熵Info(A)计算公式如下:Info(A)=-↑n=1255pnlog2pn(n≠127)=-↑n=1255xnslog2xns(n≠127),]]>其中n为ASCII码,不过对于n=127(空格)的情况无意义,将其去除;pn为第n位ASCII码在当前文本出现的概率,xn为第n位ASCII码在当前文本出现的次数,s为当前文本的总字符数。文本信息熵Info(A)越大,文本文件为webshell的可能性越大。最长单词或字符串需要被检测的原因是:由于webshell中有些代码逻辑为了躲避查杀,需要将关键代码进行加密,执行时再解密,因此就会出现很长的单词或者字符串,如果文本中出现了极长的字符串,文本文件是webshell的可能性也很高。特征库匹配检测是检测webshell的最直接的方式,也是最必不可少的方式,可以包括检测以下几种与webshell具有高度相关性的特征:危险函数,例如:eval、exec、system、passthru、shell_exec、assert、base64_decode等。危险文件后缀,例如php4、php5、asa、cer、jspx、cfm、war、asp、php等。敏感的文件名,例如cmd、websell、shell、backdoor、chopper等。内容关键字,很多家族性的webshell都会包含一些关键字,或者特殊指令,可以使用正则表达式来识别这些特征。文件属性需要被检测的原因是:一般情况下,webshell是黑客通过使用其他漏洞上传到web目录中来的,因此文件的创建时间,修改时间,所有者,文件类型权限都与其他正常的文件有很大区别,因此一个目录中,文件属性与其他文件存在明显差异的文件也很可能是一个webshell。更进一步地,上述webshell的检测方法中,所述对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测,以获得与其对应的5种特征属性。更进一步地,上述webshell的检测方法中,所述特征库匹配检测包括:危险函数检测、危险文件后缀检测、敏感文件名检测和内容关键字检测的至少其中之一。本发明的另一目的是提供一种webshell的检测系统,其能够基于被检测文件的多个特征属性筛选出web应用服务器上的web目录中的文件中为webshell的文件,从而防止web应用服务器被黑客控制,提升web应用服务器的安全性。根据上述目的,本发明提出了一种webshell的检测系统,其包括:设置在web应用服务器上的代理单元,以及;服务器;其中代理单元根据服务器的指令采用下述步骤对webshell进行检测:遍历web应用服务器上的web目录中的文件,对文件的特征进行检测,获得N种特征属性;构建特征属性集合X={a1,a2,a3,……an},其中a1,a2,a3,……an分别对应表示N种特征属性;构建类别集合C={y1,y2},其中y1表示文件不是webshell,y2表示文件是webshell;分别计算P(y1|X)和P(y2|X),并根据计算结果进行判断:如果P(y1|X)>P(y2|X),则判断文件不是webshell,反之则判断文件是webshell;其中,计算P(y1|X)和P(y2|X)的步骤为:(1)获取足够的webshell样本以及正常文件样本,训练统计出文件分别为y1和y2时,其特征属性分别是a1,a2,a3,……an的概率P(a1|y1),P(a1|y2),P(a2|y1),P(a2|y2),……,P(an|y1),P(an|y2);(2)根据下述模型公式计算出P(y1|X)和P(y2|X):P(yi|X)=P(X|yi)P(yi)P(X),]]>,其中,i为1或2,P(yi|X)表示文件出现特征属性集合为X时文件为yi的概率,P(X|yi)表示文件为yi时文件出现特征属性集合为X的概率,P(X)表示所有所述样本中一个文件出现特征属性集合为X的概率,P(yi)表示所有所述样本中类别为yi的概率;其中,代理单元将检测到webshell的检测结果传输至服务器。需要说明的是,本发明系统中,由于P(X)不变,比较P(y1|X)和P(y2|X)时只需要比较P(X|y1)P(y1)和P(X|y2)P(y2)。而根据公式可以得出,比较P(X|y1)P(y1)和P(X|y2)P(y2)时只需要比较与。本发明所述的webshell的检测系统中,所述检测结果可以包括被判断为webshell的文件的属性以及样本。服务器可以根据该检测结果进行报警,为用户提供分析、展示以及删除等管理界面。进一步地,本发明所述的webshell的检测系统中,所述服务器在接收到代理单元传输的检测结果后发出报警。进一步地,本发明所述的webshell的检测系统中,所述对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测的至少其中两项,以获得与其对应的5种特征属性的至少其中两种特征属性。更进一步地,上述webshell的检测系统中,所述对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测,以获得与其对应的5种特征属性。更进一步地,上述webshell的检测系统中,所述特征库匹配检测包括:危险函数检测、危险文件后缀检测、敏感文件名检测和内容关键字检测的至少其中之一。进一步地,本发明所述的webshell的检测系统中,所述代理单元还将检测到webshell的文件传输至服务器。本发明所述的webshell的检测方法,其与现有技术中通过单一检测方法检测webshell相比,采用朴素贝叶斯分类算法综合文件的多个特征属性进行判断,从而具有更高的准确度,有效降低了webshell的误报率和漏报率,提升了web应用服务器的安全性。本发明所述的webshell的检测系统,其同样具有上述效果。附图说明图1为本发明所述的webshell的检测方法在一种实施方式下的流程示意图。图2为本发明所述的webshell的检测系统在一种实施方式下的结构示意图。具体实施方式下面将结合说明书附图和具体的实施例来对本发明所述的webshell的检测方法和检测系统进行进一步地详细说明,但是该详细说明不构成对本发明的限制。图1示意了本发明所述的webshell的检测方法在一种实施方式下的流程。如图1所示,该webshell的检测方法包括步骤:遍历web应用服务器上的web目录中的文件,对文件的特征进行检测,获得N种特征属性;构建特征属性集合X={a1,a2,a3,……an},其中a1,a2,a3,……an分别对应表示N种特征属性;构建类别集合C={y1,y2},其中y1表示文件不是webshell,y2表示文件是webshell;分别计算P(y1|X)和P(y2|X),并根据计算结果进行判断:如果P(y1|X)>P(y2|X),则判断文件不是webshell,反之则判断文件是webshell;其中,计算P(y1|X)和P(y2|X)的步骤为:(1)获取足够的webshell样本以及正常文件样本,训练统计出文件分别为y1和y2时,其特征属性分别是a1,a2,a3,……an的概率P(a1|y1),P(a1|y2),P(a2|y1),P(a2|y2),……,P(an|y1),P(an|y2);(2)根据下述模型公式计算出P(y1|X)和P(y2|X):P(yi|X)=P(X|yi)P(yi)P(X),]]>P(X|yi)P(yi)=P(a1|yi)P(a2|yi)...P(an|yi)P(yi)=P(yi)Πj=1nP(aj|yi),]]>其中,i为1或2,P(yi|X)表示文件出现特征属性集合为X时文件为yi的概率,P(X|yi)表示文件为yi时文件出现特征属性集合为X的概率,P(X)表示所有所述样本中一个文件出现特征属性集合为X的概率,P(yi)表示所有所述样本中类别为yi的概率。上述方案中,由于P(X)不变,比较P(y1|X)和P(y2|X)时只需要比较P(X|y1)P(y1)和P(X|y2)P(y2)。而根据公式可以得出,比较P(X|y1)P(y1)和P(X|y2)P(y2)时只需要比较与。在某些实施方式下,对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测的至少其中两项,以获得与其对应的5种特征属性的至少其中两种特征属性。在某些实施方式下,对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测,以获得与其对应的5种特征属性。在某些实施方式下,特征库匹配检测包括:危险函数检测、危险文件后缀检测、敏感文件名检测和内容关键字检测的至少其中之一。上述各实施方式中:文本重合指数的计算方法是:设文本B={b1,b2,……bk},是一个包含了K个字符的字符串,文本B的文本重合指数记为lc(B),定义为文本B中两个随机字符相同的概率。文本B的文本重合指数lc(B)的计算公式如下:lc(B)=Σk=1K(fk*(fk-1))/K(K-1),]]>其中fk代表文本B中字母bk出现的比率。文本信息熵Info(A)计算公式如下:Info(A)=-↑n=1255pnlog2pn(n≠127)=-↑n=1255xnslog2xns(n≠127),]]>其中n为ASCII码,不过对于n=127(空格)的情况无意义,将其去除;pn为第n位ASCII码在当前文本出现的概率,xn为第n位ASCII码在当前文本出现的次数,s为当前文本的总字符数。文本信息熵Info(A)越大,文本文件为webshell的可能性越大。特征库匹配检测包括检测以下几种与webshell具有高度相关性的特征:危险函数,例如:eval、exec、system、passthru、shell_exec、assert、base64_decode等。危险文件后缀,例如php4、php5、asa、cer、jspx、cfm、war、asp、php等。敏感的文件名,例如cmd、websell、shell、backdoor、chopper等。内容关键字,很多家族性的webshell都会包含一些关键字,或者特殊指令,可以使用正则表达式来识别这些特征。文件属性检测的项目包括但不限于文件的创建时间,修改时间,所有者,文件类型权限等,判断在一个目录中与其他文件的差异性。图2示意了本发明所述的webshell的检测系统在一种实施方式下的结构。如图2所示,该webshell的检测系统包括:设置在web应用服务器1上的代理单元2,以及服务器3。上述webshell的检测系统中,代理单元2根据服务器3发出的指令负责对web目录进行webshell检测,上传样本,删除样本等操作。服务器3作为代理单元2的控制端,负责任务调度,检测结果分析,结果报警,web管理界面等功能。该webshell的检测系统的工作流程包括步骤:代理单元2根据服务器3的指令采用下述步骤对webshell进行检测(由于该检测系统基于上述检测方法实现,该步骤流程可直接参考图1):遍历web应用服务器1上的web目录中的文件,对文件的特征进行检测,获得N种特征属性;构建特征属性集合X={a1,a2,a3,……an},其中a1,a2,a3,……an分别对应表示N种特征属性;构建类别集合C={y1,y2},其中y1表示文件不是webshell,y2表示文件是webshell;分别计算P(y1|X)和P(y2|X),并根据计算结果进行判断:如果P(y1|X)>P(y2|X),则判断文件不是webshell,反之则判断文件是webshell;其中,计算P(y1|X)和P(y2|X)的步骤为:(1)获取足够的webshell样本以及正常文件样本,训练统计出文件分别为y1和y2时,其特征属性分别是a1,a2,a3,……an的概率P(a1|y1),P(a1|y2),P(a2|y1),P(a2|y2),……,P(an|y1),P(an|y2);(2)根据下述模型公式计算出P(y1|X)和P(y2|X):P(yi|X)=P(X|yi)P(yi)P(X),]]>,其中,i为1或2,P(yi|X)表示文件出现特征属性集合为X时文件为yi的概率,P(X|yi)表示文件为yi时文件出现特征属性集合为X的概率,P(X)表示所有所述样本中一个文件出现特征属性集合为X的概率,P(yi)表示所有所述样本中类别为yi的概率;其中,代理单元2将检测到webshell的检测结果传输至服务器3。该检测结果包括被判断为webshell的文件的属性以及样本。服务器3根据该检测结果进行报警,为用户提供分析、展示以及删除等管理界面。上述方案中,由于P(X)不变,比较P(y1|X)和P(y2|X)时只需要比较P(X|y1)P(y1)和P(X|y2)P(y2)。而根据公式可以得出,比较P(X|y1)P(y1)和P(X|y2)P(y2)时只需要比较与。在某些实施方式下,服务器3在接收到代理单元2传输的检测结果后发出报警。在某些实施方式下,对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测的至少其中两项,以获得与其对应的5种特征属性的至少其中两种特征属性。在某些实施方式下,对文件的特征进行检测至少包括:计算文本重合指数、计算文本信息熵、检测最长单词或字符串、特征库匹配检测和文件属性检测,以获得与其对应的5种特征属性。在某些实施方式下,特征库匹配检测包括:危险函数检测、危险文件后缀检测、敏感文件名检测和内容关键字检测的至少其中之一。在某些实施方式下,代理单元2还将检测到webshell的文件传输至服务器3。上述各实施方式中:文本重合指数的计算方法是:设文本B={b1,b2,……bk},是一个包含了K个字符的字符串,文本B的文本重合指数记为lc(B),定义为文本B中两个随机字符相同的概率。文本B的文本重合指数lc(B)的计算公式如下:lc(B)=Σk=1K(fk*(fk-1))/K(K-1),]]>其中fk代表文本B中字母bk出现的比率。文本信息熵Info(A)计算公式如下:Info(A)=-↑n=1255pnlog2pn(n≠127)=-↑n=1255xnslog2xns(n≠127),]]>其中n为ASCII码,不过对于n=127(空格)的情况无意义,将其去除;pn为第n位ASCII码在当前文本出现的概率,xn为第n位ASCII码在当前文本出现的次数,s为当前文本的总字符数。文本信息熵Info(A)越大,文本文件为webshell的可能性越大。特征库匹配检测包括检测以下几种与webshell具有高度相关性的特征:危险函数,例如:eval、exec、system、passthru、shell_exec、assert、base64_decode等。危险文件后缀,例如php4、php5、asa、cer、jspx、cfm、war、asp、php等。敏感的文件名,例如cmd、websell、shell、backdoor、chopper等。内容关键字,很多家族性的webshell都会包含一些关键字,或者特殊指令,可以使用正则表达式来识别这些特征。文件属性检测的项目包括但不限于文件的创建时间,修改时间,所有者,文件类型权限等,判断在一个目录中与其他文件的差异性。需要注意的是,以上列举的仅为本发明的具体实施例,显然本发明不限于以上实施例,随之有着许多的类似变化。本领域的技术人员如果从本发明公开的内容直接导出或联想到的所有变形,均应属于本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1