ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

汽车网络安全之——CAN安全分析方法总结

2021-03-17 16:32:07  阅读:181  来源: 互联网

标签:网络安全 总结 Reverse 模糊 分析方法 发送 ECU 数据包 ID


说明:本文为CSDN博主「闻者文也」的原创文章,原文链接为 https://blog.csdn.net/Pan_w_w/article/details/107135306

 

概述

目前,CAN作为汽车*主要的通信网络,对整车安全性极为重要,如何通过CAN线进行整车的安全分析,通过CAN线可以做哪些事情,本文通过总结国外的有关文献,给出一些建议。思路类比与计算机网络的渗透测试:

主机(ECU辨识)—>服务(CAN数据逆向)—>漏洞(Fuzzing)

DoS

 

通过CAN辨识ECU

 

主机系统的辨识依赖于指纹库,通过CAN数据指纹,辨识ECU

Physical-Fingerprinting of Electronic Control Unit (ECU) Based on Machine Learning Algorithm for In-Vehicle Network Communication Protocol “CAN-BUS”

 

CAN数据逆向

CAN的逆向一般分为三步:

1. 将物理事件链接到消息CAN ID

2. 识别CAN信号位的位置和长度

3. 识别信号的比例和偏移量

逆向方法:

CAN消息位辨识

READ: Reverse Engineering of Automotive Data Frames

Online Reverse Engineering of CAN Data Jens

 

通过观察方法破解数据包

在汽车作出动作指令后, CAN ID 的报文是如何进行变化的, DBC 会把变化的部分标成红色。通过观察哪一个 CAN ID 在汽车发出指令后发生变化(这种变化通常只在瞬间),来确定此项车身控制指令对应的是哪一个 CAN ID。(可以得到*终的信号 ->可以逆向出DBC)

与C. Electronics, “Reverse engineering can bus messages with wireshark,”

2010.提到的方法类似,都是通过比较CAN消息的数据字段与物理事件出发的关系

J. Staggs, “How to hack your mini cooper: reverse engineering can messages on passenger automobiles,” Institute for Information Security,2013.

Reverse engineering can bus messages with wireshark

 

通过模糊测试的方法破解数据包

编写 Fuzz 脚本,制定 Fuzz 的规则。例如, CAN 数据包的数据位不变, CAN ID不断的自增。不断的往 CAN 总线当中发送 Fuzz 数据包观察汽车的响应变化, 通过将汽车的变化与当前发送的数据包相对应,可以找出控制汽车的 CAN 报文指令, 利于对汽车 CAN 总线数据包进行逆向。当找到控制指令的 CAN ID,再对其数据位进行 Fuzz,通过对数据位的变化输入,找到控制命令是在哪个位上。(可以逆向出DBC)

Fuzz Testing for Automotive Cyber-security

 

通过函数图像的方法破解数据包

画出所有ID的各个数据位上的值与时间的关系图,通过直观的方式来判断数据包中信号的信息。

 

基于统计的方法

利用OBD的PID 得到真实数据,通过比较(部分数据) 差值/DTW距离等等特征进行匹配

Online Reverse Engineering of CAN Data Jens

 

基于机器学习的方法

Automatic Reverse Engineering of CAN Bus Data Using Machine Learning Techniques

 

自动化逆向工具

Automated Reverse Engineering and Attack for CAN using OBD-II

https://github.com/comma1/ACA

 

Fuzzing

工具:

 

 

 

测试方法:对报文 ID 和Data以及长度进行模糊,生成大量模糊随机数据输入DUT中,监测系统响应。模糊方法同通用模糊器分为基于变异的模糊与基于生成的模糊方法。

关键技术:模糊数据的生成方法(模糊器设计)

1. 按位依次变化(某位bit为1,其余全为0)(较工程的方法)

2. 基于遗传算法的模糊器

3. 基于深度学习的模糊器

 

结果分析:

1.测试执行时间(模糊器优化指标)

2.观察系统响应,分析系统漏洞(模糊效果)

参考:

Fuzz Testing for Automotive Cyber-Security

Implementation of the CAN-FD Protocol in the Fuzzing Tool beSTORM

A Method for Constructing Automotive Cybersecurity Tests, a CAN Fuzz Testing Example

 

DoS

CAN ID被用于总线仲裁,当同时有多个数据包需要发送时,它们的优先级就由仲裁ID 来决定, ID 值越小优先级就越高。比如,一个 ECU 试图发送 CAN ID 0010,而另一个要发送 0011,则第一个 ECU 就能获得总线的使用权并发送该数据包, 不会受其他数据包的影响,并且发送 CAN ID 为 0011 的数据包的 ECU 必须等待,直到下一个数据包发送时一起参与仲裁。

基于优先级仲裁机制的Dos攻击,*简单方法是发送 CAN ID 为 0000 的数据包,这样的数据包将被视为*高优先级,其他所有 ECU 的所有数据包都必须等待这些数据包传输完毕之后才能发送。如果一直不停止发送这样的数据包,则其他数据包将不得发送,对外的表现就是拒绝服务。

 

结果分析:

1. 流量和负载率(丢帧)

2. 系统响应(ECU活性辨识)

 

参考:

Evaluation of DoS Attacks on Vehicle CAN Bus System

Protocol-Compliant DoS Attacks on CAN: Demonstration and Mitigation

标签:网络安全,总结,Reverse,模糊,分析方法,发送,ECU,数据包,ID
来源: https://www.cnblogs.com/Quincey-Lee/p/14550160.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有