本文会介绍一种基于Python用于从OBDII端口发送和接收CAN消息的设备,还可以从行驶中的车辆获取实时GPS坐标。所有的CAN和GPS数据都有可能被泄漏到云中,因此可以通过Web浏览器对汽车进行远程监控。这篇文章是关于我在使用开源软件和硬件(python-can / Flask和 BeagleBone®Blue) 进行汽车黑客攻击方面的经验。
https://beagleboard.org/blue
ChupaCarBrah间谍装置
我创建了一个单独的 分步教程,介绍如何构建 本文将使用 的间谍设备 aka ChupaCarBrah。我还共享了在设备上运行的python-can客户端的所有代码;以及在AWS上运行的服务器端Flask应用程序。间谍设备的第一个版本能够跟踪车辆位置并监视CAN数据(例如,发动机RPM,空气温度,VIN等)。所有数据都通过添加到Beaglebone的蜂窝LTE调制解调器进行过滤,JSON格式用于将数据发送到AWS上的Flask应用程序。随着车辆的行驶,云中的JSON数据会实时更新,从而使你可以完全远程监控车辆,就可以在家中对汽车进行攻击了。
https://youtu.be/7DfXmD9MddE
ChupaCarBrah上路了
作为本文的后续,我计划再发布两篇文章以扩展当前的ChupaCarBrah功能:
第2部分— ECU CAN消息:将显示如何篡改直接连接到ECU的CAN总线(因为OBDII通常仅提供诊断数据)。我将集中精力对CAN消息进行逆向,以将精心制作的命令发送到ECU。出于安全原因,我计划仅分析无危害的命令,例如开锁门,打开电动窗等;
第3部分-车辆RCE:我打算扩展ChupaCarBrah应用程序,以更加用户友好的格式显示正在运行中被窃取的所有数据,例如在地图上绘制的GPS数据。具有实时数据的GUI还将显示来自已解码CAN消息的当前车辆信息(速度,RPM等)。我还计划通过POST端点扩展AWS服务,这将允许通过蜂窝网络创建反向HTTP会话,从而将CAN命令提交给车辆。
0x01 威胁建模
通常,汽车制造商采用的威胁模型是通过在CAN总线和外部网络之间建立隔离来减少车辆的攻击面。分隔可以是物理的(空气间隙)或逻辑的(CAN网关/防火墙)。当确实需要连接CAN和外部网络(例如 V2V 或 IVI )时,网关通过仅沿一种方式转发CAN消息来提供逻辑隔离。
用ChupaCarBrah建模
采用该威胁模型的安全级别将直接取决于,对CAN总线进行物理访问的难度和利用外部连接上的漏洞进入CAN总线的难度。本文的目的是破解它,并以实用的方式展示攻击者可以物理访问车辆并安装ChupaCarbrah时可以采取的措施。间谍设备在隔离的CAN总线和互联网之间建立了桥梁,破坏了制造商的威胁模型。
但是,要使用ChupaCarBrah进行完整的测试,你仍然需要将我在此处显示的内容与其他攻击技术(例如 按键欺骗) 结合起来,才能进入车辆内部。因此,我认为本文暴露的安全风险较低。但是我仍然想让制造商意识到制造商考虑 CAN消息加密解决方案 的重要性,并提醒车主注意无法完全控制车辆的物理通道的情况(例如,代客泊车,洗车,忘记锁门等)。
https://youtu.be/bo04J5m1si0
加python学习qq群:775690737 送python零基础入门学习资料+99个源码
ChupaCarBrah安装:不到60秒
一旦进入车内,攻击者就可以快速将ChupaCarBrah连接到OBDII端口,该设备足够小,可以隐藏在仪表板中。所使用的OBDII分离器电缆将在车辆原始连接器的前面提供一个额外的OBDII母连接器。如果攻击者非常狡猾,则可以使用胶水将分离器永久固定在OBDII端口上。这将使受害者最终可以将其他OBDII设备连接到车辆,而不必希望注意到红色的ChupaCarBrah设备。
0x02 汽车黑客概述
有研究者已经很好地分析了使用CAN( 控制器局域网 )进行汽车黑客攻击。如果你想更好地了解汽车供应商如何使用CAN总线来控制你的引擎和其他车辆部件,我建议你看一下