一种在海量日志中检测WebShell的方法与流程

文档序号:13033788阅读:1388来源:国知局

本发明涉及webshell检测领域,特别是一种在海量日志中检测webshell的方法。



背景技术:

webshell,顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后就可以使用浏览器来访问这些asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载文件,查看数据库,执行任意程序命令等)。由于webshell其大多是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。

现有技术对webshell的检查,是通过收集网络上公开的webshell并分析其请求特征,利用其建立webshell特征库,然后在网站的访问日志中匹配这些特征,如果匹配上,则人工再次确认是否为真实存在的webshell。其存在以下不足:1)基于特征匹配容易出现大量误报;2)webshell特征随时变换,特征库不能完全包含所有的特征,容易出现遗漏;3)有扫描时会产生大量的无效告警,增加人工分析工作量。

动态页面:一种可以动态生成网页文件的技术。

url:统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的url,它包含的信息指出文件的位置以及浏览器应该怎么处理它。



技术实现要素:

本发明所要解决的技术问题是提供一种在海量日志中检测webshell的方法,用于从海量攻击日志中分析出真实的webshell,通过使用基于网站历史请求的方法,筛选出新增动态文件,然后再通过复现请求确定是否是webshell,以此降低人工分析的成本。

为解决上述技术问题,本发明采用的技术方案是:

一种在海量日志中检测webshell的方法,包括以下步骤:

步骤1:提取相邻两天访问成功的动态页面请求日志;即读取请求日志,逐行处理,过滤出请求日志的url中包含.asp、.aspx、.jsp、.php的动态页面的请求日志,记第一天的动态页面请求日志的记录为log1,第二天动态页面请求日志的记录为log2;

步骤2:对步骤1中请求日志的记录抹除参数,只保留路径;即去除记录中问号“?”及问号之后内容,降低干扰,并将抹除参数后的记录存入对应集合path1与paht2中,path1为第一天的动态文件路径,path2为第二天的动态文件路径;

步骤3:计算新增页面集合path;即从第二天请求日志的记录的path2中排除第一天请求日志的记录的path1,再排除历史正常记录history,得到第二天相较第一天新增的页面集合path,表达式为path=path2–path1–history;其中,history为历史结果中非webshell的记录合集;第一次执行时,历史正常记录history为空集;

步骤4:重放集合path中每一条记录p,检查记录p是否为webshell,如果记录p是webshell,记录此webshell,如果记录p不是webshell,将记录p加入历史正常记录history集合中,即history=history∪{p};

步骤5:令原第二天为新的第一天,新的第二天为原第二天的后一天,即day1=day2,day2=day2+1,重复执行步骤1-4,筛选出webshell。

进一步的,步骤5中涉及到重复执行步骤1-4,设定重复执行的次数为7次。

与现有技术相比,本发明的有益效果是:基于webshell特征库的日志匹配方法会出现大量的告警信息,人工确认工作量十分巨大,使用本发明的基于历史动态页面记录的筛选方法,可以大幅减少人工工作量,迭代7天后,既可降低98%以上工作量。

附图说明

图1是本发明一种在海量日志中检测webshell的方法流程示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作进一步详细的说明

本发明主要用于海量日志,通过计算基于历史日志的差集,筛选出新增动态页面,再通过重放来检查是否是webshell。如图1所示,具体说明如下:

步骤1:提取相邻两天访问成功的动态页面请求日志,即读取请求日志,逐行处理,过滤出请求日志的url中包含.asp、.aspx、.jsp、.php等动态页面的请求日志。

例如:

提取出第一天符合条件的请求日志的集合为log1;

http://blog.knownsec.com/index.php?s=12

http://blog.knownsec.com/index.php?s=1024

http://php.weather.sina.com.cn/iframe/index/w_cl.php

http://aj.hzgaj.gov.cn/about.jsp

http://www.cdairport.com/xwgg1_show1.jsp?aid=457

提取出第二天符合条件的请求日志的集合为log2;

http://blog.knownsec.com/index.php?s=12

http://php.weather.sina.com.cn/iframe/index/w_cl.php

http://aj.hzgaj.gov.cn/about.jsp

http://daoyou-chaxun.cnta.gov.cn/single_info/selectlogin_1.asp

http://www.ga.dl.gov.cn/intro/introduction.asp?type=2

步骤2对步骤1中请求日志的记录抹除参数,只保留路径;即去除记录中问号“?”及问号之后内容,降低干扰,并将抹除参数后的记录存入对应集合path1与paht2中,path1为第一天的动态文件路径,path2为第二天的动态文件路径。

例如:

log1->path1

http://blog.knownsec.com/index.php

http://php.weather.sina.com.cn/iframe/index/w_cl.php

http://aj.hzgaj.gov.cn/about.jsp

http://www.cdairport.com/xwgg1_show1.jsp

log2->path2

http://blog.knownsec.com/index.php

http://php.weather.sina.com.cn/iframe/index/w_cl.php

http://aj.hzgaj.gov.cn/about.jsp

http://daoyou-chaxun.cnta.gov.cn/single_info/selectlogin_1.asp

http://www.ga.dl.gov.cn/intro/introduction.asp

步骤3:计算新增页面集合path;即从第二天请求日志的记录的path2中排除第一天请求日志的记录的path1,再排除历史正常记录history,得到第二天相较第一天新增的页面集合path,表达式为path=path2–path1–history;其中,history为历史结果中非webshell的记录合集;第一次执行时,历史正常记录history为空集。

例如:

http://daoyou-chaxun.cnta.gov.cn/single_info/selectlogin_1.asp

http://www.ga.dl.gov.cn/intro/introduction.asp

步骤4:重放集合path中每一条记录p,检查记录p是否为webshell,如果记录p是webshell,记录此webshell,如果记录p不是webshell,将记录p加入历史正常记录history集合中,即history=history∪{p}。

步骤5:令day1=day2,day2=day2+1,重复执行步骤1-4。

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