The-Christopher-Robin/autonomy-evaluation-harness

GitHub: The-Christopher-Robin/autonomy-evaluation-harness

一个面向自主系统的标准化红蓝队对抗评估框架,提供可复现的攻击测试、ML异常检测和自适应防御闭环能力。

Stars: 0 | Forks: 0

# 自主安全评估框架 一个标准化的 **红蓝队对抗评估框架**,用于 AI 控制的自主系统及信息物理系统 (CPS)。 大多数 CPS 安全论文仅孤立地测试单一攻击或防御,使用 临时搭建的测试环境,且很少共享可复用的环境。本项目通过 工程级的框架填补了这一空白,该框架能够启动任务、调度 攻击、并行运行防御、记录同步事件,并 自动计算 **可比较的** 指标,例如检测率、误报率、延迟、拦截率和任务影响。 ## 架构 ``` ┌──────────────────────────────────────────────────────────────────┐ │ Orchestrator (run_demo.py) │ │ launches sim · starts detector · schedules attacks · logs events│ ├──────────┬──────────────┬────────────────┬───────────────────────┤ │ Platform │ Attacks │ Detector + │ Live Dashboard │ │ Simulator│ (pluggable) │ Defence │ (live_plotter.py) │ │ │ │ (pluggable) │ │ │ sitl_sim │ heartbeat │ Isolation │ 3-panel real-time │ │ .py │ ping │ Forest │ matplotlib window │ │ │ param_req │ Markov model │ │ │ MAVLink │ mitm_spoof │ Adaptive │ accuracy · anomaly │ │ UDP │ replay │ filter │ score · blocked msgs │ │ │ cmd_inject │ │ │ └──────────┴──────────────┴────────────────┴───────────────────────┘ ▼ ▼ ▼ out/attack_*.csv out/detector_accuracy.csv out/live_data.jsonl out/defense_adaptive.csv out/metrics.json ``` ### 关键设计原则 | 原则 | 实现方式 | |---|---| | **攻击是首要模块** | 每个攻击都是具有统一 CLI (`--udp`, `--rate`, `--duration`, `--out-dir`) 的独立脚本。新攻击只需实现 `BaseAttack`。 | | **防御可插拔** | 检测器和自适应过滤器各自实现 `BaseDetector` / `BaseDefense` ABCs。可以在不接触编排器 (orchestrator) 的情况下,将 Isolation Forest 替换为神经网络或规则引擎。 | | **同步日志记录** | 编排器、检测器和攻击都通过毫秒级时间戳和事件标记追加到共享的 `live_data.jsonl` 流中。 | | **可比较的指标** | `framework/metrics.py` 提供 `ScenarioResult` —— 一个从原始事件日志计算检测率、误报率、延迟、拦截率、精度恢复和任务影响的单一类。 | | **默认可复现** | 固定的随机种子、确定性的基线、可配置的持续时间和速率。 | ## 快速开始 ``` # 克隆并设置 git clone && cd autonomy-security-harness python -m venv .venv # Linux / macOS source .venv/bin/activate # Windows PowerShell .venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ### 仅运行检测 ``` python run_demo.py --mode all ``` ### 运行检测 + 自适应 ML 防御 ``` python run_demo.py --mode all --defense ``` ### 自定义场景 ``` python run_demo.py \ --mode all \ --defense \ --baseline-seconds 15 \ --attack-seconds 12 \ --attack-rate 250 \ --threshold 0.85 \ --defense-threshold 0.3 ``` ### 禁用实时仪表盘 ``` python run_demo.py --mode all --defense --no-live-plot ``` 查看 [DEMO.md](DEMO.md) 获取完整演示。 ## 项目结构 ``` . ├── framework/ # Harness abstractions & utilities │ ├── base.py # ABCs: BaseAttack, BaseDefense, BaseDetector, BasePlatform │ └── metrics.py # Standardised ScenarioResult metric computation │ ├── detector/ # Reference defence implementation │ ├── detector.py # Main detection loop (Isolation Forest + Markov) │ ├── feature_engine.py # 11-dim sliding-window feature extraction │ ├── ml_model.py # Isolation Forest anomaly scorer │ └── adaptive_defense.py # Score-threshold adaptive message filter │ ├── attacks/ # Attack catalogue (one script per vector) │ ├── heartbeat_flood.py │ ├── ping_flood.py │ ├── param_request_flood.py │ ├── mitm_identity_spoof.py │ ├── replay_pattern_attack.py │ └── command_injection_burst.py │ ├── run_demo.py # Scenario orchestrator ├── sitl_sim.py # Platform simulator (MAVLink SITL substitute) ├── live_plotter.py # Real-time 3-panel dashboard ├── requirements.txt ├── DEMO.md # Step-by-step demo walkthrough └── LICENSE ``` ## 工作原理 ### 1. 基线训练 检测器监听正常的平台流量并构建两个模型: * **Markov 模型** — 学习消息 ID 转移概率。 * **Isolation Forest** — 基于从每条消息中提取的 11 维特征向量(速率、熵、源多样性、Markov 概率、到达间隔时间和各类型频率比)进行训练。 ### 2. 攻击阶段 六个攻击脚本按顺序(或单独)运行,每个脚本通过 UDP 注入恶意流量: | 攻击 | 技术 | 速率 | |--------|-----------|------| | Heartbeat flood | 来自恶意源的高频 HEARTBEAT | 200 msg/s | | Ping flood | 来自恶意源的高频 PING | 200 msg/s | | Param-request flood | 来自恶意源的高频 PARAM\_REQUEST\_LIST | 200 msg/s | | MITM 身份欺骗 | 伪造带有受信任 src\_system 的 HEARTBEAT + STATUSTEXT | 80 msg/s | | 重放模式 | 重复播放固定的陈旧序列 | 120 iter/s | | 命令注入 | ARM / TAKEOFF / LAND 命令突发 | 25 burst/s | ### 3. 检测 每一条传入消息都被转换为特征向量,由 Isolation Forest 评分(0 = 异常,1 = 正常),并通过移动平均预测精度指标进行跟踪。当精度降至配置阈值(默认 0.9)以下时触发警报。 ### 4. 自适应防御 当启用 (`--defense`) 时,异常分数低于防御阈值(默认 0.3)的消息会在到达精度跟踪器之前被 **拦截**。这会产生闭环反馈效应:拦截恶意流量使得剩余流看起来更正常,从而使精度指标 **恢复** —— 即展示主动缓解效果的“上升曲线”。 ### 5. 实时仪表盘 一个包含三个面板的实时 matplotlib 弹出窗口: * **检测健康状况** — 带有阈值线的移动平均精度 * **异常分数** — 每条消息的 Isolation Forest 分数 * **防御动作** — 累积拦截消息计数 攻击开始/结束标记实时绘制为垂直线。 ## 特征向量 (11 维) | # | 特征 | 捕获内容 | |---|---------|----------| | 1 | `msg_rate` | 2 秒滑动窗口内的每秒消息数 | | 2 | `type_entropy` | 消息类型分布的香农熵 | | 3 | `src_system_count` | 窗口内唯一源系统的数量 | | 4 | `src_msg_rate` | 来自当前源的每秒消息数 | | 5 | `markov_prob` | 来自学习到的 Markov 模型的转移概率 | | 6 | `inter_arrival_delta` | 距离上一条消息经过的时间 | | 7–11 | `ratio_*` | HEARTBEAT, PING, PARAM\_REQUEST, COMMAND\_LONG, STATUSTEXT 的归一化频率 | ## 输出指标 `out/metrics.json` 至少包含: ``` { "detection_latency_sec": 1.23, "total_alerts": 3, "model_type": "isolation_forest", "total_blocked": 1890, "block_rate": 0.597, "blocked_by_msg_type": {"0": 109, "4": 1049, "21": 723}, "blocked_by_src_system": {"250": 13, "251": 1029, "252": 709} } ``` 对于跨场景比较,使用 `framework.metrics.ScenarioResult` 从原始事件日志计算检测率、误报率、延迟、精度恢复和任务影响。 ## 扩展框架 ### 添加新攻击 1. 使用标准 CLI 标志 (`--udp`, `--rate`, `--duration`, `--out-dir`) 创建 `attacks/my_new_attack.py`。 2. 在 `run_demo.py` 中的 `ATTACK_SCRIPTS` 列表中注册它。 3. (可选)继承 `framework.BaseAttack` 以获得 IDE 自动补全和验证。 ### 添加新防御/检测器 1. 实现 `framework.BaseDetector` 或 `framework.BaseDefense`。 2. 将其接入 `detector/detector.py`,与 Isolation Forest 并存或取而代之。 ### 添加新平台 1. 实现 `framework.BasePlatform`。 2. 创建新的模拟器脚本并将编排器指向它。 ## 路线图 - [ ] 容器化执行 (Docker Compose 用于 sim + attacks + detector) - [ ] 场景配置文件 (YAML/TOML) - [ ] 额外的检测器后端 (autoencoder, LSTM, rule engine) - [ ] 多平台支持 (ROS 2, CAN bus, ADS-B) - [ ] 符合出版质量的 LaTeX 表格/图表导出 - [ ] 带有自动化回归场景的 CI 流水线 ## 许可证 [MIT](LICENSE)
标签:AI安全, Chat Copilot, FTP漏洞扫描, MAVLink, WSL, 中间人攻击, 仿真环境, 信息物理系统, 命令注入, 安全度量, 安全编排, 异常检测, 攻击模拟, 无人机安全, 机器人安全, 欺骗攻击, 漏洞靶场, 红队评估, 网络攻防, 自动驾驶安全, 自适应滤波, 评估框架, 逆向工具, 配置错误, 重放攻击, 防御检测, 隔离森林, 马尔可夫模型, 驱动签名利用