写在前面
LZ是一个信息安全工程师,最近面对的安全告警分析越来越多。分析攻击的平台也越来越多,通常一轮下来就半个小时过去了。因为网络特殊性,包含了自身和外部的流量,但我只需要关注自己的网络情况,奈何安全设备的搜索能力都不够强,很多搜索条件做不到,于是就想借助日志分析平台高效分析。
之前借助过splunk导入linux的安全日志分析的,想着挑一些字段搞搞应该很简单,真的配套其他设备用起来没想到这么多坑,这次主要接入奇安信的天眼做介绍给各位安全同行抛砖引玉。
安装
网上关于splunk的安装教程很多,这里就不详细介绍了,我用的是windows版,接近傻瓜式的安装,主要是安装完后如果有防火墙的需要把默认的8000端口打开才能访问网页。
日志源配置-输入
奇安信的天眼平台可提供的告警字段选取还是很多的,配置起来也简单。
添加一条日志配置把告警日志开关打开,然后选择自己感兴趣的字段。我这里全选,端口选514.
日志源配置-接收
splunk选择设置-添加数据-监视数据
添加数据
写入刚定义的514端口
来源类型这里新建一个叫做安全设备的,类别选网络和安全。后面会用到。然后下一步就完成了。如无意外,告警日志应该很快会发送过来(再次强调如果装在服务器的,一定要确定514端口通不通,可以用抓包软件测试下)
点击左上角splunk,然后选择数据摘要就能看到系统为接受到的数据新建的索引了。
天眼传输过来的是json格式的log,正常来说splunk能够自动索引然后分析出告警字段的,可是很可惜,原始日志里在json体前面加了一串字符,导致系统认不出这是json格式了,把整个日志信息当做一条text来对待。
扰乱平台分析的字符串
这里来到了第一个难点,我想到的解决方法是在日志传入数据库的时候就将那穿多余的字符串干掉。可是splunk在国内并不算多人用,可以找的资料少之又少。经过各种搜索后,找到了这个:
[https://blog.csdn.net/BigDatayun/article/details/104982645]
介绍了几种方法脱敏数据源,其实同样可以用于我这个场景。不过作者并没做太详细的介绍,最后结合国内外的搜索,终于找到了方法。
通过自定义数据类型然后使用SEDCMD-功能,结合正则表达式,可以消除自己不想要的数据。
打开数据来源页面
编辑刚刚添加的安全设备日志类型
在索引提取的地方选择json,然后添加一个字段名称叫做"SEDCMD-"写上正则表达式
s/.*?\|\!alarm\|\!//g s/_origin/origin/g
这个表达式的意识就是s/代表启用正则,.*?|!alarm|!就是匹配刚才多出来的字段,后面两个斜杠之间留空就是代表替换成空。/g代表替换所有。后面那段是替换json里一个叫做_origin开头的字段,因为splunk定义了下划线开头的字段是隐藏的。
点击保存,然后重启splunk服务,再进搜索页面就能看到splunk很规范的识别出各个字段的信息了,可能有同学会问”有啥用“。肯定是为了更加方便个性化定制搜索啊!
可以看到左边很整齐的帮你整理出了告警字段
随便选中一个字段就能帮你统计什么类型攻击最高
现在可以自定义选中一些字段,搭配自己的分析思路去分析了。
进阶篇
虽然有了日志来源,也能识别出字段了,可是这么多ip看得是在眼花缭乱。于是想能不能把资产和ip匹配起来,只关心自己想要的资产呢。于是又开始了几天的疯狂搜索,终于实现了。说说思路
graph LR
导入资产csv --> 用jion方式把告警ip和资产ip连接起来(和sql的jion方式差不多)-->选择想要的字段--> 给字段重新命名
首先建立一张csv的资产表格,可以用excel表来做然后导出csv格式。表格必须包含最基本的ip字段,然后上传。
请添加图片描述
全部下一步就可以,主机字段值可写上“资产表”
再回到刚才的搜索页面,输入下面的搜索公式
source="udp:514" earliest=-2d@d | join origin.sip [search source="资产.csv" |rename 资产IP as "origin.sip"] | table "origin.sip" "origin.sport" "origin.dip" "origin.dport" "资产名称" "备注" "attack_type" "ioc" "access_time" "host_state" | rename origin.sip as "源IP" "origin.dip" as "目标IP" "origin.dport" as "目标端口" "origin.sport" as "源端口" "attack_type" as "攻击类型" "access_time" as "告警时间"
这里代码的意识就是搜索514的输入源,earliest=-2d@d 两天内的日志。
join origin.sip [search source="资产.csv" |rename 资产IP as "origin.sip"]
这个就是联合资产表查询,并且把资产表里叫做”资产IP“的字段改名成”origin.sip“字段,后面的table就是选择自己要关注的字段,再接下来就用rename这个方法去把我们关注的字段改名。
如无意外应该就能得到一张这样的搜索结果表单
因为两张表联合起来了,所以只能自定写代码选择查询时间,spunk的时间选择功能失效
这样我们就可以生成一张攻击报表的报表文件了,后面如果需要监控分析直接打开报表页面就知道最近什么资产出现过告警,排除哪些自己不要的结果(天眼搜索没得选不等于功能,这个最烦)。
甚至我们可以自定义告警计划,如果有信告警可以给自己发送邮件,这样就不会错过任何自己想要关注的告警了,又不至于太多垃圾告警