Tife28/automotive-security-lab
GitHub: Tife28/automotive-security-lab
基于 Python 的车载 CAN 总线网络安全模拟实验室,用于学习汽车网络安全威胁、攻击模拟与入侵检测技术。
Stars: 1 | Forks: 0
# 汽车网络安全实验室
## 概述
汽车网络安全实验室是一个基于 Python 的车载控制器局域网 (CAN) 环境模拟,旨在探索车辆网络安全概念。该项目演示了电子控制单元 (ECU) 如何通过 CAN 总线进行通信,攻击者如何注入恶意消息,以及如何使用基本的入侵检测技术来识别异常行为。
本项目旨在作为一个实践学习环境,用于学习汽车网络安全、CAN 通信、攻击模拟和防御监控。
## 学习目标
* 理解 CAN 总线通信
* 模拟 ECU 行为和车辆信号
* 探索常见的汽车攻击场景
* 实现基本的入侵检测技术
* 分析并记录 CAN 流量
* 将威胁建模概念应用于车辆网络
## 功能
### 已实现
* ECU 模拟
* 引擎 ECU
* 速度 ECU
* 车身 ECU
* CAN 消息生成
* 攻击模拟
* RPM 欺骗
* 速度欺骗
* 基于规则的入侵检测系统 (IDS)
* 流量记录与分析
### 计划中
* 重放攻击模拟
* CAN 总线泛洪攻击
* SocketCAN 集成
* Wireshark 流量分析
* 机器学习异常检测
* 真实 CAN 硬件集成
## 系统架构
```
+-------------+
| Engine ECU |
+-------------+
+-------------+
| Speed ECU |
+-------------+
+-------------+
| Body ECU |
+-------------+
|
v
+----------------+
| Simulated CAN |
| Bus |
+----------------+
|
+----------------+
| |
v v
+----------------+ +----------------+
| IDS Module | | Logger Module |
+----------------+ +----------------+
^
|
+----------------+
| Attacker |
+----------------+
```
## 攻击场景
### RPM 欺骗
攻击者注入包含不切实际的引擎 RPM 值的 CAN 消息,试图覆盖合法的 ECU 数据。
检测方法:
当 RPM 超过预定义的阈值时,IDS 会发出警报。
### 速度欺骗
攻击者注入虚假的车辆速度值,以模拟超速状态。
检测方法:
当车速超过预期的工作极限时,IDS 会发出警报。
## IDS 方法论
IDS 使用基于阈值的异常检测。
检测规则:
* RPM > 6500 RPM → 警报
* 速度 > 180 km/h → 警报
* 显式攻击消息 → 警报
## 示例输出
```
{
"timestamp": 1781345741.1235647,
"can_id": "0x102",
"data": {
"speed_kmh": 212
},
"ATTACK": true
}
[ALERT] ATTACK MESSAGE DETECTED: {'timestamp': 1781345741.1235647, 'can_id': '0x102', 'data': {'speed_kmh': 212}, 'ATTACK': True}
[ALERT] Speed anomaly detected: {'timestamp': 1781345741.1235647, 'can_id': '0x102', 'data': {'speed_kmh': 212}, 'ATTACK': True}
[LOGGED] {'timestamp': 1781345741.1235647, 'can_id': '0x102', 'data': {'speed_kmh': 212}, 'ATTACK': True}
------------------------------------------------------------
[IDS RECEIVED] {'debug': 'simulator alive'}
[LOGGED] {'debug': 'simulator alive'}
{
"timestamp": 1781345741.1284976,
"can_id": "0x101",
"data": {
"rpm": 3871,
"load": 33
}
}
[IDS RECEIVED] {'timestamp': 1781345741.1284976, 'can_id': '0x101', 'data': {'rpm': 3871, 'load': 33}}
[LOGGED] {'timestamp': 1781345741.1284976, 'can_id': '0x101', 'data': {'rpm': 3871, 'load': 33}}
```
## 项目结构
```
automotive-security-lab/
│
├── analysis/
│ ├── ecu_distribution.png
│ ├── rpm_chart.png
│ └── speed_chart.png
│
├── config/
│ └── vehicle_network.json
│
├── diagrams/
│ ├── can_simulator.png
│ ├── ids_alerts.png
│ └── logs.png
│
├── docs/
│ ├── architecture.md
│ ├── results.md
│ └── threat_model.md
│
├── logs/
│ ├── sample_can_traffic.log
│ └── bus_logger.py
│
├── src/
│ └── can_simulator/
│ ├── attacker.py
│ ├── can_bus.py
│ ├── can_simulator.py
│ ├── ids.py
│ └── main.py
│
├── tools/
│ ├── bus_logger.py
│ ├── can_sniffer.py
│ └── log_analyzer.py
│
├── .gitignore
├── LICENSE
└── README.md
```
## 经验总结
* CAN 网络不提供原生的消息身份验证。
* 任何有权访问 CAN 总线的设备都可以注入消息。
* 消息欺骗可以操纵感知到的车辆状态。
* 入侵检测系统提高了对恶意活动的可见性。
* 日志记录和监控对于事件调查至关重要。
## 局限性
* 使用模拟的 CAN 总线而非物理 CAN 硬件。
* IDS 依赖于静态阈值规则。
* 出于教育目的,ECU 行为已被简化。
* 未实现加密消息身份验证。
## 使用技术
* Python
* Linux
* CAN 概念
* JSON
* SocketCAN(计划中)
* Wireshark(计划中)
## 作者
Boluwatife Ekundayo - 正在向汽车网络安全领域转型的电气与电子工程师
标签:CAN总线, Homebrew安装, Python, 仿真环境, 攻击模拟, 无后门, 车载网络安全, 逆向工具, 驱动签名利用