【论文阅读】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:E→R 表示每个快照包含的时间段内的边频率。一个图是时间窗口 δ δ δ 内的所有主体、对象、时间的三元组 < 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=1∣Zt)=σ(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)
作者:乔治华盛顿大学-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…...

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

IDEA简单拷贝一份新项目记录
IDEA简单拷贝项目记录 拷贝后改项目名,然后iml 配置文件改项目名,然后 .idea 中的compiler.xml 里面的name标签改项目名。 就可以了...
华为OD真题--字符串加密
2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) "给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密…...

UML-状态图
目录 状态图 状态图的图符 状态机 状态 转换 电话机状态图 活动图和状态图区别: 状态图 状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。通常我们创建一个UML状态…...
chrome插件开发实例07- Vue调试插件vue-devtools
目录 一、为什么使用vue-devtools插件 二、如何安装 三、使用源码方式,安装Vue-devtools插件...
HTML <span> 标签
定义和用法 <span> 标签被用来组合文档中的行内元素。 浏览器支持 元素ChromeIEFirefoxSafariOpera<span>YesYesYesYesYes所有浏览器都支持 <span> 标签。 HTML 与 XHTML 之间的差异 NONE 提示和注释: 提示:请使用 <span> 来组合行内元素,以便…...
【PythonGIS】Python处理矢量数据的基本操作(查询、修改、删除、新建)
ogr库是一个处理地理空间矢量数据的开源库。它可以读取多种数据格式,进行地理处理、属性表操作、数据分析等操作。目前ogr和osr库已集成到GDAL库中,可以对栅格数据、矢量数据进行处理分析,被3S的研究人员广泛应用。感兴趣的可以自己去了解一下…...

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

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

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

灰度均衡变换之c++实现(qt + 不调包)
1.基本原理 灰度均衡是以累计分布函数变换为基础的直方图修正法,它可以产生一副灰度级分布概率均匀的图像。也就是说,经过灰度均衡后的图像在没一级灰度上像素点的数量相差不大。公式见下图,为灰度值为x的像素点的个数,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 :暴力检索3.2 IVFx Flat :倒排暴力检索3.3 IVFxPQy 倒排乘积量化3.4 LSH 局部敏感哈希3.5 HNSWx 一.简介…...
自然语言处理从入门到应用——LangChain:记忆(Memory)-[记忆的类型Ⅱ]
分类目录:《自然语言处理从入门到应用》总目录 对话知识图谱记忆(Conversation Knowledge Graph Memory) 这种类型的记忆使用知识图谱来重建记忆: from langchain.memory import ConversationKGMemory from langchain.llms impo…...

桥接模式-java实现
桥接模式 桥接模式的本质,是解决一个基类,存在多个扩展维度的的问题。 比如一个图形基类,从颜色方面扩展和从形状上扩展,我们都需要这两个维度进行扩展,这就意味着,我们需要创建一个图形子类的同时&#x…...
Linux systemd管理常用的几个小案例
systemd是目前Linux系统上主要的系统守护进程管理工具,配置文件要以.service结尾且放到 /usr/lib/systemd/system/目录下面 1、systemd管理ElasticSearch [Unit] DescriptionElasticsearch Service[Service] Typeforking Userelastic Groupelastic ExecStart/home…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...