轩辕实验室|ATG:一种用于车载CAN总线安全测试的攻击流量生成工具

来源:上海控安
2020-05-19
3422

* 本文翻译自Tianxiang Huang, Jianying Zhou, Andrei Bytes所著ATG: An Attack Traffic Generation Tool for Security Testing of In-vehicle CAN Bus。中文版权归控安轩辕实验室所有。

       

车载安全性研究具有挑战性,因为大多数研究人员很难获得真正的安全性评估工具。另一方面,现有的软件解决方案要么非常昂贵,要么功能非常有限。迫切需要一种方便的工具,该工具可以生成灵活的数据集以用于车载攻击和防御评估。在这项工作中,我们设计和开发了一种攻击流量生成(ATG)工具,用于车载CAN总线的安全性测试。通过提供可与廉价、广泛可用的硬件配置一起工作的开源软件包,它消除了该领域研究的障碍。ATG为汽车安全研究人员提供了一个免费且实用的工具包,可与实际或模拟的CAN总线轻松有效地进行交互。ATG的最重要功能之一是自动生成攻击有效载荷。负载可以预先配置并在多种攻击模式下使用。ATG可以将攻击数据包注入CAN总线,并实时记录CAN总线流量。重播(replay)模式可以使用预分类的数据集对CAN总线安全性实施方案进行有效评估。此外,用于原始可重播CAN序列的统一数据格式,使不同的汽车研究团队能够针对不同的车辆和仿真硬件交换数据集,并同时进行安全性测试。


01 介绍


    随着现代汽车中电子和“智能”设备的迅速发展,各种电子控制单元(ECU)被集成到传统的CAN总线中。另一方面,也证明了CAN总线对大多数攻击并没有提供保护,易受各种操作的影响。现代车辆利用广泛的车载系统连接到CAN网络。辅助车载设备中的漏洞可以将其转换为继电器,使攻击者有机会与CAN总线进行交互。

    许多相关的工作致力于对抗和恶意活动检测方法。然而,大多数研究人员依赖昂贵的专用工具来生成可以攻击有效载荷。此外,这些工具通常绑定到昂贵的、可以连接的硬件,这常常使实验预算翻倍。

    除了昂贵的市场领导者,还有一些简单的和更便宜的工具。然而,它们提供的功能非常有限,而且它们的攻击向量仅限于单调的攻击模式。人们对一种能够生成各种攻击有效载荷序列并使研究人员能够以统一格式在共享数据集上协作的方便工具的需求很高。这种网络安全协作的一个很好的例子是DARPA的离线入侵检测评估(一个测试平台产生来自MIT林肯实验室的实时后台流量)。针对车载CAN总线的多种攻击方式,建立相应的CAN总线攻击流量生成器是快速、高效地评估新安全概念的必要条件。在本文中,我们提出了一种实用、易用的CAN总线安全测试工具(ATG),它创造性地使用户能够在场景文件中定义攻击过程,并实时执行引导或自动执行。

    为了方便基于重播的实验,可以将数据集记录并分类为标记数据集。该数据集包含了所有的攻击信息,为研究人员提供了一个比较攻击检测结果的参考标准。




02 相关工作


    本文主要从三个方面阐述了车载CAN总线的安全性研究。第一个方向是揭露和展示潜在的威胁。第二个方向是为CAN总线协议提供认证和完整性机制。第三个方向是建立一个IDS(入侵检测系统)机制来检测汽车网络中的恶意流量。特别是在第一和第三种情况下,研究人员必须使用一些真实的CAN总线上的网络设备来获取CAN数据并生成攻击流量。

    现有工具在实时自动生成更复杂的攻击流量方面有局限性,并且没有工具支持专用的标签功能。一般来说,它缺乏一个方便的工具,汽车研究人员可以生成灵活的数据集,用于车载攻击和防御评估。

    本文的其余部分,我们将演示ATG如何改进未来的汽车网络安全研究。



03 攻击模式


    ATG的攻击功能依赖于对CAN总线攻击模型的综合分析。针对车载CAN总线攻击模型中存在的多种攻击路径和目标,本文着重对车载CAN总线攻击模型进行了分析。由于通信是广播的,所以接收节点无法识别信息包的来源。因此,攻击节点可以在不被识别的情况下轻松地注入恶意数据。下面我们总结一下车载CAN网络的常见攻击

1)  DoS(拒绝服务)攻击

    如果多个节点同时访问总线,则只有ID最低的帧可以获得仲裁并成功传输。低优先级的帧将被发送,直到总线进入空闲状态。攻击者可以滥用这种仲裁规则,以高频率注入大量的高优先级帧(ID = 0x00),从而阻塞其他正常帧。在图1 (a)中,我们可以看到正常的消息被攻击节点阻塞。通常,大多数车载CAN网络命令需要实时传输。如果关键信息存在延迟,则会导致严重的问题。

2)  模糊攻击

    如图1 (b)所示,简单的fuzzing攻击是向网络中发送大量随机消息(随机ID、随机有效载荷)来影响正常通信,类似于蛮力攻击。由于模糊攻击的不确定性,某些攻击消息可能触发关键指令。由于在车辆控制系统中信号种类有限,模糊攻击成功的几率非常高。

3)  目标欺骗攻击

    目标欺骗攻击比上述两种攻击更为复杂。通过捕获和分析CAN消息,有经验的攻击者可以修改某些关键受控组件的消息结构。就像大部分的传输一样攻击者有一个固定的周期,可以伪装成一个普通节点(具有相同的id),并在传输间隙中快速插入恶意数据,如图1 (c)所示。

4)  基于错误处理的攻击

    CAN总线具有强大的容错错误处理机制,可以处理不同的总线错误。攻击者可以通过一些技巧触发总线错误,从而导致总线关闭。对于这样的漏洞,limp home是一个限制性措施,但在高速行驶时仍然是一个威胁。在beta版中,我们不支持基于错误的攻击,因为它需要由硬件精确触发。




Figure 1


攻击模式

04 攻击流量生成工具


4.1 工具概览

    ATG工具具有一些传统的功能,就像其他工具一样,比如流量跟踪、传输和日志记录。然而, 我们主要关注安全性测试方面。根据上一节描述的攻击模式,ATG支持灵活的攻击配置。用户可以自定义攻击类型、内容和设置计时器驱动的执行。攻击场景可以使用单个初始化文件进行配置。除此之外,我们还改进了数据记录,允许对攻击有效载荷进行实时标记。

    ATG是用Python编写的,以便于为研究小组和独立贡献者扩展它的特性。ATG工具的框架如图2所示。它由两个主要块组成。第一个块(绿色)是CAN总线驱动程序和接口,第二个块(蓝色)是应用程序部分。在CAN总线驱动程序和接口部分,我们使用Python - CAN,这是一个Python开发环境的开源库,它支持不同的CAN接口。通过调用预定义的api[15]很容易获得统一格式的CAN消息,并访问和配置相关接口。主要支持的硬件是USB2CAN,它是市场上最好、最经济的CAN USB适配器之一。在beta版中,用户可以集成他们所依赖的其他硬件,应用部分由GUI层、总线访问层、任务处理层和文件处理层组成。这些是ATG的基本模块。我们使用wxPython库来构建一个有效的功能GUI。接收和传输功能包括在总线访问层中。任务处理层管理基于事件的任务,如自动攻击执行、消息日志记录和数据集回放。这些函数通过支持文件解析的文件处理层访问相关文件,并通过优化的Python开源库进行格式转换。




Figure 2


ATG框架


4.2   主要功能

    4.2.1  捕获CAN数据包。实时嗅探和显示数据包是其基本功能。显示模式与其他通用应用程序(如用于CAN总线的CANoe和Wireshark)一样,消息的顺序可以是固定的,也可以是按时间顺序显示的,时间信息可以以不同的方式显示。可配置的消息过滤器可以促进相关的测试.

    4.2.2  配置攻击。ATG可以手动触发攻击,也可以将攻击定义为初始配置文件。可以灵活地配置攻击类型、开始时间、结束时间和内容。加载攻击配置文件后,可以自动发送相应的攻击包。攻击类型包括Dos攻击、Fuzzing攻击和欺骗攻击。如表1所示,我们提供了一个配置示例。它每0.8毫秒发送一次DoS攻击消息(ID值0x00),从2s到4s。对于fuzzing攻击,它发送一系列从8s到40s的随机消息(在预先设置的ID范围内的随机ID),而ID的范围是从0x10到0x3FF。在欺骗攻击中,可以自定义数据修改模式。在第一个例子中,我们将目标ID设置为0x330,并将攻击内容固定为“13 00 02 00 21 00 21 00”,将活动字节标记为“AA” 值为10101010,这意味着正常负载的第1、3、5和7字节将被替换为新值,其余的将保持不变。新消息将在正常数据包之后传输。在第二种情况下,它将数据偏移量添加到最后4个字节。我们可以看到,任何包都可以根据原始数据进行修改或移位。这是与前面提到的工具最显著的区别,它允许用户以有效载荷修改为目标,而不只是注入整个包。在某种程度上,它可以进一步使攻击无法被发现。

    4.2.3  自动生成攻击流量。将配置文件加载到ATG后,点击start按钮,自动攻击任务根据配置文件开始形成攻击消息,并实时发送到CAN总线。在图3中,我们展示了一个详细的过程。在CAN总线消息序列中,M表示正常消息,AM表示攻击消息。在DoS和模糊攻击下,消息被直接注入。在目标欺骗攻击下,修改后的消息在分析正常消息后进行传输。攻击结束后,可以生成混合数据集。




Figure 3


自动生成攻击流量


    4.2.4  安全测试数据集的生成。在传统方法中,攻击消息是通过离线修改日志文件或由传输源标识来生成的。从总线接收到的消息被认为是正常的,而由软件生成的消息显然被认为是恶意的,这是不准确的。仔细标记的数据集对于复杂的数据分析非常有用。ATG使用前面提到的攻击类型标记每个攻击消息,它还可以指示修改了哪些字节。在图4中,我们将标记的样例片段(表1中的攻击结果)与常见的日志样例片段进行了比较。注意,红色文本是括号中的标签信息和注释。



Figure 4


普通日志与攻击labe的比较普通日志与攻击labe的比较


    4.2.5  重现的数据集。该特征消除了数据采集的重复和验证,对车辆网络安全研究有一定的参考价值。我们可以在存储库中共享相应的应付测试数据集的样本。此外,如果数据集不是由ATG生成的,转换函数支持转换CSV文件或日志文件等其他软件生成的日志文件。用户可以根据ATG数据集格式规则开发额外的转换模块。


4.3  ATG优势

    表2显示了不同CAN总线工具之间的比较。ATG以最低的成本提供最多的功能。特别是,它有以下优点:

1. 攻击内容以统一的格式存储,这意味着一旦配置了攻击过程,就会将其视为攻击案例。这些攻击案例可以共享和重用,用于车载CAN总线安全测试。

2. 我们的工具支持CAN数据库转换功能。CAN network DBC(数据库容器)文件可以转换成Excel或其他常用格式,便于分析车辆网络结构。

3. 我们目前的软件版本只针对CAN网络。但基于测试框架,该模型车可移植到CAN-FD、flex - x、车载以太网等车载网络通信协议中。它也可以应用于一些未来的智能交通协议,如V2X和lov (Internet of Vehicle)。



表2


不同CAN总线工具的比较

05 功能测试


    我们评估了我们的软件在试验台和实际汽车上的功能集成。在测试平台上工作,主要是测试日志功能的丢包率。我们使用CANoe和CANcase工具进行标准和精确的数据生成。在此之后,我们设置了四个仿真节点来生成许多高频通信消息。然后我们为CANoe和ATG都启用了日志功能,并进行了5个小时的测试。日志输出的比较没有错误,包的顺序是正确的。在实际的汽车网络攻击测试中,我们使用了东风汽车有限公司的一辆实车。在我们将CAN接口插入OBD (On-Board Diagnostics)端口之后,来自所有ecu的消息都被暴露了。这意味着OBD接口不是孤立的,我们可以直接获取can消息进行分析,也可以注入恶意消息攻击相应的车载组件。为了演示攻击的影响,我们首先计算出RPM指针的控制字段,然后配置一个欺骗攻击,将该字段的值设置为零,而将频率配置为最高。以下脚本为攻击配置,目标控制字段为消息的最后4字节,ID为770,攻击时间为25 - 80s。

    当执行攻击时,当发动机运行时,转速表开始抖动并向零倾斜,如图5所示。我们还在ATG库中提供了相应的攻击数据集。




FIgure5


车辆攻击测试


06 结论与未来展望


    通过对车载CAN总线安全评估工具的比较,发现其中少数具有灵活的攻击模式配置。现有的工具都没有提供生成功能来生成统一的数据集。在本文中,我们提出了一个攻击流量生成工具,该工具除了提供基本的数据分析功能外,还提供主动负载生成模式、任务管理以及对CAN总线的安全性评估。我们对该框架及其关键特性进行了全面的描述,并对其在真实车辆上的性能进行了评估。更重要的是,所生成的交通数据集具有灵活配置和标记的自动生成攻击的新特性,填补了车载安全测试的空白。在我们的开源ATG工具的未来版本中,作者和研究社区将添加更多的功能模块。例如,它将支持多个CAN接口,以使生成的数据更加完整。此外,在Python中,回放函数对计时器的准确性有限制。因此,回放只能依赖om序列,不能保证基于时间的精度。这将在我们的软件的下一个版本中得到改进。





//////////




控安轩辕实验室”依托华东师范大学软件工程学院和上海工业控制系统安全创新功能型平台,致力于车载信息安全和预期功能安全技术研究,面向智能网联汽车及车载边缘计算网络从事前瞻性技术预研、研发技术成果转化以及安全解决方案推广。 





收藏
点赞
2000