Now Reading
汽车“天网危机”铁幕拉开 — 最可怕的技术已经诞生了!

撰文:徐鸿鹄 | 排版:王晓峰 |校版:超级路

⚠ 全文总长约含9,000字,预计您的阅读时间为20钟。

公众号:几何四驱 (ID: GeometryAWD)

欢迎后台索引“群组” 加入几何四驱读者讨论群。


核 心 内 容 总 结


他们有着敏锐的嗅觉,也知道如何安全脱身。— 黑客往往是程序员的最高境界,是专注自我的理想主义者:其核心价值在于创造性地找到的“漏洞线索”,而非代码的“技术突破”。出于兴趣,解决某个问题,不管它是否有用,这就是黑客。


汽车安全产品是在封闭的环境下由工程师按照约定俗成的规则开发出来的,漏洞百出。站在学术顶端的黑客们奉行开源精神,狂放不羁不服管教,独立又协作。


You only live once!在黑客看来,这不是一个小心翼翼的时代,这是一个心怀梦想,不向这个操蛋的世界投降的时代。— 攻防双方思维和能力的差距如此悬殊,简直令人心生绝望。


“以前我们是黑客,现在我们是捍卫者!”— 终于,白帽黑客们按耐不住内心的救世主情节,挺身而出迎击黑客,用开源对抗开源,一正一邪之间的比拼比好莱坞的剧情还要精彩。


一键黑掉Jeep百万辆汽车 — 这不是小说里虚构的故事,而是三年前的往事,也是Miller大神的成名之作。一站全景式展现汽车领域顶级黑客底层的技艺和思想,巅峰对决岂能错过?


⚠️ 以上为本文核心内容摘录,能多相关的详细硬核内容,我们推荐您可以预留20分钟的时间来通读全文!



善 恶 两 极


车旅行时,你正播放着Ace of Base的《Beautiful Life》,稀松平常的一天。

此时此刻,黑客悄悄地入侵了你的汽车,并发现了你略显迂腐的艺术品味。


来而不亮剑非礼也。于是在后台为你推送了免费的人性化服务:调高两档音量输出—你的音乐还不够通透,只有完美的音量才能欣赏到瑞典国宝级乐队创作的的美妙Disco旋律。


聪明的黑客并不费力,只用了4行代码


没过几分钟,下一首歌又换成了2 Live Crew的经典曲目,这下黑客就不必犹豫了——最佳欣赏方式只有强化低音表现,并把音量调到最大。


同样无需繁琐的操作,只要四行代码,黑客便为你优化了音量均衡器,没几秒钟,震耳欲聋的低音便响彻天际。


对了,配合短暂失灵的音量调节旋钮,效果更佳哦!


什么?你还有别的苦恼?

找不到适合长途旅行收听的广播频道?

没问题,也交给黑客吧,只需三行代码,就能彻底远离选择恐惧症:


此外,你还能体验更多附加的惊喜。

Bonus Fun!

比如:将中控大屏的背景换成一张温馨的家庭照片:



啊?你说这些小儿科的伎俩并不过瘾?


那好,就让转向灯和转速表跟着音乐的节奏完美同步吧,车锁和引擎的开闭契合你噗通噗通的心跳频率,还可以全面解放刹车和转向,让汽车伴着圆舞曲,跳出春天的华尔兹!


没有经历过这种生命的狂喜,你都惘来这个世界过活!

不出“意外”的话,这也许就是人们口里常说的“巅峰体验”吧!


然而在有些人看来,这种顶级体验听来似乎有些玄幻,只存在于未来世界当中。

可实际上,这已经是三年前的往事了。


所以说,这波神奇的操作也算不上什么黑科技 — 因为黑科技从来不属于过去。

复原这个过去的故事,只是因为我们好奇它另一个可能的结局:


140万台同时失控的汽车让国家交通陷入瘫痪,惊恐的人们躲在家里不敢外出。


人们过了很久才找到事故的元凶:几名衣食无忧躲藏在云端的背后,搞出事情只为证明“我可以”,被个人英雄主义附身和荼毒的骇客。


今天我们知道这件事情没有发生,也许是运气,也许是宿命。


可我们怎么能够确保这件事情不会在将来发生呢?




年前把这件事搞大的,是两位特立独行的“怪才”。


一位有着响亮的名头: “汽车黑客开山鼻祖” — 辗转于Twitter,Uber,滴滴,GM等世界知名公司,第一个连续四年获得Pwn2Own冠军的黑客。


他的事迹你也许听说过:百秒侵入iPhone、十秒攻破MacBook,他就是太阳系里技术最娴熟的黑客之一 — Dr.Charlie Miller。


他的搭档Chris Valasek虽然没有博士头衔,但也不是吃素的。他先后供职多家IT技术公司IOActive, Coverity, Accuvant, IBM。当然,最让他声名大噪的,就是跟Miller合伙干的那一票:


“一键黑掉一辆车”


他们黑掉的并非只有一辆车。

理论上,这个数字可以是100万以上。


实际上,他们轻而易举地迫使FCA(菲亚特克莱斯勒)集团在2015年招回了140万辆汽车。他们没有被通缉,而是以安全专家的身份操刀。


能够远程遥控140万辆汽车是什么感觉?

恐怕你必须亲身与他们交谈才能感受得到。

真正的黑客总是稍微带一点放纵不羁,不服管教的个性。

两个不甘寂寞的男人,花费了非比寻常的精力来达成这件壮举。


物理学家布莱恩格林说:

“由于专业的细节令人望而生畏,人们总会避免接触技术。”

 

但搞研究的戏剧性不压于任何一部小说,

为什么我们总是要虚构?

为什么我们不来点真正的故事呢?


技术充满了细节,但最重要的却不是技术,而是技术背后的思想。就像数学和物理一样,正确的思想是不会过时的。


黑客往往是程序员的最高境界:其核心价值在于“创造”,而不是代码。事实上,攻破安全系统的黑客,成功的关键是“创造性思维”所找到的“漏洞线索”,而非“技术突破”。


理解伟大的思想,往往比批判它们困难得多。什么样的思维状态创造力无限?

地表最强数学家之一法国人阿兰·孔涅说:最重要的事情,就是成为自己的权威。


My play has just began!


索然无味的生活不会发酵出纯美的灵感。任何创造性的工作,都要放开身心欢闹一场,让激情与理性,浪漫与现实,实实在在地冲突,碰撞一回。叮当当咚咚当当……


“鬼才”二人组首先就盯上了这么一台车:

2014款Jeep 切诺基!

背后的原因也很简单:

切诺基的系统架构看起来就很有趣。



简单的结构,丰富而先进的功能,真是百里挑一的最佳候选者!


通常来说,中控主机在安全方面是比较脆弱的,而切诺基的主机与两条CAN总线同时联通(CAN-IHS和CAN-C)— 这种布局很少见,却是黑客们的最爱。


这意味着从理论上, 我们可以控制汽车上的所有ECU!

听起来就很带感!


2014款Jeep切诺基使用的信息娱乐系统叫做Uconnect,是基于德州仪器的OMAP-DM3730芯片实现的,这块处理器上运行了QNX操作系统,具有Wi-Fi连接、导航、应用程序和蜂窝通信等功能。


这是一个很成熟的系统方案。


第一个被发现的安全漏洞就出在大众熟知的车载Wi-Fi上,这是一个热点,但只有当车主支付月租并启用该功能时才会开启,该漏洞才能被黑客利用。


默认的Wi-Fi加密方法是WPA2,密码是随机生成的。

这是一个相当安全的设置,但对熟练的攻击者来说则不然。



攻击者甚至不必直接暴力破解Wi-Fi密码 — 一旦用户开启了Wi-Fi服务,就意味着他们会至少会定期将一部电话或手提电脑连接到无线网络,攻击者只要搞定一部这样的设备,就可以绕开Wi-Fi的防护,直达汽车网络了。 


听起来很酷,却有点暗度陈仓的意思,不够炫技。

的确,这个做法的确跟黑客们独特的品味有些抵触。


都知道窗户纸一捅就破,但是往往大部分人连窗户都找不到。


在安全领域,那些能够找到并捅破窗户纸的人,才配得上“黑客”的称号。作为自带光环的黑客,自然推崇心脏外科医生般娴熟的手法:精准打击。


于是,二人组多做了一些功课。直接逆向了德州仪器OMAP芯片中的“WifiSvc”二进制程序文件,还原了创建Wi-Fi密码的算法。


int convert_byte_to_ascii_letter(signed int c_val) { 

  char v3; // r4@2

  if ( c_val > 9 )

  {

    if ( c_val > 35 )

      v3 = c_val + 61;

    else

      v3 = c_val + 55;

else { 

    v3 = c_val + 48;

  }

return v3; } 

char *get_password(){

         int c_max = 12;

int c_min = 8; 

unsigned int t = time(NULL);srand (t);unsigned int len = (rand() % (c_max – c_min + 1)) + c_min; char *password = malloc(len);int v9 = 0;do{ 

unsigned int v10 = rand();int v11 = convert_byte_to_ascii_letter(v10 % 62); password[v9] = v11;v9++; 

    } while (len > v9);


看起来,随机密码的生成有据可循,是跟时间相关的一个函数 — Uconnect中控主机在汽车生产线上的首次启动时间(以秒为单位)。


于是,根据汽车生产的年份,我们就可以按照“月日时分秒”的数字排列,用程序生成一个密码列表来暴力破解WPA2加密。


如果连月份你也知道了,那你就只需要测试1500万个密码!


听起来很多?但今日破解技术已经可以做到每秒测试13.3万次了—这样算来,试遍1500万个密码只需要2分钟多一点!


在二人组看来,这个方法还是太笨太慢了!


深入代码,两人逐渐发现了代码里更多的Bug:当主机在首次启动时无法从GPS或蜂窝网络获得时间信息时,系统就会把时间设定为默认值:2013年1月1日00:00。


那么,Uconnect主机第一次启动时生成WPA2密码时是否已经设置了正确的系统时间呢?


这个问题不难回答,双人组测试的Jeep车上就有一个现成可用的密码:“TtYMxfPhZxkp”,按照算法反推,系统时间被还原为0x50e22720,这个十六进制数字正好代表2013年1月1日格林尼治时间00:00:32。


于是一切都清晰了:系统主机初次启动设置时间到WifiSvc生成密码一共就花了32秒,在这32秒中系统始终都没有找到系统时间!


这是一个精心打造的无用设计!


WPA2加密机制形同虚设。在这种情况下,猜出正确的密码只需要测试几十次就够了,比眨眼还快。


与此同时,双人组还利用netstat扫描默认网关,并有新的发现。


他们出乎意料地扫到了一大堆开放端口!


分辨这些开放端口“服务”的用途并不难 — 使用telnet客户端,在电脑上按几次回车键,就能给出判断了。最终6667端口成功地吸引了他们的关注 — 它的用途是:D-Bus。


D-Bus是什么鬼?看张图吧。



D-Bus是源自于Linux平台的一个概念,是嵌入式系统一种常见的设计方法。它实现了两个用途:一类是系统总线(主要是守护进程和系统服务使用的总线),另一类是为用户应用程序保留的会话总线。



只要破解了D-Bus服务,就能轻而易举地实现与Jeep中控主机的交互:调整广播的音量,访问存储器上安全级别比较低的数据等等。


但拿下主机并不是我们的终极目标,

我们还有诗和远方呢!

蜂窝网络通信和CAN总线。



通过拆解发现,蜂窝网络由Sierra的AirPrime AR5550芯片来实现。有了它,车载Wi-Fi,实时交通信息更新就成为了可能。仔细看标识就会发现,它由高通的3G基带芯片供电,运营商是Sprint。


为破解这块芯片,有了标签上详尽的信息提示,就等于成功了一半:我们已经知道了需要借助Sierra的开发工具包来研究它。


再看CAN总线。虽然OMAP处理器不能直接访问CAN总线,但在电路板上还有另一块不起眼的芯片来实现这个功能。— 它就是Renesas V850处理器,负责内部高速CAN(CAN-IHS)和主CAN-C总线的通信。



V850芯片是低功耗的,可以连续监测CAN通讯数据,并在必要时唤醒(高功率的)OMAP芯片。


至此,破解的思路就明确了,一共三块芯片。


一块OMAP,Uconnect的核心,这是整车的薄弱点,联通无线网络和CAN总线的高速公路

一块Sierra,搞定Wi-Fi和蜂窝网络。

一块V850,搞定CAN总线上的整车ECU。


只要拿下他们,控制汽车就易如反掌了。


们先来看OMAP


有两种方法可以在Uconnect设备上实现“越狱”。

最取巧的方法是将U盘插入Uconnect的预留插口,主机会识别U盘并更新系统。



你只要抓住系统的一个漏洞略施小计,便可以兴风作浪了:



U盘验证完成后,主机的系统会重启。你拔出U盘,系统会提示:请将U盘插回。


可你早已准备好了另外一个U盘,里面有个类似的升级程序,只不过事前动过了手脚(比如停用了升级程序重新校验的过程,并更改了管理员密码)。



当然,Uconnect没这么傻,程序升级之前还是要校验一次的。但是查看系统的代码就会发现,程序里早就预设了Bug,只要稍加利用我们就可以识别作弊的U盘。


方法也很简单 — 手工修改内存数据即可。



改哪里呢?依照程序代码的提示,只需将变量x的值从0x80(128)修改为S(0x53)。


破解的思路充满了智慧,但沾沾自喜却为时过早 — 这个攻击方法存在显而易见的问题:


攻破汽车的防火墙,你显然不能随身带着一块U盘,破门而入暴力操作啊!这是笨贼才会做的事情。更重要的是, 系统更新并不是你的目标,你的目标是悄悄地植入恶意代码,最好在系统不更新的前提下进行。


在更新模式下,网络连接之类的功能往往不会被启用,这对远程攻击很不友好。


这难不倒双人组,他们随即发现只要适当修改boot.sh文件,就可以在正常模式下修改根密码并启动SSH守护进程——这个进程能利用根权限开启远程访问。


Bingo!只要对文件系统略作修改,就可以打开远程防火墙的缺口。


黑客驱技术如骏马,视万物如烟灰,不断挑战能力的极限,重新定义问题实现自己的意志。


下面的问题是,要怎么远程修改系统文件呢?


我们此前有提到过,D-Bus服务是在Uconnect端口6667上开放的,黑客们可以直接利用这个通信服务来远程传输恶意数据。



有多简单?只要四行Python代码,Jeep的主机的安全防护就基本作废,而攻击者甚至都不需要对主机做越狱。



更令人啼笑皆非的是,Jeep的主机上已经预设了注入代码的功能。这是其内建服务(NavTrailService)的一个方法,名为execute。


什么意思?通俗地说,植入代码看起来就跟系统的数据通讯一样正常,恶意程序如入无人之境。


理论上,你可以在Uconnect的OMAP芯片上运行任意的代码:


改变GPS的定位坐标

任意设定空调的转速和加热温度

拨打110,119电话,循环切换蓝牙音频,CD和广播

或者加上它们的各种排列组合……


刀在于手,刃在于心。

唯一的限制就是你的想象力。


然我们已经控制了Uconnect系统,但通过与D-Bus服务攻击还存在天然的局限。

因为D-Bus服务只能利用Wi-Fi来实现。


这样一来,Jeep车主为了能够享用到黑客无微不至的关怀,必须缴纳每月35美元Wi-Fi的服务费——这太贵了!关键是Wi-Fi信号受到物理距离的限制,只有32米——这并不符合黑客们的品味!


只有打通蜂窝网络的屏障,才能获得更大的攻击输出效果。



仔细查看Uconnect的网络配置,可以看到它有两个通信的接口。

Wi-Fi的接口是uap0,另一个ppp0接口则是Sprint的3G通信。


这里还有三个地址:

192.168.5.1 :车载Wi-Fi接入的地址。

68.28.89.85:互联网IP地址,但端口6667却不在该地址打开。

21.28.103.144:面向互联网的Uconnect的真实地址,但仅在Sprint的3G网络内部可用。


进一步的测试还发现,D-Bus服务绑定到了蜂窝网络接口上的相同端口:6667。于是3G蜂窝网络的数据可以通过IP地址与D-Bus进行交互!


这台车简直就是为黑客量身打造的!


这个发现孕育了一个大胆的猜想:只要买来一台小型蜂窝基站(Femtocell),接入Sprint的运营商网络,大规模扫描IP地址,就可以监听特定的呼叫,控制网络当中的每一个远程接入点 — 每一台Jeep汽车


于是,万能的ebay出手了!Sprint Airave就是我们要找的设备,但不幸的是,双人组购买的两台Airave都是残次品,没法用。


幸运总是眷顾有需求的人——ebay上还有一部“全新的”Airave2.0(据说是被盗走的),到手后相当给力。



通过Telnet就可以访问Airave设备——这实际上为设备提供了一个强大的开发工具包。希望越来越大,通过蜂窝网络与Jeep进行通信变得更加实际和可行了!


有了Airave,就算对付那些没有启用Wi-Fi的汽车也戳戳有余——3G网络远程攻击与Wi-Fi攻击可以采用相同的漏洞:端口6667!


那么,Sprint蜂窝基站是否允许名下两台3G设备之间实现点对点通信呢?这是实现攻击的关键所在。幸运的是,Sprint对此并没有限制——这对搭档轻易地实现了3G手机到Jeep主机的通信。这意味着远程攻击范围可以扩大到单台蜂窝基站的覆盖距离——几百米!


后面还有更令人震惊(Kuang Xi)的发现!



Sprint的通信可以不局限于单个基站组网。实际上,全美任何地方的任何Sprint基站都可以与国内任何其他Sprint基站进行通信!如上图所示,Chris从匹兹堡的一台手机上甚至可以访问千里之外圣路易斯的一台Jeep汽车的D-Bus服务端口! 


要找到易受攻击的Jeep汽车变得非常简单:只需要利用Sprint Airave,在端口6667上扫描IP地址21.0.0.0/8和25.0.0.0/8。任何响应“ERROR Unknown command”字符串的设备,都代表着一个潜在攻击对象。


如果愿意,你甚至可以完全接管这些汽车的主机控制权,实现零成本远程控制!


可是没有当面取得车主同意的话,这个行为会显得很冒犯(当然了,辩护律师可不这么觉得!)。


那么,潜在受攻击汽车的数量是多少呢?我们对这个数字非常着迷。

经过双人组的初步测试,光潜在攻击车型就可以列出一个长长的清单:



清单涵盖了几乎所有FCA在2013-2015年发售的车型


在一次扫描测试中,这对搭档共找到了2695辆汽车!根据VIN(车辆识别)号码分析,只有20个左右的重复数据。


只要按照标记重捕法和统计学里的贝叶斯估计求解,就能估算出来。潜在受害者的数量:29000到47000之间

查阅销售数据,仅2014年,FCA集团整车销量就有1017019台,这可能意味着实际受到安全威胁的汽车数量要多得多!(2015年,FCA官方宣布召回140万辆汽车,看来统计的数据的确过于保守了。)


自由软件基金会创始人Richard Stallman曾说:出于兴趣,解决某个难题,不管它是否有用,这就是黑客。在黑客眼里,还有一个更大胆的想法: 是否可以将恶意程序做成蠕虫病毒,利用3G网络自行扩散和传播呢?


这个技术问题很有趣,道德审判上又很可怕。

思来想去,但愿你将来不会这么做,最好连想都不要想!



击范围一路飙升,从30米到几百米再到上千公里。

深刻而重要的最后一步,就是攻破每一台汽车的内部CAN网络,直至底层的控制器了。


但V850芯片的破解难度非常大。根源在于,执行恶意代码的OMAP芯片并不发送CAN报文(指令),收发CAN报文的任务是由V850来实现的。



但仔细思考,也不是完全不可行:


OMAP芯片和V850芯片之间是通过SPI串行通信协议联通的,因此V850芯片可以通过OMAP芯片进行固件升级!理论上,可以通过OMAP篡改V850的固件,让V850执刀,发送恶意的CAN报文攻击底层的ECU。


从V850的固件和固件升级文件入手,利用逆向工具来深入探索,就能够编写出控制收发CAN报文的核心代码。攻破了V850,就能通过CAN总线将攻击代码变为对汽车的实际的物理控制。


核心的固件并不难找,难的是要找到一种方法,将修改后的固件放在V850芯片上。


“千里之堤毁于蚁穴”,攻击者只要挖掉房子的一块砖,他就拥有了整个房子的所有权。这个思路被黑客们形象地称作内网漫游(lateral movement),用在这里形容,再恰当不过了。

不必再次惊喜了——贴心的Jeep为我们准备好了一切:“iocupdate.bin”文件正好被设计为做我们想要做的事!——将新的固件从Uconnect系统推送到V850芯片,从而实现内网漫游。


更棒的是,Jeep的设定根本不需要加密签名来验证新的V850固件是否合法!


传输的问题瞬间搞定。


那么,又该如何修改固件,添加我们需要的攻击代码呢?

答案就是,先对固件文件逆向,并熟悉CAN报文操作相关的函数,再基于理解编写代码。


(再次)幸运的是!对V850芯片做逆向,业界已经有了专业的工具:IDA Pro



运行IDA Pro后,看到的第一条机器指令就很不寻常:这是一条跳转(Jump)。


只能用一个观点来解释我们的幸运:Jeep对于黑客们实在是太友善了!


不用耽搁,直奔“跳转”后的内存地址,去看固件初始化的代码:


这些代码是用一种原始的方式来描绘的——汇编语言。


他们太原始,不花费大量的时间和精力,就无法理解代码的确切含义,Chris和Miller两个人就花费了几个星期的时间来阅读这些天书,求解代码的功能和作用。


这个过程要求胆大心细。


首先就要通读汇编代码,修复IDA Pro无法理解的代码块,并找到所有汇编代码函数调用和交叉引用逻辑关系——多亏了Python的IDA库,让这个工作的大部分都实现了自动化处理。



如果足够幸运(毋庸置疑),你就可以在一整片蓝海里复原所有的代码和函数。结果似乎还不错!


逆向工程斩获颇丰。我们再回到正向开发的部分:阅读V850芯片的data sheet——也就是芯片的出厂说明书。



说明书里有很多有用的信息,最重要的是分区命名,地址分配,寄存器类型等。



没有系统设计的蓝图?这难不倒我们的英雄们——从零开始设计和推演,在IDA Pro里搭建一座完全一样的系统架构:


ROM地址段在0x10000-0x70000区间,这里主要存放可执行代码。

RAM地址映射到0x3FF7000-3FFEFFF区间,这里是保存变量的地方,有许多变量的交叉引用。


最后是可编程外围I/O区域(PPA),地址从0x3FEC000开始。它也非常重要:包含了CAN指令相关的寄存器操作和消息缓冲区。


有了以上的铺垫,我们就可以基于汇编代码当中出现的交叉引用和寻址操作编写Python代码了。这是黑客们最能肆意挥洒才华的时候,也是最好玩的部分。双人组很享受这个过程,正所谓越擅长也就越热爱。


代码里总会发现一些容易解读的汇编指令。比如在ROM 000677AA的地址上,CTL寄存器的值被设置为0x200——我们的确知道它的物理意义,这代表CAN报文的传输即将开始。


于是,我们反向来从零构造这个函数,不妨叫做“can_transmit_msg”(传输CAN报文)吧。


随后我们发现,跟期望相反,这个代码块并没有访问PPA区域,而是指向了ROM — 很奇怪!


带着疑问,我们重新阅读V850处理器的开发示例代码,寻找线索。


这些示例代码都存放在IAR Workbench开发工具(用于开发V850)当中,被很多汽车工程师使用和参考。



不出所料,在这个示例程序里,代码指向ROM是有意义的:因为这里是通过索引访问一个CAN模块的数组。


一切都解释得通了,我们终于建立了一个CAN总线交互功能的参考基准。这就像是在一门陌生的语言里,知道了一个陌生单词所代表的实际含义,以这个信息作为锚点,我们就能破译整个语言的奥妙。


在代码块里,我们还会发现CAN报文的缓冲区和寄存器数据也指向了RAM。


基于此发现我们继续利用Python设计出名为“can_read_from_ram”和“can_write_to_ram”的函数体,它们的作用分别是将PPA中的数据放入RAM中,将RAM中的数据读入PPA。


陌生语言里我们又学会了两个新单词!


逆向出的函数“can_read_from_ram”的机器码


坚持不懈地读更多的汇编机器码,越来越多的参考点就会被挖掘出来。就这样,一边读,一边追踪CAN寄存器,消息缓存,RAM的数据,我们就能逆向构造出大量用于收发CAN报文的函数。



上图为在RAM里找到的指针数组。RAM中还有几个其他的非常重要的区域用于存储CAN ID、CAN数据长度和CAN消息数据。有一系列指向变量的指针存储在RAM当中,这对于发送CAN消息来说是不可或缺的。


最终,我们将能够了解如何构建合适的数据,可以发送任意的CAN报文,包含正确的控制器ID,数据长度和数据本身的信息,最终指挥ECU按我们的想法来工作。


攻破ECU,只差最后一步了:


像所有研究一样,使用合适的工具会带来极大的效率提升。破解Jeep汽车更需要借助机修诊断工具的帮助——这一点也不奇怪——它们能与ECU在CAN总线上进行低层次但却非常重要的通信交互——安全访问密钥以及攻击者最感兴趣的诊断测试。


遗憾的是,Jeep并不支持通行的车辆诊断编程标准接口J2534,必须购买昂贵的专用工具wiTECH。


令人心酸的是,两位搭档卖血捐X几个星期之后,才最终凑够了钱。


但物有所值,wiTECH工具非常强大,甚至能够看到Jeep图形化的ECU网络拓扑结构。使用机修诊断工具,攻击者就可以执行主动测试并嗅探结果——这是一个试错的过程。多次比对嗅探的试错数据,就能够彻底解密CAN报文指令,跟汽车执行器的物理动作关联起来。 



最终,转向,刹车,动力等跟汽车运动相关的核心组件的控制权都被剥夺。远程端到车辆执行器全部打通,驾驶员彻底沦为移动傀儡。


这不是一个小心翼翼的时代,黑客们从来不会呼喊改变世界的口号,他们的行动只有一个理由:Because We Can!


什么网络安全Cyber Security会成为一个重要的问题呢?


看看历史也许我们就能找到答案。


先是大量的电子零件被添加到汽车当中,慢慢线束的重量成为了一个大问题:成本和燃油经济性逐步恶化,于是汽车工业引入了CAN总线,此时安全的问题还不突出:汽车上还是可信的设备和另一个可信的设备通信。


然后,汽车开始通过多样的途径联通多彩的外部世界:WiFi,胎压检测,蓝牙,车载通信……大量的信号从外部进入汽车内部。 


在我们的故事里,Jeep有很多个芯片,就以中控主机OMAP芯片为例,Charlie和Chris认为需要一两年才能完成的破解,只用了三周就发现了系统漏洞,并花了5分钟拿下。


还有一个连接到Sprint网络的芯片。Sprint不允许来自外部的数据进入,但却允许一个Sprint设备与另一个Sprint设备进行通信。于是二人组买了一部Sprint手机,可以找到易受攻击的汽车,让他们发送他们的VIN,并识别汽车的型号。


Charlie甚至还闯入了一台道奇蝮蛇(价值10万美元以上),并把收音机音量调到最大——对于黑客来说,只要把握住机会,技术会把个人推送到难以想象的高度,哪个黑客能够轻易压抑住内心这种巨大的诱惑呢?


随着高级驾驶辅助功能的出现,新型攻击也将成为可能——比如自动泊车和车道保持功能也可以被远程控制,它们的实现都需要转向ECU接收CAN总线的报文命令。


还有域控制器, 以及OTA技术的演进,一方面简化了汽车的网络拓扑结构,也大大提升了汽车功能的复杂性,将控制汽车的核心元件“整合”在了一起,给网络安全带来了全新的挑战。 


智能汽车时代的数据量就更大了,除了执行器,感知数据决策数据一股脑涌过来联网交互。各大无人车公司也纷纷将此内容写进自己的安全报告的独立章节加以研究……


Cyber Security技术从2010年开始才被业界认识,至今还不到10年。2013年,在DARPA的资助下,专业人士才开始更加系统地研究。


越来越多的功能,从安全角度来看,就是越来越多的攻击目标。一旦外部连接欠考虑不够可靠,就将成为潜在的黑客打开通往汽车整体架构的大门。 


未来的挑战还有很多,在攻击端,更好的破解工具将源源不断地被发明出来(世界上5%最顶尖的程序员写出了99%的优秀软件,这些人分分种就能把想法实现),更成熟的黑客盈利模式也已经出现(比特币,勒索手段和商业链条),而防护端的技术还落后很多,网络安全需要持续投入大量人力物力,追求没有完美境界的细节……


同时我们也看到积极的一面:即便是顶级黑客,也需要耗费大量的时间对复杂的系统进行潜心研究(可能以年为单位),当前汽车产业实施勒索犯罪所能得到的收益与付出还不成正比(也许将来会不同),OTA技术的出现也能快速修补安全漏洞……


汽车安全产品是在封闭的环境下开发出来的,一定会漏洞百出。丰田信息中心的吉田拓也说到:“汽车行业在网络安全开发方面落后,如今包括丰田在内的汽车制造商正在为下一代攻击做准备,但了解汽车技术的安全人员非常紧缺。”。


“我越了解开源,就越信任其成员。我对私有性质的软件了解越多,就越担心客观真理会从地球上消失。”——站在学术顶端的黑客们奉行开源精神,独立又协作。可汽车工程师在设计具体产品时却没有这样自由多元的文化,思维的差距如此悬殊,令人心生绝望。


攻击的一方躲在暗处思想自由又奔放,防守的一方站在明处却保守得不堪一击。汽车要想安全,似乎 唯一的出路,就是要和正义的“白帽子黑客”们通力协作,用开源对抗开源——这就是著名的林纳斯定律:“足够多的眼睛,才能让所有的问题浮现。”


这是一个巨变的时代,一切变革都令人欢欣鼓舞。

但在这场安全之战里,若从人性上来考量,它似乎并没有任何不同


攻防善恶两极之间,我们是有选择权的。


每个人都应该扪心自问:我希望让世界更美好一点,还是更不美好一点,还是无所谓?




特邀撰稿:徐鸿鹄
作者微信:honghu967935

现就职于 蒂森克虏伯 普利斯坦集团(Thyssenkrupp Presta AG)负责电动助力转向系统应用项目的开发与管理。


汽车行业11年从业经验 ,研究侧重点主要为底盘系统,电机技术以及无人车安全等。热爱物理,数学和科学哲学,乐于使用物理学思维和工具解决工科的问题。关注历史,经济学和艺术,跨越学科的藩篱,看见世界感受成长。不回忆过去,不教人做人,不给自己加戏,也不在意条条框框,最喜欢有趣的观点和深刻的见解。好奇心的驱使下,常常探究一些冷僻的问题,并不断地追问:为什么?为什么?为什么?


更多相关文章推荐


关注「几何四驱」

各种高能文章,随后速速就来



What's your reaction?
Love It
0%
Like It
0%
Want It
0%
Had It
0%
Hated It
0%
About The Author
徐鸿鹄
机械工程自动化工学学士 现就职于某德国顶级汽车供应商,负责电动助力转向系统应用项目的开发与管理。三年产品设计,八年技术项目管理经验。机器人和无人车领域两年机器学习算法实战经验,重点研究领域:底盘和无人车控制技术,功能安全。喜爱推理和写作,关注物理学(量子引力),统计学和科学哲学,乐于使用物理学思维和工具解决工科的问题。
Comments
Leave a response

You must log in to post a comment