鉴源实验室 | DoIP协议网络安全攻击
作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组
来源 | 鉴源实验室
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”
01
背 景
随着科技的迅猛发展,汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元(ECU),而且这个数字仍在上升[1]。在这场数字化革命中,诊断通信过程协议(Diagnostic communication over Internet Protocol,简称DoIP)崭露头角,成为汽车制造商和维修服务提供商之间进行远程诊断和维修的核心通信工具。DoIP协议的重要性在于它使汽车制造商能够通过互联网连接到汽车的电子控制单元(ECU),实时监测和远程维修车辆,为车主提供更加高效和方便的服务。然而,随着DoIP的普及,网络安全威胁也在日益增多。本文将探讨DoIP协议的基本原理,并研究可能的攻击方式,以及如何采取措施保护现代汽车免受潜在威胁。
02
DoIP协议
DoIP协议是一种关键的汽车诊断和通信协议,能够高效传输大量数据,提供快速响应,并支持远程诊断,其在ISO13400[2-5]标准中定义。这一标准不仅定义了DoIP协议本身,还涵盖了开放系统互连基本参考模型(OSI)的第一层到第四层,包括了Ethernet、IP及其他协议的使用细则。DoIP协议并不是一个完整的诊断协议,而是一种扩展传输协议。它负责诊断数据包的传输,而诊断服务仍由专门的诊断协议(如KWP2000协议和UDS协议)规定和说明。DoIP协议的存在为现代汽车系统的高级诊断和通信提供了强有力的支持,确保了兼容性和一致性,使其能够有效地在汽车领域中运行。

如下图2.2所示为DoIP系统车辆网络架构示意图,分为内部网络和外部网络。这两个部分之间通过两组线束进行信息交互。一组是用于数据传输的以太网线,另一组是用于激活诊断功能的激活线。一般来说,在工程师或者售后人员控制下的网络节点被称为外部测试设备(External Test Equipment),外部测试设备向车辆发送诊断请求,然后等待被诊断车辆的响应。但是在智能网联汽车丰富的使用场景中,诊断测试设备可能出现布置在车辆内部的情况,对车辆进行诊断,如OTA技术和远程诊断,在这些使用场景中,诊断测试设备会作为车辆节点或将此功能集成在其他节点中。ISO13400标准对DoIP系统中不同作用的节点进行了分类,这些分类包括:
1)DoIP实体(DoIP Entity):DoIP实体是实现DoIP协议的网络节点,例如DoIP节点或DoIP网关。
2)DoIP网关(DoIP Gateway):DoIP网关是一个网络节点,它实施DoIP协议,从而提供对其自身及其连接的车辆子网的ECU的访问。
3)DoIP节点(DoIP Node):DoIP节点是一个网络节点,该节点实施DoIP协议以提供对其自身的访问,但不将DoIP协议数据路由到车辆子网。
4)DoIP边缘节点(DoIP Edge Node):DoIP边缘节点是连接ISO 13400-3中定义的以太网激活线的节点。

DoIP(Diagnostic communication over Internet Protocol)协议崭露头角,作为一种以太网诊断软件架构的中间件,它不仅重新定义了车辆的诊断通信方式,还提供了一系列关键功能,以确保车辆系统的稳定性、安全性和可靠性:
1)车辆发现
车辆发现是DoIP协议的关键功能之一。它用于检测目标车辆中的ECU是否在线。诊断仪发送广播式的车辆发现报文,所有网络中的ECU都会响应并提供自身的身份信息。通过分析这些响应,诊断仪可以确定在线的ECU,并对其进行分类。
2)路由激活
DoIP协议中的“路由激活”与传统网关的“路由”不同,它指的是诊断仪与被诊断节点之间的报文传输。在与外部测试仪建立通信连接之后,必须发送路由激活请求。此请求需要DoIP节点验证,以确保合法性。这个过程还包括了DoIP节点对外部诊断仪的安全认证,其中ECU开发人员可以自定义安全认证算法,以阻止非法诊断仪对ECU的访问。
3)诊断仪在线监测
DoIP诊断要求预先建立与ECU的通信连接,即TCP socket。因为建立socket连接会占用内存资源,所以连接数量是有限的。因此,ECU在设计阶段会定义支持的并行连接的数量。如果并行连接达到上限,将无法建立新的诊断通信连接。为防止无效占用连接通道,设计了诊断仪在线监测机制。DoIP节点会定期向现有的连接通道发送在线监测请求,如果连接通道未收到诊断仪的响应,则将复位该连接,以待新的诊断仪接入。
4)节点信息
节点信息包含了节点的属性,例如支持的并行诊断仪连接数量、可接受的诊断报文长度以及当前节点的电源状态。这些信息在诊断通信前进行检查,以确保后续的诊断通信不受外部因素的干扰。
5)诊断通信
作为DoIP协议的核心功能,诊断通信负责诊断报文的传输。每个诊断报文包括:发送方的逻辑地址(SA)、接收方的逻辑地址(DA)以及诊断数据。在DoIP网络中,DA的作用类似于CAN总线网络中的CANID,用于寻址目标ECU以进行诊断,诊断过程如图2.3所示。

DoIP协议的五大功能共同促成了基于车载以太网的高速诊断服务,其允许更高速率的数据传输,从而提高了车辆诊断的效率。如图2.4所示为一个完整的DoIP会话流程图,其中涉及四个关键端口号:UDP_DISCOVERY(13400)、UDP_TEST_EQUPMENT(49152-65535)、TCP_DATA(13400)和动态分配(49152-65535)。诊断会话的建立经过以下步骤:
1)物理连接:诊断仪与车辆建立物理连接。
2)IP地址配置:配置IP地址,以确保诊断仪和车辆都能够正确地通信。配置的方法有两种,DHCP和Auto-configuration。当DHCP配置未成功时,会触发Auto-configuration。在DHCP配置流程中,通常由外部诊断仪扮演DHCP Server角色。
3)车辆发现:车辆发现是通过UDP进行数据传输的关键步骤。DoIP实体主动发送三次Vehicle announcement message,以宣告其存在。若未收到DoIP实体发送的Vehicle announcement message,诊断仪将主动发送Vehicle identification request请求,DoIP实体接收后会发送Vehicle identification response响应。
4)TCP连接:车辆识别后,诊断仪会发起TCP同步,并与DoIP实体建立TCP连接。
5)路由激活:TCP连接建立后,诊断仪发送Routing activation request,DoIP实体接收并响应Routing activation response,从而建立DoIP逻辑连接。
6)诊断服务传输:接下来,可以进行诊断服务的传输。诊断仪发送Diagnostic message request,DoIP实体接收并响应Diagnostic message response。DoIP message ACK表示DoIP层级的确认报文(0x8002、0x8003等)。

03
DoIP攻击
DoIP协议为汽车行业带来了巨大的好处,但它也引入了潜在的风险,包括中间人攻击、拒绝服务攻击、数据篡改等威胁,这些威胁可能导致数据泄露、车辆失控和用户隐私侵犯等严重后果。
中间人攻击是一种网络攻击,攻击者通过拦截无线网络通信或入侵车辆网络的中间设备等方式来截获DoIP通信,截获通信后通过伪装成合法的通信方来欺骗车辆或设备,在伪造通信的过程中,攻击者可以查看、修改、插入数据。在攻击过程中,攻击者可以通过访问车辆传输的敏感信息,如车辆位置,车主信息,车辆性能等数据,从而导致用户的数据泄漏;攻击者可以通过伪造、修改诊断数据,导致错误的诊断结果,从而使维修人员采取不必要的维修操作;攻击者通过执行一些恶意的维修操作,如禁用车辆的部分功能或危害车辆的性能,从而威胁驾驶员的人身财产安全。中间人攻击是DoIP协议所面临的关键威胁之一,因此必须采取适当的安全措施,以防止这种类型的攻击并保护车辆数据和通信的安全。
针对中间人攻击可以采用以下防范措施:
1)数据加密:使用加密算法保护DoIP通信,以确保数据的机密性和完整性。
2)身份验证:双方的身份验证是防范中间人攻击的关键,使用数字证书和身份验证来保证通信方的合法性。
3)网络监控:实施网络监控和入侵检测系统,以及时检测可疑活动和中间人攻击的迹象。
拒绝服务攻击旨在使目标系统、网络或服务无法正常运作,从而导致服务不可用。在DoIP协议的应用场景中,攻击者通过DoIP通信流量防洪、恶意DoIP消息注入、阻塞DoIP会话等多种攻击手段来引发拒绝服务攻击,从而严重干扰DoIP通信和车辆维修等操作,从而导致车辆无法进行远程诊断或维修,严重的话会引发系统崩溃,从而对人身财产安全造成威胁。因此必须采取有效的防范措施,以确保系统的可用性和稳定性。
针对拒绝服务攻击可以采用以下防范措施:
1)流量过滤:使用流量过滤和防火墙技术,识别和过滤出现在DoIP通信中的恶意流量。
2)负载均衡:采用负载均衡技术,分散流量负载,减轻单一点的压力,提高系统的弹性。
3)引入反向代理服务器:作为DoIP通信的中间层,处理和缓解攻击。
4)容灾计划:建立容灾计划,以便在遭受拒绝服务攻击时迅速恢复服务。
数据篡改攻击则是通过试图在传输过程中修改、插入或删除数据,以操纵信息,导致错误的诊断结果或损害车辆的功能,在DoIP协议的应用场景中,攻击者通过中间人攻击、嗅探网络流量或其他方式实现拦截DoIP通信中的数据包,以获得访问数据的机会。一旦获得数据,攻击者会修改、插入或删除其中的信息, 然后重新传输已篡改的数据,使其看起来像是合法的数据,车辆制造商或维修服务提供商接收到篡改的数据后,可能依赖于这些数据来进行诊断和维修操作。由于数据已被篡改,可能会导致错误的诊断结果和错误的维修操作,影响车辆功能和安全性。
针对数据篡改攻击可以采用以下防范措施:
1)数据完整性验证:使用数据完整性检查技术,确保数据在传输过程中没有被篡改。
2)加密数据传输:采用强大的数据加密措施,以保护数据的机密性和完整性,使攻击者无法修改数据。
3)数字签名:使用数字签名验证数据的真实性,确保数据未经篡改。
4)访问控制:实施访问控制措施,限制对车辆数据的访问,并确保只有授权用户才能对数据进行修改。
参考文献:
[1] Staron M. Automotive software architectures[M]. Cham, Switzerland: Springer, 2021.
[2] ISO. 2011. ISO 13400–1:2011, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 1: General Information and Use Case Definition. https://www.iso.org/obp/ui/#iso:std:iso:13400:-1:en
[3] ISO. 2016. ISO 13400–3:2016, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 3: Wired Vehicle Interface Based On IEEE 802.3. https://www.iso.org/obp/ui/#iso:std:iso:13400:-3:ed-2:v1:en
[4] ISO. 2016. ISO 13400–4:2016, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 4: Ethernet-Based High-Speed Data Link Connector. https://www.iso.org/obp/ui/#iso:std:iso:13400:-4:ed-1:v1:en
[5] ISO. 2019. ISO 13400–2:2019, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 2: Transport Protocol and Network Layer Services. https://www.iso.org/obp/ui/#iso:std:iso:13400:-2:ed-2:v1:en
相关文章:

鉴源实验室 | DoIP协议网络安全攻击
作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着科技的迅猛发展,汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元&#x…...

腾讯云服务器新用户购买优惠多少钱?腾讯云新用户购买优惠
对于新用户来说,腾讯云服务器更是提供了一系列的优惠活动,让你在购买时享受到更多的优惠。那么,腾讯云服务器新用户购买优惠多少钱呢?接下来,让我们一起来了解一下。 腾讯云双十一领9999代金券 https://1111.mian100.…...

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 平常我们功能测试…...

jbase实现通用码表
没有通用码表的体系是不完美的,当年我用C#能实现的通用码表,现在在java一样的实现了,通用码表对提高开发效率和降低开发成本的作用巨大,开发可以专注写业务,而不必被太多的维护界面束缚。进而体现在产品竞争力上面&…...

工业镜头中的远心镜头与普通镜头的光路
普通镜头: 主光线与镜头光轴有角度,工件上下移动时,像的大小有变化。 FOV>镜头前端直径。 物方远心镜头: 物方主光线平行于光轴,物距发生改变时,像高不会发生改变,测得的物体尺寸大…...

【Qt之QWizardPage】使用
介绍 QWizardPage类是向导页面的基类。 QWizard表示一个向导。每个页面都是一个QWizardPage。当创建自己的向导时,可以直接使用QWizardPage,也可以子类化它以获得更多控制。 页面具有以下属性,由QWizard呈现:a title,…...

自动化测试,5个技巧轻松搞定
想要在质量保证团队中赢得核心?当你组建你的网络应用时要记住这些技巧,可以变得更容易分析并快速创建更多准确可重复的自动化测试。 1.歧义是敌人 尽可能使你的代码具体化。当然,你已经遵循了W3C标准,对吗?以下有三件…...

EasyWeChat调用企业微信接口获取客户群数据
use EasyWeChat\Factory; use fast\Http;$config [corp_id > Config::get(site.corp_id),agent_id > Config::get(site.agend_id), // 如果有 agend_id 则填写secret > Config::get(site.agent_secret),// 指定 API 调用返回结果的类型:array(default)…...

sql 左联 右联
...

k8s中的端口hostPort、port、nodePort、targetPort
hostPort:apiVersion: v1 kind: Pod metadata:name: tomcat spec:containers:- name: tomcatimage: tomcat:8.5ports:- hostPort: 8081containerPort: 8080protocol: TCPhostPort 类似docker -p 参数做的端口映射,将容器内端口映射到宿主机上(hostPort), 在k8s中&am…...

自动发微博脚本工具,可批量定时发送,按键精灵完全开源版
就跟标题上面讲的,软件是我之前开发好的,所有功能都能用,是按键精灵的脚本,只是单设备操作,也可以在模拟器下面操作,UI代码方面都设计的很完整,我这边就干脆分享出来给大家用,不用繁…...

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项
问题:右键时,没有创建servlet的快捷键,如下图: 解决方法: 1.打开idea,点击File>settings(设置),进入settings页面,如下 从上图中的Files选项中没看到有servlet选项,…...

数据结构(c语言版本) 二叉树的遍历
要求 实现二叉树的创建,并输入二叉树数据 然后先序遍历输出二叉树、中序遍历输出二叉树、后序输出二叉树 输出二叉树的深度、二叉树的叶子结点 例如二叉树为: 该二叉树的先序遍历结果为: A B D C E F 该二叉树的中序遍历结果为:…...

Django 配置 Email Admin 详细指南
概要 Django 是一个高级的 Python Web 框架,它鼓励快速开发和清洁、实用的设计。当你正在开发一个 Django 项目时,监控网站的运行情况是非常必要的。Django 提供了一个功能强大的 admin 界面,但同时也可以通过配置 email admin 来获取网站的…...

Apache阿帕奇安装配置
目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip 5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统变…...

时间序列预测实战(十六)PyTorch实现GRU-FCN模型长期预测并可视化结果
往期回顾:时间序列预测专栏——包含上百种时间序列模型带你从入门到精通时间序列预测 一、本文介绍 本文讲解的实战内容是GRU-FCN(门控循环单元-全卷积网络),这是一种结合了GRU(用于处理时间序列数据)和FCN(全卷积网络…...

如何提升软件测试效率?本文为你揭示秘密
在软件开发中,测试是至关重要的一个环节。它能帮助我们发现并修复问题,从而确保我们提供的软件具有高质量。然而,测试过程往往费时费力。那么,有没有方法可以提升我们的软件测试效率呢?答案是肯定的。下面,…...

参数估计和非参数估计
一、参数估计 参数估计是统计学中的一个重要概念,它涉及到使用样本数据来估计总体参数的过程。在统计学中,总体是指研究对象的整体集合,而样本是从总体中抽取的部分元素。 参数估计有两种主要方法:点估计和区间估计。 点估计&am…...

Apache Airflow (八) :DAG任务依赖设置
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...

使用 com.jacob.activeX 库实现 Word 到 PDF
使用 com.jacob.activeX 库实现 Word 到 PDF 的转换涉及到使用 Java 和 Microsoft Office 的 COM 自动化。JACOB(Java COM Bridge)库提供了一个桥接器,允许 Java 代码通过 COM(组件对象模型)与 Windows 应用程序&#…...

2023亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法
文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模式树算法,…...

Dart利用私有构造函数_()创建单例模式
文章目录 类的构造函数_()函数dart中构造函数定义 类的构造函数 类的构造函数有两种: 1)默认构造函数: 当实例化对象的时候,会自动调用的函数,构造函数的名称和类的名称相同,在一个类中默认构造函数只能由…...

简述如何使用Androidstudio对文件进行保存和获取文件中的数据
在 Android Studio 中,可以使用以下方法对文件进行保存和获取文件中的数据: 保存文件: 创建一个 File 对象,指定要保存的文件路径和文件名。使用 FileOutputStream 类创建一个文件输出流对象。将需要保存的数据写入文件输出流中…...

面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
欢迎关注威♥“电击小子程高兴的MATLAB小屋”获取更多资料 该程序复现《面向配电网韧性提升的移动储能预布局与动态调度策略》,具体摘要内容见下图,程序主要分为两大模块,第一部分是灾前预防代码,该部分采用两阶段优化算法&#…...

内网信息收集
目录 本机信息收集 查看系统配置信息 查看系统服务信息 查看系统登录信息 自动信息收集 域内信息收集 判断是否存在域 探测域内存主机&端口 powershell arp扫描 小工具 telnet 查看用户&机器&会话相关信息 查看机器相关信息 查看用户相关信息 免费领…...

windows cmd设置代理
https://blog.csdn.net/SHERLOCKSALVATORE/article/details/123599042...

English:small classified word(continuously update)
Distant family members(远亲) grandparents (外)祖父母 grandpa grandma grandchildren (外)孙女 aunt 姑姑 / 婶婶 / 姨 / 舅妈 uncle 叔叔 / 姑父 / 姨父/ 舅舅 niece 侄女 / 外甥女 nephew 侄子 / 外甥 cousin 堂 / 表兄弟姐妹 Appearance(外貌) …...

JQuery ajax 提交数据提示:Uncaught TypeError:Illegal invocation
JQuery ajax 提交数据提示:Uncaught TypeError:Illegal invocation 1 问题描述 用jQuery Ajax向DRF接口提交数据的时候,console提示:Uncaught TypeError:Illegal invocation(未捕获的异常:非法调用)。 这个问题可能有两种原因导…...

java实现选择排序
算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。 动图演…...

蓝桥杯 大小写转换
islower/isupper函数 islower和issupper是C标准库中的字符分类函数,用于检查一个字符是否为小写字母或大写字母 需要头文件< cctype>,也可用万能头包含 函数的返回值为bool类型 char ch1A; char ch2b; //使用islower函数判断字符是否为小写字母 if(islower(…...