车联网安全-汽车仪表模拟器使用

汽车安全 2年前 (2022) admin
786 0 0

 1. CAN 总线


1.1 简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。

1.2 特征

  • 汽车各个电子单元相互通信、共享数据

  • 允许多个ECU公用一根导线进行通信

  • 嘈杂、拥挤、慢速版的以太局域网

  • 流量是UDP而不是TCP

1.3 数据报文

CAN帧有3个主要部分:
  • 仲裁标识符

  • 数据长度代码

  • 数据领域



车联网安全-汽车仪表模拟器使用

  1. 帧起始(Start of Frame-SOF):1bit,显性信号,表示数据帧的开始

  2. 仲裁段(Arbitration Field):包括两部分:标识符位(Identifier field-ID)和远程发送请求位

  • 标识符位,功能性的地址,通过标识符来过滤数据。标准格式的数据帧的标识符(CAN-ID)长度为11位(11 bits),ID10ID0,ID10为最高权重位(MSB),ID0为最低权重位(LSB),按照ID10ID0的顺序进行传输。CAN协议还规定:前7位最高权重位(ID10~ID4)不能都为“隐性”信号。

  • 远程发送请求位,1bit。区分数据帧还是远程帧。

  1. 控制段(Control Field):6bits,拓展标识位(1bit),保留位(1bit),数据长度编码位(4bit)

  2. 数据段(Data Field):发送数据的内容,最多8个字节

  3. 循环校验位(CRC Field):循环校验序列和界定符

  • 循环校验序列,15bit,用于校验传输正确

  • 界定符,1bit,隐形信号,表示循环校验序列结束

  1. 确认段(ACK Field):确认位和界定符

  • 确认位:1bit,节点收到正确的CRC序列,发送端的ACK位被置位

  • 界定符,1bit,隐形信号

  1. 帧结束(End of Fram-EOF):7bit,隐性信号,表示帧结束


车联网安全-汽车仪表模拟器使用


2. 仪表模拟器


项目地址:https://github.com/zombieCraig/ICSim

2.1 安装

  • 依赖

$ sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils  
  • 添加虚拟网卡

 sudo modprobe can
 sudo modprobe vcan
 sudo ip link add dev vcan0 type vcan
 sudo ip link set up vcan0

2.2 运行

  • 汽车仪表盘

./icssim vcan0
车联网安全-汽车仪表模拟器使用
  • 控制器

./controls vcan0
车联网安全-汽车仪表模拟器使用

2.3 操作仪表盘

操作
按键


加速
左右转向
←/→
解锁前左右车门
Right-Shift + A/B
解锁后左右车门
Right-Shift + X/Y
锁定全部车门
Right-Shift + Left-Shift
解锁全部车门
Left-Shift + Right-Shift
车联网安全-汽车仪表模拟器使用


3. CAN总线数据获取


3.1 CAN报文分析

车联网安全-汽车仪表模拟器使用
第一列:接口
第二列:仲裁ID
第三列:数据大小
第四列:数据本身

3.2 CAN-Utils工具

3.2.1 candump

转储或记录帧
  • 输出显示

$ candump vcan0
  • CAN帧转储

$ candump -l vcan0

3.2.2 canplayer

重放CAN帧
$ canplayer -l candump*.log

3.2.3 cansniffer

嗅探CAN数据包工具
$ cansniffer -c vcan0
车联网安全-汽车仪表模拟器使用


3.2.4 cansend

将 CAN 帧发送到特定 CAN 接口的工具
$ cansend vcan0 039#000C

4. 挑战


目标控制车辆加速、转向灯、开关门、仪表盘指针

4.1 控制左右转向灯

查找关键仲裁ID
通过嗅探的方式查找变化数据
车联网安全-汽车仪表模拟器使用
左转灯:01 00 00 00
右转灯:02 00 00 00
双闪:03 00 00 00
测试
$ cansend vcan0 188#01000000
$ cansend vcan0 188#02000000
$ cansend vcan0 188#03000000

4.2 控制开关门

查找关键仲裁ID
通过嗅探的方式查找变化数据
车联网安全-汽车仪表模拟器使用
解锁左前门:00 00 0E 00 00 00
解锁右前门:00 00 0D 00 00 00
解锁后左门:00 00 0B 00 00 00
解锁后右门:00 00 07 00 00 00
解锁全部车门:00 00 00 00 00 00
锁定全部车门:00 00 0F 00 00 00
测试
$ cansend vcan0 19B#00000E000000
$ cansend vcan0 19B#00000D000000
$ cansend vcan0 19B#00000B000000
$ cansend vcan0 19B#000007000000
$ cansend vcan0 19B#000000000000
$ cansend vcan0 19B#00000F000000

4.3 油门控制

查找关键仲裁ID
通过嗅探的方式查找变化数据
加速
车联网安全-汽车仪表模拟器使用
测试
$ cansend vcan0 244#0000003800
$ cansend vcan0 244#000000B000

车联网安全-汽车仪表模拟器使用


5. 总结


对车联网安全感兴趣,但却没有实车拿来练手,此篇对想入门车联网安全的小伙伴,起到入门的作用。

谢谢

观看



车联网安全-汽车仪表模拟器使用

原文始发于微信公众号(山石网科安全技术研究院):车联网安全-汽车仪表模拟器使用

版权声明:admin 发表于 2022年2月21日 上午3:00。
转载请注明:车联网安全-汽车仪表模拟器使用 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...