
论文题目:{MAGIC}: Detecting Advanced Persistent Threats via Masked Graph Representation Learning
论文作者:Zian Jia;Yun Xiong;Yuhong Nan;Yao Zhan;Jinjing Zha;Mi Wen发表会议:USENIX Security Symposium主题类型:攻击检测笔记作者:王倩@Web攻击检测与追踪主编:黄诚@安全学术圈
研究概述
攻击者采用高级持续性威胁(APT)现象正在变得越来越普遍,并对各个企业和机构构成了巨大威胁。关于来源图的数据出处分析已成为APT检测中的常见方法。然而先前工作存在一些缺点: (1)需要涉及攻击的数据和对APT的先验知识,(2)未能提取出来源图中埋藏的丰富上下文信息以及(3)计算花销巨大。在本文中引入了MAGIC,这是一种新颖而灵活的自监督的APT检测方法,能够在不同级别的监督下执行多粒度检测。MAGIC利用掩码图表示学习来学习建模良性系统实体和行为,在出处图上进行有效的深度特征提取和结构抽象。通过异常检测方法掩盖异常的系统行为,MAGIC能够同时执行系统实体级别和批量处理日志级别APT检测。MAGIC还专门设计模型自适应机制来处理概念漂移,并成功地适用于普遍的检测方案。论文在三个广泛使用的数据集上评估该方法,包括现实世界和模拟攻击。评估结果表明,MAGIC在所有情况下都能实现优异的检测结果,并且比最先进的APT检测方法性能花销小。
MAGIC由三个主要组成部分组成:(1)来源图构造,(2)图表示模块和(3)检测模块,以及可选的(4)模型适应机制。在训练过程中,MAGIC通过(1)将训练数据转换为(2)学习图形,并记住(3)中的良性行为。在检测阶段,MAGIC与(1)转换目标数据,获得嵌入的图形(2),并通过(3)检测异常值。图1给出了MAGIC方法架构的总览图。

图1 MAGIC 方法架构总览图
MAGIC方法针对系统审计软件收集的流式审计日志,通常以批次存储,通过以下流程实现 APT 检测:首先,将日志中的系统实体(如进程、用户)和交互关系(如文件访问、网络连接)转化为节点与边,构建静态的溯源图,并利用冗余消除技术简化图结构;随后,通过基于图掩码自编码器和样本结构重建技术的图表示模块对溯源图进行处理,将节点属性(如操作频率)与边属性(如交互类型)整合为综合向量表示输出嵌入,其中包含反映整体系统行为的系统状态嵌入和代表实体行为的节点嵌入。该模块仅使用良性审计日志训练,以学习正常系统行为模式。在 APT 检测阶段,MAGIC 基于输出嵌入的异常检测方法,根据任务粒度选择不同嵌入作为检测目标:对于批量级日志级任务,通过分析系统状态嵌入反映全局系统行为的异常,识别未被模型见过的可能恶意系统状态;对于系统实体级任务,则聚焦节点嵌入代表单个实体行为的异常,精准定位可疑实体,实现细粒度 APT 威胁检测。
贡献分析
贡献点1:论文针对海量审计日志的APT多粒度检测问题,提出基于掩码图表示学习与异常值检测的通用方法 MAGIC,实现了不同监督级别、不同检测粒度和来自各种来源的审计日志下进行检测;
贡献点2:论文针对检测计算花销大问题,提出了扩展的图掩码自动编码器方法,实现了有限条件下,MAGIC能在低资源条件下完成训练和检测;
贡献点3:论文针对效果验证不充分的问题,通过多数据集对比实验,验证了 MAGIC 在攻击检测中的高准确性与低计算开销优势;
代码分析
代码链接:https://github.com/FDUDSDE/MAGIC
1. 代码使用类库分析,是否全为开源类库的集成?
MAGIC 主要依赖以下开源类库:
Python 3.8
PyTorch 1.12.1(深度学习框架,开源)
DGL 1.0.0(Deep Graph Library,图神经网络,开源)
Scikit-learn 1.2.2(机器学习工具包,开源)
2. 代码实现难度及工作量评估;
2.1. 难度方面:
该项目实现了面向溯源图的自监督学习与APT攻击检测,需要理解图神经网络、掩码学习、异常检测等多领域知识,理论与工程难度均较高;数据预处理部分涉及大规模安全日志/溯源数据的解析与转换,需要高效的数据工程能力。
2.2. 工作量方面:
数据集预处理工具链(如streamspot_parser.py, wget_parser.py, trace_parser.py)需适配不同公开数据集格式,工作量大;主体模型实现基于DGL/PyTorch,涉及模型设计、训练、推理与异常检测等完整流程,开发和调试周期较长。
2.3. 代码关键实现的功能(模块)。
2.3.1 数据预处理模块(utils/):
支持StreamSpot、Unicorn Wget、DARPA TC等多个APT检测基准数据集的自动解析与图结构转换。
主要脚本包括: streamspot_parser.py、wget_parser.py、trace_parser.py,负责日志解析、实体抽取、图构建等。
2.3.2 数据加载与管理(如utils/loaddata.py):
提供load_batch_level_dataset等函数,支持批量数据加载、标签分配、数据压缩存储(如graphs.pkl)。
2.3.3 模型训练与检测(model/):
实现了论文提出的“基于掩码的图表示学习与APT检测”方法的核心神经网络能力。
主要脚本包括:gat.py定义和实现图神经网络结构;autoencoder.py封装自监督学习结构; mlp.py用作图解码器,重建节点对之间边存在的概率,从而使得后续任务异常检测可以利用这些嵌入完成更复杂的行为推理;train.py和eval.py为主训练/评估脚本提供底层模型支持。
论文点评
训练数据集质量。MAGIC方法假设在训练日志收集期间模型能观察到所有最新的良性系统行为。然而如果使用低质量数据训练 MAGIC,将导致无法充分覆盖系统行为,可能会产生许多误报。可以使用数据增强技术增加节点、边扰动,增强数据适应性。如节点扰动通过修改或扩展节点属性,模拟真实系统中的自然变化,提升模型对不同节点行为的适应能力;边扰动通过修改边的存在性、类型或权重,模拟系统中可能的动态行为,提升模型对复杂关系的建模能力。
异常值检测方法。MAGIC 实现了基于 KNN 的异常值检测模块,用于 APT 检测。虽然它在对数时间内完成训练和推理,但其在大型数据集上的效率仍然不尽人意。模型检测模块花费 13.8 分钟检查 684,111 个目标,占总推理时间的 99%;其他异常值检测方法,例如单类 SVM和孤立森林不适合模型检测设置,无法适应概念漂移;基于聚类的方法和近似 KNN 搜索可能更适合大型数据集。未来可以采用GPU 加速的 ANN 算法(如 FAISS-GPU、HNSWlib-GPU),降低KNN 的时间复杂度,支持百万级样本的实时检测。以及GPU 扩展与迁移,通过向量化计算、内存优化和批量处理,将 KNN 迁移至 GPU,显著提升推理速度,满足 APT 检测的实时性需求。
对抗性攻击。MAGIC 能够很好地处理隐蔽攻击,这类攻击通过模仿良性系统行为来规避检测。然而,如果攻击者了解 MAGIC 的详细工作原理,他们可能会进行精心设计的攻击来渗透检测器。MAGIC 的 APT 检测场景中,结合图数据的结构特性,节点代表实体,边代表交互,未来可通过嵌入特征、注意力机制、对抗训练等技术,有效降低攻击者的干扰能力,同时保持对真实攻击的高检测精度。
论文文献
Jia, Zian, et al. "{MAGIC}: Detecting advanced persistent threats via masked graph representation learning." 33rd USENIX Security Symposium (USENIX Security 24). 2024.
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com
声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。