思考:日志的聚类(由蜜罐日志引出)

20210223 -

0. 引言

去年中旬,研究过一段时间蜜罐的内容,也部署过几款开源的蜜罐,一些蜜罐自带了最后的展示界面,例如hfish,不过它属于粒度比较粗的,最终显示也仅仅有很少的信息;另一些蜜罐仅仅输出日志,需要自己进行数据的汇总和展示,不过这种也存在一个问题,例如cowrie,他把交互过程按照事件分类来输出日志,当时构建过程中使用了ELK的方式来进行日志展示,直接将进行输入,没有更多的中间性修改,文章发表在FreeBuf,《Cowrie蜜罐的Docker部署过程及Elasticsearch+Kibana可视化》。

蜜罐的功能,一方面能够捕获比较新的攻击样本,当时我也捕获了不少僵尸网络的样本;而另一方面也能获取到攻击的方式,例如poc到底是什么样的;在另外一篇文章中《全端口蜜罐的部署过程与数据分析》,利用无交互的方式,就能够捕获大量的扫描流量和攻击流量。

但是在关注这种蜜罐时,比较重点的任务应该是如何分析日志,当时我在分析全端口蜜罐日志的时候,就发现了这个问题,由于是一种无交互的蜜罐形似,而且部署过程中也不知道到底流量是针对哪个端口的,因为采用的是防火墙转发的方式。最后的日志是一种json形式,但是交互的信息无法直接还原,只能是利用字符串匹配初步进行匹配。

前面的说法主要是为了展现出来日志分析的重要性和难点,这篇文章打算从比较简单的角度来入手,通过聚类的方式,看看能不能更好地减少人工分析的参与。

本篇文章重点记录思考的过程,未必能够给出最终的答案

1. 日志的聚类

日志的聚类本质上属于相似度比较的过程,无论是结构化的还是非结构化的,每一条日志都是一个比较的单位,通过相似度比较发现他们是否是属于同一类。相似度比较的函数就比较多了,到底哪种方式比较适合就需要具体来尝试。

那么从这个角度来看,如何对日志进行表征是比较重要的问题,如果都是数值类型的,而且具备一定的实际意义,那么就更好了。而实际场景中,更多的是字符串类型的日志,例如http访问日志,特别是有些日志还是非结构化的,可能需要前期将关键信息提取处理进行结构化。

1.2 聚类的目的

普通机器学习中,聚类是针对无标签数据来出发的,数据没有标签,无法通过有监督的方式进行分类或者预测。在日志的聚类过程中,实际上也是为了能够找出相似的日志,发现攻击的日志。

1.3 日志表征的方式

前面也说过,对于数值型的数据,可以直接进行比较,例如使用欧氏距离;但是对于字符串的形式呢,虽然在某些场景下能够使用编辑距离这种实现,但是可用性并不强。

在目前的自然语言处理技术中,采用的技术如下:n-gram,tf-idf,word2vec等。
但是这些技术在实际的场景中能有多大的用处,本质上直接从词的角度来看,肯定能够直接或者结果,但是这种方式的实际意义有多大?也就是说是不是表征出来的信息的确能够代表处一定的意义呢?这是后续要思考的关键点。

(20210223 记录关于日志聚类的思考,感觉没有得到比较实质性的内容,主要是自己之前脑海中的一个问题,但是我感觉是有一定意义的。)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值