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, 仿真环境, 攻击模拟, 无后门, 车载网络安全, 逆向工具, 驱动签名利用