车联网安全入门之从CAN模拟环境搭建到重放攻击
2023-03-01 13:46:31   来源: ShadowCui Tide安全团队   评论: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 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

  启动模拟器

  # 设置vcan(虚拟CAN)接口

  sudo modprobe can

  sudo modprobe vcan

  sudo ip link add dev vcan0 type vcan

  sudo ip link set up vcan0

  

  # 打开仪表盘模拟器

  ./icsim vcan0

  # 打开仪表盘控制器

  ./controls vcan0

  仪表盘控制器,操作说明

  

  抓取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种可能的开关门组合

  

  尝试字符控制的不同车门  
 

  此时的值为8,结果为

  

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

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

  左转向:188#01000000

  右转向:188#02000000

  参考链接:

  https://www.freebuf.com/articles/network/281831.html

  https://article.itxueyuan.com/ZoxRvk

 

相关热词搜索:车联网安全

上一篇:漫谈车联网产业发展之“他山之石”
下一篇:从“示范应用”转向“商业化”,江苏无锡正走出一条车联网发展新路

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
分享到: 收藏