Greivins21/can-bus-ids-fingerprinting

GitHub: Greivins21/can-bus-ids-fingerprinting

基于时钟偏斜指纹识别技术的CAN总线入侵检测系统仿真平台,通过分析消息到达时间间隔特征来检测伪装攻击。

Stars: 0 | Forks: 0

# can-bus-ids 指纹识别 一个 CAN 总线入侵检测系统的软件在环 (SITL) 仿真。它使用时钟偏斜 指纹识别技术,通过 SocketCAN、Python 和 Docker 检测伪装攻击。 视频演示在[这里](https://youtu.be/YIHwrnfzdUs) ![License](https://img.shields.io/badge/license-MIT-blue) ![Python](https://img.shields.io/badge/python-3.11-yellow) ![Docker](https://img.shields.io/badge/docker-ready-blue) ## 项目概述 本项目为控制器局域网 (CAN) 实现了一个**时钟偏斜指纹识别入侵检测系统 (IDS)**。它在**软件在环 (SITL)** 仿真环境中运行,用于检测**伪装攻击**。 通过分析 CAN 消息的*到达时间间隔 (IAT)*,系统根据其独特的硬件时序特征(时钟漂移)识别冒充合法 ECU 的恶意节点。 **课程:** 信息物理与物联网安全 **主题:** CAN 总线安全与异常检测 ## 前置条件 - 支持 `vcan` 内核模块的 Linux 环境 - 已安装 Docker Engine(由于 VM 网络限制,**不支持** Docker Desktop) - 已安装 `can-utils` 软件包以使用 `candump` 等工具 ## 系统架构 (C4 模型) 仿真使用 Docker 容器来代表不同的 ECU(受害者和攻击者),同时通过 network_mode: host 共享主机 Linux 内核的虚拟 CAN 总线 (vcan0)。 ## 手动设置 ### A 部分:仿真设置 目标:创建虚拟车载网络,发动伪装攻击,并生成用于分析的 CSV 数据集。 ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/acbfb08486093959.gif) #### 1. 设置虚拟总线(基础设施) 加载内核模块,创建接口并进行验证。 ``` sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 ip link show vcan0 ``` #### 2. 运行仿真 (Docker Compose) 我们使用 Docker Compose 来编排受害者和攻击者。 启动仿真 ``` docker compose up -d --build victim attacker ``` 监控流量(实时):打开一个单独的终端以验证原始数据帧是否在主机内核上流动: ``` candump vcan0 ``` 你应该看到正常流量 (1.0s) 和攻击流量 (0.1s)。 查看容器日志:查看 Python 脚本输出 ``` docker compose logs -f ``` 停止仿真 ``` docker compose down ``` #### 验证数据收集 仿真会自动将流量记录到 **logs/** 文件夹中。在继续 B 部分之前,请确保文件存在。 ``` ls -l logs/ # 你应该看到: # - normal_traffic.csv(合法基线) # - attack_traffic.csv(攻击数据集) ``` ### B 部分:IDS 实现 #### IDS 部署 IDS 被开发为作为 `docker-compose.yml` 文件中的附加服务运行。 有两种方式观察 IDS 的运行: - 手动: - 首先,必须通过停止所有剩余服务来确保没有容器服务正在运行: sudo docker compose down - 其次,用户可以使用以下命令初始化 'victim' 和 'ids' 容器服务: sudo docker compose up -d --build victim ids - 服务成功部署后,用户可以打开一个新终端并运行以下命令来观察 IDS 日志: sudo docker compose logs -f ids 这将需要大约 60 秒来创建 IDS 的基线阶段。在此阶段之后,IDS 进入检测模式。用户可以故意在此阶段停留任意长时间,以观察 IDS 的行为。此时全是良性流量,不应生成任何警报。(在理想情况下,详情请参阅论文) - 回到之前的终端,现在要发动伪装攻击,用户必须运行以下命令: sudo docker compose stop victim sudo docker compose up -d --build attacker - 此时,IDS 监控窗口将开始触发警报。为了结束仿真,用户可以停止所有容器: sudo docker compose down ## 自动仿真: 自动仿真执行手动运行中描述的相同步骤序列,但使用预定义的时间参数。所有阶段(基线学习、正常监控和攻击执行)均自动执行,整个仿真大约在两分钟内完成。此模式不允许超出预定义持续时间进行扩展观察。 要运行自动仿真,用户只需执行 ./run_simulation.sh 脚本,该脚本旨在适用于任何基于 Debian 或 Ubuntu 的发行版。 ```bash sudo chmod +x ./run_simulation sudo ./run_simulation.sh ``` **注意:** 在运行自动仿真之前,请确保虚拟 can 已设置,因为脚本不负责此项工作。(参考手动设置) ![alt text](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/bdadabca74094003.png)
标签:CAN总线, Docker, Docker Compose, ECU指纹, IAT, Linux内核模块, Python, SITL, SocketCAN, vcan, 伪装攻击检测, 信息物理系统, 入侵检测系统, 到达间隔时间, 安全数据湖, 安全防御评估, 异常检测, 无后门, 时钟偏移指纹识别, 版权保护, 物联网安全, 网络安全实验, 网络攻击模拟, 请求拦截, 车载网络, 车载网络安全, 软件在环, 逆向工具