世界智能驾驶挑战赛信息安全组——新人扫盲

0x00前言

感谢天津市人民政府与国家发展和改革委员会、科学技术部、工业和信息化部、国家互联网信息办公室、中国科学院、中国工程院、中国汽车技术研究中心、XCTF联赛组委会、永信至诚i春秋,我们ChaMd5的0xw分队的4个萌新,来到了风景迷人的天津梅江会展中心,参与“中国智能网联汽车信息安全破解挑战赛”。

(图中因计时器错误,实为4分22秒。)

0x01比赛前

在比赛前一天去天津的火车上整明白了这次比赛要干啥:

比赛将汽车的CAN总线牵出,通过特定的转接口将USB总线信号转为USB信号,连接到电脑上,在电脑上用主办方给定的软件分析捕获到的CAN总线数据包,在捕获的数据包中包含控制车门开启的CAN报文,重放找到的报文,就可以实现“破解”汽车的开门功能。

马上查了几个资料,阅读了一篇2011年的关于智能汽车破解的论文《汽车网络和控制单元探秘》(Adventures in Automotive Networks and Control Units)。上述工作让我了解了汽车的控制系统的基本结构:

首先,现在的汽车已经不仅仅是完成一系列机械、物理、化学过程的“铁疙瘩”,随着汽车的智能化,现在汽车的每一个部件,从轮胎到仪表盘,从油门到ABS系统,都由一个个的ECU(电子控制单元)控制。每个ECU都连接在一个符合CAN总线协议的总线上,每个ECU的功能是解析收到的CAN报文,控制汽车执行相应的命令。

其次,总线结构允许汽车能够较方便地扩展ECU组件,ECU之间通过总线连接,就不得不研究他们之间是如何通过总线通信的。通过论文阅读,了解到汽车内部CAN总线中通信的报文是没有原地址的,每一条报文由某个ECU在CAN总线上广播,每个ECU收到报文后,通过报文头的ID来判定是不是发给自己的,如果不是就丢弃;如果是就解析报文数据,执行相应的操作。

乍一看,这样的设计简直就是无视安全性的设计:
只要有人能够连接上汽车的CAN总线,就能监听到总线上的所有报文,
接下来只需要给我一辆车和一根CAN转USB的转接线,我就能通过不断重放CAN报文,观察汽车的反应
如果汽车对某条报文做出了相应的反应,那么记录这条报文对应的动作,以此类推,能够构建针对这类汽车的数据库,    
之后如果再碰到类似的车型,只要连上CAN总线,那就可以……直接开走了

其实转念想想,直接接触目标汽车的CAN总线的难度是较大的,毕竟首先你得用物理方法或者社工方法打开目标的车门,才能连接总线做接下来的操作;其次你的数据库是否适用目标车型也是一个问题,不过这种东西黑市上应该不少:);再次,有的复杂操作并不是通过一条报文来控制的,而是需要多条报文时序控制,这大大增加了报文逆向分析的难度;有的汽车还在报文中设置了类似TCP协议中的递增seq,来预防重放的报文;再再次,根据培训时讲师所说,有的汽车会在总线和OBD的接口中设置网关,控制从外部进入的报文,现在人们还在研究汽车内的加密通信……这样的话,在现实生活中想要像电影里演的那样随手黑掉一辆车还是有难度的。

当然独角兽团队演示了如何利用车载蓝牙模块黑进汽车的总线,通过信号分析的方式在和汽车没有物理接触的情况下控制了汽车的部分功能orz。。。。具体视频google一下。

综上可以得到阶段性结论:现在的汽车的安全性很大程度上依赖CAN总线的安全性。

用到的原理就这么多,现在讲讲比赛的过程以及遇到一些迷之问题和看起来挺牛逼的“4分22秒破解汽车”经历。

被告知本次比赛由于是预赛,难度不高,即比赛时直接用一个一拖五的线将车上的CAN总线连出(如下图),连接到参赛队伍的电脑上,且报文内容全为明文传输,不存在网关控制。每组四支队伍比赛,共24支队伍,取用时最少的前三支队伍(也就是24进3)进入决赛。

赛前和队友们讨论许久,考虑了控制开门的报文存在以下几种情况:

  1. 最简单的情况:只有一条报文控制开启车门,即控制车门开启的ECU芯片接受到发给自己的开门报文后执行开门的操作。这种情况下,只需要分辨出开门瞬间变化的、发给指定ID的报文,进行重放即可。
  2. 较复杂的情况:有多条时序报文控制开启车门。
  3. 最复杂的情况:有多条时序报文控制开启车门,且存在序列号检测机制。

观看了第一场比赛后(我们是第三场),具体的比赛流程如下:

比赛开始后即开始计时,前一分钟内,不对汽车做任何操作,即各队的准备阶段。

在这个阶段,各队可以通过记录汽车在静止状态下产生的“垃圾报文”,以便之后的过滤操作。
(也许这个阶段还可以有其他的操作?)

一分钟时,裁判小姐姐打开车门。

从这一刻开始,找到控制车门开启的报文的选手就可以通过手边的“抢答器”停止计时,由裁判重放找到的报文。
如果车门成功开启,则视为成绩有效,停止计时的时刻即为最终成绩;如果重放之后车门没有开启,则继续计时(没有罚时)

第一场比赛,第一二名的队伍分别用时1分03秒和1分04秒,也就是说,除了用于准备的一分钟,破解最快的只需要3秒……3秒……3秒……

但是同场竞技的另外两只队伍却花费了不少时间,一支用了十几分钟,另一支甚至用了半小时才成功。

这样的结果提供的信息量还是很大的,首先因为大家都是在对这辆车没有任何先验信息的情况下进行流量分析,所以不存在之前对类似车型逆向分析过的情况,这也就是说,重放的报文可以用3秒找出,必然不至于太复杂,很可能就只有一条(不是时序或者组合的控制报文);但是从另两只队伍用时过长可以看到这个比赛并没有那么简单,某处一定存在着一些坑。

主办方提供的软件可以记录发给某个ID的报文数据变化次数(以下称为ct)

0x02第一手策略——碰碰运气

先将收到的报文按照ct从大到小排序,我们猜想发给控制车门的ECU的报文应该在开关门的时候变化一到两次,所以我们可以在车门开启时就按下抢答键,然后挑出ct较小(为1或2)的报文进行重放(这样做的成功率从概率上还是蛮大的,但是后来的事实证明我们还是naive)

我们的第二手策略是先在准备的一分钟时间内保存之前出现过的报文(主办方软件提供了这个功能,可以将报文保存为.csv文件),将这一分钟内保存的报文和开启车门后保存的报文进行比对,丢掉重复的报文,剩下的理论上就是开车门的报文。

有限的时间内我们做了上述准备,写了python脚本来比对开门前后的csv文件(使用hash表)。

二场的结果公布,我们必须在17秒以内破解车门才有希望进决赛(29日还有第四场预赛)。

比赛时我们按照计划在第一时间按下“抢答器”,挑了这样一条报文进行重放:

0x02无效,执行B计划!

然而跑完脚本之后的输出文件里面还是有将近5000条报文(有可能是之前准备时间内捕获的报文量不够,因为由于担心错过开门时间,只抓了30秒的包),于是B计划也宣告失败。

但是我们没有放弃,四双眼睛盯着屏幕,在申请第二次开车门之后,一名队员肉眼看到了变化的报文,在4分22秒的时候,我们完成了破解。

这里做了一个gif,大家感受一下这名肉眼看到目标报文的dalao的牛逼……

主要关注ID为319的报文,在开门瞬间,这个报文的B3数据段由00变为80,这就是开车门的控制信号。

这个报文的ct从一分钟的准备时间开始就一直在缓慢增加,猜想是汽车对车门是否关严设置了定时质询,于是产生的缓慢增加的质询报文,而质询报文的种类可能不同,导致ct增加。这个报文和控制车门打开的报文的目标ID都是车门ECU的ID,所以会产生ct值并不是很小的1或者2……

第一次接触CAN总线的我们还是缺乏相关的经验和练习(毕竟比赛的时候是我们第一次实际操作汽车,之前都是纯粹的理论推测和猜想),不过汽车安全的确是信息安全领域内很有研究价值的课题,我正在翻译一篇关于汽车破解的论文(博客链接:http://blog.csdn.net/qq_29947311/article/details/73865629)


原文发布于微信公众号 - ChaMd5安全团队(chamd5sec)

原文发表时间:2017-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

宝马汽车安全漏洞详解:古有伯乐识良驹,今有黑客擒宝马

ADAC(全德汽车俱乐部)想深入了解内嵌移动网络调制解调器的汽车如何向制造商发送数据。C'T(德国计算机技术类的杂志)为ADAC介绍了一位安全专家。 这位专家深...

24350
来自专栏SDNLAB

云数据中心网络虚拟化——大二层技术巡礼之L2 Fabric技术传输隧道

NVo3是L2 over IP/MPLS,利用IP网络的智能传输作为大二层虚拟交换机的背板走线,其好处是利用现有的设备即可完成隧道的传输。不过同时这也带来了一定...

49060
来自专栏量子位

FPGA开发板剁手,学生狗省钱大法丨吐血资源

博主Joel Williams在他的主页中分享了一篇购买便宜的FPGA开发板的攻略,量子位编译本文。

19900
来自专栏贾老师の博客

【笔记】读 JeffDean 分布式系统

15930
来自专栏知晓程序

举报!这里有人,在光天化日之下聚众撸猫

但并不是每个人都有机会成为「猫奴」。这时候,你需要 「吸猫君」 ,来帮你开启「云吸猫」的生活。

9720
来自专栏信安之路

CTF初识与深入

这段时间一直在忙活CTF相关的东西,从参赛者到出题人,刷过一些题,也初步了解了出题人的逻辑;这篇文章就简单地讲一下CTF如何入门以及如何深入的学习、利用CTF这...

20800
来自专栏安恒信息

用户需警惕“中秋假期安排”木马

中秋小长假临近,假期如何安排成了人们近期讨论的热点话题。近日,安全实验室发现大量“中秋节假期安排”、“中秋节假期攻略”等相关字眼的文件在QQ群共享、QQ邮箱、...

34870
来自专栏练小习的专栏

网站508规范(译)

出处:蓝色理想和玩·艺|中国同步发布 Guide to the Section 508 Standards for Electronic and Informa...

20150
来自专栏FreeBuf

WiFi安全漏洞:WPA2安全协议遭破解的影响分析

背景介绍 10月16日研究员Mathy Vanhoef公布了对WPA2的秘钥重放重装攻击KRACK ,攻破了十几年没有安全问题的WPA2协议。 WPA2协议 W...

292100
来自专栏程序员互动联盟

【程序员故事】搞笑篇

1、我真想开个程序员餐厅了,我当老板娘,进门时先写代码再进,一楼餐厅分C包间、java包间、linux/unix包间。搞开源软件的就坐大厅里,搞Ruby的上二楼...

28330

扫码关注云+社区

领取腾讯云代金券