jessmail/ecu-offensive-simulation

GitHub: jessmail/ecu-offensive-simulation

面向汽车 ECU 的安全测试框架,通过 UDS/DoIP 协议实现重放攻击、Fuzzing 和负面测试,并支持 ISO 21434 合规报告生成。

Stars: 1 | Forks: 0

# ECU 攻防模拟框架 ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![Python 3.12+](https://img.shields.io/badge/Python-3.12+-blue.svg) 一个通过 UDS/DoIP 协议对汽车电子控制单元 (ECU) 进行安全测试的框架。专为符合 ISO 21434 标准的汽车网络安全评估工作而构建,面向渗透测试人员和安全工程师。 ## 架构 ``` +---------------------------------------------------------------+ | CLI Interface | | record | replay | fuzz | analyze | report | +---------------------------------------------------------------+ | Attack Modules | | +----------+ +--------+ +-----------+ +------------------+ | | | Replay | | Fuzzer | | Negative | | SecurityAccess | | | | Attack | | | | Testing | | Analysis | | | +----------+ +--------+ +-----------+ +------------------+ | +---------------------------------------------------------------+ | Protocol Layer | | +--------+ +--------+ +--------------------+ | | | UDS | | DoIP | | CAN Interface | | | | (0x10, | | (TCP/ | | (python-can) | | | | 0x27, | | 13400)| | | | | | 0x31) | +--------+ +--------------------+ | | +--------+ | +---------------------------------------------------------------+ | Reporting Engine | | ISO 21434 Reports | CVSS Scoring | Risk Matrix | +---------------------------------------------------------------+ | Configuration | | ECU Profiles (YAML) | Attack Configs | Logging | +---------------------------------------------------------------+ ``` ## 支持的攻击类型 | 攻击类型 | 描述 | |--------------------|----------------------------------------------------------| | 重放攻击 | 捕获并重放 UDS 诊断会话 | | Fuzzing | 随机、顺序和智能 Payload 生成 | | 负面测试 | 超范围的 DID、无效的状态转换、超大尺寸数据 | | 安全访问 | 种子熵分析、密钥推导、暴力破解 | ## 协议 ### UDS (Unified Diagnostic Services) - ISO 14229 支持的服务 ID: | SID | 服务 | 用途 | |------|----------------------------|----------------------------------| | 0x10 | DiagnosticSessionControl | 切换诊断会话 | | 0x11 | ECUReset | 重置 ECU | | 0x22 | ReadDataByIdentifier | 读取 DID 值 | | 0x27 | SecurityAccess | Seed-Key 认证 | | 0x2E | WriteDataByIdentifier | 写入 DID 值 | | 0x31 | RoutineControl | 执行例程 | | 0x34 | RequestDownload | 发起下载 | | 0x36 | TransferData | 传输固件数据 | | 0x37 | RequestTransferExit | 结束数据传输 | | 0x3E | TesterPresent | 保持会话存活 | ### DoIP (Diagnostics over IP) - ISO 13400 - 车辆识别请求/响应 - 诊断报文路由 - 13400 端口上的 TCP 连接管理 ### CAN Bus - 可配置的总线速率(125k、250k、500k、1M 波特率) - 支持 SocketCAN、PCAN、Vector 接口 - 流量录制与确定性回放 ## 安装说明 ``` # 克隆仓库 git clone https://github.com/jessmail/ecu-offensive-simulation.git cd ecu-offensive-simulation # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/macOS # 或:venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ## 使用方法 ### 录制 CAN/UDS 流量 ``` # 从 CAN 接口记录流量 python cli.py record --interface vcan0 --duration 60 --output captures/session.pcap # 使用特定 arbitration ID 过滤器进行记录 python cli.py record --interface vcan0 --arb-id 0x7E0 --duration 30 ``` ### 回放捕获的流量 ``` # 重放捕获的会话 python cli.py replay --capture captures/session.pcap --interface vcan0 # 带时序分析的重放 python cli.py replay --capture captures/session.pcap --interface vcan0 --preserve-timing ``` ### Fuzz ECU 服务 ``` # SecurityAccess 服务的随机 fuzzing python cli.py fuzz --target 0x7E0 --service 0x27 --strategy random --iterations 10000 # 使用边界值进行智能 fuzzing python cli.py fuzz --target 0x7E0 --service 0x22 --strategy smart --config configs/attack_configs/fuzz_config.yaml ``` ### 分析安全访问 ``` # 收集并分析 seed python cli.py analyze --target 0x7E0 --mode seed-entropy --samples 1000 # 测试 seed 重用 python cli.py analyze --target 0x7E0 --mode seed-reuse --samples 500 ``` ### 生成报告 ``` # 生成符合 ISO 21434 的报告 python cli.py report --input results/ --format markdown --output report.md # 生成带有 CVSS 分数的 JSON 报告 python cli.py report --input results/ --format json --output report.json ``` ## ECU 配置文件 ECU 配置文件定义了特定目标的参数。请参阅 `configs/ecu_profiles/generic_ecu.yaml` 查看模板。 ``` ecu: name: "Target ECU" can_id_tx: 0x7E0 can_id_rx: 0x7E8 supported_sessions: - default - programming - extended ``` ## ISO 21434 合规性 本框架支持 ISO 21434 中定义的威胁分析与风险评估 (TARA) 过程: - **第 8 条**:通过自动化攻击模拟进行网络安全风险评估 - **第 9 条**:通过负面测试验证网络安全目标 - **第 15 条**:通过 Fuzzing 和 SecurityAccess 测试进行漏洞分析 此工具生成的报告会将发现的问题映射到 ISO 21434 的相应条款,并包含针对汽车场景调整的 CVSS v3.1 基础评分。 ## 免责声明 本工具仅用于**授权的安全测试**。请仅在有明确测试权限的 ECU 和系统上使用。在大多数司法管辖区,未经授权访问车辆系统是违法行为。作者不对本软件的滥用承担任何责任。 请始终: - 在测试前获取书面授权 - 在隔离的实验室环境中工作 - 遵循您所在组织的负责任的披露政策 - 遵守适用的法律法规 ## 许可证 MIT 许可证 - 详见 [LICENSE](LICENSE) ## 作者 J. Essmail
标签:CAN总线, Cloudflare, CVSS评分, DoIP协议, ECU安全测试, ISO 21434, MITRE ATT&CK, Python, python-can, T1565, UDS协议, 反取证, 安全评估, 攻击模拟, 无后门, 智能网联汽车, 汽车安全, 网络安全, 自动化框架, 负向测试, 车载以太网, 车载网络, 逆向分析, 逆向工具, 重放攻击, 隐私保护, 驱动签名利用