一种Webshell的检测方法及装置与流程

文档序号:11215689阅读:1288来源:国知局
一种Webshell的检测方法及装置与流程

本申请涉及计算机领域,特别涉及一种webshell的检测方法及装置。



背景技术:

webshell俗称网页后门,就是以动态服务器页面(activeserverpage,asp)、超文本预处理器(hypertextpreprocessor,php)、java服务器页面(javaserverpages,jsp)或者通用网关接口(commongatewayinterface,cgi)等网页文件形式存在的一种命令执行环境。

黑客在入侵了一个网站后,通过上传一个对服务器具有某种操作权限的webshell程序,比如:执行系统命令、删除web页面、修改主页等操作。而这个webshell程序一般是和asp、php、jsp等正常的页面程序混在一起的,网站管理人员一般很难发现,黑客从而利用这一特性进行长期操控网站及服务器。

目前,对webshell的检测通常采用静态webshell检测和动态webshell检测两种方法:

1、所谓静态webshell检测,主要是对文件内容进行检测,检测是否包含webshell特征,如,匹配webshell常用函数等等。

然而,针对静态检测手段,黑客很容易采用以下方法绕过:如代码加密、代码混淆等等,因而静态代码检测规则很难发现各种千奇百怪的webshell代码,并且静态代码检测手段完全依赖于人工规则、没有主动识别、自主学习性。因此静态检测手段会带造成大量的漏报和误报。

2、所谓动态webshell检测,即是利用沙箱技术,将可疑文件放在沙箱中执行,根据可疑文件在沙箱中的运行特征来检测。此方案相对于静态代码检测手段可以绕过代码加密,但是,大多数webshell操作都是通过传递参数来触发的, 因而,如果可疑文件在沙箱中没有传递正常的参数,是不能触发相应的webshell操作,因此沙箱也无法捕获相应特征,从而导致大量漏报。



技术实现要素:

本申请实施例提供一种webshell的检测方法及装置。用以提高webshell检测方案的检测精确度。

本申请实施例提供的具体技术方案如下:

一种webshell的检测方法,包括:

基于系统访问日志,提取出每一个页面的访问路径和referer(即来源页面信息),以及提取出所有源ip,其中,一个页面的referer表征访问所述一个页面之前访问的上一个页面的访问路径;

基于各个页面的访问路径以及referer,筛选出与其他页面之间不存在访问链接的第一类可疑页面,获得第一类可疑页面集合;

基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,获得第二类可疑页面集合;

将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面。

可选的,基于系统访问日志,提取出每一个页面的访问路径和referer,包括:

获得系统访问日志中记录的各个页面;

从获得的各个页面中去除静态页面;

针对去除静态页面后的每一个页面的统一资源定位url地址,进行参数去除,提取出每一个页面的访问路径;

基于系统访问日志中记录的各个页面的访问链接顺序,分别确定每一个页面的referer。

可选的,基于各个页面的访问路径以及referer,筛选出与其他页面不存在 访问链接的第一类可疑页面,包括:

基于各个页面的访问路径以及referer,绘制表征各个页面之间访问链接关系的有向图,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面,将所有孤立页面作为所述第一类可疑页面;

可选的,基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,包括:

基于各个页面的访问路径以及所有源ip,绘制表征各个源ip和各个页面之间访问关系的二部图,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面,将所有异常页面作为所述第二类可疑页面。

可选的,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面,包括:

基于所述有向图,确定任意一页面对应的referer为空时,判定所述任意一页面为孤立页面;以及,

基于所述有向图,确定任意一页面对应的referer所指向的访问路径,在访问所述任意一页面之前未曾访问时,判定所述任意一页面为孤立页面。

可选的,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面,包括:

基于所述二部图,确定任意一页面关联的源ip的总数目小于第一预设门限,且关联的源ip归属的网段的总数目小于第二预设门限时,确定所述任意一页面为异常页面。

可选的,将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面,包括:

将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,直接确定为包含webshell的页面;或者,

依次计算第一类可疑页面集合和第二类可疑页面集合的交集中包含的每一个页面,与预设的webshell样本集合的相似度,并将相似度达到设定阈值的 页面确定为包含webshell的页面。

一种webshell的检测装置,包括:

提取单元,用于基于系统访问日志,提取出每一个页面的访问路径和来源页面信息referer,以及提取出所有源ip,其中,一个页面的referer表征访问所述一个页面之前访问的上一个页面的访问路径;

第一筛选单元,用于基于各个页面的访问路径以及referer,筛选出与其他页面之间不存在访问链接的第一类可疑页面,获得第一类可疑页面集合;

第二筛选单元,用于基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,获得第二类可疑页面集合;

处理单元,用于将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面。

可选的,基于系统访问日志,提取出每一个页面的访问路径和referer时,所述提取单元用于:

获得系统访问日志中记录的各个页面;

从获得的各个页面中去除静态页面;

针对去除静态页面后的每一个页面的统一资源定位url地址,进行参数去除,提取出每一个页面的访问路径;

基于系统访问日志中记录的各个页面的访问链接顺序,分别确定每一个页面的referer。

可选的,基于各个页面的访问路径以及referer,筛选出与其他页面不存在访问链接的第一类可疑页面时,所述第一筛选单元用于:

基于各个页面的访问路径以及referer,绘制表征各个页面之间访问链接关系的有向图,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面,将所有孤立页面作为所述第一类可疑页面;

可选的,基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的 状态不符合预设的访问条件的第二类可疑页面时,所述第二筛选单元用于:

基于各个页面的访问路径以及所有源ip,绘制表征各个源ip和各个页面之间访问关系的二部图,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面,将所有异常页面作为所述第二类可疑页面。

可选的,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面时,所述第一筛选单元用于,包括:

基于所述有向图,确定任意一页面对应的referer为空时,判定所述任意一页面为孤立页面;以及,

基于所述有向图,确定任意一页面对应的referer所指向的访问路径,在访问所述任意一页面之前未曾访问时,判定所述任意一页面为孤立页面。

可选的,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面时,所述第二筛选单元用于,包括:

基于所述二部图,确定任意一页面关联的源ip的总数目小于第一预设门限,且关联的源ip归属的网段的总数目小于第二预设门限时,确定所述任意一页面为异常页面。

可选的,将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面时,所述处理单元用于:

将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,直接确定为包含webshell的页面;或者,

依次计算第一类可疑页面集合和第二类可疑页面集合的交集中包含的每一个页面,与预设的webshell样本集合的相似度,并将相似度达到设定阈值的页面确定为包含webshell的页面。

本申请实施例中,基于系统访问日志表征的各个页面的访问关系建立图模型,筛选出与其他页面之间不存在访问链接的第一类可疑页面集合,以及筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,再基于第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,进行 webshell告警。这样,可以将各个页面的访问状态通过图模型进行精准绘制,令可疑页面的特征在图模型中被更为直观地展现出来,从而能够精准地筛选出webshell所在的页面,这不但提高了webshell的检测精确度,降低了漏报率和误报率,同时,也降低算法复杂度,提高了检测效率。

附图说明

图1为本申请实施例中有向图示意图;

图2为本申请实施例中二部分图示意图;

图3为本申请实施例中webshell检测流程图;

图4为本申请实施例中检测装置功能结构示意图。

具体实施方式

为了提高webshell检测方案的检测精确度,本申请实施例中,在系统访问日志的基础上,基于各个页面的访问关系建立图模型,再基于图模型,筛选出访问情况异常的可疑页面,将这些可疑页面作为webshell进行告警,从而可以实现主动学习,无需人工干预。

下面结合附图对本申请优选的实施方式进行详细说明。

首先,需要对本申请中涉及的一些基本概念进行介绍。

本申请实施例中,需要基于各个页面建立图模型,所谓图(graph)是一种较线性表和树更为复杂的数据结构。在线性表中,数据元素之间仅有线性关系,即每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,虽然每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关;而在图形结构中,结点之间的关系可以是任意的,任意两个数据元素之间都可能相关。图g由两个集合v和e组成,记为:g=(v,e),其中,v是顶点的有穷非空集合,e是v中顶点偶对(称为边)的有穷集。通常,也将图g的顶点集和边集分别记为v(g)和e(g)。 e(g)可以是空集。若e(g)为空,则图g只有顶点而没有边。

图形结构有许多种实现方式,本申请实施例中,主要使用到了有向图和二部图。

所谓有向图,直观来说,若图中的每条边都是有方向的,则称为有向图。有向图中的边是由两个顶点组成的有序对,有序对通常用尖括号表示,如<vi,vj>表示一条有向边,其中vi是边的始点,vj是边的终点。<vi,vj>和<vj,vi>代表两条不同的有向边。具体举例如图1所示。

所谓二部图,二部图又称作二分图,是图论中的一种特殊模型。设g=(v,e)是一个无向图,如果顶点v可分割为两个互不相交的子集(a)和子集(b),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(iina,jinb),则称图g为一个二部图。具体举例如图2所示。

根据安全经验,webshell在访问上有以下特征:1、页面属于孤立页面,2、由少量的源ip发起访问。

基于特征1,可以将某个站点下的每个页面都看作一个点,包括webshell与正常页面,所有点组成一张有向图,如,页面a连接到页面b,也就表示在这个图中存在一条边是a->b,在整个站点下,一定不会存在某个页面链接到webshell的。因为为了保证webshell自身的隐藏性,黑客往往都是直接访问webshell,因此,webshell在有向图中一定是一个孤立节点,即一个孤立页面。

基于特征2,通常情况下,webshell访问者单一,因此可以针对webshell的访问者,也就是源ip维度来分析,一般只有攻击者自己才会访问webshell,而攻击者在网络上的源ip一般波动不大,因此,将源ip与页面的访问路径的之间关系的可以看成一张二部图,在二部图中,webshell的入度数目一定比较小。

基于上述实现原理,参阅图3所示,本申请实施例中,进行webshell检测的详细流程如下:

步骤300:获取系统访问日志,获得系统访问日志中记录的各个页面。

具体的,可以从服务器侧获取某一网站全部的系统访问日志,系统访问日志中记录了该网站中各个页面的访问情况,如,访问时间,访问者,访问来源等等。

步骤301:从获得的各个页面中去除静态页面。

这是因为,webshell通常为动态页面,因此,为了有效降低计算量,可以预先去除系统访问日志中记录的静态页面。

当然,若静态页面的数量较少,则也可以不去除静态页面,在此不再赘述。

步骤302:针对去除静态页面后的各个页面的url地址,进行参数去除,提取出各个页面的访问路径。

具体的,每个页面的url地址中均会包含有多种参数,这些参数对于绘制图模型没有用处,并且会降低图模型的处理效率,因此,需要预先去除各个页面url地址中的各类参数,从而提取出各个页面的访问路径,记为path。

例如,存在url:http://www.example/list.php?type=news&limit=10,根据http协议规定,存在两个参数:type=news和limit=10,去掉参数后的访问路径则为:http://www.example/list.php。

步骤303:基于系统访问日志中记录的各个页面的访问链接顺序,分别确定每一个页面的referer,以及确定所有的源ip。

所谓的referer,即是在访问一个页面之前所访问的上一个页面的访问路径,大部分的页面都有对应的referer,根据系统访问日志中记录的页面访问顺序,即可以获知每一个页面的referer。

例如,用户先访问页面1,再通过页面1链接至页面2,以及继续通过页面2链接至页面3,页面1的访问路径为path1,页面2的访问路径为path2,那么,path1即是页面2的referer,path2即是页面3的referer。

而源ip,即是指访问发起者,根据系统访问日志的记录,可以获知源ip的数量,以及源ip归属的网段。

步骤304:划分会话周期,即划分session。

所谓session,即是所统计的时间范围,因为系统访问日志中可能记录了很长一段时间内的访问信息,因此,为了有针对性的绘制图模型,需要确定会话周期。

例如,可以根据日志流量进行会话周期的划分,将每一个源ip在同一个网站下30分钟的访问划分为一个会话周期。

步骤305:基于各个页面的访问路径以及referer,绘制表征各个页面之间访问链接关系的有向图。

例如,参阅图1所示,可以整理同一个会话周期内的各个网站的referer与path的对应关系,将各个页面绘制为节点,将各个页面之间的访问顺序绘制为有向边,从而形成如图1所示的有向图。

步骤306:基于上述有向图筛选出与其他页面之间不存在访问链接的孤立页面,将所有孤立页面作为第一类可疑页面集合。

例如,参阅图1所示,节点是否异常,由其所处的环境中的其他节点决定,如果大量节点指向某个节点x,也就是节点x的入度比较大,那么节点x对应的页面是webshell的概率就比较小,相反,如果节点x在图1中是一个孤立节点(入度为0),那么,节点x就很可能是webshell。

具体的,仍以节点x为例,基于上述有向图,在一个会话周期内,确定节点x对应的referer为空时,判定节点x对应的页面为孤立页面;以及,基于上述有向图,确定节点x对应的referer所指向的访问路径,在访问节点x之前未曾访问时(具体访问历史记录可依据系统访问日志查询),确定referer是伪造的,并判定节点x对应的页面为孤立页面。

实际应用中,webshell一定为孤立页面,但是孤立页面却并不一定都是webshell。这是因为:对于如robots.txt、corssdomain.xml、restapi等等链接而言,这些链接所指向的节点为正常页面,但这些节点却又无其他节点指向,因而也符合孤立页面的特征,但却不是webshell。因此,为了避免误判,还需要继续执行后续操作。

步骤307:基于各个页面的访问路径以及所有源ip,绘制表征各个源ip和各个页面之间访问关系的二部图。

例如:参阅图1所示,根据系统访问日志的记录,可以获知各个源ip最终指向了哪一个访问路径,从而形成如图1所示的二部图。

当然,绘制二部图之前需要对源ip进行去重处理,在此不再赘述。

步骤308:基于上述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面,将所有异常页面作为第二类可疑页面集合。

通常情况下,一个异常节点,大多数正常用户是不会去访问的,只有少量的攻击者会去访问,因此,基于源ip与页面的path之间的访问关系绘制如图2所示二部图,可以挑选出入度较少的节点,入度越少说明页面被访问的次数越少,那么页面是webshell的概率就越高。

具体的,步骤308中所描述的被源ip访问的状态不符合预设条件,即是指“节点入度较少”,而“节点入度较少”则可以从以下两个角度描述(以节点x为例):

1)节点x关联的源ip的总数目小于第一预设门限。

例如,与节点x关联的源ip的总数目小于20个。

2)节点x关联的源ip归属的网段的总数目小于第二预设门限。

例如,与节点x关联的源ip归属的网段的总数目小于5个。

上述两个条件必须同时满足,才能够符合“节点入度较少”这一预设条件,只满足其中之一的节点对应的页面并不被视为异常页面。

步骤309:将基于第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面。

具体的,步骤309可以采用但不限于以下两种实现方式:

第一种方式为:将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,直接确定为包含webshell的页面。。

通常情况下,在有向图和二部图中均可疑的节点,在很大概率上会出现异 常,此时,可以直接将有向图和二部图的交集中的所有节点对应的页面确定为包含webshell的页面,进一步地,可以进行告警,这样,可以在误报率处于合理范围内时,有效提高处理效率。

第二种方式为:依次计算第一类可疑页面集合和第二类可疑页面集合的交集中包含的每一个页面,与预设的webshell样本集合的相似度,并将相似度达到设定阈值的页面确定为包含webshell的页面。

采用第二种方式,主要是为了提高webshell检测精准度,因此,需要将有向图和二部图的交集中的所有节点对应的页面,依次与webshell样本集合进行相似度比较,任意一个页面与任意一个webshell样本的相似度达到设定阈值,即可以确定出现包含webshell的页面,进一步地,可以进行告警。

基于上述实施例,参阅图4所示,本申请实施例中,检测装置至少包括提取单元40、第一筛选单元41、第二筛选单元42和处理单元43,其中,

提取单元40,用于基于系统访问日志,提取出每一个页面的访问路径和来源页面信息referer,以及提取出所有源ip,其中,一个页面的referer表征访问所述一个页面之前访问的上一个页面的访问路径;

第一筛选单元41,用于基于各个页面的访问路径以及referer,筛选出与其他页面之间不存在访问链接的第一类可疑页面,获得第一类可疑页面集合;

第二筛选单元42,用于基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,获得第二类可疑页面集合;

处理单元43,用于将基于第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面。

可选的,基于系统访问日志,提取出每一个页面的访问路径和referer时,提取单元40用于:

获得系统访问日志中记录的各个页面;

从获得的各个页面中去除静态页面;

针对去除静态页面后的每一个页面的统一资源定位url地址,进行参数去除,提取出每一个页面的访问路径;

基于系统访问日志中记录的各个页面的访问链接顺序,分别确定每一个页面的referer。

可选的,基于各个页面的访问路径以及referer,筛选出与其他页面不存在访问链接的第一类可疑页面时,第一筛选单元41用于:

基于各个页面的访问路径以及referer,绘制表征各个页面之间访问链接关系的有向图,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面,将所有孤立页面作为所述第一类可疑页面;

基于各个页面的访问路径以及所有源ip,筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面时,第二筛选单元42用于:

基于各个页面的访问路径以及所有源ip,绘制表征各个源ip和各个页面之间访问关系的二部图,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面,将所有异常页面作为所述第二类可疑页面。

可选的,基于所述有向图筛选出与其他页面之间不存在访问链接的孤立页面时,第一筛选单元41用于,包括:

基于所述有向图,确定任意一页面对应的referer为空时,判定所述任意一页面为孤立页面;以及,

基于所述有向图,确定任意一页面对应的referer所指向的访问路径,在访问所述任意一页面之前未曾访问时,判定所述任意一页面为孤立页面。

可选的,基于所述二部图,筛选出被源ip访问的状态不符合预设条件的异常页面时,第二筛选单元42用于,包括:

基于所述二部图,确定任意一页面关联的源ip的总数目小于第一预设门限,且关联的源ip归属的网段的总数目小于第二预设门限时,确定所述任意一页面为异常页面。

可选的,将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所 有页面,确定为包含webshell的页面时,处理单元43用于:

将第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,直接确定为包含webshell的页面;或者,

依次计算第一类可疑页面集合和第二类可疑页面集合的交集中包含的每一个页面,与预设的webshell样本集合的相似度,并将相似度达到设定阈值的页面确定为包含webshell的页面。

综上所述,本申请实施例中,基于系统访问日志表征的各个页面的访问关系建立图模型,筛选出与其他页面之间不存在访问链接的第一类可疑页面集合,以及筛选出被源ip访问的状态不符合预设的访问条件的第二类可疑页面,再将基于第一类可疑页面集合和第二类可疑页面集合的交集中包含的所有页面,确定为包含webshell的页面。这样,可以将各个页面的访问状态通过图模型进行精准绘制,令可疑页面的特征在图模型中被更为直观地展现出来,从而能够精准地筛选出webshell所在的页面,这不但提高了webshell的检测精确度,降低了漏报率和误报率,同时,也降低算法复杂度,提高了检测效率。

进一步地,本申请实施例提供的技术方案可以实现主动学习,无需人工干预,大大降低了运维成本。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算 机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1