使用图嵌入方式检测异常日志
原文:Log2vec: A Heterogeneous Graph Embedding Based Approach for Detecting Cyber Threats within Enterprise
现有的多数方法普遍考虑日志的序列关系和使用者的序列行为;但是没有考虑到其他关系,不可避免的导致对不同场景的表现不佳。
本文提出 log2vec方法,一种多种多样的基于模块化方法的图嵌入。首先使用启发式的方法将日志按照日志关系转为各种图。之后使用改进的图嵌入分配到上述各种图,这样可自动将每条日志转为低维向量。第三步是实际的检测算法可以区分恶意日志和正常日志到不同的簇。
使用log2vec原型评估,和最高水平的方法如深度学习和HMM相比,log2vec的性能明显优于它们,而且可以适应不同攻击场景。
系统一直是处于来自内部用户的攻击危险下的,他们有权限,可故意的使用权限影响系统的保密性,完整性,可用性。同时其他显露的攻击,先进持久的危险也威胁着系统。
现有方法的三个问题:
1. 如何同时检测上述提到的攻击场景,特别是提到的三种关系:日志中的序列关系;时间上的逻辑关系;host 间的相互关系。
2. 如何实施在APT场景中细密的检测,特别是发掘分析日志和host中的关系。
3. 日志在训练模型中没有攻击样本的情况下执行检测。
本文方法 log2vec 的三个步骤:
1. 图构建;构建日志的多种关系合并起来
2. 图嵌入(图表征学习);这是一种图处理方法,基于图中的关系学习么个操作的向量表征。向量化使用者的操作使能够直接比较他们的相似度,找到异常。
3. 检测算法;为有效分组恶意操作到独立的簇并找到他们。
图 2a 表示每天的日志,记录了使用者的操作,如登录,可以出设备的使用,网络操作;
图 2b 展示了一条日志的属性,如主题,操作类型,时间和host。
日志中的属性和关系可解释使用者的行为。
类似deep log 的方法主要捕捉日志中的因果和序列关系。
现有方法有如下不足:
1. 无法覆盖各种网络威胁
2. 无法准确检测恶意操作(日志级别),特别是无法深度挖掘和分析一日内日志间的关系。
3. 没有异常样本是无法执行检测训练
图构建:基于规则使用启发式的方法映射日志间的关系到图中,反映用户典型行为并发现异常操作
log2vec主要考虑三种关系:
1. 一天内日志的因果和序列关系。
2. 多天日志的逻辑关系。
3. 对象间的逻辑关系
将日志分为五个主要的属性:主体、对象、操作类型、时间和 host,称为元属性。
当设计规则作为三种关系时,考虑这些元属性不同的组合关联的日志,映射日志关系到图中。
规则 A:同一个用户的日志按照时间顺序连接,映射到图中;此时使用两个元属性,主体和时间。
规则 B:同一个用户和相同操作类型的日志按时间顺序连接,合并一天内的设备连接操作。
产生对应的三天的设备连接的三个序列后,使用另外的规则根据他们的相似度关联他们。由于三天内的序列涉及很多连接操作,远多于其他的,与其他的连接权重很低;这些不同可被图嵌入捕获。
通过不同日志属性的组合,设计不同的日志行为序列,映射多种一天内和一个host的日志的可行的关系到图中。在图嵌入和检测算法后,log2vec 产生的含有日志小的簇反映为异常操作簇,实际中,可疑簇的日志数量很小,甚至为 1。
根据log2vec中的规则,将日志转为序列或小分组,这些日志组成了多种图。每个规则,对应的边类型源自特别的关系。由于不同关系在不同场景有不同角色,使用多种边类型代替权重区分关系。
图嵌入,图表示学习,一种机器学习方法,可以将各种图的节点(日志)转为低维度向量。
图嵌入涉及随机游走和词向量;前者压缩每个节点的上下文并输入后者计算向量。
随机游走是常用的图形横向算法。假设游走者站在图中一个节点,根据每个边的权重和类型选择下一个节点。通过这个游走者产生的路径,即节点序列被作为这些节点的上下文。
词向量模型用于计算每个几点在其路径中的向量。路径作为自然语言中的一句话,通过词向量模型处理学习每个词(节点)的向量。log2vec改进了现有的图形嵌入。最新的版本可以基于攻击场景和不同的处理决定日志中每个关系的重要性。
图构建的规则
如上图,图结构;Log2vec 使用 10 条规则构建多种图。R1 表示规则 1。R1-R3对应同一天的因果和序列关系,构建了使用者每天的行为序列。R4-R6分别基于不同天的逻辑关系桥接了这些每日序列。R7 和 R9分别构建了用户的登录的网络浏览行为序列。R8 和 R10 根据 R7-R9对象的间的逻辑关系将它们桥接在一起。图中菱形即使异常日志。
构建同一天日志的图:
首先log2vec 考虑元属性的 主体和时间,构建用户每日行为序列,检测用户每日行为的常用方法。
规则 1(边 1):同一天的日志按照有最高权重的时间顺序连接。
规则 2(边 2):同一个host且同一天的日志按照最高权重时间顺序连接。
规则 3(边 3):具有相同操作类型,相同host且同一天的日志按照最高权重时间顺序连接。
图 4:构建同一天和多天的图的样例。
a:用户每天相同 host 的日志序列
b:连接用户每日日志序列。第二天和第三天的日志序列有相似的日志数量,因此这权重 w1高于w2和w3。a 中序列可根据规则 4 分别连接 b 中的序列。但考虑到规则 5,b 中第三天的序列应分为两个子序列,第三天的pc1和 pc2上的序列,只有pc1上相同的 host的日志可与 a 连接。
c:用户每日有相同操作类型及host的日志序列
构建数天日志的图:
为比较用户从规则1-3提取的每天的行为序列,使用规则4-6 分别中和对应规则1-3的元属性。
规则 4(边 4):每日日志序列被连接,它们的权重正相关与其所含有的日志数量的相关性。
规则 5(边 5):具有相同host的每日日志序列连接在一起,权重正相关于所含日志数量的相似度。
规则 6(边 6):具有相同操作类型、host 的每日日志序列被连接,权重正相关于其所含日志数量的相似度。
基于对象构建图:
规则 7(边 7):来自同源host,带有相同授权协议,通向相同目的地 host 的日志按照最高权重时间序列连接。
规则 8a(边 8):具有相同目的地 host和 相同来源,但授权协议不同的日志序列被连在一起,权重正相关于其所含有的日志数量的相似度。
规则 8b(边 8):具有不同目的地 host 或 不同来源,但授权协议相同的日志序列被连在一起,权重正相关于其所含有的日志数量的相似度。
图 5:使用对象(host 和 域名) 构建图的实例。
a:相同来源host、相同目的地和相同授权协议 的登录操作被连接进日志序列。第一个和第二个序列被连接是根据规则 8a,有相同的目的地 host 和来源 host。第一个和第三个被连接是根据规则 8b,有相同的授权协议。
b:通向相同的域名的日志被连如日志序列。
Log2vec 关联了不同域名的序列。
规则 9(边 9):具有相同host并通向相同域名的日志按照最高权重时间顺序排序。
规则 10(边 10):有相同 host但不同域名的日志序列连接在一起,权重正相关于通道模式和其含有的日志数量的相似度。
随机游走产生横向路径通过在边类型和权重中游走。
Log2vec 的改进是控制临近节点数量和压缩了不同比例的边类型的上下文,设计用于追踪不均衡数据和不同攻击场景的问题。
转移概率:节点 v 的转移概率
N(v) 表示 v 的特定的临近节点,W(Nv) 是 v 和 N(v) 间的权重和。
N(v) 不包括节点 v 的所有邻节点,只有满足三个子序列条件的邻节点组成。
t 是节点 v 的随机邻节点。
具体地定义五中边类型,{edge1,edge4},{edge2,edge5}, {edge3,edge6},{edge7,edge8} 和 {edge9,edge10},对应10条规则。
每次随机游走值使用一组。这样的定义可以提取每个节点的上下文。这样确保每两个节点最多共享一个边类型在 函数 1中。
例如,规定 Sn 属于 {edge1, edge4},edge 1结合了同一天的日志,而edge 4 关联了不同日期的日志序列。因此没有节点的边类型同时属于这两种类型。
内部组的边类型构建了日志序列,这样的序列中每个节点有两个邻节点。Log2vec 允许不重复经过上一个访问过的节点,因此实际上一个序列只有一个节点被访问。
外部组的边类型关联了多种日志序列。
因此每个序列中第一个和最后一个节点有很多邻节点,Log2vec需要调整这些节点的邻接点数量。
边类型集合比例:Log2vec 根据不同场景和压缩的不同上下文,判定每种边类型集合的重要性。
Log2vec 初始给定比例 1:1:1:1:1 给{edge1,edge4},{edge2,edge5},{edge3,edge6},{edge7,edge8}and{edge9,edge10};log2vec 选择{edge3,edge6},{edge7,edge8}and{edge9,edge10}调整,因为这三组集合覆盖了涉及异常的元属性。{edge1,edge4},{edge2,edge5}and{edge3,edge6}属于相同类型,都是关注与用户日常行为。
例如,如果某员工不同于其自身之前的行为和其他员工执行了大量登录操作,log2vec会增加 {edge7,edge8} 的比例值。实际中,这个值是其他结合数量的两倍,这里是 1:1:1:8:1。
此外,设置随机游走的数量为 r。每个比例值乘以 r 。如取 r = 10 为例,根据上述比例 1:1:1:8:1,log2vec执行随机游走80次在集合{edge7,edge8}上,在其他集合随机游走 10 次。
使用 word2vec 方法压缩图表示
Log2vec 使用Word2vec模型,skip-gram通过从多种图形产生的上下文即路径映射日志到低维度。
目标函数是最大化节点的邻节点概率。最大化公式:
c 是训练上下文的窗口。
聚类算法
使用日志间相似度达到聚类的效果,获得簇后,满足下列条件
V 代表集合中的所有日志,Ω1 是(相似度)阈值。C1 是随机选择的,sim使用cosine距离衡量日志相似度。
聚类后,log2vec根据簇中的日志数量排序。小的簇就可能是异常的。
Ω2 是log2vec产生的,代表最大的可疑簇的日志数量。
Ω2 = pro * total;total 是检测的日志数量,pro是异常日志与total的比例;通常 pro 设为 1%。
根据用户操作类型(如登录或文件操作),设置异常簇的数量,
nmal = nbp * nt,
nt 是操作类型的数量,
nbp是每种操作类型中异常行为模式的数量。
根据每种操作类型的属性信息选择 nbp 的值。例如,邮件操作涉及的属性有发送地址,接受地址,复写本,密送,附件等
当 Ω1 的值由 0 -> 1时,簇的数量趋于变大,因为相同簇中的两个日志有更高的相似性。
使用最大的可疑簇 Ω2 中的日志数量和恶意簇的数量 nmal 设置为Ω2。
本文提出log2vec方法,基于网络威胁检测的多种图嵌入。log2vec使用第一种在此领域的复杂且有效的多种图结构。为分析图,图嵌入的改进被设计成输出用检测算法处理。执行log2vec原型,评估结果显示由于现有的日志粒度的先进算法,可以检测有效检测不同场景的网络威胁。
使用图嵌入方式检测异常日志相关推荐
- 领域应用 | 到底什么时候使用图数据库?
本文转载自公众号:TigerGraph. 图数据库作为近两年快速发展的新型数据受到了市场极大的关注.但对于很多行业而言,图数据库还是一个很新的概念,企业管理人员和技术人员面临着同样的问题: 企业的业 ...
- java 异常 日志_java中的异常、断言、日志(一)
1.Java异常处理i.异常的概念和Java里面的异常体系结构1)基本概念:程序中的异常,一般成为例外情况,可以理解为是非正常情况,其他编程语言里面也有这样的情况,Java里面同样存在这样一个体系结构 ...
- [转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结
针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结 汪宇杰 2014-1-11 星期六 02:31 455 Reads 1 Comments 自定义错误页面和异常记录是个很古老的话题了, ...
- twitter如何以图搜图_没有完整图时,如何使用图深度学习?你需要了解流形学习2.0版本...
原标题:没有完整图时,如何使用图深度学习?你需要了解流形学习版本 流形学习,自 2000 年在著名的科学杂志<Science>被首次提出以来,已成为信息科学领域的研究热点.可能很多人会问, ...
- 【计算机原理与接口技术(UNIX)⑲ 完结篇】——可编程计数器 8254 [ 流光发生器、8254工作方式检测程序的设计]
✅ 通过对 [计算机与UNIX汇编原理 ① ~ ⑫]的学习,我们已经大致掌握了汇编程序设计的相关知识 接下来,我将其分栏名改为 [计算机原理与接口技术(UNIX) ],重点将放在 "计算机原 ...
- java异常类中属于非检测异常的是_下列java语言的常用异常类中,属于检测异常的是()_学小易找答案...
[单选题]在Word 2010的编辑状态,对当前文档中的文字进行"字数统计"操作,应当使用的菜单是( ) [单选题]客运员领带统一,领带夹夹在衬衣的( )钮扣之间. [单选题]文件 ...
- 异常行为检测算法_检测异常行为的异常或异常类型算法
异常行为检测算法 Anomaly detection is a critical problem that has been researched within diverse research ar ...
- Spark心跳存活-延迟处理-异常日志告警
Spark心跳存活-延迟处理-异常日志告警 1.目录大纲 spark异常日志告警 spark存活心跳告警 spark批次处理延迟告警 2.任务背景 2.1问题背景 生成中针对spark steam ...
- Nature Communications: MOGONET使用图卷积网络集成多组学数据,允许患者分类和生物标志物识别
Nature Communications: MOGONET使用图卷积网络集成多组学数据,允许患者分类和生物标志物识别 1. 论文简介 Wang T, Shao W, Huang Z, et al. ...
最新文章
- 【python】使用python脚本将CelebA中同一人的图片捡到对应单独的文件夹中
- 我们常用的 Integer 内部为什么会去实现 Comparable 接口?
- 异常检测——无监督、高斯分布模型,需要带标记的样本数据,基本假设:特征符合高斯分布...
- [转载] 30分钟泛型教程
- 监督学习无监督学习_无监督学习简介
- linux du 文件大小排序,du命令 实现Linux 某个文件夹下的文件按大小排序
- 多方计算时,每次结果都存在着巨大隐患,如何解决
- php+oracle新增数据类型,Oracle 修改某个字段的数据类型三种方式
- 小战Java笔记_SE_Identifier(标识符)
- JSON 格式化成视图模式
- Python基于OpenCV的人脸集合相似度检测系统(源码&UI&教程)
- GUID转换字符串的几种形式
- go-sqlite3 “database is locked”问题解决方案
- Ubuntu22.04安装gamit10.71
- MYIP网站信息状态条 (MyIP Status Bar for IE)——挑战极限,一秒钟评价一个网站!
- cadence如何导入gds_如何将Cadence的原理图和PCB转成PADS
- 大话数据结构二十二:图的存储结构之边集数组
- 离线语音的自定义配置步骤
- win10下删除多余UEFI启动项的方法
- 【MQTT协议详解】MQTT协议
热门文章
- QT发生crashed
- 服务器上安装oracle隔夜老挂,[转自Oracle官方博客]一次服务器时间调整引发的实例宕机...
- 编程趣事 100元x100元是否等于10000分x10000分
- Android工程师应该具备的四大开发习惯
- Flink入门篇-编译源码(上)
- 读书笔记(八)--多平台IoT
- K-D Tree 算法详解及Python实现
- 清除Trojan.PSW.WoWar.qq等木马
- 【综述篇】(1)无人驾驶/机器人规划方向综述
- abp框架学习笔记(三)--Angular和前端