使用图嵌入方式检测异常日志

原文: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原型,评估结果显示由于现有的日志粒度的先进算法,可以检测有效检测不同场景的网络威胁。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以使用以下步骤在Flask中嵌入HTML对象: 1. 在HTML文件中,使用`<object>`标签来定义要嵌入的对象。例如,要嵌入一个PDF文件,可以使用以下代码: ```html <object data="{{ url_for('static', filename='example.pdf') }}" type="application/pdf" width="100%" height="600px"> <embed src="{{ url_for('static', filename='example.pdf') }}" type="application/pdf" /> </object> ``` 在这里,`data`属性指定要嵌入的文件的位置,`type`属性指定文件类型,`width`和`height`属性指定对象的大小。 2. 在Flask应用程序中,定义一个路由来渲染包含嵌入对象的HTML文件。例如,在以下代码中,`index()`函数渲染`index.html`文件: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') ``` 3. 在Flask应用程序中,定义一个静态文件目录来存储要嵌入的对象。例如,在以下代码中,`static`目录存储名为`example.pdf`的PDF文件: ```python app = Flask(__name__, static_folder='static') ``` 4. 在Flask应用程序中,使用`url_for()`函数来生成对象的URL。例如,在以下代码中,`url_for()`函数生成`example.pdf`文件的URL: ```html <object data="{{ url_for('static', filename='example.pdf') }}" type="application/pdf" width="100%" height="600px"> <embed src="{{ url_for('static', filename='example.pdf') }}" type="application/pdf" /> </object> ``` 在这里,`url_for()`函数的第一个参数是静态文件目录的名称,第二个参数是要嵌入的文件的名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值