【论文阅读】DEPCOMM:用于攻击调查的系统审核日志的图摘要(SP-2022)
Xu Z, Fang P, Liu C, et al. Depcomm: Graph summarization on system audit logs for attack investigation[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 540-557.
1 摘要
提出了 DEPCOMM,这是一种图摘要方法,通过将大图划分为以进程为中心的社区并为每个社区提供摘要,从依赖图生成摘要图。每个社区都由一组相互协作以完成某些系统活动(例如文件压缩)的亲密进程以及这些进程访问的资源(例如文件)组成。在社区内,DEPCOMM 进一步识别由不太重要和重复的系统活动引起的冗余边,并对这些边进行压缩。
DEPCOMM 为依赖图平均生成 18.4 个社区,比原始图小约 70 倍。与 9 种最先进的社区检测算法相比,DEPCOMM 在检测社区方面平均取得了比这些算法高 2.29 倍的 F1 分数。通过与HOLMES自动化技术配合,DEPCOMM能够以96.2%的召回率识别出与攻击相关的社区。
2 引言
由于三个主要原因,手动攻击调查仍然是不可或缺的:
- 系统中始终存在残留风险,这些风险无法通过这些自动化技术准确揭示,特别是对于严重依赖系统配置文件的技术
- 威胁不断发展以逃避防御技术
- 现有技术主要依赖于启发式规则,这些规则会导致信息丢失和侵入性系统更改,阻碍了它们的实际采用
动机:开发一种图摘要方法,该方法在依赖图中保留系统活动的语义,同时通过隐藏不太重要的细节来缩小其大小。
挑战及应对:
-
依赖图是一种异构图,平等对待每个节点的通用汇总技术无法有效地检测代表主要系统活动的社区。
将依赖图划分为以进程为中心的社区,其中每个社区包括一组亲密的进程(父子或兄弟关系)以及这些进程访问的系统资源。
-
许多不太重要的依赖关系,成为依赖关系图的主要部分,压缩和隐藏这些活动是一项具有挑战性的任务
DEPCOMM 识别基于进程和基于资源的模式,并根据这些模式为每个社区压缩边
-
在依赖图中,代表系统活动的边序列应该是生成的用于攻击调查的摘要图的核心。如何总结这些优势成为DEPCOMM的另一个挑战
对每个社区内的 InfoPath 进行优先级排序,并将更有可能代表攻击步骤和主要系统活动的 InfoPath(信息流) 排名在顶部
DEPCOMM 提供了新颖的技术来检测以进程为中心的社区,在检测到的社区内执行压缩,并为每个社区生成代表性摘要。实验室+DARPA TC,总共有约 1.5 亿个系统审计事件,生成的依赖图平均由 1, 302.1 个节点和 7, 553.4 个边组成。在我们的评估中,DEPCOMM 为依赖图平均生成 18.4 个社区,比原始图小约 70 倍。这些社区平均包含 43.1 个节点和 248.5 条边。
- DEPCOMM 在每个流程节点上执行随机游走以获得游走路线,并通过矢量化这些游走路线来计算每个进程节点的行为表示。设计了一系列新颖的分层行走方案,利用进程本地邻居的信息和全局进程谱系树来选择更有可能找到亲密进程的行走路线。利用学习到的每个进程节点的表示,DEPCOMM 将这些进程节点聚类成社区,并进一步将这些进程访问的资源节点分类到检测到的社区中,生成以进程为中心的社区。
- DEPCOMM 首先计算每个社区的进程谱系树,并将每个进程节点与访问资源节点的事件相关联。通过搜索该树,DEPCOMM 可以识别基于进程的模式(例如,一个 bash 进程生成多个 vim 进程)和基于资源的模式(例如,多个 vim 进程编辑源文件)。基于已识别的基于流程和基于资源的模式,DEPCOMM 合并所有重复的边和节点以压缩社区。
- DEPCOMM首先根据社区之间的信息流来识别每个社区的输入节点和输出节点,然后通过为每对输入和输出节点查找路径来生成InfoPaths。接下来,DEPCOMM 根据每个 InfoPath 代表社区中主要系统活动(例如,包含 POI 事件)的可能性,为每个 InfoPath 分配优先级分数。最后,DEPCOMM 根据优先级对这些 InfoPath 进行排名,并将排名靠前的 InfoPath 显示为社区的摘要。
3 系统设计
3.1 依赖图生成
给定 POI 事件(例如,有关文件下载的警报),DEPCOMM 通过执行向后因果分析来跟踪依赖关系,从而构建依赖关系图。
为何不前后向都分析?
3.2 依赖图预处理
边合并:操作系统通常通过将数据按比例分配给多个系统调用来执行读/写任务,这会导致进程节点和文件/网络节点之间通常有许多平行边,表示短时间内重复的读/写操作,将这些平行边合并为一条边。
只读文件过滤:许多只读文件通常是库、配置文件和资源用于不包含有用的攻击相关信息的进程初始化,因此删去。
3.3 社区检测
分级随机游走
以进程为中心的社区是一个图,它包含(1)一个主进程节点,(2)一组子进程节点,表示主进程派生的子进程的子集,使得这些子进程之间具有数据依赖性,以及(3)主进程和这些子进程访问的一组资源节点。
采用固定的步长根据邻居和全局谱系树进行加权随机游走,然后利用word2vec学习路径的行为表示,并将这些路径聚类到不同的社区中。八种游走规则:
- 随机任选一个邻居,如果只有一个邻居,为避免提前终止,要回到上一节点
- 从自己的子进程过来,且该子进程具有与其有数据依赖的兄弟进程,直接去该兄弟进程
- 如果是从自己的独子过来的,且无其他邻居,说明父子协同处理某些任务,父亲任选邻居往下走
- 以高概率走到与上一节点共享相同父进程的邻居
- 从子进程访问过的资源节点过来,回到子进程或同时与该子进程有其他依赖关系的资源节点
- 如果两个进程节点除共同资源节点外再无其他关系,视为另一社区,直接返回
- 如果经过一个资源节点回到了进程,说明走到了信息流的终点,继续向其他邻居游走
- 与1 类似,但随机选择而不返回,意味着已经进入一个新的社区
进程节点表示
DEPCOMM采用SkipGram这一广泛使用的词表示学习算法来学习行走路线中过程节点的行为表示。更具体地说,给定进程节点p和上下文窗口大小t, SkipGram从包含p的每个行走路线中提取子序列Wp = {vi−t,···,vi,··,vi+t},该子序列由vi = p及其上下文节点vi+k (k∈(−t, t))组成。然后通过最大化子序列中出现的任何节点的对数概率来学习vi的d维向量Φ(vi)
进程节点聚类
DEPCOMM采用了一种软聚类方法FCM (Fuzzy C-Means),FCM通过最小化目标函数来输出每个集群中每个过程节点的隶属度
J = ∑ i = 1 ∣ V p ∣ ∑ j = 1 ∣ C ∣ u i j 2 ∣ ∣ v i − c j ∣ ∣ 2 J~=~\sum_{i=1}^{|V_{p}|}\sum_{j=1}^{|C|}u_{ij}^{2}||v_{i}~-~c_{j}||^{2} J = i=1∑∣Vp∣j=1∑∣C∣uij2∣∣vi − cj∣∣2,其中uij表示过程节点vi属于共同体cj的程度,如果uij高于给定的阈值,则Vi被分类为cj。
DEPCOMM根据模糊划分系数(FPC) F ( ∣ C ∣ ) = 1 / ∣ V p ∣ ∑ j = 1 ∣ C ˉ ∣ ∑ i = 1 ∣ V p ∣ u i j 2 F(|C|)=1/|V_{p}|\sum_{j=1}^{|\bar{C}|}\sum_{i=1}^{|V_{p}|}u_{ij}^{2} F(∣C∣)=1/∣Vp∣j=1∑∣Cˉ∣i=1∑∣Vp∣uij2来确定社区的数量|C|,用于衡量不同数量的集群的有效性。
资源节点关联
给定一个资源节点r和一个流程节点p,如果它们通过一条边连接,则v与p所属的社区相关联。如果一个资源节点与来自不同社区的多个流程节点连接,则该资源节点是一个重叠节点,我们将创建资源节点的副本,并为每个社区分配一个副本。
跨社区依赖关系
我们将跨社区的依赖关系分为基于边的依赖关系(即,由社区之间的社区间的边表示的依赖关系)和基于节点的依赖关系(即,由重叠节点表示的依赖关系)。创建副本,每个社区一个,中间新建一条边。
3.4 社区压缩
基于进程的模式
如图a所示,重复活动合并。包括四个步骤:
- 构建进程谱系树
- 进程与已访问的资源关联
- 挖掘基于进程的模式:DEPCOMM使用流程沿行树为每个进程节点生成一个子树。然后,DEPCOMM通过附加子树中进程节点的相关资源属性,将子树编码为字符串,并标识相同的字符串(即,重复的子树)。
- 基于模式的压缩:DEPCOMM只选择具有相同父节点的重复子树,并将选择的子树合并为一个子树。合并子树中每个节点和边的属性是原始节点和边属性的并集。
基于资源的模式:
DEPCOMM首先将进程与其访问的资源关联起来,然后搜索每个资源以识别重复的访问。根据发现的模式,将资源节点合并为一个节点,合并节点的属性是原始资源节点属性的并集。
3.5 社区摘要
DEPCOMM生成一个由三部分组成的摘要:主进程、时间跨度和排名最高的infopath。
信息流抽取
对于一个社区,确定其输入和输出节点,然后使用深度优先搜索找一条最长的路径。
信息流优先级
优先级排序包含四个关键特征:
- fpoi:是否包含POI事件,包含参数值为1,否则为0
- foit:输入输出类型,头尾为进程的信息流分数更高。 f i o t = 1 2 ( δ ( v 0 ) + δ ( v ∣ P k ∣ − 1 ) ) f_{iot}=\frac{1}{2}(\delta(v_0)+\delta(v_{|P_k|-1})) fiot=21(δ(v0)+δ(v∣Pk∣−1))
- funi:事件唯一性,出现在较少社区中的文件事件更可能表示社区中的主要活动。 f u n i = 1 ∣ E v t ( P k ) ∣ ∑ e i ∈ P k , e i ∈ E v t f 1 ∣ C o m m ( e i ) ∣ f_{uni}=\frac{1}{|Evt(P_k)|}\sum_{e_i\in P_k,e_i\in Evt_f}\frac{1}{|Comm(e_i)|} funi=∣Evt(Pk)∣1ei∈Pk,ei∈Evtf∑∣Comm(ei)∣1
- fspan:时间跨度,时间跨度与社区的时间跨度相似的InfoPath更有可能代表社区中的主要活动 f s p a n = e ( v ∣ P k ∣ − 2 , v ∣ P k ∣ − 1 ) . e t − e ( v 0 , v 1 ) . s t c . e t − c . s t f_{span}=\frac{e(v_{|P_{k}|-2},v_{|P_{k}|-1}).et-e(v_{0},v_{1}).st}{c.et-c.st} fspan=c.et−c.ste(v∣Pk∣−2,v∣Pk∣−1).et−e(v0,v1).st
基于这些特征,我们通过给每个特征赋予相等的权重来计算Pk的优先级得分。根据分配的优先级分数,我们对infathath进行排序,并选择最前面的n条路径作为汇总,安全分析人员可以灵活地选择n的值。
4 评估
实验室环境的6次攻击和DARPA TC的8次攻击。
提前请专家进行社区划分,与自动检测的做对比。
与NoDoze进行对比
相关文章:

【论文阅读】DEPCOMM:用于攻击调查的系统审核日志的图摘要(SP-2022)
Xu Z, Fang P, Liu C, et al. Depcomm: Graph summarization on system audit logs for attack investigation[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 540-557. 1 摘要 提出了 DEPCOMM,这是一种图摘要方法,通过将大图划…...

大语言模型之一 Attention is all you need ---Transformer
大语言模型已经在很多领域大显身手,其应用包括只能写作、音乐创作、知识问答、聊天、客服、广告文案、论文、新闻、小说创作、润色、会议/文章摘要等等领域。在商业上模型即产品、服务即产品、插件即产品,任何形态的用户可触及的都可以是产品,…...

数字鸿沟,让气候脆弱者更脆弱
随着科技的飞速发展,数字化正在改变我们的生活方式和社会结构。然而,数字鸿沟(Digital Divide)这一长期存在的问题,却在某些方面加剧了社会的不平等现象。在此,我们将探讨数字鸿沟如何加剧了气候脆弱者的脆…...

Tomcat 部署优化
Tomcat Tomcat 开放源代码web应用服务器,是由java代码开发的 tomcat就是处理动态请求和基于java代码的页面开发 可以在html当中写入java代码,tomcat可以解析html页面当中的iava,执行动态请求 动态页面机制有问题:不对tomcat进行优…...

Django框架-使用celery(一):django使用celery的通用配置,不受版本影响
目录 一、依赖包情况 二、项目目录结构 2.1、怎么将django的应用创建到apps包 三、celery的配置 2.1、celery_task/celery.py 2.2、celery_task/async_task.py 2.3、celery_task/scheduler_task.py 2.4、utils/check_task.py 四、apps/user中配置相关处理视图 4.1、基本…...
nvue语法与vue的部分区别
文章目录 1、仅支持flex布局2、字体样式3、高度问题 1、仅支持flex布局 仅支持flex布局。而且默认的是 flex-direction: column; 2、字体样式 字体的样式,必须要写在 text 标签内,才能生效 错误示例: <!-- 错误示例 --> <div cl…...
Java 开发工具 IntelliJ IDEA
1. IntelliJ IDEA 简介 IntelliJ IDEA 是一款出色的 Java 集成开发环境(IDE),提供了丰富的功能和工具,支持多种语言和框架的开发,如 Java、Kotlin、Scala、 Android、Spring、Hibernate 等。IntelliJ IDEA 专注于提高…...

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件
目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能,如下为Visual Studio 2022的该功能界面: 图 1 图 2 当在Visual Studio 2022打开很多文件时,可以按照图1、图2所示找到自…...

java中的同步工具类CountDownLatch
这篇文章主要讲解java中一个比较常用的同步工具类CountDownLatch,不管是在工作还是面试中都比较常见。我们将通过案例来进行讲解分析。 一、定义 CountDownLatch的作用很简单,就是一个或者一组线程在开始执行操作之前,必须要等到其他线程执…...

路由器和交换机的区别
交换机和路由器的区别 交换机实现局域网内点对点通信,路由器实现收集发散,相当于一个猎头实现的中介的功能 路由器属于网络层,可以处理TCP/IP协议,通过IP地址寻址;交换机属于中继层,通过MAC地址寻址(列表)…...

FreeRTOS(动态内存管理)
资料来源于硬件家园:资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、动态内存管理介绍 1、heap_1 2、heap_2 3、heap_3 4、heap_4 5、heap_5 二、动态内存总结与应用 1、heap_1 2、heap_4 3、heap_5 三、内存管理编程测试 1、heap_4 2、h…...

IntelliJ IDEA(简称Idea) 基本常用设置及Maven部署---详细介绍
一,Idea是什么? 前言: 众所周知,现在有许多编译工具,如eclipse,pathon, 今天所要学的Idea编译工具 Idea是JetBrains公司开发的一款强大的集成开发环境(IDE),主要用于Java…...

【LeetCode每日一题】——128.最长连续序列
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 中等 三【题目编号】 128.最长连续序列 四【题目描述】 给定一个未…...

Redis_缓存1_缓存类型
14.redis缓存 14.1简介 穿透型缓存: 缓存与后端数据交互在一起,对服务端的调用隐藏细节。如果从缓存中可以读到数据,就直接返回,如果读不到,就到数据库中去读取,从数据库中读到数据,也是先更…...
模拟 枚举
分享牛客算法基础精选题单题目打卡!!! 目录 字符串的展开 多项式输出 机器翻译 : 铺地毯 : [NOIP2016]回文日期 字符串的展开 原题链接 : 字符串的展开 思路 : 模拟 代码 : #include<iostream> #include<cstring> #include<algorithm> using na…...

【实操】2023年npm组件库的创建发布流程
2022年的实践为基础,2023年我再建一个组件库【ZUI】。步骤回顾: 2022年的npm组件包的发布删除教程_npm i ant-design/pro-components 怎么删除_啥咕啦呛的博客-CSDN博客 1.在gitee上创建一个项目,相信你是会的 2.创建初始化项目,看吧&#…...
缓存设计的典型方案
缓存设计的典型方案 在使用缓存系统的时候,还需要考虑缓存设计的问题,重点在于缓存失效时的处理和如何更新缓存。 缓存失效是在使用缓存时不得不面对的问题。在业务开发中,缓存失效时由于找不到整个数据,一般会出于容错考虑&#…...
SQL笔记
最近的工作对SQL的应用程度较高,而且写的sql类型基本没怎么涉及过,把用到的几个关键字记录下。 使用环境:达梦数据库 达梦数据库有个特点,他有一个叫模式的说法,在图形化工具里直接点击创建查询窗口,不用像…...

UHPC的疲劳计算——兼论ModelCode2010的适用性
文章目录 0. 背景1、结论及概述2、MC10对于SN曲线的调整(囊括NC、HPC、UHPC)2.1 疲劳失效曲面的构建2.2 新模型的验证 3、MC10对于疲劳设计强度的调整及其背后的原因4. 结语 0. 背景 今年年初,有一位用UHPC做混凝土塔筒的同行告诉我…...
关于elementui的input的autocomplete的使用
项目中需要实现搜索框搜索时能自动提示可选项的功能,elementui的input组件有已经封装好的el-autocomplete可以使用,但是在使用中发现一些问题,记录一下 基础使用 // html部分 <el-autocompletev-model"name":fetch-suggestion…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...