freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

汽车破解笔记系列:反向推断哪些CAN ID属于同一个ECU?
2020-07-31 07:05:28

前言

汽车传感器的数目也就几十个到100+个。但有些车辆的总线ID数目高达300+。就是说,ECU传感器本身有多个ID来实施不同功能。ECU在工作状态中可以发出不同ID的数据包。那么当这些传感器汇总在一辆车里让我们分析的时候,面对如此多的数据包,如何反向推断哪些ID属于同一个ECU?这就是今天总线破解笔记介绍的内容。

依然如同之前我们的实验方式,使用的软件和工具都是自己研发的。 这个实验要用到的工具包括:总线采集软件,ECU模块扫描软件,云端log service分析平台,外加ECU测试bench和连接工具。

实验目的

收集ECU测试bench数据,判断有几个ECU? 每个ECU的CAN包ID列表。

实验方法

实际上这个实验非常简单:用我们的ECU模块扫描工具, 不需要做任何硬件上的拆解,直接进行扫描,几分钟就可以得出结果。

很明显结果包括两组,即两个ECU,每组ID跃然纸上。然而,细看一下,有一个非常有趣的地方,导致我们花更多的时间来进行验证排查。为什么0x440和0x442这两个ID分在不同的组中?于是又进行了第2次扫描,扫描结果依然是一样的。

结果验证排查

为了确认模块扫描结果的正确性,我们用VT-CANBusLogger软件对该ECU bench进行了流量采集,并进行了 统计分析。

对统计结果进行标注后(绿色和红色各自代表不同的分组),0x440和0x442两个ID无论是从发包间隔还是频率都极其相似,再加上他们的ID数值只相差2。简直就是一对双胞胎!为什么他们却天各一方,分在两个不同的家庭(组),难道是我们的结果出错了吗!?

上粗暴但最有效的方法:接卸ECU bench,只留一个ECU!我们只收集剩下这个ECU的流量。流量数据里所有的ID都只和这个ECU相关。流量数据如下:

这些CAN ID和上面标注的分组ID完全一致,说明我们的ECU模块扫描软件的结果是正确的:0x440和0x442这个两个ID就是属于两个不同ECU的!

更上一层楼

再进一步,把ECU  bench流量上传到云端汽车数据分析平台。画出这两个ID的时间分布图。可以看到这两个ID的包前后错落有致,报文里面的一个字节分别有0x42和0x40,难道是巧合?

对数据进行放大,明显看到这两个ID发包的间隔是一样。这就是很好地解释为什么它们的统计特征也是完全一致的,但却不属于一个ECU。基于它们的频率是流量里最高的,个人认为,是按照周期发布的广播包来通知自身的存在感。

结论

这个实验一方面验证了我们的模块扫描软件的正确性;另外一个方面是告诉我们:基于统计特性的ID分类有时不靠谱。统计特征的完美性往往会欺骗我们。应该采取多种不同维度的工具叠加验证,提高准确性。

本文作者:, 转载请注明来自FreeBuf.COM

# 渗透测试 # 汽车黑客 # 汽车安全 # 汽车信息安全
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦
收入专辑