前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >智能汽车安全入门|世界智能驾驶挑战赛总结

智能汽车安全入门|世界智能驾驶挑战赛总结

作者头像
物联网安全小编
发布2020-06-23 16:27:03
8530
发布2020-06-23 16:27:03
举报
文章被收录于专栏:物联网IOT安全物联网IOT安全

0x00 基本介绍

这两天参加了世界智能汽车挑战赛,比赛使用了visual threat的汽车仿真设备。不过这个文章题目起的有些夸张,准确的说应该是CAN总线安全学习入门

本想复盘一下比赛,但因为我们无法使用visual threat模拟器,遂从网上找到一个名为ICSim的模拟器来模拟CAN总线,安装起来极为友好

安装方法:

代码语言:javascript
复制
sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils
git clone https://github.com/zombieCraig/ICSim.git

启动方法:

代码语言:javascript
复制
./icsim vcan0
./controls vcan0

0x01 思路

比赛中的第一个题目要求对汽车协议(如车灯、门锁、后备箱锁、仪表等)完成有效数据提取并实现协议破解。此处我们使用ISCim生成流量模拟比赛过程

经过比赛之前的分析,我们猜测开门的报文可能分为以下3种情况

1. 只有一条报文控制开门,按下开门按钮后,CAN总线上产生一条开门的报文。

2. 车门状态报文一直在定时发送,但每当按下一次开门按钮,报文中的数据(DATA)会发生一次变化

3. 有多条时序报文控制车门开启(报文存在序列号检测或加密校验)

针对以上情况,我们提出了两种解决方案

1. 对所有的CAN数据进行统计,检索出与开门次数相同次数的ID报文

2. 对所有的CAN数据进行统计,检索出仅数据(DATA)发生变化次数开门次数的ID报文

(可能有点绕,但是还是比较靠谱的)

0x02 实践

依旧使用ICSim模拟,使用candump抓包CAN总线数据包

按下开门五次,接下来对该数据包进行分析,查找出ID出现五次的报文:

提取出该数据包后,对其进行重放测试是否有效:

完美,接下来我们尝试提取转向灯的数据,却发现无法检索到仅出现打转向灯次数的ID报文。

因此我们怀疑有可能是第二种情况,我们将使用脚本进一步分析数据(DATA)发生变化次数打转向灯次数报文

我们打转向灯三次并抓包,使用脚本分析:

查看抓包中的0x188报文,可以发现在我们没有按下转向灯时,也是有报文在发送只是DATA段为0,在我们按下转向灯时,DATA段发生了变化如下所示。

对转向灯数据包重放:

第一次接触CAN总线还是缺乏相关的准备,比赛后面的题目还是很有意思的,例如远程篡改汽车车辆识别号码等等。比赛之前也搜集很多关于车联网的资料,如果有需要的小伙伴请在公众号后台回复<车联网>获取车联网资料

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网IOT安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档