Part1 前言
大家好,我是ABC_123。我曾经花费时间搭建各种Web服务器、数据库环境去研究分析日志,使用的工具从使用系统自带命令去分析日志,到自动化的360星图,再到后期的Logparser、ELK(ElastiSearch、Kibana、Logstash)等等。到最后我发现还是Splunk这款商业版工具用起来更顺手一些,我个人认为这款软件比ELK要好用得多,只不过ELK免费开源可以包装成产品,所以受到大家追捧,反之Splunk价格昂贵,推广就很受限制。把Splunk用好了足以应付现有的各种日志分析场景,堪称一款神器。
Splunk这款商业工具是美国人写的(ELK也是美国人做的),于2004年开始研发更新,可以将设备和软件产生的日志数据、性能数据、网络数据包等数据进行采集,然后进行索引、调查、监控、可视化等,当然也可以使用它辅助蓝队日志分析工作,很多用户也用它来做产品营销分析,新版的Splunk还可以结合先前的数据对未来一段时间内的客户访问量进行预测。
欢迎关注我的公众号"ABC123安全研究实验室",99%原创,不发水文,不发广告。
Part2Splunk使用介绍
接下来简单介绍一下Splunk的搜索语法:
支持布尔运算符(AND/OR/NOT),必须是大写
status=200 NOT action=purchase
status=200 action!=purchase
500 select 查找包含"500"和"select"字样的所有事件
500 sel* 查找包含"500"和"sel"开头单词的所有事件
status=500 使用=返回准确结果
head n //返回前n个
tail n //返回后n个
top //显示字段最常见/出现次数最多的值
rare //显示字段出现次数最少的值
limit //限制查询,如:limit 5,限制结果的前5条
rename xx as zz //为xx字段设置别名为zz,多个之间用 ,隔开
fields //保留或删除搜索结果中的字段。fiels – xx 删除xx字段,保留则不需要 – 符号
stats count() 括号中可以插入字段,主要对事件进行计数
stats dc()distinct count,去重之后对唯一值进行统计
stats values() 去重复后列出括号中的字段内容
stats avg() 求平均值
如下图所示,这张图是从很老的一个ppt中改的,可以很直观看到Splunk的界面及使用方法。
以下是Splunk的仪表板界面的示例,在这个界面中,蓝队分析人员可以将各种日志分析的分析图表汇总在一起,展示出来非常直观漂亮。
Splunk导入日志文件的方法有很多,我比较习惯用以下方式导入日志,具体操作如下:设置-->数据输入--> 文件和目录-->新本地文件和目录
然后点击“文件或目录”旁边的“浏览”按钮,选择一个本机的一个文件夹,比如说c:\log111
后续只要把需要分析的日志文件,放到此文件夹中,Splunk会自动进行导入。
在上述文件夹中放置好日志文件之后,打开Splunk的主界面,中间有一排绿色的柱状图,显示了每个时间段的Web访问次数,这里需要重点关注的是柱状图中突然出现的很高的柱状部分,极有可能是攻击者进行频繁操作的时间段。
如果需要对指定的日志文件进行日志分析,则只需要输入以下命令即可:source="C:\\log1111\\45_secure.txt"
使用如下语句,可以快速检索SQL注入攻击行为,为了减少误报,可以配合使用AND语句拼接IISCode!=404,排除响应码为404的搜索结果。如下图所示,结合柱状图可以知道,SQL注入攻击主要集中在柱状图所示的一个小时左右的时间段内,推测攻击者发现了sql注入漏洞,并实施了攻击。这里仅用了一个select关键字,因为攻击者想要使用sql注入漏洞去脱数据的话,select关键字几乎是必用的。
index=_* OR index=* sourcetype="SQL_Injectionex" select AND iisCode!=404
使用如下语句,可以快速分析XSS攻击行为,通过逻辑运算符AND筛选响应码为200的日志结果,Splunk可以支持等标签字符的分析,使用的时候需要把关键词加上双引号。
index=_* OR index=* sourcetype="SQL_Injectionex" "