CyberBattleSim
CyberBattleSim 是一个由微软开源的实验与研究平台,旨在模拟抽象的企业网络环境,用于探究自动化智能体之间的交互机制。它通过高度抽象的方式呈现计算机网络与网络安全概念,让研究人员能够在一个安全、简化的沙箱中,观察攻击者与防御者智能体的博弈过程。
该平台主要解决了在真实网络中进行自主攻防算法研究的高风险与高成本难题。由于仿真环境经过抽象处理,无法直接应用于现实系统,从而有效防止了训练出的恶意技术被滥用,为探索自动化网络攻击与防御提供了安全的试验田。用户可以在其中研究横向移动攻击技术、网络拓扑对安全的影响,以及测试最新的强化学习算法在巨大动作空间下的表现。
CyberBattleSim 特别适合网络安全研究人员、AI 算法开发者以及高校学者使用。其核心亮点在于基于 Python 构建了标准的 Open AI Gym 接口,方便用户直接利用现有的强化学习框架训练智能体。平台内置了基础的随机防御者和攻击场景,支持通过重映像节点等抽象操作来模拟威胁缓解过程,并提供了步数效率与累积奖励等指标来评估模型性能。如果你希望在不危及真实系统的前提下,深入探索自主网络安全系统的伦理设计与算法演进,这是一个理想的起步工具。
使用场景
某网络安全研究团队正在开发基于强化学习的自主防御系统,旨在提升企业网络对自动化横向移动攻击的抵御能力。
没有 CyberBattleSim 时
- 研究人员必须在真实或高保真仿真环境中测试攻击代理,不仅成本高昂,还存在恶意代码意外泄露或破坏生产系统的风险。
- 缺乏标准化的抽象网络环境,导致不同团队开发的防御算法难以在统一拓扑和漏洞设定下进行公平的性能基准对比。
- 训练智能体需要处理海量的底层网络流量数据,使得模型难以聚焦于“凭证窃取”和“节点渗透”等核心策略的学习,收敛速度极慢。
- 无法快速调整网络拓扑结构或漏洞分布参数,每次实验变更都需要重新搭建复杂的环境,严重拖慢了迭代效率。
使用 CyberBattleSim 后
- 团队利用其高度抽象的模拟环境安全地训练攻击与防御代理,既完全隔离了真实系统风险,又保留了博弈的核心逻辑。
- 借助内置的 Open AI Gym 接口,研究人员能够直接在同一套参数化拓扑中对比不同强化学习算法的累积奖励和步数效率,确立了清晰的评估标准。
- 通过忽略无关的网络流量细节,智能体得以专注于侧向移动策略的优化,显著缩短了从凭证存储到节点攻占的训练周期。
- 仅需修改配置文件即可瞬间生成具有不同漏洞分布和网络结构的新场景,支持大规模并行实验以验证防御架构的鲁棒性。
CyberBattleSim 通过提供一个安全、标准化且可高度定制的博弈沙盒,让研究人员能够低成本地加速自主网络安全智能体的进化与验证。
运行环境要求
- Linux
- Windows (仅支持通过 WSL)
未说明 (输出日志显示支持 CUDA,但未明确指定显卡型号或显存需求)
未说明

快速开始
# CyberBattleSim
2021年4月8日:请参阅微软安全博客上的公告。
CyberBattleSim是一个实验性研究平台,用于研究在模拟的抽象企业网络环境中运行的自动化智能体之间的交互。该仿真提供了一个关于计算机网络和网络安全概念的高度抽象框架。其基于Python的Open AI Gym接口允许使用强化学习算法来训练自动化智能体。
仿真环境由固定的网络拓扑结构以及智能体可以利用以在网络中横向移动的一组漏洞参数化。攻击者的目的是通过利用部署在计算机节点中的漏洞来控制网络的一部分。当攻击者试图在网络中扩散时,防御者智能体会监控网络活动,尝试检测正在进行的任何攻击,并通过驱逐攻击者来减轻对系统的威胁。我们提供了一个基本的随机防御者,它根据预定义的成功概率来检测并缓解正在进行的攻击。我们通过重新映像受感染的节点来实现缓解,这一过程被抽象地建模为跨越多个仿真步骤的操作。
为了比较智能体的性能,我们关注两个指标:达到目标所花费的仿真步数,以及在整个训练周期内各仿真步骤的累积奖励。
项目目标
我们认为该项目是一个实验平台,用于研究自动化智能体在抽象仿真网络环境中的交互。通过将其开源,我们希望鼓励研究社区探索网络智能体在这些环境中如何交互与演化。
我们提供的仿真无疑较为简单,但这也有其优势。其高度抽象的特性使其无法直接应用于现实世界系统,从而为防止使用由此训练出的自动化智能体进行恶意行为提供了一种保障。同时,它的简单性使我们能够专注于想要研究的具体安全方面,并快速试验最新的机器学习和人工智能算法。
例如,当前的实现主要关注横向移动的网络攻击技术,旨在理解网络拓扑和配置如何影响这些技术。基于这一目标,我们认为没有必要对实际网络流量进行建模。这只是我们系统中一个显著的局限性示例,未来的研究贡献或许可以加以改进。
在算法方面,我们提供了一些基础智能体作为起点,但我们很想知道最先进的强化学习算法与它们相比会如何。我们发现,任何计算机系统固有的庞大动作空间对于强化学习来说都是一个特别的挑战,这与其他应用(如视频游戏或机器人控制)形成了鲜明对比。训练能够存储和检索凭据的智能体也是应用强化学习技术时面临的另一个挑战,因为通常智能体并不具备内部记忆功能。这些都是可以利用该仿真进行基准测试的研究领域。
其他感兴趣的方向还包括自主网络安全系统的负责任和伦理使用:如何设计一种能赋予防御者智能体内在优势的企业网络?如何开展旨在保护企业免受自主网络攻击的安全研究,同时防止此类技术被滥用?
文档
阅读项目的快速入门。
构建状态
| 类型 | 分支 | 状态 |
|---|---|---|
| CI | master | |
| Docker镜像 | master |
基准测试
请参阅基准测试文档。包含最新运行结果的Jupyter笔记本已通过专用标签提交至/notebooks/benchmarks (latest_benchmark)。
搭建开发环境
强烈建议在Linux环境下工作,可以直接在Linux上操作,也可以通过Windows上的WSL进行。虽然直接在Windows上运行Python仍然可行,但已不再被官方支持。
首先克隆仓库:
git clone https://github.com/microsoft/CyberBattleSim.git
操作系统组件
如果在运行notebook中的papermill工具时遇到以下错误(或者在运行orca --help时出现类似问题):
/home/wiblum/miniconda3/envs/cybersim/lib/orca_app/orca: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
或其他共享库如libgdk_pixbuf-2.0.so.0,
则需要运行以下命令:
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4
在Linux或WSL上
这些说明已在Linux Ubuntu发行版上进行了测试(包括原生Ubuntu和WSL版本)。
如果尚未安装conda,需运行install_conda.sh脚本来安装。
bash install-conda.sh
安装完成后,打开一个新的终端并运行初始化脚本:
bash init.sh
这将创建一个名为cybersim的conda环境,其中包含所有必要的操作系统和Python依赖项。
要激活该环境,请运行:
conda activate cybersim
Windows子系统Linux
在Windows上推荐的开发环境是通过WSL。您需要先在Windows机器上安装Ubuntu WSL发行版,然后按照Linux部分的说明继续操作。
WSL中的Git认证
要进行Git认证,您可以选择使用SSH认证,或者使用credential-helper技巧自动生成PAT令牌。后者可以通过在WSL下运行以下命令来实现(更多信息请点击这里):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
WSL上的Docker
若想在Docker容器中运行您的环境,我们建议通过Windows Subsystem for Linux (WSL)来运行docker,具体方法请参考:在WSL下的Windows上安装Docker。
Windows(不支持)
此方法已不再维护,请改用 WSL 子系统中的 Linux 环境运行。
不过,如果您坚持要在 Windows 上安装 Python 3.10,则可以在 PowerShell 提示符下运行 ./init.ps1 脚本。
使用 Docker 快速入门
最快捷的启动方式是通过 Docker 容器。
注意:出于许可原因,我们不会公开分发任何构建产物。特别是,以下命令中提到的 Docker 注册表
spinshot.azurecr.io仅对项目维护者开放。作为替代方案,您可以使用提供的
Dockerfile自行重建 Docker 镜像,将生成的镜像发布到您自己的 Docker 注册表,并替换下方命令中的注册表名称。
从 Docker 注册表运行
commit=7c1f8c80bc53353937e3c69b0f5f799ebb2b03ee
docker login spinshot.azurecr.io
docker pull spinshot.azurecr.io/cyberbattle:$commit
docker run -it spinshot.azurecr.io/cyberbattle:$commit python -m cyberbattle.agents.baseline.run
重新构建 Docker 镜像
docker build -t cyberbattle:1.1 .
docker run -it -v "$(pwd)":/source --rm cyberbattle:1.1 python -m cyberbattle.agents.baseline.run
检查您的环境
运行以下命令以使用基线强化学习智能体进行模拟:
python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80 --chain_size=4 --ownership_goal 0.2
python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80 --chain_size=4 --reward_goal 50 --ownership_goal 0
如果一切设置正确,您应该会看到如下输出:
torch cuda available=True
###### DQL
Learning with: episode_count=1,iteration_count=10,ϵ=0.9,ϵ_min=0.1, ϵ_expdecay=5000,γ=0.015, lr=0.01, replaymemory=10000,
batch=512, target_update=10
## Episode: 1/1 'DQL' ϵ=0.9000, γ=0.015, lr=0.01, replaymemory=10000,
batch=512, target_update=10
Episode 1|Iteration 10|reward: 139.0|Elapsed Time: 0:00:00|###################################################################|
###### Random search
Learning with: episode_count=1,iteration_count=10,ϵ=1.0,ϵ_min=0.0,
## Episode: 1/1 'Random search' ϵ=1.0000,
Episode 1|Iteration 10|reward: 194.0|Elapsed Time: 0:00:00|###################################################################|
simulation ended
Episode duration -- DQN=Red, Random=Green
10.00 ┼
Cumulative rewards -- DQN=Red, Random=Green
194.00 ┼ ╭──╴
174.60 ┤ │
155.20 ┤╭─────╯
135.80 ┤│ ╭──╴
116.40 ┤│ │
97.00 ┤│ ╭╯
77.60 ┤│ │
58.20 ┤╯ ╭──╯
38.80 ┤ │
19.40 ┤ │
0.00 ┼──╯
Jupyter 笔记本
为了快速熟悉该项目,您可以打开其中一个提供的 Jupyter 笔记本,与 Gymnasium 环境进行交互式体验。
关于
.py笔记本的说明:
- 我们的笔记本以
.py文件形式提交到 Git 中。这些文件可以直接在 VSCode 或 Jupyter 中使用 Jupytext 扩展 打开并运行。- 输出的
.ipynb文件也可以使用 papermill 通过运行 bash 脚本 run_benchmark.sh 自动重新生成。- 我们还会在单独的 Git 标签中发布包含完整输出和图表的相应
.ipynb笔记本快照。 最新的 Jupyter 笔记本输出快照,包括基准测试结果,可通过以下 Git 标签访问:/notebooks/benchmarks (latest_benchmark)。
一些入门笔记本:
“夺旗”玩具环境笔记本:
链式环境笔记本:
其他环境:
基准测试:以下笔记本展示了基线智能体在各种环境上的基准评估。
最新的 Jupyter 笔记本输出快照,包括基准测试结果,可通过以下 Git 标签访问:/notebooks/benchmarks (latest_benchmark)。
如何实例化 Gym 环境?
以下代码展示了如何创建 OpenAI Gym 环境 CyberBattleChain-v0 的实例,该环境基于 链式网络结构,包含 10 个节点(size=10),其中智能体的目标是获得网络的完全控制权(own_atleast_percent=1.0)或破坏 80% 的网络可用性 SLA(maintain_sla=0.80),同时网络由基于概率模型的基础防御者监控和保护(defender_agent=ScanAndReimageCompromisedMachines):
import cyberbattle._env.cyberbattle_env
cyberbattlechain_defender =
gym.make('CyberBattleChain-v0',
size=10,
attacker_goal=AttackerGoal(
own_atleast=0,
own_atleast_percent=1.0
),
defender_constraint=DefenderConstraint(
maintain_sla=0.80
),
defender_agent=ScanAndReimageCompromisedMachines(
probability=0.6,
scan_capacity=2,
scan_frequency=5))
要尝试其他网络拓扑结构,可以参考 chainpattern.py 定义您自己的机器和漏洞集合,然后在 模块初始化器 中添加条目,以声明并注册 Gym 环境。
贡献
本项目欢迎贡献和建议。大多数贡献都需要您签署贡献者许可协议(CLA),声明您有权且确实将您的贡献使用权授予我们。有关详细信息,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要提供 CLA,并相应地标记 PR(例如状态检查、评论)。请按照机器人提供的指示操作。对于使用我们 CLA 的所有仓库,您只需执行此操作一次。
本项目已采用 微软开源行为准则。更多信息请参阅 行为准则常见问题解答 或通过电子邮件 opencode@microsoft.com 联系我们,以获取更多问题或意见。
贡献思路
以下是一些可能的贡献方向:增强仿真功能(基于事件的仿真、细化仿真等)、在现有仿真上训练强化学习算法、实现基准测试以评估和比较智能体的新颖性、添加更多网络生成模式以用于训练强化学习智能体、参与文档编写、修复 bug 等。
更多创意请参阅 维基页面。
引用本项目
@misc{msft:cyberbattlesim,
Author = {Microsoft Defender 研究团队},
Note = {由 Christian Seifert、Michael Betser、William Blum、James Bono、Kate Farris、Emily Goren、Justin Grana、Kristian Holsheimer、Brandon Marken、Joshua Neil、Nicole Nichols、Jugal Parikh 和 Haoran Wei 创建},
Publisher = {GitHub},
Howpublished = {\url{https://github.com/microsoft/cyberbattlesim}},
Title = {CyberBattleSim},
Year = {2021}
}
隐私说明
本项目不包含任何客户数据。所提供的模型和网络拓扑纯属虚构。使用本项目代码的用户需自行提供仿真所需的所有输入,并应确保拥有使用相关数据的必要权限。
商标
本项目可能包含与项目、产品或服务相关的商标或标识。未经授权使用微软商标或标识须遵守并遵循 微软商标与品牌指南。在本项目的修改版本中使用微软商标或标识时,不得造成混淆或暗示微软的赞助关系。任何第三方商标或标识的使用均应遵守该第三方的相关政策。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备