×

联网 搭建 入门 攻击 模拟

车联网安全入门之从CAN模拟环境搭建到重放攻击

jnlyseo998998 jnlyseo998998 发表于2023-03-27 01:35:03 浏览23 评论0

抢沙发发表评论

前言

车联网安全最近几年成为了各大汽车厂商以及安全厂商的关注热点,但是作为一个穷苦的无车一族想要入门车联网安全该怎么办?那当然是靠模拟器了

本文将介绍如何通过Ubuntu模拟车载CAN总线的收发包来进行操作学习。话不多说,芜湖,起飞🛫️~

CAN总线介绍 什么是CAN总线

CAN总线又称为控制器局域网是Controller Area Network的缩写。CAn总线是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一,在1991年呗大规模应用于汽车,从那儿以后,CAN总线成为汽车的标配。

CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵笨重的配电线束。该协议的健壮性使其用途延伸到其他自动化和工业应用。简单来说就是用来控制车辆功能的通信协议,比如车门解锁、转向灯、刹车、油门等。

CAN总线特性

安全性:CAN是低级协议,不支持任何内在的安全功能。在标准的CAN中也没有加密,使得网络数据能被截取。在大多数应用中,应用程序需要部署自己的安全机制,例如认证传入命令或网络上某些设备的存在。若不执行适当的安全措施,其他人可能设法在总线上插入消息。尽管一些安全关键功能(如修改固件,编程键或控制防抱死制动)存在密码,但这些系统并未普遍实施,并且密钥对的数量有限。

通信机制:多主机,即每个节点都有接入总线的能力

寻址机制:消息区别,不设节点的地址,通过消息的标志符来区别消息。

帧类型:数据帧、远程帧、错误帧、超载帧、帧间隔

攻击方式:应用报文模糊攻击、DOS攻击测试、重放攻击

由于CAN总线上的数据包没有进行过任何的加密处理,因此这些数据包是能够被截取窃听。由于车载网络使用CAN协议进行通信,所以我们可以联想到车联功能也是通过CAN网络进行数据发送和交换。

攻击方式

CAN总线攻击方式包括应用报文模糊测试、DOS攻击测试、重放攻击等。

攻击实战

在接下来的文章里我们将通过模拟软件模拟真实的汽车,并对其进行重放攻击

实验环境

• Ubuntu16.04

• ICSim(仪表盘模拟器)

• Socketcand(CAN网络)

• Kayak(一款基于SocketCAN的CAN总线分析工具)

安装ICSim

安装依赖

# 安装依赖

sudo apt install libsdl2-dev libsdl2-image-dev can-utils maven autoconf -y

# 下载ICSim

git clone

# 编译安装

cdICSim/

sudo make

安装socketcand

# 下载socketcand

git clone

cdsocketcand

# 获取缺少的文件

wget

# 编译安装

autoconf

./configure

make clean

make

sudo make install

安装Kayak

# 下载

git clone

# 安装jdk

sudo apt-get install openjdk-8-jdk

# 安装

cdKayak

mvn clean package

启动模拟器

# 设置vcan(虚拟CAN)接口

sudo modprobe can

sudo modprobe vcan

sudo ip linkadd dev vcan0 typevcan

sudo ip linksetup vcan0

# 打开仪表盘模拟器

./icsim vcan0

# 打开仪表盘控制器

./controls vcan0

仪表盘控制器,操作说明

功能

控制按钮

转向

键盘左右

速度

键盘上下

开/关左前车门

右shift/左shit+A

开/关右前车门

右shift/左shit+B

开/关左后车门

右shift/左shit+X

开/关右后车门

右shift/左shit+Y

开启全部车门

左shift+右shift

关闭全部车门

右shift+左shift

抓取CAN数据包

# 使用candump抓包

candump vcan0 -l

由于CAN在不停进行通信,故抓取到的包将会非常大

尝试重放刚才抓取到的数据包

canplayer -I candump-2023-01-12_151749.log

可以看到左前侧车门被成功打开

通过二分法我们找到了左前侧开门的数据包,如图。

(1673507873.514241) vcan0 19B #00000E000000

其中的19B是设备标识符,在数据包中查找19B

grep 19B candump-2023-01-12_151749.log

通过分析和尝试我们可知

19B#00000E000000 为开启左前侧车门, 19B#00000F000000 为关闭所有车门

将其分解为二进制可得出16种可能的开关门组合

二进制

十六进制

0000

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

a

1011

b

1100

c

1101

d

1110

e

1111

f

尝试字符控制的不同车门

字符

车门

8

右后侧车门

4

左后侧车门

2

右前侧车门

1

左前侧车门

假设1是关门,0是开门

右后侧车门 左后侧车门 右前侧车门 左前侧车门

8 4 2 1

1 0 0 0

此时的值为8,结果为

至此我们就可以操控每个门的开关了。

按照同样的思路我们将转向的数据包找出来

左转向: 188#01000000

右转向: 188#02000000

参考链接:

往期推荐

敏感信息泄露

潮影在线免杀平台上线了

自动化渗透测试工具开发实践

【红蓝对抗】利用CS进行内网横向

一个Go版(更强大)的TideFinger

SRC资产导航监测平台Tsrc上线了

新潮信息-Tide安全团队2022年度总结

记一次实战攻防(打点-Edr-内网-横向-Vcenter)

E

N

D

知识星球产品及服务

星球分享方向:Web安全 | 红蓝对抗 | 移动安全 | 应急响应 | 工控安全 | 物联网安全 | 密码学 | 人工智能 | ctf 等方面的沟通及分享

星球知识wiki:红蓝对抗 | 漏洞武器库 | 远控免杀 | 移动安全 | 物联网安全 | 代码审计 | CTF | 工控安全 | 应急响应 | 人工智能 | 密码学 | CobaltStrike | 安全测试用例 | ......

星球网盘资料:安全法律法规 | 安全认证资料 | 代码审计 | 渗透安全工具 | 工控安全工具 | 移动安全工具 | 物联网安全 | 其它安全文库合辑 | ......

扫码加入一起学习吧~