From Sands to Mansions : Towards Automated Cyberattack Emulation with Classical Planning and Large Language Models¶
约 3148 个字 3 张图片 预计阅读时间 16 分钟
Introduction¶
主要原因:网络空间攻击技术逐渐进化,一个用于防御系统性能测试和弱点测试的,全面且保持更新的网络攻击数据集非常重要,一个用于训练防御模型的,含有高级攻击的数据集也很重要。但是现在这个领域的数据集非常匮乏,尤其是高级持续性威胁(Advanced Persistent Threats, APT)
经过调研,发现:
- 学术界对入侵检测系统的基准数据集比较单一,基本都集中在一些公开数据集,使用自定义公共数据集的攻击仅占13.51%,攻击场景多样性不足
- 提出检测系统的时间明显晚于发布基准数据集的时间(平均延迟4.75年),有可能许多攻击在测试时可能已经过时了
因此提出对于理想的网络攻击数据集的三点要求:
- 再现性:可以在现实环境中复现
- 多样性:需要覆盖较广的攻击面、技术和工具
- 现实性:生成的攻击数据集应当展现现实攻击者的行为和偏好
当下的攻击技术库,可以提供单独的一步攻击技术,可以用于测试防御系统或者构建数据集,但是无法形成一个完整的、多步的攻击链,而现实的攻击包含了多个阶段(初步侦查、获取数据泄露),许多入侵检测方法也依赖于长期攻击过程中不同阶段的关联,因此用单独的攻击步骤来评估这些系统是不合适的,对此,有三个挑战:
- 关于攻击技术的有限的、分散的和非结构化的知识。一个多样化的网络攻击数据集必须包括广泛的战术、技术和程序(Tactics, Techniques and Procedures, TTPs),将来自不同来源的攻击技术集成到攻击仿真中需要大量的人力和专业知识
- 建立多步的网络攻击。近几年许多研究都关注到了使用传统的计划技术(例如 PDDL,Planning Domain Definition Language)来自动构建网络攻击多步计划,生成攻击计划需要理解每一步之间的联系,但是这样的联系是很复杂的
- 将攻击仿真与网络威胁情报(Cyber Threat Intelligence, CTI)报告相结合,这对于创建真实的数据集至关重要,我们希望构建的网络攻击与 CTI 报告中记录的真实攻击组的行为相似。然而,尽管CTI 分析取得了进步,但如何将攻击生成与人类编写的报告保持一致仍然是一个悬而未决的问题
AURORA 系统在攻击仿真中使用第三方攻击工具,将攻击技术的文档转换为攻击行为,利用攻击行为链接模型来连接,利用 LLM 的三个特点:可以分析非结构化的攻击工具文档来提取出攻击行为、可以描述攻击行为之间隐藏的关系、可以分析人写的 CTI 报告
这篇论文的贡献:
- 发布 AURORA,它可以分析 CTI 报告并复制来自现实世界威胁组织的攻击模式,设置攻击模拟环境并生成半自动 Python 脚本来执行攻击
- 定义了攻击行为来统一和模块化各种攻击工具,定义了攻击行为链接模型来连接各种攻击工具
- 在 AURORA 上面进行了大量的实验,评估表明,AURORA 可以有效地将更多样化的攻击动作连接到攻击链中,质量更高
- 构建、手动验证并发布了超过 1000 个攻击链。这是迄今为止第一个自动生成的也是最大的网络攻击数据集
Background and Related Work¶
Automated Cyberattack Dataset Generation¶
现有的生成攻击序列的模型系统有的生成的攻击序列不包含自动执行的细节,需要手动进行执行,有的描述较为广泛,没有具体的执行细节如工具、脚本和命令。而渗透测试和红队攻防侧重针对给定目标创建一个单一的攻击链,也无法模仿 CTI 报告中描述的真实攻击者行为,因此无法构建包含各种攻击场景的综合数据集。
Classical Planning and PDDL¶
经典规划问题一般定义为一个四元组 \((\mathcal{P},\mathcal{A},\mathcal{I},\mathcal{G})\) ,其中:
- \(\mathcal{P}\)(Predicates)是谓词的有限集,每个布尔谓词会描述目标世界的特定的条件,其子集可以描述目标世界在某些阶段的状态 \(s\)
- \(\mathcal{A}\)(Actions)是行为的有限集,每个行为是改变状态的基本单元,有两个特点:
- 前提条件(Preconditions):是否执行行为的谓词
- 效果(Effects):谓词在行为执行过后是否为真
- \(\mathcal{I}\)(Initial State):计划开始前的初始状态
- \(\mathcal{G}\)(Goal State):计划希望达成的目标状态
一个计划就是一个行为的序列 \(\{a_1,a_2,\cdots,a_n\}\) ,从状态 \(I\) 开始,\(a_i\) 的前提条件由状态 \(s_{i-1}\) 满足,执行后状态从 \(s_{i-1}\) 转移到 \(s_i\),最后执行完 \(a_n\) 到达状态 \(G\)
PDDL 是一种标准化语言,用于在规划问题中定义上述概念,下面是用 PDDL 定义的利用 Sliver 获得 PowerShell 会话的行为:
一个用 PDDL 写的计划问题通常有两个文件:域文件和问题文件,域文件指定所有谓词 \(\mathcal{P}\),行为 \(\mathcal{A}\) 以及目标域的数据类型,问题文件定义起始状态 \(\mathcal{I}\) 和目标状态 \(\mathcal{G}\),可用对象和特定问题的优化指标
Cyberattack as a Planning Problem¶
现有工作主要关注漏洞和利用 ,而现代网络攻击(如 APT)范围更广,包含大量利用后(Post-Exploitation)行为。
一个根本问题尚未明确回答:如何定义攻击行为之间的关系(即如何定义行为、前提条件、效果)。现有工作中的状态描述过于简单,无法体现行为间的复杂关系
Attack Action Linking Model¶
Attack Actions¶
定义:被认为是构成攻击计划的最小单元,也是多步攻击中要执行的原子操作。
- 一个攻击行为可以是 Metasploit 的一个模块 ,或 Sliver 中的一条命令
- 与 MITRE ATT&CK 中的“规程(Procedures)”相似,但攻击行为更结构化,包含了组织和执行所需的多项特征 ,如唯一标识 (UUID)、名称、来源、描述、支持平台、MITRE TTPs、执行详情(Execution)、前提条件(Preconditions)和效果(Effects)
Attack Action Linking Model¶
定义:一个可扩展的 PDDL 谓词集合,用于描述攻击行为的前提条件和效果,从而将它们链接成攻击链
从 9 个角度来设计谓词集合:
- 环境(Environments): 操作系统、漏洞、软件等。例如
(OS_windows ?target-host)
表示是 Windows 系统 - 执行器(Executor): 执行攻击动作的媒介,如 Shell、Meterpreter 会话等。这是链接不同工具的关键。例如
(command_prompt ?executorID-executor ?target-host)
表示目标主机的命令行 Shell - 载荷 (Payloads): 载荷的类型和操作。例如
(sliver_implant ?p-payload)
表示利用 Sliver - 文件(Files): 文件的操作和类型。操作谓词描述文件存在、删除、执行、权限更改的条件,文件类型谓词识别文件的具体类型
- 进程(Processes): 进程状态和操作
- 用户(Users): 用户类型和操作,例如
(root_user ?u-user)
表示 root 用户 - 凭证(Credentials): 通常是连接多个攻击阶段的关键,尤其是在横向移动中,例如攻击者必须首先获得受害者的用户名和密码
- 信息(Information):除凭证外的受害者相关数据
- 数据(Data): 与文件相关的具体数据操作,如
(screenshot_data_saved ?f-file ...)
表示在受害者主机上保存截图的效果
下图展示了利用谓词连接而成的攻击链:
该模型是可扩展的,虽然无法完全覆盖所有情况,但足以有效链接不同的攻击行为
System Overview¶
AURORA 系统包含五个核心组件 ,输入攻击工具文档和 CTI 报告,输出可半自动化执行的攻击链、环境和脚本
Attack Tool Analyzer¶
将攻击工具,红队库,渗透框架等第三方工具(如 Metasploit, Sliver)的文档转化为结构化的“攻击行为” 。
使用正则表达式从原始文档文本中匹配和提取这些特征,利用 LLM 进行分析,为没有标签的工具推断 MITRE ATT&CK 标签(该框架汇聚了全球安全社区贡献的实战高级威胁攻击战术和技术,形成了针对黑客行为描述的通用语言和黑客攻击抽象知识库,有点类似分门别类)。
- 对于 Prompt Engineering,使用一个两步方法:思维链(Chain-of-Thought)提高准确率,要求 LLM 确定 MITRE 策略,基于这个答案检索该策略中的相关技术,这些技术在第二个 Prompt 中作为选项呈现
- 对于微调模型,利用 MITRE 官网的文本-标签对
将文档转换为攻击行为最具挑战性的部分是分配前提条件和效果谓词。挑战是双重的:
- 生成的谓词必须标准化并限制其多样性,因为经典的规划器依赖相同的谓词来连接攻击动作的前提条件和效果
- 谓词必须是可扩展和可适应的,不可能为所有的前提条件和效果定义一套完整的谓词。因此,系统必须能够生成新的谓词来处理看不见的前提条件和效果
为此,设计了前提条件和效果分析流水线,架构如下图所示:
对于每个攻击行为,先根据规则直接分配一个前提条件和效果谓词(例如要利用 Metasploit Payload 进行攻击就得根据他们的文档分配一个兼容的利用模块),然后利用 LLM 分析文档对更复杂的行为分配前提条件和效果谓词(为了防止有些不能利用规则提取出来的情况)。为保证谓词的一致性和扩展性,LLM 会被要求优先从一个谓词列表中选择,只有在找不到合适的情况下才生成新的谓词。
Attack Report Analyzer¶
使用 LLM 从 CTI 报告中提取特定攻击组织使用的 TTPs,提取出的 TTPs 用于指导后续的攻击规划,以模仿真实攻击者的行为。
Attack Planning¶
将攻击行为转化为 PDDL 格式
- 对于 PDDL 域文件,引入奖励函数:为了模仿 CTI 报告中的攻击者,系统会为与报告中 TTP 描述更相似的“攻击行为”分配更高的奖励值。规划算法会尝试最大化生成攻击链的总奖励 ,从而优先选择符合特定攻击者画像的行为;对于没有在报告中提到的行为可以通过随机奖励来提高生成的攻击计划的多样性
- 对于 PDDL 问题文件,通过将每个谓词都设置为一次目标状态,可以生成尽可能多的攻击链,以最大化多样性。
Attack Environment Builder¶
现有的 Builder 要么会用容器或者只关注 Linux 核的漏洞,该项目使用虚拟机
- 先收集公开的虚拟机镜像,并记录他们的操作系统、CVE、第三方软件,生成对应的环境为此作为 PDDL 问题文件的初始状态
- 局限性: 依赖于有限的、预先存在的虚拟机镜像,无法按需定制任意环境组合
Attack Execution and Data Collection¶
为生成的攻击链提供精确的命令 ,并生成 Python 脚本进行半自动化执行 。
- 称其为“半自动”是因为某些步骤仍需人工干预(如复杂的参数配置、模拟用户点击等)。
- 在执行攻击的同时,用户可以部署各种数据收集器来捕获攻击痕迹,用于后续的防御系统测试。