Itachi-1824/warroom-env

GitHub: Itachi-1824/warroom-env

这是一个基于 OpenEnv 的 SOC 事件响应仿真环境,旨在通过模拟具备自适应能力的动态攻击者,来评估 AI 智能体在安全调查取证与威胁遏制中的实际表现。

Stars: 0 | Forks: 0

title: WarRoom - SOC 事件响应 emoji: "🛡" colorFrom: red colorTo: gray sdk: docker app_port: 8000 tags: - openenv # WarRoom — 具备自适应对手的 SOC 事件响应 这是一个 OpenEnv 环境,用于模拟安全运营中心(SOC),AI agent 在其中调查并遏制实时安全事件。对手是**主动的** —— 在 agent 每浪费一步时推进其 kill chain,并且通过切换 C2 通道、加速数据外泄或转移到其他被攻陷的账户来**适应**遏制行动。 ## 为什么这很重要 网络安全事件响应是企业 IT 中风险最高的任务。全球市场价值超过 2000 亿美元,每家财富 500 强公司都设有 SOC,而该领域目前尚不存在任何 agent 基准。WarRoom 填补了这一空白,它是有史以来为威胁调查构建的最真实的 agent 评估环境。 **WarRoom 的独特之处:** - **实时对手** —— 攻击者实时推进其 kill chain - **自适应对手** —— 通过 C2 故障转移、账户转移和加速数据外泄来响应遏制行动 - **取证深度** —— 内存分析、文件分析、payload 解码、注册表取证 - **NIST 方法论评分** —— 在遏制前奖励适当的调查 - **5 个场景** —— 涵盖恶意软件、网络钓鱼、勒索软件、APT 和内部威胁 ## 动作空间 ### 调查命令 | 命令 | 描述 | |---------|-------------| | `check_alerts` | 查看活动的 SIEM 警报 | | `list_hosts` | 列出所有网络主机及其状态 | | `check_metrics ` | 查看 CPU/内存/网络指标 | | `read_logs [--tail N]` | 读取安全和系统日志 | | `check_connections ` | 查看活动的网络连接 | | `check_processes ` | 查看运行中的进程 | | `query_threatintel ` | 查询 IOC(IP、域名、哈希值) | | `check_email_gateway` | 查看电子邮件网关警报 | | `check_dns_logs [--host ]` | 查看 DNS 查询日志 | | `check_firewall [--src ] [--dst ]` | 查看防火墙日志 | ### 取证深入分析命令 | 命令 | 描述 | |---------|-------------| | `analyze_memory ` | 内存取证 —— 注入代码、C2 配置、凭据工件 | | `analyze_file ` | 静态文件分析 —— 字符串、导入、判定结果 | | `decode_payload ` | 解码编码后的 PowerShell/shell payload | | `check_registry ` | 注册表取证 —— 持久化、修改 | ### 遏制命令 | 命令 | 描述 | |---------|-------------| | `isolate_host ` | 在网络中隔离被攻陷的主机 | | `block_ip ` | 在防火墙处阻止 IP | | `block_domain ` | 通过 DNS 对域名进行 Sinkhole | | `disable_account ` | 禁用被攻陷的用户账户 | | `kill_process ` | 终止恶意进程 | | `quarantine_file ` | 隔离可疑文件 | ### 解决命令 | 命令 | 描述 | |---------|-------------| | `submit_iocs ` | 提交识别出的 IOC | | `identify_root_cause ` | 声明根本原因 | | `update_status ` | 发布事件状态更新 | | `resolve` | 将事件标记为已解决 | ## 观察空间 | 字段 | 类型 | 描述 | |-------|------|-------------| | `output` | str | 命令输出(日志、警报、取证结果等) | | `active_alerts` | int | 活动警报的数量(随着攻击者的推进而增加) | | `elapsed_minutes` | int | 自事件开始以来的模拟时间 | | `hosts_compromised` | int | 确认被攻陷的主机(可以动态增加) | | `hosts_contained` | int | 成功被隔离的主机 | | `threat_contained` | bool | 威胁是否已被完全遏制 | | `done` | bool | episode 是否已结束 | | `reward` | float | 步骤奖励 | | `metadata.data_exfiltrated_mb` | float | 丢失的数据(如果 agent 动作缓慢则会增加) | | `metadata.attacker_active` | bool | 攻击者是否仍在活动 | ## 任务(5 个场景) ### 任务 1:恶意软件检测与遏制(简单) 通过带有宏文档的钓鱼电子邮件进行的单主机感染。具有明确的 EDR 警报和一台被攻陷的主机。如果 agent 耗时超过 15 步,攻击者将升级至凭据转储。 ### 任务 2:带有横向移动的网络钓鱼活动(中等) 定向钓鱼攻击了 5 名员工。两人在伪造的 SSO 页面上输入了凭据。攻击者使用窃取的凭据通过 RDP 进入文件服务器并访问机密数据。Agent 必须映射整个链条并遏制所有被攻陷的资产。 ### 任务 3:勒索软件爆发 —— 与加密赛跑(中-难) 通过 PsExec/SMB 传播的勒索软件。多台主机已在加密中。**每 5 步,就会多一台主机沦陷。** Agent 必须赶在文件服务器和备份被加密之前抢先将主机隔离。存在极限的时间压力。 ### 任务 4:具有自适应对手的 APT 调查(困难) 持续 72 小时的多阶段入侵:鱼叉式网络钓鱼 -> C2 -> 凭据转储 -> 横向移动 -> 数据外泄。**对手会适应:** - 阻断主 C2 -> 攻击者切换到基于 DNS-over-HTTPS 的备用通道 - 隔离零号病人 -> 攻击者从其他主机加速数据外泄 - 禁用被攻陷的账户 -> 攻击者转移到另一个已转储的账户 - 合法 Windows Update 活动产生的干扰性警报 - 反取证:如果 agent 动作缓慢,攻击者将删除日志 ### 任务 5:内部威胁 —— 微妙的行为分析(困难) 高级工程师正在进行知识产权外泄。没有恶意软件,也没有外部攻击者。微妙的信号:下班后的批量数据传输、个人云同步工具、受密码保护的源代码存档、HR 门户访问(离职政策)。Agent 必须在采取行动之前,区分恶意意图与正常行为,并建立基于证据的案例。 ## 奖励设计 ### 步骤奖励 - **调查(首次)**:+0.01 到 +0.05(取证深入分析可获得更多) - **正确遏制**:+0.05 到 +0.06 - **错误遏制**(错误目标):-0.03 - **状态更新/IOC 提交**:+0.02 - **根本原因**:+0.03 - **解决奖励**:最高 +0.30(基于评分器得分) ### 评分器细分 (0.0-1.0) | 组件 | 权重 | 描述 | |-----------|--------|-------------| | IOC 识别 | 30% | 对真实 IOC 的召回率,对误报进行惩罚 | | 根本原因分析 | 20% | 针对真实情况的关键词匹配 | | 遏制操作 | 20% | 对所需操作及额外奖励操作的召回率 | | NIST 方法论 | 15% | 在首次遏制操作前的调查深度 | | 数据丢失防护 | 10% | 外泄数据越少 = 得分越高 | | 沟通 | 5% | 发布的状态更新 | ## 动态攻击者机制 攻击者根据步数推进其 kill chain: - **早期步骤**:基线场景(初始攻陷已发生) - **中局**:攻击者升级(凭据转储、横向移动) - **残局**:灾难性事件(域管理员被攻陷、备份被破坏、大规模数据外泄) 当采取特定的遏制行动时会触发适应性调整,这使得遏制成为一种战略决策 —— 而不仅仅是“阻断一切”。 ## 设置 ``` # 安装依赖 pip install "openenv-core[core]" pydantic openai # 本地运行 cd warroom_env uvicorn server.app:app --host 0.0.0.0 --port 8000 # 或者使用 uv uv run server # Docker docker build -t warroom-env:latest . docker run -p 8000:8000 warroom-env:latest # 运行 inference export API_BASE_URL="https://integrate.api.nvidia.com/v1" export MODEL_NAME="nvidia/llama-3.1-nemotron-ultra-253b-v1" export HF_TOKEN="your-api-key" python inference.py # Validate openenv validate ``` ## 基线分数 通过 NVIDIA NIM (`https://integrate.api.nvidia.com/v1`) 使用多个模型进行了测试: ### google/gemma-4-31b-it(推荐) | 任务 | 难度 | 分数 | 步骤 | |------|-----------|-------|-------| | task_1_malware | Easy | 0.68 | 16 | | task_2_phishing | Medium | 0.61 | 15 | | task_3_ransomware | Medium-Hard | 0.62 | 13 | | task_4_apt | Hard | ~0.30 | ~35 | | task_5_insider | Hard | ~0.25 | ~30 | ### 模型对比 | 模型 | T1 | T2 | T3 | T4 | T5 | 平均 | |-------|-----|-----|-----|-----|-----|-----| | gemma-4-31b-it | 0.68 | 0.61 | 0.62 | ~0.30 | ~0.25 | ~0.49 | | nemotron-3-super-120b | 0.70 | 0.13 | 0.18 | 0.00 | 0.34 | 0.27 | | mistral-small-4-119b | 0.23 | 0.22 | 0.17 | 0.14 | 0.56 | 0.26 | | qwen3.5-122b | 0.47 | 0.13 | 0.16 | 0.02 | 0.01 | 0.16 | 困难任务(带有自适应的 APT 和内部威胁)真正挑战了前沿模型,证明了难度递进设计的有效性。 ## MITRE ATT&CK 覆盖范围 这些场景涵盖了整个 kill chain 中的 15+ 种技术: | 战术 | 技术 | |--------|-----------| | Initial Access | T1566.001/002 (Spearphishing) | | Execution | T1059.001 (PowerShell), T1204.002 (Malicious File) | | Persistence | T1547.001 (Registry Run Keys) | | Credential Access | T1003.001 (LSASS), T1078 (Valid Accounts) | | Lateral Movement | T1021.001 (RDP), T1021.002 (SMB), T1570 (Tool Transfer) | | Collection | T1005 (Local Data), T1213 (Data from Repos), T1560.001 (Archive) | | Exfiltration | T1041 (Over C2), T1052.001 (USB) | | Impact | T1486 (Ransomware), T1490 (Inhibit Recovery) |
标签:AI智能体, IP 地址批量处理, PyTorch, 安全运营中心, 库, 应急响应, 强化学习环境, 数字取证, 网络安全, 网络映射, 自动化脚本, 隐私保护