原文地址:www.hackers-arise.com/post/2017/0…
原文作者:
发布时间:2017年8月4日
已更新。2020年4月21日
汽车黑客是我们黑客学科的前沿领域之一。随着我们的汽车变得越来越聪明,它们包括越来越多的电子元件,使它们越来越容易受到攻击。随着我们从字面上和象征性地转入无人驾驶或自动驾驶汽车的时代,黑客攻击汽车将变得更加重要和危险。
在这个系列中,我们将研究汽车黑客的基础知识,并推进到更复杂的黑客策略。关于一个相当简单的汽车黑客攻击的例子,请看我的文章《黑客攻击三菱欧蓝德》。
在我们深入研究汽车黑客技术之前,我们需要首先了解基础知识。有点像在网络黑客之前了解TCP/IP,或者在SCADA黑客之前了解modbus。汽车电子产品使用几种不同的协议,在多个微控制器、传感器、仪表、执行器等之间进行通信。这些协议中最广泛使用的是控制器区域网络或CAN。
CAN协议
CAN是由德国工业巨头罗伯特-博世公司首次开发的,该公司以其汽车电子产品而闻名。它在1986年的汽车工程师学会(SAE)会议上首次发布。 CAN协议已被标准化为ISO 11898-1和ISO 11898-2。它被设计用于车辆内微控制器和设备之间的强大通信,而不需要主机。
CAN作为广播类型的网络运行,类似于以太网中的广播数据包或在过去的网络时代(1980-90年代)使用一个集线器。网络上的每个节点都能 "看到 "每一个传输。与以太网或TCP/IP不同(但与SCADA系统中的modbus类似),你不能向单个节点发送消息,但CAN确实提供了本地过滤功能,以便每个节点只对与其操作相关的消息采取行动。你可以把它看作是 "内容信息传递",其中内容决定了目标节点。
CAN通过两条线运行,即CAN high和CAN low。由于汽车系统中固有的 "噪音",CAN使用差分信令。这就是协议提高和降低两根线的电压以进行通信。在高速和低速CAN中,当传输零(0)时,信号驱动高线向5V移动,低线向0V移动,但在发送一(1)时,不驱动任何一条线。
CAN信息类型
CAN使用四(4)种不同类型的信息。
- 数据帧
- 远程帧
- 错误帧
- 过载帧
数据帧
这是唯一实际用于数据传输的帧。在大多数情况下,数据源节点会发送数据帧。
它有两种类型,标准和扩展。标准的有11个标识位,扩展的有29位。CAN标准要求基本数据帧必须被接受,而扩展帧必须是TOLERATED,换句话说,它不会破坏协议或传输。
远程帧
当数据目的地节点要求从源头获得数据时,远程帧就会被使用。
错误帧
错误帧有两个不同的字段,第一个字段是由错误标志给出的,由不同的站点贡献,第二个字段是错误分隔符,简单地表示错误信息的结束。
过载帧
过载帧有两个字段。它们是过载标志和过载分界线。当接收器的内部条件或传输过程中检测到主导位(0)时,就会触发过载帧。
车载诊断系统(OBD)-II连接器
现在大多数车辆都有一个ODB-II连接器。如果你把你的车带到商店维修,仪表板下的这个连接器就是机械师连接他们的计算机以获取车载计算机的读数的地方。
OBD-II有16个针脚,看起来像下面的图。
作为一个黑客/攻击者,我们也可以连接到这个OBD-II连接器,在CAN网络上向各种设备发送信息。
CAN总线数据包的布局
有两种类型的CAN数据包,标准和扩展。扩展数据包与标准数据包共享相同的元素,但扩展数据包有额外的空间来包括ID。
标准数据包
每个CAN数据包都有四个关键部分。这些部分是:。
仲裁ID
仲裁ID是发送该数据包的设备的ID。
识别器扩展
对于标准的CAN,这个位总是0。
数据长度代码(DLC)
这表示数据的大小,从0到8字节
数据
这是该信息中的数据。如上所述,它最多可以是8个字节。
如上所述,所有的CAN数据包都是广播的,所以每个设备或控制器都能看到每个数据包。任何设备都没有办法知道哪个控制器发送了数据包(没有返回地址),所以在CAN网络上欺骗信息是微不足道的。这是CAN的关键弱点之一。
扩展的CAN数据包
扩展的CAN数据包与标准的CAN数据包是一样的,但它们被链在一起以创建更长的ID。扩展CAN是向后兼容标准CAN的。这意味着,如果一个传感器没有被设计成接受扩展CAN数据包,这个系统就不会损坏。
安全性
由于CAN是一个低级别的协议,它没有任何内置的安全功能。默认情况下,它没有加密或认证。这可能导致中间人攻击(没有加密)和欺骗攻击(没有认证)。在某些情况下,制造商已经在关键任务系统上实施了认证机制,如修改软件和控制刹车,但并非所有制造商都实施了这些机制。即使在实施了密码的情况下,它们也是相对容易破解的。
随着我们在这个汽车黑客系列中的进展,我们将扩大你对CAN和其他汽车通信协议的理解。把这个页面加入书签以备将来参考可能是有用的。
你可以在这里继续阅读本系列的第二部分。
请关注我即将推出的汽车黑客在线直播课程。