查看: 88|回复: 0

[技术] 【赚周年币】技术帖——只要你的汽车有总线 CAN 设计,被...

[复制链接]

1553

主题

25

好友

1万

积分

翰林

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    昨天 13:17
  • 签到天数: 962 天

    连续签到: 4 天

    [LV.10]以坛为家III

    活跃会员勋章 发帖机器勋章 在线之王勋章

    发表于 2016-12-6 08:28:08 |显示全部楼层
    对于汽车,有很多种攻击途径:OBD 盒子、WI-FI、蓝牙、车机 APP、车联网平台……它们都要经由 CAN 总线进行控制。如果 CAN 总线不安全,这样的汽车就可以受到“狗带”般的攻击——你拿着车钥匙也没用,这车现在属于控制了 CAN 总线的黑客。


    破解特斯拉的第一人,360车联网安全中心工程师刘健皓又造出“万能车破解器”:正儿八经买的一辆新车,可以轻而易举地被他开走?!其实,在11月,刘健皓就展示了这一酷炫的技术。360 公司大楼下列阵了二十几台豪车,利用神秘的技术,刘健皓和团队轻松逐一破解了这些车。
    这次,他就是来详细解密——他是如何做到的。
    CAN 总线留下的 BUG
    一切危险的源头是因为汽车的CAN总线设计。
    CAN 是控制器局域网络 ( Controller Area Network ) 的简称,是在1986 年,由以研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。
    对于汽车,有很多种攻击途径:OBD 盒子、WI-FI、蓝牙、车机 APP、车联网平台……它们都要经由 CAN 总线进行控制。如果 CAN 总线安全,那么即使黑客利用上述途径,对车耍花招,汽车整体安全还是可以被保证,这些花招都仅仅是“娱乐”而已。但是,如果 CAN 总线不安全,这样的汽车就可以受到“狗带”般的攻击——你拿着车钥匙也没用,这车现在属于控制了 CAN 总线的黑客。
    如何守卫 CAN 总线的安全,要从 CAN 总线的结构说起。
    故事是这样开始的,很久很久以前……
    传统的汽车线束结构是这样:很多控制器链接在一个东西上,控制器之间可能还会互相干扰……
    1.jpg
    直到有一天,人们忍不了了,设计出一个总线架构,就像交换机一样,所有 ECU (电子控制单元)都要经过这个“交换机”:交换信息,协调指令。
    2.jpg
    但是,现在看来,CAN 总线还有几个致命的攻击点:
    1.它遵从 CSMA/CD 的交流方式,在任何一个节点搭上总线,都可以看到总线的数据,所以黑客只要找到一个点攻破,就可以看到车内所有数据;
    2.它支持多路访问,网络上所有节点接收数据都经过一条总线,所有数据都在一条线上,发的数据是广播的,所以可以看到很多控制器发的控制指令,如果控制指令是明文,那么就可以通过重放的方式控制汽车的一些设备;
    3.它有一个冲突检测机制,所有节点在发送数据的过程中,会不断检测所发送的数据,预防与其它节点产生冲突,由于这样的机制,只要一直在传统线中发送数据,就可以导致 CAN 总线拒绝服务,车上任何控制器都没有反应。
    刘健皓介绍,只要知道 CAN 总线的数据、ID、发送周期,那么黑客就可以通过重放来判断某个控制功能。
    3.jpg
    所以,对 CAN 总线的攻击其实十分危险,可以窃听总线数据、伪造协议,实施重放攻击和拒绝服务攻击。这意味着,如果做了这些动作,车处于极度危险中。 万能车破解器真的能破解一切车?
    是的,只要车有 CAN 总线设计。
    先看一下理论分析——汽车 CAN 网络逆向过程主要分为4个步骤:筛选、定位、破解信号、验证和保存。
    第一步:筛选
    使用市面上一些 USB-CAN 的工具与汽车的 CAN 总线相连,可以获取 CAN 总线上广播的 CAN 数据包,从大量数据包中进行逆向分析,找到想要的 CAN 数据包。
    第二步:定位 CAN_ID
    对于车身的某一项功能的控制,只需要一个 CAN ID 的数据包即可,这时只需要单纯地重放即可达到攻击的目的,还有一些功能需要多个 CAN ID 的数据包联合才可以,还有一些 CAN ID 数据包上带有计数器,在攻击时必须加上计数器才能绕过预碰撞系统的阻碍。
    第三步:破解信号
    CAN_ID 的数据包里一共有8个字节,每一个字节代表什么以及这些字节上的数字都是不固定的,比如速度表上的数值是根据公式计算出来的,如果改变成想要的数值(就是电影里那样改变速度置人于死地),需要带入公式才能得到正确的结果。
    在测试的过程中需要触发汽车动作,再确定 CAN_ID 的变化,然后找到对应的值,这样就可以把信号和汽车动作破解出来了。
    第四步:验证和保存
    结合上述结果,做成 FUZZ 工具,进而发现更多的汽车漏洞,如果需要修复的话,当然也是可以的。
    实际操作起来,要不断解决一些困难。
    刘健皓说:“我们拿一些传统 USB 工具接到车上面,发现刷屏非常快,分析 CAN 协议时,看执行动作,眼睛都要花掉。”
    为了能清晰地分析数据,没有工具,那就自己造一个。因此,刘健皓及他的团队造出了一个“CAN—Pick”。这个“CAN—Pick”就是他们口中的“汽车安全总线测试平台”——测试汽车总线是否安全。
    其实,它也是一个万能车破解器。
    虽然,它的外表看上去没有那么酷炫狂拽,仅是一个可以连接车的小黑盒和一个软件平台。
    那么,究竟如何操作,这辆车就会被黑掉呢?
    拿着电脑和小黑盒连接到车身,车身在静止状态时也会产生一些数据,这些数据被称为干扰数据,第一步就是获得这些干扰数据。小黑盒连接上的时候,软件平台上就会出现可视化的干扰数据;然后,操作车灯,获得车灯操作时的数据包,与干扰数据进行比对,从而发现真正能够下达操作车灯的指令数据包。把这个新获得的数据包进行重放,那么就可以操作车灯。
    其它操作同理。
    360 车联网安全中心另一工程师严敏睿介绍:
    这款软件支持全平台,有多种硬件可以进行试配,不管是市面上的,还是自己开发出来的,都会提供 SDK,让你自己自行进行试配。同时可以在线编写一些插件,这些插件可以共享到服务端,也可以从服务端下载一些别人编写的插件进行共享,多个人可以同时对这款软件进行操作。
    这意味着,“全民”可以加入到“黑车”——哦,不,是测试车是否安全的平台中来。
    4.jpg
    既然 CAN 总线可以被攻击,这个工具也可以检测出一辆车是否安全,那么有没有什么方法可以阻止这一切发生?
    刘健皓表示,汽车总线设计之初是在封闭网络环境中使用,并没有考虑安全问题,对于总线网络结构及控制指令的设计,要增强各 ECU 之间的验证措施,包括使用时间戳和校验的方式防止重放破解攻击,提高控制协议被逆向的成本,同时要控制好联网部件的安全性。
    他们现在的思路是,对 CAN 总线进行安全加密,比如,在数据包中是否可以插入一些加密算法。刘健皓透露,目前,清华大学的研究团队也正在对这一领域进行研究。



    已有 1 人评分 收起 理由
    loveeeboard + 10

    总评分:  + 10   查看全部评分

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-6-24 01:05 , Processed in 0.114567 second(s), 15 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部