jessmail/ecu-offensive-simulation
GitHub: jessmail/ecu-offensive-simulation
面向汽车 ECU 的安全测试框架,通过 UDS/DoIP 协议实现重放攻击、Fuzzing 和负面测试,并支持 ISO 21434 合规报告生成。
Stars: 1 | Forks: 0
# ECU 攻防模拟框架
 
一个通过 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协议, 反取证, 安全评估, 攻击模拟, 无后门, 智能网联汽车, 汽车安全, 网络安全, 自动化框架, 负向测试, 车载以太网, 车载网络, 逆向分析, 逆向工具, 重放攻击, 隐私保护, 驱动签名利用