CAN总线上流量的逆向工程



原始CAN



总线信号CAN(控制器局域网)总线已成为汽车行业的标准:要求所有新车都支持CAN(自2001年以来在欧洲,自2008年以来在美国)。除汽车外,CAN还用于多种其他设备。用于CAN诊断设备的制造商除了在汽车,摩托车,叉车,轮船,矿山火车,船坞,无人驾驶飞机等各种汽车设备中,还宣传其使用。让我们看看CAN是什么。



车辆中使用了几种CAN。例如,在福特福克斯(Ford Focus)中有四个这样的轮胎-三个用于控制发动机,制动器,仪表板等的高速轮胎(500 kbps),和一个用于控制门,前灯,安全气囊,音响系统,空调等的低速轮胎(125 kbps)。其他事情。通过连接到CAN,您可以模拟汽车中任何设备发出的信号-例如,通过手机上的应用程序控制空调或在不移动汽车的情况下使里程表收紧。通过连接到Arduino总线和继电器,您可以从仪表板控制另一个停车摄像头。甚至是从事Voyage等自动驾驶汽车的初创公司通过在常规量产车中连接CAN并学习模拟踏板和方向盘的信号来开始进行原型设计。



要连接到汽车中的CAN,通常在方向盘附近有一个OBD-II(车载诊断)连接器。



图片



用于将计算机连接到CAN的OBD2-USB适配器的价格为5美元起,可让您跟踪车内的所有流量。有时,OBD-II连接器受“硬件防火墙”保护,该防火墙可让您从连接至CAN的设备接收数据包,但不允许将数据包发送回总线。在这种情况下,只需拧下连接器并连接到CAN电线即可。







在CAN总线上传输的每个数据包均包含传输设备ID(11或29位)以及最多8个字节的传输数据。点火开关打开时通过公共汽车的交通可能看起来像这样:







商业和开放源代码都有许多用于分析CAN流量的工具。Linuxcan-utils软件包包括一个实用程序cansniffer该实用程序仅为每个CAN ID显示最后发送的数据包,从而使您可以跟踪总线上每个传感器的读数变化:







对于CAN交通的逆向工程,新加坡研究人员从的报告中追踪了此踪迹,在视频上记录了实验汽车的仪表板,然后将仪表板上的变化与交通的同时变化相关联。因此,他们确定了速度传感器的CAN ID以及由其发送的数据格式后,便学会了“伪造”其数据包,将错误的读数发送至速度计和转速计。



应当理解,与“伪”数据包的传输并行的是,来自速度传感器的实际信号继续通过总线传输。为了使转速表显示虚假的读数,有必要监视总线上实际读数的传输并以某种方式抑制它们-例如,在检测到速度传感器的CAN ID传输之后立即通过短路数据线来物理上``消音''总线。抑制真实读数的一种更简单的纯软件方法是在“伪装”数据包传输后立即传输,而转速表还没有时间做出反应。例如,以下简单的shell脚本监视CAN ID = 0x0C9的传输,并在使用cansend相同的can-utils的实用程序发送伪造的数据包后立即进行监视



candump can0 | grep“ 0C9” |边读边;做cansend can0 0C9#8021C0071B101000;完成



即使汽车中的所有设备都已连接到CAN,但并非所有功能都通过CAN进行控制。例如,有关踩油门和制动踏板的程度的信号会在福特Escape中传输到CAN,但是这些信号仅由ABS单元使用,而油门和制动执行器则直接连接到踏板,绕过CAN。



从安全角度来看,新加坡人的报告毫无疑问是脆弱的,因为传输“虚假” CAN数据包需要物理访问总线。此外,可以使用校验和来保护数据包-例如,在丰田汽车中,每个数据包的最后一个字节必须等于所有先前值的总和(取模256)。此外,丰田使用收件人筛选来防止有害数据包-例如,它忽略转向转向超过当前值的5%。



尽管如此,安全研究人员还是设法获得了对CAN的远程访问:首先,在很短的距离内-通过连接到同一总线的Bluetooth模块中的漏洞进行了访问;并随后通过Sprint的蜂窝网络,来自多家美国制造商的SUV通过该网络接收交通数据。证明从几英里远的地方截获吉普切诺基控制权的研究人员从国防高级研究计划局(DARPA)获得了80,000美元的奖励。从那时起,许多汽车制造商宣布了自己的赏金计划,承诺为发现的每个漏洞支付1,500美元或更多的费用。因此,对CAN总线上的流量进行逆向工程不仅可以为您的汽车增加新的可能性,而且可以显着补充您的钱包。






All Articles