【论文阅读】SHADEWATCHER:使用系统审计记录的推荐引导网络威胁分析(SP-2022)

SHADEWATCHER: Recommendation-guided CyberThreat Analysis using System Audit Records

S&P-2022
新加坡国立大学、中国科学技术大学
Zengy J, Wang X, Liu J, et al. Shadewatcher: Recommendation-guided cyber threat analysis using system audit records[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 489-506.
开源:https://github.com/jun-zeng/ShadeWatcher
数据集:TC e3

目录

  • 0. 摘要
  • 1. 引言
  • 2. 背景与动机
    • A.动机实例
    • B. 现有方案的挑战
    • C. 推荐系统用于威胁检测
  • 3. 问题定义
  • 4. overview
  • 5. 推荐模型
    • A.一阶信息建模
    • B. 高阶信息建模
    • C. 威胁检测学习
    • D. 模型适应
  • 5. 实现
  • 6. 评估
  • 7. 附录



0. 摘要

  现有方法局限:误报、依赖专家知识、粗粒度检测信号

  在本文中,我们认识到网络安全中的威胁检测与信息检索中的推荐之间的结构相似性。通过将系统实体交互的安全概念映射到用户-项目交互的推荐概念,我们通过预测系统实体对其交互实体的偏好来识别网络威胁。受推荐系统中的 “通过项目辅助信息建模高阶连接” 的启发,定制了一个自动检测系统 SHADEWATCHER。

  • 它通过图神经网络发挥审计记录中高阶信息的潜力,提高检测效率
  • 配备动态更新,以更好地泛化错误警报
  • 现实生活和模拟网络攻击场景评估
  • 几秒钟内查明来自近百万系统实体交互的威胁

1. 引言

  现有的溯源图检测器:

  • 基于统计的检测:通过审计记录在溯源图中的稀有性来量化审计记录的可疑程度。容易对罕见但正常的系统活动产生大量误报。
  • 基于规范的检测:将审计记录与已知攻击模式相关的安全策略知识库进行匹配 。这种启发式方法的开发既耗时又容易出错。
  • 基于学习的检测:扩展了机器学习技术来模拟良性行为并检测它们的偏差。当前的学习方法会在粗粒度级别(例如行为级别)产生检测信号。

  通过将系统实体交互和实体上下文信息的网络安全概念映射到用户-项目交互和项目辅助信息的推荐概念,我们可以将网络威胁检测制定为推荐任务。特别是,我们观察到语义相似的系统实体会表现出相似的交互偏好。例如,敏感文件(例如 /etc/passwd 和 /etc/shadow)通常不与公共网络交互,否则表明数据泄露。基于这一观察,威胁检测可以进一步指定为预测系统实体不 “喜欢” 其交互实体的可能性。威胁检测的目标是系统实体不太可能喜欢的交互,因为此类交互通常是强烈的攻击指标。

  在本文中,我们介绍了 SHADEWATCHER,这是第一个通过系统实体交互建议来分析网络威胁的系统。

  • 上下文感知嵌入模型提取系统实体的辅助信息
  • 基于图神经网络的推荐模型,该模型通过递归传播来自相邻实体的信息来利用高阶连通性
  • 根据分析师对检测信号的反馈动态更新模型。这允许将错误推荐作为附加监督来集成,以提高其检测能力
  • 半监督,接受了未标记的良性系统实体交互与标记的分析师对误报反馈的组合训练

  考虑 Linux /proc 文件系统。由于 /proc/25/stat 和 /proc/27/stat 属于不同的进程,它们在来源图中通常是断开连接的,被直接连接视为因果无关。但是,它们都提供有关进程的状态信息,这些信息可以在考虑它们周围的边界上下文时反映出来。
  推荐领域探索了类似的问题,早期的推荐系统 [27]、[28] 假设行为相似的用户会共享对项目的偏好,以便他们通过历史用户项目交互找到相似的用户来理解用户偏好。然而,用户和项目之间的直接连接,称为一阶连接,不足以比较不同项目之间的语义相似性。为了解决这个问题,研究人员进一步考虑了项目的辅助信息,例如电影的类型,以捕获项目语义。其核心是辅助信息可以形成高阶连接,以链接在用户-项目交互中断开连接的相似项目。

这些设计使得shadewatcher在以下方面优于现有检测器:

  • 不是将历史频率作为衡量怀疑程度的指标,而是推断系统实体的内在语义以发现异常交互
  • 提供了一种端到端的解决方案,可以在事先不知道攻击的情况下检测威胁
  • 产生细粒度的检测信号,突出攻击的关键指标

使用DARPA TC评估,高精度和召回率。


2. 背景与动机

A.动机实例

  一个例子,25和27号进程虽然在溯源图上是没有直接关系的,但是根据后继信息是可以推出相关性的。

B. 现有方案的挑战

  基于异常的检测——误报高。良性的稀有事件逐渐泛化的过程会出现很多误报。
  基于规范的检测——耗时、依赖专家知识、主观性太强、质量参差不齐。
  基于学习的检测——可解释性差、只能定位,响应则需要人工进一步分析

C. 推荐系统用于威胁检测

  低可能性的交互视为潜在的网络威胁。

  如图1b所示,爱丽丝→钢铁侠和鲍勃→钢铁侠,表明爱丽丝和鲍勃之间的行为相似性。早期的推荐系统预测爱丽丝喜欢雷神,因为鲍勃喜欢它。然而,考虑到向特定用户推荐相关项目,用户-项目交互是不够的,因为它们无法比较项目语义相似性。为了解决这个问题,最近提出的方法利用项目辅助信息(side information,例如电影类型和工作室)来形成链接语义相似项目的高阶连接。例如,钢铁侠→动作→复仇者联盟和钢铁侠→漫威工作室→复仇者联盟的二阶连接表明爱丽丝可能更喜欢复仇者联盟,因为它的额外信息与钢铁侠的相同。

  类似地,更好地理解系统实体交互的一种直观方法是识别系统实体的辅助信息以形成高阶连接。例如,如果 /proc/27/stat 通过辅助信息(例如,图 1c 中的进程状态信息)与 /proc/25/stat 相关联,我们将确定它们共享与其他系统实体交互的概率(例如,缓存)。我们将上下文信息视为描述系统实体的辅助知识。因此,系统实体的因果关系形成了推荐中的用户-项目交互,而系统上下文提供了辅助信息以形成高阶连接。由于系统实体的上下文信息反映在起源图中的邻居中,因此我们将高阶连接捕获为关联相邻实体的多跳路径。例如,检测图 1a 中的扩展后门攻击变成推荐系统实体,gtcache 在图 1c 中不太可能与之交互。


3. 问题定义

一阶信息:单跳路径
高阶信息:多跳路径
二分图: G B = { ( e , y e e ′ ˙ , e ′ ) ∣ e , e ′ ∈ ˙ E ) } \mathcal{G}_{B}=\{(e,\dot{y_{ee^{\prime}}},e^{\prime})|e,e^{\prime}\dot{\in}\mathcal{E})\} GB={(e,yee˙,e)e,e˙E)} y e e ′ = 1 y_{ee^{\prime}}=1 yee=1意味着有交互,反之为0视为无交互
在这里插入图片描述


4. overview

在这里插入图片描述
四个主要阶段:构建知识图(KG)、生成推荐模型、检测网络威胁和调整模型

首先将系统审计记录转换为来源图(PG),并将系统实体交互提取为二分图(BG)。然后,将PG和BG组合成KG,然后使用KG学习推荐模型,该模型的目标是预测系统实体对其交互实体的偏好。

5. 推荐模型

主要由三个部分组成:1)对一阶信息进行建模,通过使用上下文将系统实体参数化为嵌入(即向量化表示);2)建模高阶信息,通过递归传播来自多跳相邻实体的信息来更新系统实体表示;3)学习检测威胁,在两个系统实体表示的顶部预测交互的对抗性概率。

A.一阶信息建模

为了优化TransR的表示学习,我们采用了基于边缘的两两排序损失,这使得有效元组(在KG中观察到)的可信性得分低于损坏元组(未观察到)的可信性得分。对于实体 h , t h,t h,t和关系 r r r
L f i r s t = ∑ ( h , r , t ) ∈ G K ∑ ( h ′ , r ′ , t ′ ) ∉ G K σ ( f ( h , r , t ) − f ( h ′ , r ′ , t ′ ) + γ ) \mathcal{L}_{first}=\sum_{(h,r,t)\in\mathcal{G}_K}\sum_{(h^{\prime},r^{\prime},t^{\prime})\notin\mathcal{G}_K}\sigma(f(h,r,t)-f(h^{\prime},r^{\prime},t^{\prime})+\gamma) Lfirst=(h,r,t)GK(h,r,t)/GKσ(f(h,r,t)f(h,r,t)+γ)
我们通过用随机实体替换有效元组中的一个系统实体来生成损坏的元组。总之,最小化一阶建模的损失使我们能够将语义和行为相似性编码到系统实体表示中。

B. 高阶信息建模

一个例子: / p r o c / 25 / s t a t → r 0 g t c a c h e → r 0 / p r o c / 27 / s t a t /\mathrm{proc}/25/\mathrm{stat}\xrightarrow{r_0}\mathrm{gtcache}\xrightarrow{r_0}/\mathrm{proc}/27/\mathrm{stat} /proc/25/statr0 gtcacher0 /proc/27/stat l e t c / p a s s w d → r 1 g t c a c h e → r 4 146.153.68.151 : 80 letc/passwd \xrightarrow{r_1}gtcache \xrightarrow{r_4}146.153.68.151:80 letc/passwdr1 gtcacher4 146.153.68.151:80,同样是多跳链接,前者表现出相似性,而后者表现出具体的信息信息行为。

采用GNN模型将多跳路径集成到系统实体中,对于实体 h h h
z h ( l ) = g ( z h ( l − 1 ) , z N h ( l − 1 ) ) \mathbf{z}_{h}^{(l)}=g(\mathbf{z}_{h}^{(l-1)},\mathbf{z}_{\mathcal{N}_{h}}^{(l-1)}) zh(l)=g(zh(l1),zNh(l1)),前者为 h h h 在传播层前一层的表示,后者为邻居传播来的信息。
z N h ( l − 1 ) = ∑ ( h , r , t ) ∈ N h α ( h , r , t ) z t ( l − 1 ) \mathbf{z}_{\mathcal{N}_h}^{(l-1)}=\sum_{(h,r,t)\in\mathcal{N}_h}\alpha(h,r,t)\mathbf{z}_{t}^{(l-1)} zNh(l1)=(h,r,t)Nhα(h,r,t)zt(l1)
为了区分对于当前实体贡献不同的邻居实体,引入注意力机制, α \alpha α为注意力函数。

在信息聚合方面,采用GraphSage Aggregator更新系统实体表示。
g ( z h ( l − 1 ) , z N h ( l − 1 ) ) = L e a k y R e L U ( ( z h ( l − 1 ) ∣ ∣ z N h ( l − 1 ) ) W ( l ) ) g(\mathbf{z}_{h}^{(l-1)},\mathbf{z}_{\mathcal{N}_{h}}^{(l-1)})=\mathrm{LeakyReLU}((\mathbf{z}_{h}^{(l-1)}||\mathbf{z}_{\mathcal{N}_{h}}^{(l-1)})\mathbf{W}^{(l)}) g(zh(l1),zNh(l1))=LeakyReLU((zh(l1)∣∣zNh(l1))W(l))

C. 威胁检测学习

经过L次信息传播和聚合迭代,我们得到实体h的一系列表示,进一步聚合,得到最终的表示 z h ∗ = z ( 0 ) ∣ ∣ ⋯ ∣ ∣ z h ( L ) \mathbf{z}_{h}^{*}=\mathbf{z}^{(0)}||\cdots||\mathbf{z}_{h}^{(L)} zh=z(0)∣∣∣∣zh(L),对于任意实体 h , t h,t h,t,采用内积来预测交互的可能性。 y ^ h t = z h ∗ ⊤ z t ∗ \hat{y}_{ht}=\mathbf{z}_h^*{}^\top\mathbf{z}_t^* y^ht=zhzt
L h i g h e r = ∑ ( h , r 0 , t ) ∈ G K ( h ′ , r 0 , t ′ ) ∉ G K σ ( y ^ h t − y ^ h ′ t ′ ) \mathcal{L}_{higher}=\sum_{(h,r_0,t)\in\mathcal{G}_K(h^{\prime},r_0,t^{\prime})\notin\mathcal{G}_K}\sigma(\hat{y}_{ht}-\hat{y}_{h^{\prime}t^{\prime}}) Lhigher=(h,r0,t)GK(h,r0,t)/GKσ(y^hty^ht) L = L f i r s t + L h i g h e r + λ ∥ Θ ∥ \mathcal{L}=\mathcal{L}_{first}+\mathcal{L}_{higher}+\lambda\left\|\Theta\right\| L=Lfirst+Lhigher+λΘ

D. 模型适应

我们为分析师提供了一个选项,可以在假阳性相互作用上给出新的标签,允许SHADEWATCHER使用假警报作为额外的监督修改其推荐模型。

5. 实现

6. 评估

TC-e3-trace+仿真数据集
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对比试验:Poirot和Morse
shadewatcher无需先验知识,粒度更细

模型适应性
在这里插入图片描述
耗时
在这里插入图片描述

7. 附录

  • 学习的方法如果推广到在线检测,会产生概念漂移。一个潜在的解决方案是考虑系统实体的形态学知识(例如,文件路径、所有者和特权),以概括和捕获以前未观察到的实体的语义。
  • 减少噪声:不会改变数据来源的冗余活动,如多次接收数据包;临时文件;与库文件的交互
  • 学习行为的可视化
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hlang-中英双语言编程语言使用手册

文章目录 介绍Hlang基本使用下载配置环境变量特性中文关键字支持中文符号混合编程中文错误提示终端多行输入基本数据类型整数浮点数列表字符串基本操作变量定义逻辑判断基本运算条件判断循环函数介绍 Hlang是一款基于Python编写的支持中英文混合编程的动态语言。其简单易上手,…

学C的第三十四天【程序环境和预处理】

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十三天【C语言文件操作】_高高的胖子的博客-CSDN博客 1 . 程序的翻译环境和执行环境 在ANSI C(C语言标准)的任何一种实现中,存在两个不同的环境。 &#xff0…

for循环也能写错?

好开心好开心 可是明明也只是解决了一个不应该要犯错的地方 本来是要在一个大循环中,每一次循环中有30次的另一个循环,然而我写成了这个样子: consensus_iterations 30 for i in range(2):for consensus_iterations in range(consensus_it…

容器虚拟化基础之cgroups/LXC

"你真的,自由了~" 容器虚拟化基础之Cgroups: (1) 什么是cgroups cgroups是 linux 内核提供的一种机制, 这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到按资源划分等级的不同组内,从而为系统资源管理提供一个统一…

3D与沉浸式技术,如何助力企业数字化转型?

说起3D,估计许多读者朋友会在第一时间想起《阿凡达》系列和《侏罗纪公园》系列电影大作。每一帧细节纤毫毕现的逼真画面,让观众几乎分不清虚拟与现实,完全沉浸在导演打造的视觉盛宴中。 事实上,除了大家所熟知的3D影视动画之外&am…

查找算法及应用

查找算法及应用 常用查找算法包括顺序/线性查找、二分/折半查找、插值查找、斐波那契查找。 线性查找 逐一比对,发现有相同值返回即可。 二分查找 前提是数组有序。如果数据是连续的情况下可以使用插值查找。 插值查找 插值查找算法类似二分查找,不同的…

快速学习GO语言总结

备注:本博客将自己初步学习GO的总结进行分享,希望大家通过本博客可以在短时间内快速掌握GO的基本程序编码能力,如有错误请留言指正,谢谢! 一、初步了解Go语言 (一)Go语言诞生的主要问题和目标…

8.3 【C语言】通过指针引用数组

8.3.1 数组元素的指针 所谓数组元素的指针就是数组元素的地址。 可以用一个指针变量指向一个数组元素。例如: int a[10]{1,3,5,7,9,11,13,15,17,19}; int *p; p&a[0]; 引用数组元素可以用下标法,也可以用指针法&#xf…

iOS17 widget Content margin

iOS17小组件有4个新的地方可以放置分别是:Mac桌面、iPad锁屏界面、 iPhone Standby模式、watch的smart stack Transition to content margins iOS17中苹果为widget新增了Content margin, 使widget的内容能够距离边缘有一定的间隙,确保内容显示完整。这…

【WinAPI详解】<CreateWindowEx详解>

函数原型: HWND CreateWindowEx(DWORD dwExStyle, //窗口的扩展风格(加强版专有)LPCTSTR lpClassName, //已经注册的窗口类名称LPCTSTR lpWindowName,//窗口标题栏的名字DWORD dwStyle, //窗口的基本风格int x, //窗口左上角水平坐标位置int …

学习设计模式之适配器模式,但是宝可梦

前言 作者在准备秋招中,学习设计模式,做点小笔记,用宝可梦为场景举例,有错误欢迎指出。 适配器模式 意图:将一个类的接口转换成客户希望的另一个接口 主要解决:把现有对象放到新环境里,而新…

通过C实现sqlite3操作,(增删改查),导入电子词典

一、插入 #include <stdio.h> #include <sqlite3.h> void do_insert(sqlite3 *db); int main(int argc, const char *argv[]) {//创建并打开一个数据库sqlite3 *db NULL;if(sqlite3_open("./mysql.db",&db) ! SQLITE_OK){fprintf(stderr,"sql…

AUTOSAR配置与实践(配置篇)5.1 BSW的通信功能进阶

传送门 -> AUTOSAR配置与实践总目录 AUTOSAR配置与实践(配置篇)5.1 BSW的通信功能进阶 一、模块和收发流程主要配置项介绍1.1 模块介绍1.2 通知方式相关主要配置项二、收发流程详解2.1 发送流程2.2 发送确认过程2.2.1 发送确认过程(读数据方式:轮询)2.2.2 发送确认过程…

IDEA 如何制作代码补丁?IDEA 生成 patch 和使用 patch

什么是升级补丁&#xff1f; 比如你本地修复的 bug&#xff0c;需要把增量文件发给客户&#xff0c;很多场景下大家都需要手工整理修改的文件&#xff0c;并整理好目录&#xff0c;这个很麻烦。那有没有简单的技巧呢&#xff1f;看看 IDEA 生成 patch 和使用 patch 的使用。 介…

Centos升级openssl

依赖包 安装编译 OpenSSL 所需的包&#xff0c;包括 gcc、make、perl 和 zlib-devel。可以通过运行以下命令完成&#xff1a; yum install -y gcc make perl zlib-devel安装包下载 下载 OpenSSL 1.1.1 的源码包&#xff0c;可以从 OpenSSL 官网下载&#xff08;https://www.op…

一、Kafka概述

目录 1.3 Kafka的基础架构 1.3 Kafka的基础架构 Producer&#xff1a;消息生产者&#xff0c;就是向 Kafka broker 发消息的客户端Consumer&#xff1a;消息消费者&#xff0c;向 Kafka broker 取消息的客户端。Consumer Group&#xff08;CG&#xff09;&#xff1a;消费者组&…

使用pytorch 的Transformer进行中英文翻译训练

下面是一个使用torch.nn.Transformer进行序列到序列&#xff08;Sequence-to-Sequence&#xff09;的机器翻译任务的示例代码&#xff0c;包括数据加载、模型搭建和训练过程。 import torch import torch.nn as nn from torch.nn import Transformer from torch.utils.data im…

PyTorch学习笔记(十六)——利用GPU训练

一、方式一 网络模型、损失函数、数据&#xff08;包括输入、标注&#xff09; 找到以上三种变量&#xff0c;调用它们的.cuda()&#xff0c;再返回即可 if torch.cuda.is_available():mynn mynn.cuda() if torch.cuda.is_available():loss_function loss_function.cuda(…

SpringMVC之@RequestMapping注解

文章目录 前言一、RequestMapping介绍二、详解&#xff08;末尾附源码&#xff0c;自行测试&#xff09;1.RequestMapping注解的位置2.RequestMapping注解的value属性3.RequestMapping注解的method属性4.RequestMapping注解的params属性&#xff08;了解&#xff09;5.RequestM…

华为ENSP网络设备配置实战6(简单的链路聚合)

题目要求 1、创建聚合组&#xff0c;添加端口成员 2、PC1网段为vlan10&#xff0c;PC2网段为vlan20 3、LSW1为核心网关设备&#xff0c;正确配置PC网关 4、PC1与PC2互通 解题过程 1.1、 按照拓扑图&#xff0c;各个设备起名 sys &#xff08;进入系统视图&#xff09; sy…