Bukenkere24/Zero-Trust-Runtime-Threat-Simulation-Platform
GitHub: Bukenkere24/Zero-Trust-Runtime-Threat-Simulation-Platform
一个沙盒化的红蓝对抗安全模拟平台,AI攻击者自动探测漏洞应用,规则引擎实时防御,并通过仪表盘可视化对抗过程和生成安全指标报告。
Stars: 1 | Forks: 0
# 零信任运行时威胁模拟平台
一个独立、沙盒化的红蓝对抗安全模拟系统。AI 驱动的攻击者代理会探测一个故意设计为存在漏洞的 Web 应用,同时基于规则的防御引擎会实时检测并阻止攻击。实时仪表盘会可视化展示这场对抗,并生成包含 MTTD、MTTR 以及由 LLM 生成的摘要的最终记分卡。
## 架构
```
┌─────────────┐ attacks ┌─────────────┐
│ attacker- │ ───────────────► │ target-app │ (port 5000)
│ agent │ │ (victim) │
│ (port 5002)│ └──────┬──────┘
└──────┬──────┘ │ access.log
│ attack_log.json ▼
│ ┌─────────────┐
│ │ defense- │ (port 5001)
│ │ engine │
│ └──────┬──────┘
│ │ alerts, blocklist
▼ ▼
┌─────────────┐ ◄── polls every 2s ──────────────┐
│ dashboard │ │
│ (port 5173) │ │
└─────────────┘ │
```
### 服务
| 服务 | 端口 | 角色 |
|---------|------|------|
| **target-app** | 5000 | 存在漏洞的 Flask 应用,包含登录功能 + `/api/users` |
| **defense-engine** | 5001 | 尾随日志,检测攻击,封禁 IP |
| **attacker-agent** | 5002 | AI 红队代理 + 触发 API |
| **dashboard** | 5173 | 实时对抗视图 + 模拟报告 |
### 共享数据(Docker volume `shared-data`)
- `access.log` — 来自 target-app 的 JSONL 请求日志
- `alerts.log` — JSONL 防御警报
- `blocklist.json` — 被封禁的 IP 及时间戳
- `attack_log.json` — LLM 决策与攻击结果
有关确切的 schema,请参阅 [CONTRACTS.md](./CONTRACTS.md)。
## 快速开始
### 前置条件
- Docker & Docker Compose
- 无需 API Key — 该代理自带免费且内置的策略引擎
### 运行完整模拟
```
docker-compose up --build
```
就是这么简单 — 无需 Key,零成本。攻击者代理通过一个
本地启发式“大脑”来决定其行动(见下文)。LLM 是完全可选的;如果您
希望启用它,只需在 `.env` 文件中设置 `USE_LLM=1` 和 `ANTHROPIC_API_KEY`。
打开 **http://localhost:5173** 并点击 **Start Simulation**。
### 本地开发(不使用 Docker)
**终端 1 — 目标应用:**
```
cd target-app && pip install -r requirements.txt && python app.py
```
**终端 2 — 防御引擎:**
```
cd defense-engine && pip install -r requirements.txt && python engine.py
```
**终端 3 — 攻击者代理:**
```
cd attacker-agent && pip install -r requirements.txt
set TARGET_URL=http://localhost:5000
python api.py
```
**终端 4 — 仪表盘:**
```
cd dashboard && npm install && npm run dev
```
## 攻击者代理
### 决策大脑 (`agent.py`)
该代理使用 **免费的启发式策略引擎** 来决定下一步运行哪种攻击 — 无需 API Key,零成本。它会:
1. 遵循升级顺序(隐蔽 → 喧闹):`sql_injection_login` →
`credential_stuffing` → `brute_force_login` → `api_flood`。
2. 绝不重复运行已被防御机制封禁的攻击。
3. 绝不重复运行已经彻底失败的攻击。
4. 当所有攻击都被穷尽后,重新探测被封锁的攻击,以测试
封禁是否仍在执行。
每个决策及其人类可读的推理过程都会被记录到 `attack_log.json` 中,因此
无论“大脑”是启发式还是 LLM,数据集看起来都是一样的。
**可选的 LLM 升级:** 设置 `USE_LLM=1` 和 `ANTHROPIC_API_KEY` 即可让 Claude
来选择攻击。任何错误(Key 无效、无网络、速率限制)都会静默
回退到启发式引擎,因此模拟运行绝不会因为 LLM 而失败。
### 攻击库 (`attacks.py`)
| 函数 | 描述 |
|----------|-------------|
| `brute_force_login` | 尝试针对 admin 使用常见密码 |
| `sql_injection_login` | 针对登录表单的 SQLi payload |
| `api_flood` | 对 `/api/users` 发起密集的 GET 请求 |
| `credential_stuffing` | 常见的用户名/密码对 |
### 安全护栏 (`safety.py`)
每个出站请求都会通过硬编码的 allowlist 进行验证:
- `localhost`, `127.0.0.1`, `target-app`
- 对任何其他主机的请求都会被**拒绝**
### API endpoint
| Endpoint | Method | 描述 |
|----------|--------|-------------|
| `/start` | POST | 启动攻击循环(后台线程) |
| `/status` | GET | 查看运行是否处于活动状态 |
| `/attack_log` | GET | 当前攻击日志 |
| `/summarize` | POST | 记分卡摘要(免费启发式;可选 LLM) |
## 仪表盘
- **Start Simulation** — 触发 attacker-agent 的 `/start`
- **实时信息流** — 每 2 秒轮询一次攻击日志和防御警报
- **对抗视图** — 带有时间戳的红蓝两栏对抗展示
- **模拟报告** — 运行完成后出现(MTTD、MTTR、自动生成的摘要)
## 研究 / 论文数据
所有四个日志文件均带有时间戳,格式为 JSON/JSONL,可用于计算:
- 按类型划分的攻击成功率
- 平均检测时间 (MTTD)
- 平均修复时间 (MTTR)
- 误报率
- 攻击策略演变 (`attack_log.json`)
## 项目结构
```
├── CONTRACTS.md # Shared API/log schemas
├── docker-compose.yml # One-command startup
├── target-app/ # Vulnerable victim app
├── defense-engine/ # Blue-team log monitor
├── attacker-agent/ # Red-team AI agent (Avaneesh)
│ ├── attacks.py # Attack function library
│ ├── agent.py # Heuristic decision engine (LLM optional)
│ ├── safety.py # Host allowlist guardrails
│ ├── api.py # Flask trigger API
│ └── stub_target.py # Local stub for Day 1 testing
└── dashboard/ # React live dashboard (Avaneesh)
```
## 许可证
专为教育和研究目的而构建。切勿在沙盒之外部署 target-app。
标签:版权保护, 请求拦截, 逆向工具