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

2024-06-15 16:38

本文主要是介绍思考:日志的聚类(由蜜罐日志引出),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

20210223 -

0. 引言

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

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

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

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

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

1. 日志的聚类

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

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

1.2 聚类的目的

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

1.3 日志表征的方式

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

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

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

这篇关于思考:日志的聚类(由蜜罐日志引出)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063995

相关文章

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.