汽车总线安全研究系列—CAN(FD)渗透测试指南
随着汽车的不断更新迭代,其功能不仅由车辆本身提供,还由远程连接的服务提供。更多的连接、更多的接口意味着更大的攻击面、更多的风险,汽车信息安全也越来越被重视。新发布的GB 44495-2024《汽车整车信息安全技术要求》标准规定了汽车信息安全管理体系要求、信息安全基本要求、信息安全技术要求、检查与试验方法以及同一型式判定。它对于规范和加强智能网联汽车的信息安全管理,以及在汽车整车信息安全建设方面提供了极大的帮助。因此,及时了解汽车内部网络的安全状况成为了迫切需求,本文主要介绍一种常用的汽车安全测试与评估方法—渗透测试。
1. 渗透测试的定义
渗透测试是应用在安全开发流程后段,帮助测试人员识别网络安全漏洞的高效技术。渗透测试是经过授权,利用自动化工具或者手动方式,有计划地对应用、网络、系统等目标进行安全测试,以验证其是否存在未经授权的访问等网络安全漏洞的过程。采用以攻击代替测试的观点,站在攻击者的角度,使用各种技术与工具尝试入侵目标系统,一旦发现可被利用的安全漏洞则将其提交给系统所有者。图1为智能网联汽车安全渗透测试指标。
图1 渗透测试指标(来源:《白皮书》)
针对车内外通信安全,CAN(FD)、LIN总线及车载以太网作为当前汽车的主要车载通信方式,是攻击者实施网络攻击的主要目标之一。因此,本文以CAN(FD)总线渗透测试作为对象,可以从攻击角度了解车辆是否存在隐性漏洞和安全风险,并可基于测试结果,进一步采取防护措施,以进一步提高系统的安全性能。其渗透方式可大致分为四类。
2. 渗透测试的方式
2.1模糊攻击
模糊攻击是指通过软件自动地生成一系列无效、非预期或随机的报文后,将所生成的报文注入到目标总线上,并使总线出现非预期行为的一种攻击。模糊攻击不需要了解攻击对象本身的数据特点(如CAN报文的某一数据位所表示的意义),只需要构建符合CAN报文格式的数据,因此可以通过模糊攻击挖掘系统的潜在漏洞。
模糊攻击测试可在不同层面上实施。一是可对CAN/CAN(FD)原始报文进行模糊。在该层测试上,测试者可配置需要模糊的域,例如,CAN报文的仲裁域、控制域及数据域。二是可在系统网络的信号层进行模糊。基于目标网络的DBC文件可解析CAN报文中搭载的信号,从而实现在信号层面实施模糊。三是可在特定协议层面上实施模糊。例如,在车载CAN网络中,常用UDS协议栈来实现车辆的诊断。因此,可以对UDS应用层协议(ISO14229-1)中的各项服务请求实施模糊。在上述三种模糊测试的层面上,均可按需选用不同的模糊策略,如随机模糊、遍历模糊、自定义的模糊策略(扩展帧、远程帧)等。
例如将报文ID设置为遍历模糊(除去自发报文)、报文DLC设置为8、报文Data设置为0,对CAN总线进行模糊攻击,可以看到发送的模糊报文如图2所示。
图2 遍历模糊攻击
将报文ID设置为0x100、报文DLC设置为8、报文Data设置为随机,对CAN总线进行模糊攻击,可以看到发送的模糊报文如图3所示。
图3 字节随机模糊攻击
通过模糊攻击测试,可检测目标系统在有无效的、非预期的或随机的输入时,系统是否会发生不可逆的损害,或是否会有不可接受的行为等情况。
2.2重放攻击
重放攻击是一种网络安全攻击方式,攻击者通过记录已经传输过的有效数据包并将其重新发送给目标服务器,达到欺骗服务器并获得非法访问权限的目的。攻击者可以在未经授权的情况下重复使用以前的授权信息,从而进行欺骗、窃取数据、篡改数据等恶意行为。
执行重放攻击需先对总线上的数据进行探测,并记录当前车辆的动作,对照重放攻击后的实验现象,判断攻击是否成功。当前大部分车厂对OBD口的重放攻击是做了防范的,例如将OBD口接入车载网关,通过网关过滤非法CAN报文,禁止不满足网关规则的报文进行收发,又或者在报文中加入计数字段,通过计数字段计数来判断报文是否属于重放,避免遭受重放攻击。
例如将报文Data域未变化的ID以相同周期进行重放,可以看到发送的模糊报文如图4所示。
图4 重放攻击
2.3 DoS(Denial-of-Service)攻击
DoS是Denial of Service的简称,即拒绝服务,指的是通过临时或无限期干扰连接于网络的服务。DoS攻击是基于CAN总线并以报文优先级进行仲裁的形式从而得以实现,可以理解为频繁向目标总线发送高优先级(ID小)报文来占满目标总线的资源,提高总线负载率,使其他正常报文不可传输。DoS攻击可以测试当前被测对象是否有做可用性保护的安全防护措施。
例如将报文ID设置为0x1、报文DLC设置为0、期望负载率设置为90%附近,对CAN总线进行DoS攻击,可以看到总线负载率如图5所示。
图5 DoS攻击
2.4 UDS(Unified Diagnostic Services)探测
该渗透方式指通过一系列的诊断请求及收到的响应报文,以探测目标网络或节点的UDS协议配置情况。该探测并不是一种攻击,而是一种在实施攻击前的信息收集手段。例如,可探测目标网络中所包含的诊断标识符,探测某一个目标节点所支持的服务及子服务,探测执行某个特定服务的前提条件等。然后,可利用所获得的信息,如目标节点诊断ID,内部数据ID,服务进入条件等,实施进一步的攻击。
3. 总结
本文以GB 44495-2024《汽车整车信息安全技术要求》标准作为参考指南,以CAN(FD)总线应用层作为研究对象,对其面临的安全威胁结合攻击方式进行分类讨论,在此基础上设计渗透测试策略,对总线进行仿真攻击,论证渗透测试的目的、理论和可行度,为后续渗透测试用例及脚本开发奠定基础。后续我们将以车载以太网渗透测试作为研究对象,帮助大家更全面地了解车内外通信安全渗透测试方法。