一文带你走进车联网安全

免责声明:该⽂章仅供安全学习和技术分享,请勿将该⽂章和⽂章中提到的技术⽤于违法活动上,切勿在⾮授权状态
下对其他站点进⾏测试,如产⽣任何后果皆由读者本⼈承担,与作者无关!如有侵权,联系删除,转载请注明出处,感谢!

0x00 什么是车联网安全

车联网安全主要指的是车联网系统的安全,该系统主要分为四个部分,主机、车载T-BOX、手机APP及后台系统。

主机主要用于车内的影音娱乐,以及车辆信息显示也就是IVI或者MCU;

车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控制。

当用户通过手机端APP发送控制命令后,TSP后台会发出监控请求指令到车载T-BOX,车辆在获取到控制命令后,通过CAN总线发送控制报文并实现对车辆的控制,最后反馈操作结果到用户的手机APP上,仅这个功能可以帮助用户远程启动车辆、打开空调、调整座椅至合适位置等。

OTA英文全称是Over-The-Air,是指通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术

其实车联网系统中还有其他很多小点,例如MQTT、TPMS等,但是实际攻击场景较少,不作为大类描述。这里简单介绍几例:

MQTT(消息队列遥测传输)是ISO/IEC PRF 20922标准下制定的消息协议。
TPMS(胎压管理系统)曾经有人利用该系统向汽车发动攻击,通过远程手段使TPMS发出告警,迫使驾驶员停车。
TPM(可信平台模块)它负责保护车辆的外部接口,例如在车载信息娱乐系统(IVI)或远程信息处理单元的接口。它检查数字数据发送方和接收方的身份,对数据加密和解密,同时交互中安全功能所需的加密密钥也存储在TPM中。
HSM(硬件安全模块)用于车辆安全信息如密钥的生产、存储以及处理,隔离外部恶意软件的攻击。密钥以密文形式存储,可用于构建、验证可靠的软件,以保护在软件加载并初次访问之前的安全启动。

车联网系统中还有一个比较重要且独特的传输方式——CAN总线,他也是一个非常容易受到攻击的点。
简单的说,CAN可以让车内不同的电子模块互相通信,共享数据。CAN提案的主要动机是它允许多个ECU仅使用一根电缆进行通信。大大方便了每个ECU之间的通信。

在这里插入图片描述
CAN总线分为两条,分别为CAN HIGH和CAN LOW。
CAN HIGH负责对速度有要求的ECU,例如安全气囊,发动机控制单元等。
CAN LOW负责提升驾驶员状态的ECU,例如空调、车窗等。

0x01 攻击面

攻击面分为三大类:接触式,近程,远程。
接触式通常是对车辆的各个硬件以及接口的攻击,包括HMI(人机交互接口),USB,OBD-II(can总线的外置接口)等等。

近程代表着与车辆有距离限制,代表攻击点有WIFI、蓝牙、NFC、无线电等。

远程即代表可以远程攻击的点,如4G,GSM等。

0x02 常见攻击方式

app:
app的攻击通常是对一些带有控制功能的app,例如远程启动,车辆召唤等等。通过抓包分析,关注业务流程以及token令牌等方式达到目的。其次还可以对app进行逆向分析,找到api接口并尝试分析功能和作用,进行构造。

车机:
可以通过链接wifi或插入双头USB的方式连接进车机,判断车机系统,这里可以参考内网渗透的过程,车机多为linux系统。

硬件提取:
有些芯片存在默认口令的问题,可以通过拆解硬件,找到USB口并分析走向,接上飞线或者HSD接口进入到芯片系统里面去。

T-BOX:
T-BOX通常进行活体测试,通过本地getshell的方式对内部服务进行研究,通常从启动开始分析,判断哪些服务为核心服务,做了什么事情等。或者通过编译好的arm的tcpdump进t-box,捕捉socket流量并进行逆向拆包分析。

CAN:
CAN通常需要通过OBD-II接口接入,也就是需要一根OBD2USB转接线,通过对CAN报文的嗅探,更改接口与仲裁ID发送恶意构造的报文来执行命令。

蓝牙:
测试蓝牙的方式有很多,可以使用Bluesnarfing、Bluebugging等工具对蓝牙进行测试。

数字钥匙:
数字钥匙的攻击方式取决于它的运行机制,早先存在着滚码遍历的攻击方式,但后来厂商基本上都使用了回码机制,该攻击方式已经不常见了。其他的还有重放攻击,中继攻击,生物特征对抗等等。

Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言的开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目类型以及JRE版本等信息。 3. 创建Java类 一旦你创建了一个Java项目,你就可以创建一个Java类。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入类名和选择要继承的类(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java类,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java类、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值