做了简单的了解之后发现关于CAN、ECU的安全测试工具比较多,所以简单做了一个分类如下所示:

分析

对于CAN、ECU执行安全检测主要用到的工具,功能主要分为:

  1. 建立数据通道 - 常用的设备为ELM327、USB2CAN、USBtin等。
  2. 捕获数据 - O2OO
  3. 分析数据 - Wireshark、Intrepid Tools、CANToolz等
  4. 渗透测试 - metasploit、CANtact、CANSPY等

现有的常用的工具可能包含一个或多个上述功能。考虑成本和使用现有以下推荐:

  1. 采用ELM327作为连接,进行CAN总线数据分析可以使用wireshark,进行CAN总线安全测试可以使用metasploit框架的硬件桥接
  2. 使用USB2CAN,可以采用Linux平台的socketCAN库来进行相关的分析以及渗透操作。
  3. 最后可以采用个人或者团队开发的价格合适的相关硬件可以直接通过ODB-II或者蓝牙连接进行分析。

一般来说建立数据通道一般是要采购相应的硬件,因为汽车与我们常用的终端体系协议存在差别,至少需要一个接口的适配器,协议解析可以通过软件或者库来解决。
捕获数据和分析数据一般来说,会集成到同一个软件中来实现。当数据通道建立之后可以通过监听相应的设备或者端口既可捕获相应的数据。数据分析可以使用常用的协议分析软件也有根据CAN协议专门实现的分析软件。
渗透测试工具与数据分析相似,有metasploit常用的主机渗透测试框架通过扩展来实现CAN网络的渗透测试,也有团队专门开发的软件。
如果要对一辆汽车进行安全检测,可以通过一条USB-CAN转接线转接到自己的电脑进行检测,或者直接通过信号收发器,通过WIFI或者蓝牙与车辆建立无线连接进行检测。通过转接线接入汽车网络之后,直接就可以接入到的CAN网络,

总结

现在有很多针对CAN、ECU的安全测试工具,甚至可以使用我们常用的渗透框架(metasploit)或者协议分析软件(wireshark)对车内网络进行安全测试,仅仅需要一根接口转接线或者是无线/蓝牙收发器。对于汽车安全来说,关于汽车安全加固的产品无疑更少而且难以让各个智能终端制造商预装或者加装。

汽车安全问题,早就已经被技术人员所关注,有些安全测试工具已经发布数年甚至更久,但是汽车安全这个问题还未真正的走到公众的面前,引起公众的足够重视。针对这个问题可以一方面加汽车安全加固的软件硬件的开发,另一方面进行汽车安全的科普。

下面是整理的关于CAN、ECU的测试工具。

硬件

开发工具

  • Arduino - Arduino开发板有大量的CAN BUS拓展板可以用来进行CAN相关的测试和分析。
  • Red Pitaya - Red Pitaya有LabView、Matlab、Jupyter接口,可以通过这些接口开发自己的工具和应用,也支持Arduino拓展板。可以跨平台提供服务,WIN、MAC、Linux。替代昂贵的像示波器、信号发生器、图谱分析仪测量工具。

接入工具

接入工具主要是通过不同的设备将PC或者移动终端接入到车内网络。

无线

  • ELM327 - ELM327是ELM制造的可编程微控制器,用来翻译OBD接口数据。ELM327有USB ELM327,WIFI ELM327,BLUETOOTH ELM327可以通过该部件将车辆与PC或移动终端连接起来。
  • Veepeak Bluetooth - 手机端的蓝牙连接器软件,可以通过该APP连接到车载蓝牙。
  • Carloop - carloop是一个开源的开发工具包,可以使汽车通过3G、WIFI或者蓝牙连接到云端。可以兼容socketCAN和can-utils,不需要OBD-II串行接口连接。

有线

  • USB2CAN - 价格低廉的USB-CAN连接器,可以使用通过该硬件可以使用Linux获取CAN数据。
  • USBtin - USBtin是一个简单的USB-CAN转接接口,它可以实现监控和转发CAN总线消息的功能,实现了USB CDC的类,并且在主机上创建了一个组件。
  • CANBadger - CANBadger是一个汽车网络的逆向和测试工具,包括软件和硬件部分。主接口板是一个LPC1768/LPC1769处理器挂载了定制的PCB,PCB上有2个CAN接口,SD卡,一个LED,一些GPIO针脚,供电给外围设备和网线口。
  • OpenXC - OpenXC是开源硬件和软件的结合,它可以让你使用自定义程序和可插入模块拓展你的车辆。使用标准的工具想开发人员提供来自车辆的数据。是一个应用程序接口,通过安装一个小的硬件模块来读取和转换来自汽车内部网络的数据。大多数android应用程序都可以是使用openxc库来访问者这些数据,这些数据包括各种汽车的车载诊断数据。

混合接入

  • PandwaRF - PandwaRF是一种射频分析工具,由智能手机和电脑控制,具有低于1GHz的无线收发器,可以非常容易的捕获、显示和传输射频数据。可以与手机通过USB或者BLE连接,通过USB与Linux连接。 可以不或任意的300-928 MHz频带ASK/OOK/MSK/2-FSK/GFSK调制的信号。
  • Freematics OBD-II Telematics Kit - 基于Arduino的开发工具包,可以获取展示和记录OBD-II、GPS、MEMS传感器的数据。把收集到的数据通过USB传到电脑上去,通过蓝牙传到手机上去。
  • CANBus Triple - CAN开发平台,可以用串口API、桌面或者移动应用来监控和收发CAN网络数据帧,看可以编写Arduino平台或者开源硬件的程序来运行,也可以通过蓝牙连接到物联网,使用应用或者给智能设备发送网络数据。

测试工具

  • CANtact - 开源的汽车测试工具,使用标准OBD-II口接入CAN总线网络,被设计来对汽车进行渗透测试。配合CANtact-APP使用,有跨平台的软件包。
  • CANSPY - CAN设备审计平台,可以用来自动或者交互地阻止、转发和编辑CAN帧。
  • GoodThopter12 - 由知名硬件黑客开发,用来对汽车网络探索,目前仅支持CAN网络。
  • Intrepid Tools - 为逆向CAN或者其他汽车通信协议特别设计的工具,价格高昂但是功能多样。

软件及相关库

软件

监控分析

  • Wireshark - WireShark可以用来对CAN数据进行逆向。
  • Intrepid Tools - 为逆向CAN或者其他汽车通信协议特别设计的工具,价格高昂但是功能多样。
  • CANToolz - CANToolz是一个用来分析CAN网络和设备的框架,基于多个模块可以自由的搭配。
  • OpenXC - 软件和硬件都有,现在OpenXC可以通过一些库运行在android和Python中。
  • Kayak - Kayak是一个Java应用程序可以读CAN总线进行分析和监控。
  • CANalyzat0r - 汽车专有协议安全分析的工具包。
  • savvycan - savvycan是一个基于C++的跨平台QT项目,是一个可以对CAN总线进行数据捕获和逆向分析的工具。可以兼容任何使用socketCAN的设备以及Macchina M2和Teensy 3.x板,可以捕获或者发送多个总线的消息,也可以捕获总线上设备。
  • BUSMASTER - BusMaster是一个开源的软件工具,用于模拟、分析和测试数据总线系统,如CAN、LIN、FlexRay

渗透测试

  • metasploit - 流行的渗透测试框架,现在支持硬件桥接会话,将框架的功能扩展到socketCAN和SDR radios等硬件设备上。
  • talking-with-cars - CAN相关的脚本。

硬件发现

  • UDSim - UDSim是一个可以监控can总线并且自动发现新设备的图形化工具。
  • RomRaider - Subaru引擎控制单元的开源优化套件,允许查看和记录数据,也可以调整ECU。

其他

  • O2OO - 使用elm327将数据记录到sqlite数据库以进行绘图。它还支持读取GPS数据。可以将它连接到你的车上,并使用谷歌地图kml数据绘制行驶路径地图。

相关库

C

  • SocketCAN Utils - Linux上的网络层CAN通信协议通信库
  • vircar - 一个基于SocketCAN的虚拟通信汽车工具。
  • dbcc - DCBC是一种将DBC文件转换成C代码的程序,它可以序列化和反序列化CAN消息。用来自车辆的现有DBC文件,允许您将它们转换成C代码,以提取CAN消息和CAN环境的属性。

Python

  • pyvit - pyvit是一个与python中的cars交互的工具包。它旨在实现汽车系统中使用的通用硬件接口和协议。
  • Caring Caribou - 一种友好的can总线汽车安全检测工具
  • c0f - 可以用来分析can总线流量和指纹
  • Python-CAN - can包为python开发人员提供控制器局域网支持;为不同的硬件设备提供通用抽象,以及一套用于在can总线上发送和接收消息的实用程序。
  • Python-OBD - 用于处理来自obd-ii车辆端口的实时传感器数据的python模块。适用于ELM327 OBD-II适配器,适合树莓派。
  • CanCat - C++写的Python接口,用于与现场CAN数据交互。

声明

上述工具参考awesome-vehicle-security和其他技术博客及相关网站整理。