智能汽车攻防,(除去对PKE、RKE等的hacking只考虑控制车身系统)个人认为可以分为两个阶段。第一阶段是寻找如何接入CAN总线,第二阶段是CAN总线上的数据分析与攻击。第一阶段的研究基本要靠车型本身信息系统的漏洞,比如未将多媒体系统与舒适can隔离,条件所限难以研究。第二阶段上手较为简单,本文主要集中在第二阶段。
现在越来越多的汽车加入了智能控制系统,由不同ECU控制不同的单元,如开关车门车灯等动作。动力系统也可通过ECU使用X-by-wire线控方式控制,而这在增加了汽车的智能性和用户的良好体验同时也带来了许多安全隐患。
CAN总线知识
ECU如何交流,攻击者又如何进行攻击呢。目前大多数汽车内ECU间的通讯都是通过CAN总线进行的。
CAN总线基础知识
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。
CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。显性电平逻辑值为0,隐性为1。总线空闲时,总线上所有单元都可以启动发送信息,当多个单元同时发送信息时,最高优先级的单元获得发送资格。
CAN 总线是一个广播类型的总线,所以任何在总线上的节点都可以监听总线上传输的数据。
CAN总线分类
高速CAN
根据线缆的长度提供从5Kbit/s到1Mbit/s的波特率。
低速-容错CAN
提供从5 Kbit/s到125 Kbits/s的波特率。该标准允许在CAN总线连线失败时CAN总线通信得以继续进行。
单线CAN
只用一条导线的CAN总线协议
CAN报文格式
CAN协议有两个部分:CAN2.0A(标准帧)与CAN2.0B(扩展帧),其中A为基础部分,有11位id段和最大8字节的数据段。CAN2.0B为扩展部分,其定义了29位的id。
如何确定优先级
CAN采用了比特位仲裁机制,id段即为仲裁域,在仲裁期间,每一个发送器都对发送的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一”隐性”电平而监视到的是一”显性”电平,那么这个节点失去了仲裁,必须退出发送状态。简单来说,id越小,优先级越高。
详细内容可以看这篇文章
汽车中的CAN总线
可以用于和已经用于汽车中的总线并不只CAN总线一种,其他的有LIN、FlexRay(双线冗余,高带宽,实时性强,少数高端车型用在动力系统中)、MOST(用于多媒体系统)等总线协议。但由于成本和其他考量大多数车型都使用了CAN总线。其中许多车型总线中加入了网关来进行帧转换。
舒适CAN
舒适CAN一般为低速CAN,其负责车身控制和舒适性功能如开关车锁、车灯、雨刷、后视镜调节、座椅调节加热等操作,有时也带有仪表数据。
详细内容可看舒适CAN总线系统
动力CAN
动力CAN一般为高速CAN,其一般联通了发动机ECU、ABS系统、安全气囊等系统。
不同车型有不同数量和用途的总线,多的可以有4条线分管动力、舒适、多媒体仪表,少的则只有上面两种。
所需软件及硬件
开源系
BusMaster
- 支持导入车辆数据库(非dbc格式,特有dbf格式,带转换工具)
- 支持多种硬件与多种网络
- 提供统计分析
- 提供展示、过滤、特殊颜色显示等功能
- 可以实时监控网络流量
- 支持网络仿真
- 支持CAPL编程
支持硬件列表:
- ETAS BOA
- ETAS ES581.3
- ETAS ES581.4
- ETAS ISOLAR-EVE
- i-VIEW
- InterprediCS neoVI
- IXXAT VCI
- Kvaser CAN (《智能汽车安全攻防大揭秘》一书中推荐,淘宝单通道2300左右)
- MHS Tiny-CAN
- NSI CAN-API
- PEAK USB
- Vector XL
- VScom CAN-API
CANToolz
a.k.a. YACHT (Yet Another Car Hacking Tool)
- 实时分析能力较弱
- 基于web展示,ui操作性弱
- 实验性的提供了部分识别动作帧与事件帧的功能
支持硬件列表:
- USBtin 只要30多美元的开源USB to CAN interface
- CANBus Triple 73美元。可以通过蓝牙连接,其官方也提供了软件来分析数据
- Seeed CAN-BUS Shield 1.2 20多美元,基于arduino
国外商业
Vehicle spy
- 可以导入dbc数据库
- 可实时监控总线
- 支持网络仿真
- 支持Function Block编程
- 可以更改ECU内存
- 还有许多功能,基本想到的都有
- 有官方视频教程
- 硬件软件都不便宜
CANoe
- 可以导入dbc数据库
- 可实时监控总线
- 支持网络仿真
- 还有许多功能,基本想到的都有
- 硬件软件都不便宜
国产
硬件:
- USBCAN-I/USBCAN-II
- USBCAN-OBD
软件: - ECAN Tools
- CANTest
- CANPro
价格最贵不超过七百,无仿真功能,基本功能齐全。