基于扩展帧UDS的安全测试工具

汽车安全 11个月前 admin
119 0 0

前一段时间整车测试中发现部分车型发送诊断请求没有响应。通过使用诊断仪对车辆诊断请求,发现该车型使用扩展帧进行uds通信。


引出一个问题,基于扩展帧的uds通信是怎样实现的,和标准帧有什么区别?


经过一顿翻标准,明白can通信的也是具有OSI 7层模型的定义

基于扩展帧UDS的安全测试工具


can的网络层协议ISO-15765-4中,对扩展帧的诊断ID做了定义。18DB33F1是功能寻址

18DAXXF1为测试设备发送给ECU的ID

18DAF1XX为ECU的响应ID

基于扩展帧UDS的安全测试工具

此处xx范围是00-ff,其他和标准帧一致

由此我们可以通过遍历18DA00F118DAFFF1的范围来发现支持的ecu。

然后探测服务、子服务,一步步展开测试。



这时已经搞明白了基于扩展帧的uds具体情况,接下来就想能不能实现测试的工具化,之前讲到caringcaribou(以下简称cc)在can总线测试中是一个很好用的工具,打算在此基础上二次开发,从而实现基于扩展帧UDS的安全测试工具。


首先,把cc的源码看了一遍,发现cc很多自动化的测试功能,ecu探测,种子爆破,fuzz等,具备扩展性,modules路径下创建自己的python代码就可以将自己内容添加到工具中去。符合预期要求,继续实现。

基于扩展帧UDS的安全测试工具


通过查找工具中的对应uds模块,发现在指定初始id后可以进行扩展帧的诊断探测,但是只能像标准帧那样每次+1遍历,无法满足要求,于是使用变量插入id内。

基于扩展帧UDS的安全测试工具

uds中的所有模块都是基于uds+discovery这个函数进行,只要修改这个函数就可以满足对扩展帧探测的要求。



基于扩展帧UDS的安全测试工具


增加参数“E”使用扩展帧诊断探测。

基于扩展帧UDS的安全测试工具

相同方法加入参数“E”,在uds auto 可以进行自动化测试。

后续对其它可能需要添加扩展帧的模块,uds fuzzfuzz最可能需要加入。

uds-fuzz为种子爆破需要指定发送和响应ID

fuzz可以使用mutate 7f. aabbccddeeffgg指定模糊测试位。

目前可以使用


cc.py uds discovery -Ecc.py uds auto -E 

进行UDS扩展帧的ecu探测和自动扫描。

基于扩展帧UDS的安全测试工具

最后附上工具地址:https://github.com/1in-oos/ccplus

请多多指正。

基于扩展帧UDS的安全测试工具

基于扩展帧UDS的安全测试工具


原文始发于微信公众号(安全脉脉):基于扩展帧UDS的安全测试工具

版权声明:admin 发表于 2023年12月18日 下午5:38。
转载请注明:基于扩展帧UDS的安全测试工具 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...