freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

车联网安全-汽车仪表模拟器使用
2022-02-21 10:31:44
所属地 广东省

1. CAN总线

1.1 简介

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

1.2 特征

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

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

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

  • 流量是UDP而不是TCP

1.3 数据报文

CAN帧有3个主要部分:

  • 仲裁标识符

  • 数据长度代码

  • 数据领域

1645410428_6212f87c48bf78a58492c.png!small?1645410428415

  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

1645410446_6212f88e2fc3878c7f831.png!small?1645410446393

  • 控制器

$ ./controls vcan0

1645410453_6212f8957988478aeba8b.png!small?1645410454118

2.3 操作仪表盘

操作按键
加速
左右转向←/→
解锁前左右车门Right-Shift + A/B
解锁后左右车门Right-Shift + X/Y
锁定全部车门Right-Shift + Left-Shift
解锁全部车门Left-Shift + Right-Shift

3. CAN总线数据获取

3.1 CAN报文分析

1645410464_6212f8a0e96d57241adc4.png!small?1645410466372

第一列:接口

第二列:仲裁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

1645410590_6212f91e7aabb191d98e7.png!small?1645410591231

3.2.4 cansend

将 CAN 帧发送到特定 CAN 接口的工具

$ cansend vcan0 039#000C

4. 挑战

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

4.1 控制左右转向灯

查找关键仲裁ID

通过嗅探的方式查找变化数据

1645410601_6212f929a84d6b9a1bb5e.png!small?1645410601994

左转灯: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

通过嗅探的方式查找变化数据

1645410611_6212f93393f6a910f19b6.png!small?1645410611908

解锁左前门: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

通过嗅探的方式查找变化数据

加速

1645410622_6212f93e3ce3790664b13.png!small?1645410622537

测试

$ cansend vcan0 244#0000003800
$ cansend vcan0 244#000000B000

总结

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

# 车联网安全 # 汽车仪表模拟器
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录