当前位置: 首页 > news >正文

【论文阅读】EULER:通过可扩展时间链接预测检测网络横向移动(NDSS-2022)

作者:乔治华盛顿大学-Isaiah J. King、H. Howie Huang
引用:King I J, Huang H H. Euler: Detecting Network Lateral Movement via Scalable Temporal Graph Link Prediction [C]. Proceedings 2022 Network and Distributed System Security Symposium, 2022.
原文地址:https://dl.acm.org/doi/pdf/10.1145/3588771
源码地址:https://github.com/iHeartGraph/Euler
数据集:LANL

目录

  • 0. 摘要
  • 1. 引言&动机
  • 2. 背景
  • 3. 动机
  • 4. EULER
    • A. 编码与解码器
    • B. 工作流程
    • C. 训练
    • D. 分类
  • 5. 基准评估
  • 6. 横向移动检测


0. 摘要

  提出了 EULER 的框架。它由堆叠在模型不可知序列编码层(例如递归神经网络)上的不可知图神经网络模型组成。根据 EULER 框架构建的模型可以轻松地将其图形卷积层分布在多台机器上,以实现大幅性能提升。EULER 模型可以高效地高精度识别实体之间的异常连接,并且优于其他无监督技术。

1. 引言&动机

  检测恶意软件传播的最可靠方法不是详尽列出与其相关的每个已知恶意签名;相反,它是训练一个模型来学习正常活动的样子,并在检测到偏离正常活动的行为时发出警报。存在的挑战:检测模型需要可扩展以适应TB级日志文件、必须具有极低的误报率

  在这项工作中,我们将异常横向移动检测制定为时间图链接预测问题。在网络上以离散时间单位发生的交互可以抽象为一系列称为快照的图 G t = { V , E t } G_t = \{V, E_t\} Gt={V,Et},其中 V V V 是网络中在设定的时间段 t t t 内具有交互的实体集 E t = { ( u , v ) ∈ V } E_t = \{(u, v) ∈ V\} Et={(u,v)V}时间链接预测模型将从以前的快照中学习正常的行为模式,并将可能性分数分配给未来发生的边缘,可能性分数低的边与网络中的异常连接相关

  最近的时间链接预测方法将图神经网络 (GNN) 与序列编码器(例如递归神经网络 (RNN))相结合,以捕获不断发展的网络的拓扑和时间特征。然而,这些方法要么依赖于嵌入的 GNN 阶段的 RNN 输出,要么仅仅将 GNN 纳入 RNN 架构。如图 1a 所示,这些模型必须是连续的,因而无法扩展到它们去处理大型数据集。

  观察到:1)现有架构中内存最密集的部分发生在 GNN 的消息传递阶段;2)节点输入特征的巨大尺寸与相对较小的拓扑节点嵌入之间存在不平衡;这意味着最多的工作和最多的内存使用发生在GNN。如果多个复制的 GNN 独立地对快照进行操作,它们可以并发执行,性能会随之提高,如图 1b 所示。
在这里插入图片描述

(a)先前的方法在嵌入的 GNN 阶段依赖于 RNN 输出,或者仅仅将 GNN 合并到 RNN 架构中,这迫使模型串行工作,一次一个快照。相反,(b) EULER 框架可以利用多个工作机器来保存离散时间图的连续快照。这些工作人员通过每台机器共享的复制 GNN 并行处理快照。这些 GNN 的输出返回到领导机器,领导机器通过递归神经网络运行它们以创建可用于链接预测的时间节点嵌入。

总结贡献如下:

  • 首次将时态图链接预测用于基于异常的入侵检测。其他将图分析应用于异常检测的研究要么没有考虑数据的时间性质,要么没有使用强大的 GNN 模型
  • 对于时间链接预测和检测,我们提出的简单框架与最先进的时间图自动编码器模型一样准确或更精确
  • 提出了一个用于大数据的分布式时间链接预测的可扩展框架

2. 背景

  离散时态图 G = { G 1 , G 2 , . . . G T } G = \{G_1, G_2, ...G_T \} G={G1,G2,...GT}被定义为一系列图 G t = { V , E t , X t } G_t = \{V, E_t, X_t\} Gt={V,Et,Xt} 的集合,称之为快照。 V V V 表示出现在网络中的所有节点的集合, E t E_t Et 表示时间 t t t 节点之间的关系,即边集, X t X_t Xt 表示与 t t t 时节点相关的特征。所有图都是有向的,有些图具有加权边, W : E → R W : E → R W:ER 表示每个快照包含的时间段内的边频率。一个图是时间窗口 δ δ δ 内的所有主体、对象、时间的三元组 < s r c , d s t , t s > <src,dst,ts> <src,dst,ts>
  时间链接预测:定义为在给定先前观察到的网络快照的情况下,找到一个函数来描述时间图中某个时间点存在边的可能性。观察到的可能性得分低于特定阈值的实体之间的交互被称为异常。在网络监控的背景下,这些异常边缘通常表示横向移动。

3. 动机

  考虑图 2 中所示的示例。前两个时间片显示网络中的正常活动:首先在 t0,Alice 和 Bob 向他们的计算机 A 和 B 进行身份验证,然后在t1 计算机 A 和 B 向共享驱动器发出请求。在时间 t2 和 t3,如果我们没有看到 Bob 首先向计算机 B 进行身份验证时,它则不与共享驱动器通信。一个简单的概率分布是显而易见的: P ( ( C 1 , S D ) ∈ E t + 1 ∣ ( B , C 1 ) ∈ E t ) = 1 P ( ( C 1 , S D ) ∈ E t + 1 ∣ ( B , C 1 ) ∉ E t ) = 0 \begin{gathered} \mathsf{P}((\mathsf{C1},\mathsf{S D})\in{\mathcal{E}}_{\mathsf{t}+1}\mid(\mathsf{B},\mathsf{C1})\in{\mathcal{E}}_{\mathrm{t}})=1 \\ \mathsf{P}((\mathsf{C1},\mathsf{S D})\in\mathcal{E}_{\mathsf{t}+1}\mid(\mathsf{B},\mathsf{C1})\not\in\mathcal{E}_{\mathsf{t}})= 0 \end{gathered} P((C1,SD)Et+1(B,C1)Et)=1P((C1,SD)Et+1(B,C1)Et)=0然而,在 t4 和 t5 中,发生了一些不寻常的事情:计算机 B 从共享驱动器请求数据,而 Bob 没有先通过它进行身份验证,这可能是攻击行为。

在这里插入图片描述
  现有的基于图的方法不考虑时间,而许多基于事件的方法孤立地查看每个事件,他们缺乏捕捉网络中其他实体之间发生的交互的重要性以及它们如何与单独事件相关的能力,将看不出 (C1,SD) 在时间 t1 和时间 t5之间的区别。为了检测示例中的攻击,模型需要参考之前发生的事件以及网络中的其他交互来考虑事件。在一个时间点发生的两个实体之间的事件不能被认为与未来在不同的全局背景下发生的同一事件相同

这里原文举的例子是t1和t4,但是我理解的是:传统方法会因为发生过t0,导致认为t5是正常的,其实并不是,所以必须考虑时间信息,不能忽略相同信息的时间影响,比如验证过期需要重新验证。所以改成了t1和t5。


4. EULER

  该框架旨在学习以时间图的先前状态为条件的概率函数,以确定边缘出现在稍后状态的可能性。

A. 编码与解码器

  它由堆叠在模型不可知递归神经网络 (RNN) 上的模型不可知图神经网络 (GNN) 组成。这些模型共同旨在找到编码函数 f ( ⋅ ) f(·) f() 和解码函数 g ( ⋅ ) g(·) g()。编码函数将具有 T T T 个快照的时间图中的节点映射到 T T T 个低维嵌入向量。解码功能确保在编码过程中丢失的信息最少,旨在从潜在 Z Z Z 向量重建输入快照。 Z = f ( { G 0 , … , G T } ) = RNN ⁡ ( [ GNN ⁡ ( X 0 , A 0 ) , … , GNN ⁡ ( X T , A T ) ] ) \begin{aligned} & Z=f(\{\mathcal{G}_0,\ldots,\mathcal{G}_T\}) \\&=\operatorname{RNN}(\left[\operatorname{GNN}(\mathbf{X}_0,\mathbf{A}_0),\ldots,\operatorname{GNN}(\mathbf{X}_T,\mathbf{A}_T)\right]) \end{aligned} Z=f({G0,,GT})=RNN([GNN(X0,A0),,GNN(XT,AT)])其中 A t A_t At 是时间 t t t 快照的 ∣ V ∣ × ∣ V ∣ |V|×|V| V×V 邻接矩阵表示。这个 T × ∣ V ∣ × d T ×|V|× d T×V×d 维张量 Z Z Z 被优化为包含关于图形结构的信息,以及它如何随时间变化的动态。

  解码函数 g ( Z t ) = P r ( A t + n = 1 ∣ Z t ) = σ ( Z t Z t T ) = A ~ t + n \mathbf{g}(\mathbf{Z}_\mathbf{t})=\mathbf{Pr}(\mathbf{A}_{\mathbf{t}+\mathbf{n}}=\mathbf{1}\mid\mathbf{Z}_\mathbf{t})\\=σ(\mathbf{Z}_{\mathrm{t}}\mathbf{Z}_{\mathrm{t}}^{\mathsf{T}})={\mathbf{\tilde{A}}}_{\mathrm{t+n}} g(Zt)=Pr(At+n=1Zt)=σ(ZtZtT)=A~t+n其中 σ ( ⋅ ) σ(·) σ() 表示 logistic sigmoid 函数, 且 A ~ t + n {\mathbf{\tilde{A}}}_{\mathrm{t+n}} A~t+n 表示在时间 t + n t + n t+n 处重建的邻接矩阵。

B. 工作流程

  EULER 框架的核心是将与模型无关的 GNN 的副本(我们称之为拓扑编码器)堆叠在具有一些简单约束的与模型无关的循环层上。当适应以一个循环层作为领导者、多个拓扑编码器作为工作者的领导者/工作者范式时,它具有大规模并行的潜力。整体工作流程如图 3 所示,分为5个阶段:

  • 领导者生成工作人员并指示他们加载哪些快照
  • 领导者启动训练循环,工人生成拓扑嵌入
  • 接收到拓扑嵌入后,领导者通过 RNN 处理它们
  • 将RNN的输出发回工人计算损失或打分
  • 在训练模式下,损失返回给领导者进行反向传播。

C. 训练

  两种训练模式:链接检测器和链接预测器。区别在于第 4 步将 Z t Z_t Zt 嵌入发送给工作人员以计算损失。链路检测器是感应的;他们使用部分观察到的快照生成 Z t Z_t Zt 并尝试用 g ( Z t ) g(Z_t) g(Zt) 重建完整的邻接矩阵 A t A_t At。然后人工执行审计以识别已经发生的异常连接。链接预测器是转导的;他们使用快照生成 Z t Z_t Zt,以预测未来状态 A t + n A_{t+n} At+n ,然后对观察到的边进行评分。

D. 分类

  尽管对于我们的大部分评估,我们依赖于与分配给边的分数的适应性相关的回归指标,但自动化确定异常阈值的过程以获得分类分数是很有用的。为此,在训练模型时,我们拿出一个或多个完整快照作为额外的验证集。使用来自训练快照的 RNN 的最终隐藏状态 h 作为验证快照的输入,找到边缘似然分数的最佳截止阈值。给定验证快照中存在的一组边缘分数,最佳截止阈值 τ 满足 argmin ∥ ( 1 − λ ) TPR ( τ ) − λ FPR ( τ ) ∥ \text{argmin}\quad\|(1-\lambda)\text{TPR}(\tau)-\lambda\text{FPR}(\tau)\| argmin(1λ)TPR(τ)λFPR(τ)其中 T P R ( τ ) TPR(τ) TPR(τ) F P R ( τ ) FPR(τ) FPR(τ) 指的是给定截止阈值 τ τ τ 的分类的真阳性率和假阳性率,λ = 0.6。

5. 基准评估

  可用的最通用的GNN,叠加在GRU上。非常简单,被称为“朴素方法”,但它也是经过测试的最快的时间模型。

  在初始前向传递之前包含一个边缘dropout层,并在所有层之间包含特征dropout层,以防止小数据集上的过拟合和过平滑。

  隐藏层和输出都是32维的。然后,GCN输出序列通过tanh激活函数,然后由单个32维GRU处理,最后通过MLP将输出投影到16维嵌入中。

其他评估模型:DynGraph2Vec、Evolving GCN 、VGRNN、VGAE

三个数据集:Facebook、Enron10和COLAB
在这里插入图片描述在这里插入图片描述

6. 横向移动检测

LANL数据集,5个不同来源的57天的日志文件、正常活动+红队活动、已标记。
在这里插入图片描述
我们将三个编码器与两个递归神经网络以及没有递归层的模型结合起来测试,以测量时间数据对整体嵌入的价值。编码器模型有GCN、GAT和GraphSAGE。循环模型为GRU和LSTM。
在这里插入图片描述
在这里插入图片描述

相关文章:

【论文阅读】EULER:通过可扩展时间链接预测检测网络横向移动(NDSS-2022)

作者&#xff1a;乔治华盛顿大学-Isaiah J. King、H. Howie Huang 引用&#xff1a;King I J, Huang H H. Euler: Detecting Network Lateral Movement via Scalable Temporal Graph Link Prediction [C]. Proceedings 2022 Network and Distributed System Security Symposium…...

手动创建一个DOCKER镜像

1. 我们先使用C语言写一个hello-world程序 vim hello.c # include <stdio.h>int main() {print("hello docker\n"); } 2. 将hello.c文件编译成二进制文件, 需要安装工具 yum install gcc yum install glibc-static 开始编译 gcc -static hello.c -o hello 编译…...

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)--搭建Vue 前端工程[一]

文章目录 SSM--搭建Vue 前端工程--项目基础界面实现功能01-搭建Vue 前端工程需求分析/图解代码实现搭建Vue 前端工程下载node.js LTS 并安装: node.js 的npm创建Vue 项目使用idea 打开ssm_vue 项目, 并配置项目启动 Vue3 项目目录结构梳理Vue3 项目结构介绍 配置Vue 服务端口El…...

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…...

Tailwind css优于Bootstrap 7个原因

在某些情况下&#xff0c;Tailwind css 比 Bootstrap 更好&#xff0c;因为它是一个低级 CSS 框架&#xff0c;可让您根据需要构建自己的自定义组件。如果使用得当&#xff0c;它非常注重性能&#xff0c;可以显着减少 CSS 负载并确保更快的渲染。如果 Web 性能和自定义是您的首…...

IDEA简单拷贝一份新项目记录

IDEA简单拷贝项目记录 拷贝后改项目名&#xff0c;然后iml 配置文件改项目名&#xff0c;然后 .idea 中的compiler.xml 里面的name标签改项目名。 就可以了...

华为OD真题--字符串加密

2023华为OD统一考试&#xff08;AB卷&#xff09;题库清单-带答案&#xff08;持续更新&#xff09;or2023年华为OD真题机考题库大全-带答案&#xff08;持续更新&#xff09; "给你一串未加密的字符串str&#xff0c;通过对字符串的每一个字母进行改变来实现加密&#xf…...

UML-状态图

目录 状态图 状态图的图符 状态机 状态 ​转换 电话机状态图 活动图和状态图区别&#xff1a; 状态图 状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为&#xff0c;显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常我们创建一个UML状态…...

chrome插件开发实例07- Vue调试插件vue-devtools

目录 一、为什么使用vue-devtools插件 二、如何安装 三、使用源码方式,安装Vue-devtools插件...

HTML <span> 标签

定义和用法 <span> 标签被用来组合文档中的行内元素。 浏览器支持 元素ChromeIEFirefoxSafariOpera<span>YesYesYesYesYes所有浏览器都支持 <span> 标签。 HTML 与 XHTML 之间的差异 NONE 提示和注释: 提示:请使用 <span> 来组合行内元素,以便…...

【PythonGIS】Python处理矢量数据的基本操作(查询、修改、删除、新建)

ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式&#xff0c;进行地理处理、属性表操作、数据分析等操作。目前ogr和osr库已集成到GDAL库中&#xff0c;可以对栅格数据、矢量数据进行处理分析&#xff0c;被3S的研究人员广泛应用。感兴趣的可以自己去了解一下…...

15.2 【Linux】仅执行一次的工作调度

15.2.1 atd 的启动与 at 运行的方式 要使用单一工作调度时&#xff0c;我们的 Linux 系统上面必须要有负责这个调度的服务&#xff0c;那就是 atd 。 不过并非所有的 Linux distributions 都默认会把他打开的&#xff0c;所以&#xff0c;某些时刻我们必须要手动将他启用才行。…...

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度。 如何表达 时间复杂度&#xff1f; 大O的渐进表示法 实际中我们计算时间复杂度时&#xff0c;我们其实并不一定要计算精确的执行次数&#xf…...

每日一学:什么是 Harbor ?

目录 什么是 Harbor &#xff1f; 一、Harbor 的优势 二、Harbor 架构构成 三、Core services 这是 Harbor 的核心功能 什么是 Harbor &#xff1f; Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c;其目标是帮助用户迅速搭建一个企业级的 Docker Reg…...

灰度均衡变换之c++实现(qt + 不调包)

1.基本原理 灰度均衡是以累计分布函数变换为基础的直方图修正法&#xff0c;它可以产生一副灰度级分布概率均匀的图像。也就是说&#xff0c;经过灰度均衡后的图像在没一级灰度上像素点的数量相差不大。公式见下图&#xff0c;为灰度值为x的像素点的个数&#xff0c;n为总像素点…...

flink1.17 自定义trigger ContinuousEventTimeTrigger

在 ContinuousEventTimeTrigger 的基础上新增了timeout,如果超时后窗口都没关闭,那么就硬输出一波,避免间断数据,留存窗口太久. ContinuousEventTimeTrigger ContinuousEventTimeTrigger连续事件时间触发器与ContinuousProcessingTimeTrigger连续处理时间触发器,指定一个固定…...

AIGC:【LLM(五)】——Faiss:高效的大规模相似度检索库

文章目录 一.简介1.1 什么是Faiss1.2 Faiss的安装 二.Faiss检索流程2.1 构建向量库2.2 构建索引2.3 top-k检索 三.Faiss构建索引的多种方式3.1 Flat &#xff1a;暴力检索3.2 IVFx Flat &#xff1a;倒排暴力检索3.3 IVFxPQy 倒排乘积量化3.4 LSH 局部敏感哈希3.5 HNSWx 一.简介…...

自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅱ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 对话知识图谱记忆&#xff08;Conversation Knowledge Graph Memory&#xff09; 这种类型的记忆使用知识图谱来重建记忆&#xff1a; from langchain.memory import ConversationKGMemory from langchain.llms impo…...

桥接模式-java实现

桥接模式 桥接模式的本质&#xff0c;是解决一个基类&#xff0c;存在多个扩展维度的的问题。 比如一个图形基类&#xff0c;从颜色方面扩展和从形状上扩展&#xff0c;我们都需要这两个维度进行扩展&#xff0c;这就意味着&#xff0c;我们需要创建一个图形子类的同时&#x…...

Linux systemd管理常用的几个小案例

systemd是目前Linux系统上主要的系统守护进程管理工具&#xff0c;配置文件要以.service结尾且放到 /usr/lib/systemd/system/目录下面 1、systemd管理ElasticSearch [Unit] DescriptionElasticsearch Service[Service] Typeforking Userelastic Groupelastic ExecStart/home…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...