企业安全建设之搭建开源SIEM平台(下)

前言

SIEM(security information and event management),顾名思义就是针对安全信息和事件的管理系统,针对大多数企业是不便宜的安全系统,本文结合作者的经验介绍如何使用开源软件离线分析数据,使用算法挖掘未知攻击行为。

回顾系统架构

以WEB服务器日志为例,通过logstash搜集WEB服务器的查询日志,近实时备份到hdfs集群上,通过hadoop脚本离线分析攻击行为。

自定义日志格式

开启httpd自定义日志格式,记录User-Agen以及Referer

<IfModule logio_module> # You need to enable mod_logio.c to use %I and %O LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" combined

日志举例

180.76.152.166 - - [26/Feb/2017:13:12:37 +0800] "GET /wordpress/ HTTP/1.1" 200 17443 "http://180.76.190.79:80/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21" 180.76.152.166 - - [26/Feb/2017:13:12:37 +0800] "GET /wordpress/wp-json/ HTTP/1.1" 200 51789 "-" "print `env`" 180.76.152.166 - - [26/Feb/2017:13:12:38 +0800] "GET /wordpress/wp-admin/load-styles.php?c=0&dir=ltr&load[]=dashicons,buttons,forms,l10n,login&ver=Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vZXRjL3Bhc3N3ZAAucG5n HTTP/1.1" 200 35841 "http://180.76.190.79:80/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21" 180.76.152.166 - - [26/Feb/2017:13:12:38 +0800] "GET /wordpress/ HTTP/1.1" 200 17442 "http://180.76.190.79:80/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21"

测试环境

在wordpress目录下添加测试代码1.php,内容为phpinfo

针对1.php的访问日志

hadoop离线处理

hadoop是基于map,reduce模型

map脚本

reducer脚本

生成结果示例为:

- -> http://180.76.190.79/wordpress/wp-admin/1.php- -> http://180.76.190.79/wordpress/wp-admin/admin-ajax.php- -> http://180.76.190.79/wordpress/wp-admin/customize.phphttp://180.76.190.79/wordpress/ -> http://180.76.190.79/wordpress/wp-admin/edit-comments.phphttp://180.76.190.79/wordpress/ -> http://180.76.190.79/wordpress/wp-admin/profile.phphttp://180.76.190.79/wordpress/ -> http://180.76.190.79/wordpress/wp-login.phphttp://180.76.190.79/wordpress/ -> http://180.76.190.79/wordpress/xmlrpc.php

图算法

讲生成数据导入图数据库neo4j,满足webshell特征的为:

入度出度均为0 入度出度均为1且自己指向自己

neo4j

neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,因其嵌入式、高性能、轻量级等优势,越来越受到关注。

neo4j安装

https://neo4j.com/ 上下载安装包安装,默认配置即可

ne04j启动

以我的mac为例子,通过gui启动即可,默认密码为ne04j/ne04j,第一次登录会要求更改密码

GUI管理界面

python api库安装

sudo pip install neo4j-driver

下载JPype

https://pypi.python.org/pypi/JPype1

安装JPype

tar -zxvf JPype1-0.6.2.tar.gz cd JPype1-0.6.2sudo python setup.py install

将数据导入图数据库代码点击阅读原文查看。

生成有向图如下

查询入度为1出度均为0的结点或者查询入度出度均为1且指向自己的结点,由于把ref为空的情况也识别为”-”结点,所以入度为1出度均为0。

优化点

生产环境实际使用中,我们遇到误报分为以下几种:

主页,各种index页面(第一个误报就是这种) phpmyadmin、zabbix等运维管理后台 hadoop、elk等开源软件的控制台 API接口

这些通过短期加白可以有效解决,比较麻烦的是扫描器对结果的影响(第二个误报就是这种),这部分需要通过扫描器指纹或者使用高大上的人机算法来去掉干扰。

后记

使用算法来挖掘未知攻击行为是目前非常流行的一个研究方向,本文只是介绍了其中比较好理解和实现的一种算法,该算法并非我首创,不少安全公司也都或多或少有过实践。

篇幅有限,我将陆续在企业安全建设专题其他文章中由浅入深介绍其他算法。

算法或者说机器学习本质是科学规律在大数据集集合上趋势体现,所以很难做到精准报警,目前阶段还是需要通过各种规则和模型来辅助,不过对于挖掘未知攻击行为确实是一支奇兵。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-03-07

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猿湿Xoong

Android SystemUI(一):图文并茂的介绍 :D

3464
来自专栏极客猴

爬取网易云音乐精彩评论

故事的小黄花 从出生那年就飘着 童年的荡秋千 随记忆一直晃到现在 Re So So Si Do Si La So La Si Si Si Si La Si L...

1092
来自专栏*坤的Blog

Opera福利谷歌

2034
来自专栏FSociety

Python爬取猫眼「碟中谍」全部评论

昨天晚上看完碟中谍后,有点小激动,然后就有了这片文章。 我们将猫眼上碟中谍的全部评论保存下来,用于后期分析~ 总共评论3W条左右。

2663
来自专栏SDNLAB

SDNLAB技术分享(十四):ONOS项目介绍(下)

第二部分,创新项目及ONOS特性增强项目介绍 NFV相关 随着云计算、SDN、虚拟化等理念和技术的不断成熟,以通用替代专有将原本传统专业的网元设备上的网络功能提...

4379
来自专栏Python绿色通道

用Python打造属于自己的搜索引擎

打开Pycharm,然后New Project 选择Flask模块,然后会自动安装Flask库的,这里就不赘述了

1.3K4
来自专栏何俊林

Android Multimedia框架总结(十四)Camera框架初识及自定义相机案例

前言:国庆节告一段落,又是新一月,上月主要是围绕MediaPlayer相关展开,从今天开始,开始分析多媒体框架中的Camera模块,看下今天的Agenda: C...

3026
来自专栏JavaEdge

虚拟内存管理请求分页存储管理方式

3107
来自专栏阮一峰的网络日志

Unix目录结构的来历

Unix(包含Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。 ? 举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr子...

3103
来自专栏嵌入式程序猿

C8051F060单片机在数字电源控制器中的应用

引言 随着科技的发展,数字控制系统的应用越来越广泛。以前的模拟电源控制系统线路复杂,控制精度低,故障率高。因此开发全数字电源控制系统越来越重要。微控制器,微处理...

3136

扫码关注云+社区

领取腾讯云代金券