KAIROS复现记录

KAIROS:使用全系统起源的实用入侵检测和调查

Github:https://github.com/ProvenanceAnalytics/kairos
KAIROS: Practical Intrusion Detection and Investigation using Whole-system Provenance

1. 论文实验

实验部分使用SCISKIT-LEARN来实现分层特征散列,使用PYG来实现Kairos的图学习框架,使用NetworkX实现了Louvain。最后,使用GraphViz来可视化摘要图,以便进行手动检查。
实验环境:
所有实验都是在运行CentOS7.9、2.20G Hz 20核Intel Xeon Silver 4210 CPU和64GB内存的服务器上运行的
超参数:
节点特征嵌入维度|Φ|=16、节点状态维度|s(v)|=100、邻域大小|N|=20、边嵌入维度|z|=200、时间窗口长度|tw|=15分钟

(1) 数据集

DARPA和Manzoor et al.
在这里插入图片描述

Manzoor et al.
数据集包含由SystemTap从受控实验环境中的六个活动场景中捕获的起源图。每个良性场景中只使用一个图来训练Kairos,并使用24个图作为验证数据来配置检测阈值,以不在其选择中引入偏差。我们使用剩余的良性图(每个场景75个)和所有100个攻击图作为测试数据。
使用这一数据集允许比较Kairos与Unicorn和ThreaTrace,这两个最先进的PIDS在全系统起源图上执行异常检测。然而,无法证明Kairos可以用这个数据集重建攻击活动,因为细粒度的攻击gt(具体的攻击过程)不是公开的

DARPA
使用来自DARPA TC和OpTC计划的数据集,其中E3和E5的起源数据是公开可用的。OpTC数据集包含500台Windows主机在7天内的良性活动,以及另外3天的良性和APT活动的混合数据。实验部分随机选择六台主机,只使用其中一天的良性数据进行训练,另外一天进行验证,但使用所有主机的全部三个攻击日数据进行测试。
使用DARPA数据集来表明Kairos:

  • 可以准确检测异常,即使它们隐藏在长时间跨度的大量良性活动中
  • 精确地从原始起源图(描述良性和攻击活动)提取出紧凑的攻击摘要图中,而无需事先知道攻击,即使攻击活动罕见几个数量级
  • TC数据集可以比较Kairos与Unicorn和ThreaTrace
  • OpTC数据集来证明Kairos可以实际部署在大规模的系统网络中

DARPA提供攻击GT,使我们能够标记与攻击相关的单个节点和边。因此可以手动将Kairos重建的攻击图与GT图进行比较。

(2) 检测性能

为了评估Kairos的检测性能,重播每个数据集中的测试数据,就好像Kairos在监控主机系统运行时的行为一样。仅使用良性数据离线进行模型训练。
根据时间窗口计算所有数据集的精确度、召回率、准确度和ROC曲线下面积(AUC)结果。根据GT手动将起源图中的每个时间窗口标记为良性或攻击。如果Kairos将良性时间窗口标记为异常(即,如果Kairos错误地将良性时间窗口包括在异常队列中),我们认为该时间窗口是假阳性(FP)。另一方面,如果Kairos正确地将攻击时间窗口标记为异常,则将其计为真阳性(TP)。
在这里插入图片描述
Kairos可以准确检测所有攻击,实现100%召回。Kairos在一组实验中报告了FP(导致精度较低),原因是①在攻击者停止主动攻击之后,Kairos仍会将高重构错误分配给其节点处于攻击者影响下的边。②Kairos将高重构误差分配给仅在测试数据中引入的新应用程序的新活动。由于他们的行为完全未知,尽管不是恶意的,但这对Kairos来说是不正常的。这是概念漂移的一个例子,其中新的良性行为不适合通过模型学习的基本统计属性。
模型再训练
Kairos使模型再训练更加实用,因为它使系统管理员能够通过KAIROS提供紧凑的候选摘要图来快速识别错误警报以进行检查。为了更新模型,仅使用FP时间窗口中的起源数据在现有模型上重复相同的训练过程。Kairos可以不断向FP学习,以解决概念漂移问题,并避免在未来犯下类似的错误。

(3) 对比实验

选择Unicorn和ThreaTrace作为主要的PIDS进行比较,因为它们是基于异常的、开源的,并且由作者使用Manzoor et al.以及DARPA数据集的子集进行评估。同样,StreamSpot和Frappuccino也是开源的异常检测系统。然而,Unicorn已经被证明优于这些系统。我们自己在DARPA TC数据集上对StreamSpot的评估证实了其他人之前的性能分析:StreamSpot无法在所有TC数据集中检测到任何异常。因此,不再进一步讨论StreamSpot或Frappuccino。

Unicorn

Unicorn通过将动态的起源图特征化为一系列固定大小的、可增量更新的草图来构建系统的行为模型。每个草图表示一个快照,该快照描述了从系统执行的开始到拍摄快照的时间点的整个图形。生成新草图的频率是一个超参数,由流向该图的新边的数量决定。在测试时,Unicorn可以快速生成和更新被监控系统的草图,并将它们与模型中已知的良性草图进行比较,以执行运行时检测。

Unicorn将整个图归类为良性或包含攻击,并将其用作计算检测性能的单个数据点,而不是像在Kairos中那样计算更细粒度的时间窗口级别。为了采用Unicorn的计算指标的方法,如果Kairos将至少一个时间窗口标记为攻击,则认为整个图都是恶意的。
Unicorn没有在DARPA E5数据集上进行评估
在这里插入图片描述
当Unicorn发出警报时,攻击活动可以隐藏在图中的任何位置,要求系统管理员盲目回溯图以推断警报。相比之下,Kairos不仅产生更少的错误警报,而且还创建紧凑的摘要图,突出显示可能的攻击足迹

ThreaTrace

ThreaTrace为起源图中的每种类型的节点都构建一个模型,以检测异常节点。对比实验的数据集是ThreaTrace使用的数据集:Manzoor et al.和DARPA的子集。由于Manzoor et al.数据集节点级别的GT不可靠,因此ThreaTrace对Manzoor et al.数据集的节点级检测转换为图级检测。如果异常节点的数量超过预定义的阈值,则认为图是异常的。
ThreaTrace手动将GT中的节点及其2跳祖先和后代节点都标记为异常,即使相邻节点没有参与攻击,即与GT中的真正异常节点相距4跳的良性节点可能被ThreaTrace错误分类,但不会被报告为FP。

在这里插入图片描述
对于DARPA数据集,采用ThreaTrace的方法来计算度量,并使用异常时间窗口中的异常节点来计算精确度、召回率和准确率。
与Kairos不同,ThreaTrace不能重建一个完整的攻击过程。虽然ThreaTrace的节点级检测在一定程度上可以帮助理解攻击,但当图较大且FP节点数量较多时,这种方法是不实用的。

(4) 超参数对性能的影响

节点嵌入维度(|Φ|)

节点嵌入对初始节点特征进行编码。相对较小的维度足以编码这些特征。较大的维度会导致稀疏特征,这可能会严重影响检测性能并导致较大的内存开销。|Φ|=16是所有数据集的理想维度

节点状态维度|s(v)|

节点的状态捕获节点邻域随时间的时间演变。当|s(v)|太小时,Kairos很难记住过去事件的信息。但如果|s(v)|变得太大,检测性能会下降,因为状态可能包含与当前事件无关的过时历史,另外|s(v)|还会影响内存开销。|s(v)|=100是所有TC数据集的理想维度

邻域采样大小(|N|)

节点的邻域捕获了节点的结构角色。|N|=20在所有数据集中是理想的

边嵌入维度(|z|)

边嵌入z编码了边周围的图的状态和结构信息。随着|z|的增加,边嵌入可以更好地保留解码器重建边缘的时间和结构信息。然而,过大的|z|会使模型复杂化,并影响Kairos的泛化能力。|z|=200提供最佳检测性能

时间窗口长度(|tw|)

时间窗口的长度决定了Kairos执行其异常检测算法的频率。通常,时间窗口越长,累积的系统事件数量就越多。由于良性活动的数量占比远超攻击活动的数量,较大的时间窗口可能会使异常检测变得困难。当|tw|太大(60分钟)时,Kairos产生更多的假阴性,这导致低召回率(和高准确率)和总体低准确率。当|tw|较小时(5分钟),我们会看到性能略有下降,因为较短的时间窗口可能会限制Kairos准确地将事件设置为上下文的能力。然而,没有必要仅仅为了提高检测的及时性而使用小的时间窗口,因为APT行为者只会缓慢地渗透到他们的目标系统中。|tw|=15分钟在所有数据集中是理想的,增加时间窗口长度仅略微增加了存储器开销,即使当长度很大时也是如此。这是因为Kairos以流的方式处理起源图,而不是将整个图保存在内存中。

(5) 攻击重建

重建完整但简洁的攻击过程的能力是首要设计指标。这对异常检测系统尤其重要,尤其是那些利用深度学习的系统。
与生成攻击摘要图的异常时间窗口队列的大小相比,攻击摘要图的大小最多小五个数量级。例如,在E3-Theia中,Kairos实现了109,469倍的边数减少,将需要手动检查的边数从异常时间窗口队列中的340万条减少到仅31条。这部分将使用攻击摘要图和良性摘要图来说明Kairos构建简明图的能力。

(6) 端到端性能

Kairos以固定的时间窗口间隔处理流来源图,并在检测到异常时间窗口队列时发出入侵警报。如Kairos在E3-Theia上处理15分钟时间窗口,Kairos最多只需要228.8秒(或15分钟的25.4%)来处理一个时间窗口(包含大约250万个边缘),远远低于一个时间窗口的持续时间。StreamSpot每秒处理约14K个边缘,而Kairos的延迟稍高一些,每秒处理约11K个边缘。然而,Kairos在检测准确率方面明显优于StreamSpot。先前的工作已经表明,即使在主机系统繁忙的情况下,起源捕获系统每秒生成的边数通常也少于10K。因此,Kairos可以同样轻松地处理流传输的起源图,而不会“落后”。综合表示,Kairos可以在运行时有效地监视主机系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬核!大佬通过Intel CPU的JTAG接口,DUMP微软原始Xbox的加密BootROM。

这是一篇记录如何通过Intel CPU的JTAG接口,DUMP微软原始Xbox的加密BootROM的文章,内容也记录了老哥如何设计实现JTAG调试器的过程,非常硬核! 原文:JTAG ‘Hacking’ the Original Xbox in 2023 Using Intel CPU JTAG to dump the secret bootrom in Microsoft’s original…

Java代码基础算法练习-求成绩单中最高和第二高的成绩-2024.06.30

任务描述&#xff1a; 输入n(0<n<20)个整数代表成绩&#xff0c;求n个成绩中最高的和第二高成绩 解决思路&#xff1a; 输入的数字 n 为 for 循环的次数&#xff0c;在每次循环中进行值的输入和判断 如果当前输入的分数大于最大值&#xff0c;则更新最大值和次大值 如…

Golang-channel理解

channel golang-channel语雀笔记整理 channelgolang channel的设计动机&#xff1f;chanel的数据结构/设计思考 golang channel的设计动机&#xff1f; channel是一种不同协程之间实现异步通信的数据结构。golang中有一种很经典的说法是要基于通信实现共享内存&#xff0c;而不…

grpc教程——proto文件转go

【1】编写一个proto文件 syntax "proto3"; package myproto;service NC{rpc SayStatus (NCRequest) returns (NCResponse){} }message NCRequest{ string name 1; } message NCResponse{string status 1; } 【2】转换&#xff1a;protoc --go_out. myservice.pro…

重生奇迹MU 正确获取金币的方式

在游戏中&#xff0c;需要消耗大量的金币来购买红药等物品。因此&#xff0c;如何快速赚取金币也成为玩家关注的问题。您知道有哪些方法可以快速地获得金币吗&#xff1f; 一、哪个地图上是最适合打金币的很关键 在选择打钱的地方时&#xff0c;不能盲目行动&#xff0c;需要…

安装maven与nexus

安装maven与nexus Maven官网下载地址&#xff1a;http://maven.apache.org cd /data/software/wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.8-bin.tar.gz# 解压 tar xf apache-maven-3.8.1-bin.tar.gz -C /opt/[rooth…

木各力“GERRI”被“GREE”格力无效宣告成功

近日“GERRI”被“GREE”格力无效宣告成功&#xff0c;“GERRI”和“GREE”近似不&#xff0c;如果很近似当初就不会通过初审和下商标注册证&#xff0c;但是如果涉及知名商标和驰名商标&#xff0c;人家就可以异议和无效。 “GERRI”在被无效宣告时&#xff0c;引用了6个相关的…

【启明智显分享】乐鑫ESP32-S3R8方案2.8寸串口屏:高性能低功耗,WIFI/蓝牙无线通信

近年来HMI已经成为大量应用聚焦的主题&#xff0c;在消费类产品通过创新的HMI设计带来增强的连接性和更加身临其境的用户体验之际&#xff0c;工业产品却仍旧在采用物理接口。这些物理接口通常依赖小型显示器或是简单的LED&#xff0c;通过简单的机电开关或按钮来实现HMI交互。…

竞赛 深度学习 大数据 股票预测系统 - python lstm

文章目录 0 前言1 课题意义1.1 股票预测主流方法 2 什么是LSTM2.1 循环神经网络2.1 LSTM诞生 2 如何用LSTM做股票预测2.1 算法构建流程2.2 部分代码 3 实现效果3.1 数据3.2 预测结果项目运行展示开发环境数据获取 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

2.2 Python数据类型详解

第二节&#xff1a;Python数据类型详解 Python作为一种动态类型语言&#xff0c;支持多种数据类型&#xff0c;每种数据类型都有其特定的特点和用途。本章将详细介绍Python中常见的数据类型及其特性&#xff0c;以及如何使用这些数据类型进行编程。 2.2.1 整数 (int) 整数是…

黑马点评-Redis的缓存击穿,缓存雪崩,缓存穿透,互斥锁

文章目录 1.缓存穿透2.缓存雪崩3.缓存击穿3.1 互斥锁 1.缓存穿透 解决办法 写入NULL值到Redis缓存&#xff0c;以后就会命中Redis的控制缓存而不会出现请求直接打到数据库的问题&#xff01; 代码 2.缓存雪崩 这个概念很好理解&#xff0c;雪崩就是无数的小雪花结构突然因…

pandas数据分析(1)

pandas&#xff0c;即Python数据分析库&#xff08;Python data analysis library&#xff09; DataFrame和Series DataFrame&#xff08;数据帧&#xff09;和Series&#xff08;序列&#xff09;是pandas的核心数据结构。DataFrame的主要组件包含索引、列、数据。DataFrame和…

扫描全能王的AI驱动创新与智能高清滤镜技术解析

目录 引言1、扫描全能王2、智能高清滤镜黑科技2.1、图像视觉矫正2.2、去干扰技术 3、实际应用案例3.1、打印文稿褶皱检测3.2、试卷擦除手写3.3、老旧文件处理3.4、收银小票3.5、从不同角度扫描文档 4、用户体验结论与未来展望 引言 在数字化时代背景下&#xff0c;文档扫描功能…

云计算【第一阶段(21)】Linux引导过程与服务控制

目录 一、linux操作系统引导过程 1.1、开机自检 1.2、MBR引导 1.3、GRUB菜单 1.4、加载 Linux 内核 1.5、init进程初始化 1.6、简述总结 1.7、初始化进程centos 6和7的区别 二、排除启动类故障 2.1、修复MBR扇区故障 2.1.1、 实验 2.2、修复grub引导故障 2.2.1、实…

从AICore到TensorCore:华为910B与NVIDIA A100全面分析

华为NPU 910B与NVIDIA GPU A100性能对比&#xff0c;从AICore到TensorCore&#xff0c;展现各自计算核心优势。 AI 2.0浪潮汹涌而来&#xff0c;若仍将其与区块链等量齐观&#xff0c;视作炒作泡沫&#xff0c;则将错失新时代的巨大机遇。现在&#xff0c;就是把握AI时代的关键…

深入解析高斯过程:数学理论、重要概念和直观可视化全解

与其他算法相比&#xff0c;高斯过程不那么流行&#xff0c;但是如果你只有少量的数据&#xff0c;那么可以首先高斯过程。在这篇文章中&#xff0c;我将详细介绍高斯过程。并可视化和Python实现来解释高斯过程的数学理论。 多元高斯分布 多元高斯分布是理解高斯过程所必须的概…

图书管理系统(附源码)

前言&#xff1a;前面一起和小伙伴们学习了较为完整的Java语法体系&#xff0c;那么本篇将运用这些知识连串在一起实现图书管理系统。 目录 一、总体设计 二、书籍与书架 书籍&#xff08;Book&#xff09; 书架&#xff08;Booklist&#xff09; 三、对图书的相关操作 I…

java将html转成图片

java 将html转成图片 1.导入jar2.代码3.展示结果4.注意事项 最近有一个需求需要根据指定的样式生成图片&#xff0c;使用java原生技术有些麻烦&#xff0c;所以上网搜了下案例&#xff0c;最后发现最好用的还是html2image&#xff0c;这里进行简单总结下。 1.导入jar <!-- 用…

metasfresh开源ERP系统Windows开发环境配置参考

目录 概述 开发环境 配置过程 后端启动 前端启动 登陆系统 其他 概述 Compiere闭源之后衍生出了Admpiere等若干开源的产品&#xff0c;metasfresh就是其中之一&#xff0c;metasfresh截至发稿时在GitHub上已有64000多次的修改提交&#xff0c;而且仍在维护中&#xff0…

Python应用开发——30天学习Streamlit Python包进行APP的构建(12)

st.checkbox 显示复选框部件。 Function signature[source] st.checkbox(label, valueFalse, keyNone, helpNone, on_changeNone, argsNone, kwargsNone, *, disabledFalse, label_visibility"visible") Returns (bool) Whether or not the checkbox is checked. …