公开/公告号CN107566371A
专利类型发明专利
公开/公告日2018-01-09
原文格式PDF
申请/专利权人 成都知道创宇信息技术有限公司;
申请/专利号CN201710791447.9
申请日2017-09-05
分类号
代理机构成都信博专利代理有限责任公司;
代理人张辉
地址 610000 四川省成都市高新区天府三街219号2栋11楼
入库时间 2023-06-19 04:13:39
法律状态公告日
法律状态信息
法律状态
2023-06-20
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L29/06 专利号:ZL2017107914479 变更事项:专利权人 变更前:成都知道创宇信息技术有限公司 变更后:成都知道创宇信息技术有限公司 变更事项:地址 变更前:610000 四川省成都市高新区天府三街219号2栋11楼 变更后:610000 四川省成都市高新区中国(四川)自由贸易试验区天府大道北段28号C座9楼
专利权人的姓名或者名称、地址的变更
2020-08-18
授权
授权
2018-02-02
实质审查的生效 IPC(主分类):H04L29/06 申请日:20170905
实质审查的生效
2018-01-09
公开
公开
技术领域
本发明涉及WebShell挖掘领域,特别是一种面向海量日志的WebShell挖掘方法。
背景技术
WebShell,顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问这些asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载文件,查看数据库,执行任意程序命令等)。由于WebShell其大多是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。
现有技术中,通过收集网络上公开的WebShell并分析其特征,或者添加一些敏感函数建立WebShell特征库,然后在网站的访问日志中匹配这些特征或敏感函数,如果匹配上,则人工再次确认是否为WebShell。其存在以下不足:1)基于特征匹配容易出现大量误报;2)WebShell特征随时变换,特征库不能完全包含所有的特征,容易出现遗漏。
发明内容
本发明所要解决的技术问题是提供一种面向海量日志的WebShell挖掘方法,用于在海量网站日志中分析出真实的WebShell,其基于单一入口类型网站特殊的网站结构,配合自动化检测过滤掉自定义404页面,缩小嫌疑范围,大大提高识别WebShell的精准度,从而降低人工分析的成本。
为解决上述技术问题,本发明采用的技术方案是:
一种面向海量日志的WebShell挖掘方法,包括以下步骤:
步骤1:收集单一入口类型的网站名单;
步骤2:对日志进行检测,即:步骤2.1:收集步骤1中确定的单一入口类型网站的访问日志;步骤2.2:在步骤2.1提取的日志中,提取出HTTP状态码仅为200的URL;步骤2.3:将步骤2.2中得到的URL去掉参数,并取出动态脚本类型的URL;步骤2.4:比较步骤2.3得到中的URL是否与步骤1中收集的与此URL对应域名的URL一致,如果一致则判断为正常访问;如果所比较的两个URL不一致则判断为高度疑似WebShell;
步骤3:检测可访问性,即:步骤3.1:获取步骤2.3中URL对应域名的404页面内容;步骤3.2:获取步骤2.3中URL的页面内容;步骤3.3:比较两次请求页面内容的莱文斯坦比,排除掉自定义404页面,以此判断该URL是否真实存在;步骤3.4:如果该URL真实存在则判断该URL为WebShell。
进一步的,所述步骤1具体为:步骤1.1:提取一段时间内所有返回HTTP 200状态码的网站访问日志并取出访问的URL;步骤1.2:将所有的URL去掉参数,取出动态脚本类型的URL;步骤1.3:以步骤1.2中URL的域名为单位,统计出每个域名出现不同URL的个数;步骤1.4:提取出只有一个URL的域名并确定该网站为单一入口类型网站。
进一步的,还步骤4:对步骤3的判断结果进行人工复检。
与现有技术相比,本发明的有益效果是:传统的基于WebShell特征库的日志匹配方法会出现大量的误报,比如在面对扫描器时,经常会触发特征规则,实际上它并不是一次真实的WebShell访问请求,本发明通过单一入口型网站特殊的访问模型,再配合自动化URL检测,可以大大减少人工审查的工作量。
附图说明
图1是本发明方法中单一入口型网站名单收集流程示意图。
图2是本发明方法中日志检测流程示意图。
图3是本发明方法中可访问性检测流程示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明主要是针对单一入口类型网站特殊的网站访问模型进行分析。在单一入口类型的网站中,所有网站功能都通过同一个URL进行路由,也就是全站只有一个URL,而绝大多数的WebShell都是单独的一个脚本文件,在访问的时候通常是直接访问该WebShell的路径。由此在对网站长期的监控中如果发现出现了类似这样异常的URL访问请求,则属于高风险访问,需要对其进行进一步的分析。
由于很多网站都有自定义404功能,所以经常会出现访问了一个不存在的URL,而网站返回的是HTTP200状态码,因此单从状态码是不能判断该URL所指向的资源是否真的存在。本发明中自动检测通过判断网页内容的莱文斯坦比来识别自定义404页面,过滤出真实有效的访问请求,由此来提高识别WebShell的精准度。详述如下:
一、收集单一入口类型网站名单
如图1所示,具体说明如下:
步骤1:提取一段时间内(如一个月)所有返回HTTP 200状态码的网站访问日志并取出访问的URL。如:
http://www.test.com.cn/index.php?id=1&act=login
http://www.abc.net/index.asp?id=1&act=login
http://www.host.cn/index.jsp?id=1&act=login
步骤2:将所有的URL去掉参数、取出动态脚本类型的URL。如:
http://www.test.com.cn/index.php
http://www.abc.net/index.asp
http://www.host.cn/index.jsp
步骤3:以步骤2中URL的域名为单位,统计出每个域名出现不同URL的个数。
步骤4:提取出只有一个URL的域名并确定该网站为单一入口类型网站。
二、对日志进行检测
如图2所示,具体说明如下:
步骤1:收集步骤一中确定的单一入口类型网站的访问日志。
步骤2:在步骤1提取的日志中,去除掉HTTP状态码不是200的URL。
步骤3:将步骤2中的URL去掉参数后并取出动态脚本类型的URL。
步骤4:比较步骤3中的URL是否与模块一中对应域名的URL一致,如果一致则判断为正常访问。
步骤5:如果两个URL不一致则判断为高度疑似WebShell。
三、可访问性检测
如图3所示,具体说明如下:
步骤1:获取步骤二中URL对应域名的404页面内容。
步骤2:获取步骤二中URL的页面内容。
步骤3:比较两次请求页面内容的莱文斯坦比排除掉自定义404页面,以此判断该URL是否真实存在。
步骤4:如果该URL真实存在则判断该URL为WebShell。
步骤三的作用就是识别自定义404页面从而排除掉无意义的访问日志。下面解释一下什么是自定义404页面和使用莱文斯坦比识别自定义404页面的原理。
莱文斯坦比是一种用于比较两个字符串之间相似度的算法,目前已经有很成熟的算法库来实现该算法,只需要提供两个字符串即可得到它们的相似度。而自定义404页面就是:按照HTTP协议规范,当访问一个存在的页面时,服务器返回200状态码,当访问一个不存在的页面时,服务器会反回404状态码,但是有些网站处于安全性考虑,即使访问一个不存在的网页,它也会返回一个200状态码(即访问成功),这样做可以防止某些恶意爬虫爬取网站数据,或者防止黑客猜测网站目录和文件,即出于安全性的考虑。
既然访问一个不存在的页面服务器不再返回404状态码,那么就不能再用这种方法来判断该页面是否存在。所以这里换了一种方式来判断,由于网站的404页面内容基本都是一致的,那么先访问一个肯定不存在的页面,比如:www.domain.com/aaa/bbb/ccc/dddd/eee.php,这个页面显示是不可能存在的,先把这个不存在的页面的html代码记录下来,然后在接下来的URL请求中,如果发现访问页面的html代码和这个不存在的页面的代码相似度很高,那么就判断它是一个不存在的页面,从而就过滤了自定义404页面。
机译: 在面向线程的测井系统中保存日志的设备和方法,能够轻松地跟踪面向线程的测井系统中的日志消息
机译: 基于逻辑回归的大规模海量数据挖掘方法
机译: 一种用于流数据的频繁并发事件组的单遍挖掘方法和一种用于流数据的频繁并发事件组的单遍挖掘方法