因为平时总是接触Web日志,但是苦于Web日志量大,windows下无法直接打开,linux下又得一个一个的去找,太麻烦,算是偷懒,第一次用shell命令写这个分析脚本,边写边改整理了将近1个星期,肯定不如有UI界面的好,但是作为一个Web日志分析小工具来说,也不是一无是处,各位看官也可以给点意见,可以一起帮忙完善这个脚本。
nginx中间件分析脚本 http://pan.baidu.com/s/1sjX33Hj Web中间件分析脚本 http://pan.baidu.com/s/1o74J2GU
自动分析中间件日志,通过从Web日志中,找出存在的SQL注入、XSS脚本攻击等攻击行为,进行筛选。
Web中间件分析脚本:目前仅支持IIS、apache、weblogic中间件 nginx中间件分析脚本:只支持nginx中间件
新加入了针对getshell、敏感文件、以及LFI文件包含攻击的HTTP响应码200和500的分析。并在屏幕输出时,显示每个攻击类型中,出现频率最多的前20个IP地址,并对攻击出现的次数进行统计。 整体脚本的思路:读取日志——->定义攻击特征—–>输出匹配到的含有攻击特征的记录——->输出 日志拷贝回来了,要解决的第一个问题就是读取,apahce日志命名格式为access.log、access_+时间戳。例如:access_2015-04-14.log,而weblogic日志,则是access.log+时间戳(access.log00914)。apache日志、weblog日志的共同点,就是都有access特征字符,知道了特征字符,就比较方便批量读取了。

一、读取文件

按照上面的思路,先解决读取问题。这里我用了判断语句,起初我是想写出类似于 access=more /usr/access.,将这个路径全部加到变量里,方便判断,因为在shell里,只能将固定文件、文件夹作为变量,变量中不能加*号(我是没找到别的方法,有知道大牛请提点下小弟),所以就想了个笨办法,用匹配关键词的方式来判断特定目录下,是apache日志,还是weblogic日志,还是IIS日志,具体判断方法如下:

这样的方式来进行判断,但是这样判断有个缺点,就是中间件日志在/usr/目录下,只能存在一种,比如同时存在apache和IIS的日志,就会优先判断apache的,进而不会执行IIS日志分析的语句。而且,为了不跟之前的历史数据混乱,在脚本执行开始,清空了下数据。

二、定义攻击特征

日志读取的问题解决了,接下来就是定义攻击特征的事儿了,攻击特征比较好定义。例如,SQL注入攻击的判断:

我把一些常见的SQL注入攻击的特征写到了里面,去掉了MSSQL数据库存储过程以及MSSQL数据库才会出现的一些注入语句。

三、输出匹配到的含有攻击特征的记录

将匹配到的攻击特征内容,重新输出到了另外一个log里面,相当于做了一次筛选/usr/nmgxy/sql/sql.log

然后二次分析这个筛选过的文件,统计SQL注入攻击出现的次数

输出完毕后,将攻击出现最多的前20个IP地址进行统计并显示到屏幕上

四、输出结果

这个在代码开头,创建了一些文件夹,用来存放筛选过的记录

脚本运行截图:

如何编写自己的Web日志分析脚本?-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客
如何编写自己的Web日志分析脚本?-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客

 

下图为统计出来的文件包含和目录穿越攻击样例

如何编写自己的Web日志分析脚本?-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客

因部分linux或centos系统中未安装中文环境包,可能导致脚本执行时中文部分出现乱码,可直接无视,直接通过vi编辑器来查看/usr/nmgxy/目录下的.log文件。

该脚本无法同时分析IIS和apache或nginx中间件日志,请保证/usr/目录下只有一种类型的中间件日志