专栏首页黑白安全WEB访问日志自动化分析浅谈

WEB访问日志自动化分析浅谈

1.概况

最近经常需要分析WEB访问日志,从中发现非法请求,然后做相应安全检查,为了方便,所以写了一个日志分析平台,支持提交iis,apapche,tomcat,ngnix等日志格式,代码使用python语言。

另外,文章中所有的截图、日志都是使用工具扫描自己搭建的环境产生的日志,不涉及到任何用户。

2.架构

3.分析

3.1导入数据

这里并没有使用splunk之类的平台,而是根据日志的格式进行数据分割,然后存储到MongoDB中,比如apache的格式类似于

%h %l %u %t \"%r\" %>s %b

web访问日志的格式,类似于

1.1.1.1 - - [28/Oct/2017:01:58:11 +0800] "POST /admin/ HTTP/1.1" 200 14657

这里需要注意的是,如果直接使用split按照空格分割的话,会存在一些问题,比如日志中的时间([28/Oct/2017:01:58:11 +0800])中间也是存在空格的,可以用DictReader定义quotechar读取数据。

下图是我定义的日志格式,包含了常用的参数

常规的WEB访问日志是没有POST日志的,所以能分析的内容都是基于GET参数、请求路径等,但是有些WAF日志是记录了所有的请求内容,可以用来丰富。

下面分别介绍下可以使用的功能

3.2数据查询

数据查询是最基础的功能,可以根据时间,ip等查询,这样就可以定义某个IP所有的行为,或者夜间某个时间点的访问日志

3.2正则匹配

正则匹配可能是WAF经常使用的规则,分析WEB访问日志时,也经常会用到,例如可执行脚本在上传目录下(例如/images/cmd.aspx),那么这个文件就很有可能是webshell,常规的还有attachments|images|css|uploadfiles等,还有一些解析漏洞的格式都可以用来匹配。

针对敏感文件/目录的扫描则是判断文件的后缀、路径等,例如rar,bak,swp等

对于SQL注入、XSS等漏洞则是针对参数进行匹配,但是如果规则不够研究,可能会存在多个误报问题。

3.3机器学习

上面讲到,如果用正则匹配,那么会存在很多误报问题,所以我只定义了一部分严格的规则,保证匹配出来的一定是攻击的日志。对于其他的行为,则采用了机器学习模型机进行分类。

使用机器学习分类的重点和难点在于日志的收集和特征的选择;俗话说的好,正常总是基本相似,异常却各有各的异常,所以这里面的重点又到了异常日志的收集。

我从两个方面找了异常日志:

1.使用扫描器的模块扫描网站,比如使用SQLMAP扫描注入页面,那么WEB日志大多数都是SQL注入;或者使用WVS的XSS模块扫描页面,那日志里就有很多XSS的日志。

2.从GITHUB上搜索了很多个常用的poc和exp,然后进行分类。

这里我用脚本将访问日志的路径都删除,只保留了参数的值,正常日志如下图:

sql注入和xss的日志如下:

当然还有很多其他类型的日志,大家可以收集一下

使用TfidfVectorizer进行文本特征提取

TfidfVectorizer(ngram_range=(2,2))

然后用随机森林算法进行训练,准确率、召回率、F1参数

由于是第一个版本,所有还没有做过多的特征筛选和算法选择,后期慢慢改善算法。

3.4威胁情报

针对威胁情报,在日志分析中,主要用来分析IP,如果某个IP在一段时间内发生过情报,比如出现“远控服务器”,那么这个IP就应该被列为威胁IP,它的所有访问日志都应该被重点关注。所以把访问日志中所有的IP进行匹配一次,查看是否有恶意访问的信息

3.5统计分析

统计分析中主要是对IP和页面进行统计分析,比如一般的黑客访问都是用国外的代理IP访问,所以将国外的IP筛选出来,定位分析是否存在安全风险。

另外,针对webshell的访问,比较明显的特征是:由于webshell是孤岛存在,所以基本会被很少的IP访问,那么我们将某个页面被多少个IP访问过统计出来,数量少的可以着重分析。

4.总结

1.本文只是将WEB日志分析中常用的检查方法用python实现出来,但是仍然有很多不足,并且还有一些功能还没实现。 2.由于没有POST数据,所以分析存在很多局限性。 3.可以用机器学习的其他模型来尝试解决该问题。 4.欢迎大家指正,或者提供一些自己平时用到的分析方法,感谢感谢。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • it404 Hacker Games !激情一夏从我开始

    C4rpeDime
  • 北京检方发布《网络安全刑事司法保护白皮书》

    近年来,随着信息技术的发展,我国已成为全球网民数量第一的互联网大国,互联网在极大促进社会发展的同时,也带来网络安全及数据安全案件的高发。

    C4rpeDime
  • GDPR 生效后谷歌、FB 遭 19 起投诉 欧盟或进行隐私调查

    自从欧盟《通用数据保护条例》(GDPR)今年5月底生效以来,已经出现19起针对谷歌和Facebook及相关应用提交的跨境投诉,导致这两家公司和产品可能遭到欧盟的...

    C4rpeDime
  • Linux运维记 - 重启网卡后,网络不通

    不小心重启了线上服务器的网卡,结果整个网络不通了,就算使用127.0.0.1访问都不行,第一次遇到这种问题,当时就六神无主了,两个人排查了好久也没找到原因,万分...

    justmine
  • 海量Web日志分析 用Hadoop提取KPI统计指标

    Web日志包含着网站最重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值等。一般中型的网站(10W的PV以上),每天会产...

    机器学习AI算法工程
  • 《TKE学习》TKE服务中的日志采集 (九)

    日志采集功能是容器服务为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 Kafka、Elasticsearch或者腾讯云日志服...

    baron
  • Spring周边:日志——总结

    门面设计模式是面向对象设计模式中的一种,日志框架采用的就是这种模式,类似 JDBC 的设计理念。它只提供一套接口规范,自身不负责日志功能的实现,目的是让使用者不...

    WEBJ2EE
  • 转发 | IT运维分析与海量日志搜索

    1.1 从 IT Operation Management (ITOM) 到 IT Operation Analytics (ITOA)

    用户1593318
  • 云原生下日志方案的架构设计

    原文链接:https://yq.aliyun.com/articles/717779

    业余草
  • 猫头鹰的深夜翻译:日志--每个开发者需要了解的实时数据聚合

    我在大约六年前的一个较为巧合的时机加入了领英。当时我们正面临着单机应用,集中式数据库带来的挑战,并开始将其迁移成一组定制的分布式系统。这是一段很有趣的经历:我们...

    眯眯眼的猫头鹰

扫码关注云+社区

领取腾讯云代金券