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, 安全运营中心, 库, 应急响应, 强化学习环境, 数字取证, 网络安全, 网络映射, 自动化脚本, 隐私保护