针对物联网路由协议的Spam DIS攻击

 

0x00 Abstract

低功耗有损网络(LLN)由一组在通信、计算、内存和能源方面受资源限制的节点组成,在实现无处不在的计算和通信范例中起着至关重要的作用。为了提供有效和可靠的通信,并使资源受限的节点集成到互联网中,已经提出了一种用于LLN的新颖路由协议,称为RPL。

但是由于固有的资源限制、缺乏防篡改功能和路由协议的安全性,使用RPL运行的LLN容易受到各种拒绝服务(DoS)攻击。在本文中提出并研究了一种基于RPL的LLN的新型DoS攻击,称为Spam DIS攻击。在Spam DIS攻击中,恶意节点多播具有不同虚拟身份的DODAG信息请求(DIS,DODAG Information Solicitation)消息,导致合法节点重新启动Trickle算法并广播过多的DODAG信息对象(DIO,DODAG Information Object)消息,从而耗尽了合法节点的能源资源,最终使合法节点遭受拒绝服务的困扰。进行了广泛的模拟实验以评估Spam DIS攻击的性能,并与原始RPL进行比较。仿真结果表明Spam DIS攻击是一种非常严重的DoS攻击。

 

0x01 Introduction

从简单的传感器节点到复杂的家用电器和智能电话,具有通信和计算能力的智能设备或对象遍布我们周围,这导致了无处不在的计算和物联网的兴起。据预测到2020年底,用于IoT应用的无线连接设备的数量将增加到500亿,到2020年全球在IoT上的支出也将增加到1.7万亿美元。作为物联网的主要构建模块,由数以千计的嵌入式网络设备组成的低功耗有损网络(LLN)采用基于开放标准的基于IPv6的架构与较大的互联网连接,从而为实现物联网应用程序铺平了道路。

随着向资源受限节点提供互联网(IPv6)连接并通过有损无线链路有效构建可靠路由的需求不断增长, 互联网工程专责小组(IETF)工作组提出了一种针对低功耗和有损网络的新型路由协议,称为RPL,以为IP智能对象网络提供有效和可靠的通信。例如,思科的基于智能网(CG-Mesh)的局域网(FAN)是基于IPv6架构设计的,该架构在PHY和MAC层使用IEEE 802.15.4形成LLN,并采用RPL提供端到端的服务。到每个智能计量端点的双向通信。

但是,由于恶劣的部署环境和缺乏物理保护,攻击者很容易捕获、篡改或破坏节点。共享无线介质的开放性还可以使攻击者充分监听、重放、破坏或更改数据。另外,RPL最初并不是为考虑恶意攻击的安全性而设计的,而安全性机制是可选的,因为它会极大地影响资源受限设备的性能。因此,基于RPL的LLN容易受到各种主要针对服务可用性的拒绝服务(DoS)攻击。

在本文中提出了基于RPL的LLN中的一种新型的拒绝服务攻击,称为Spam DIS攻击。恶意节点会通过大量具有不同虚拟身份的DIS消息来导致合法节点重新启动Trickle算法并广播过多的DIO消息,这是构建路由拓扑所必需的RPL消息。这消耗了合法节点的能量资源,并最终导致合法节点无法通信并遭受拒绝服务。

Spam DIS攻击主要通过违反隐含假设(即,当所有合法节点在收到没有请求的信息选项或请求的信息的DIS消息时,毫不犹豫地信任所有广播的DIO消息)来针对RPL中DIO传输机制的漏洞。

 

0x02 RPL Routing Protocol

RPL是一种距离矢量和源路由协议,旨在在IEEE 802.15.4 PHY和MAC层上运行,它代表了一种针对计算和带宽非常有限的低功耗和有损网络的特定路由解决方案,极易遭受数据包丢失。为了维护网络状态信息,RPL将节点组织为一个或多个面向目的地的有向无环图(DODAG),其中DODAG由RPL实例ID,DODAG ID和DODAG版本号来区分。每个DODAG都与一组普通节点和一个DODAG根相关联,其中提供到Internet的默认路由的节点充当DODAG根(即网关),而普通节点负责生成数据流量并将其转发到DODAG根。

1591047341030

另外,RPL消息被指定为一种新的ICMPv6控制消息类型,它由六个字段组成:类型,代码,校验和,安全性以及包括消息库和许多选项的消息正文。这里,控制消息的结构如上图所示,其中“代码”字段标识了四种类型的控制消息:DODAG信息对象(DIO),DODAG信息请求(DIS),DODAG目的地广播对象(DAO)和DODAG目的地广播对象确认(DAO-Ack)。

DIO消息由DODAG根发出,以构造新的DODAG并建立从其他节点到DODAG根的向上路由。 DIO消息包含DODAG根的ID,DODAG根的等级以及描述路由度量和约束的目标功能。 DIO消息的附带网络信息允许节点发现RPL实例、学习其配置参数、构建其父列表和维护DODAG。任何收到DIO消息并愿意加入DODAG的节点都应将DIO消息发送方添加到其父列表,根据目标函数计算其自身的等级,然后将DIO消息与更新的等级信息一起传递。

此处,等级用于表示节点相对于DODAG根相对于其他节点的位置。在DODAG中,层次结构顶部的节点比底部的节点获得的等级要小,并且最小的等级被分配给DODAG根。将父列表中所有节点中排名最小的节点选为首选父节点。构造DODAG之后,每个节点都可以通过选择其最喜欢的父节点作为下一跳转发节点,将数据转发到DODAG根。

为了通过最小化冗余DIO消息并动态调整传输速率来减少能耗,DIO消息的发送由Trickle算法进行调节,该算法是一种密度感知的本地通信原语,具有基本的信息模型指导消息传输。更具体地,根据路由信息的稳定性动态地调整DIO消息的发送速率。如果从相邻节点接收到的DIO消息中附带的信息与当前存储的路由信息一致,则降低发送速率。否则,当收到不一致的DIO消息时,发送速率会增加。

另外,来自希望加入网络的新节点的DODAG信息请求(DIS)消息也将被视为不一致的路由信息。在Trickle算法中,如上图所示,时间分为可变长度的周期。 DIO消息的传输安排在每个周期的后半段的随机时间tram中。直到tram,该节点都在无线信道上侦听不一致的路由信息,例如来自新节点的DIS消息。在时间tram中,如果节点未收到DIS消息,则它广播调度的DIO消息。然后,将下一个周期的长度加倍,直到达到最大长度。否则,当前周期被中断并且调度的DIO消息的发送被终止,如它在图的第4周期内发生的那样,Trickle流算法再次从tmin开始。

为了建立从DODAG根到其他节点的下行路由,该节点需要发出DODAG目的广播对象(DAO)控制消息,以传播反向路由信息并记录沿上行路由访问的节点。在将DAO消息传递到DODAG根之后,在DODAG根和节点之间建立了一条完整的下行路由。最后,DODAG根将DODAG目标广播对象确认(DAO-Ack)消息作为单播数据包回复到DAO消息的源作为响应。

如果新节点要加入现有网络,则可以通过多播DODAG信息请求(DIS)控制消息从相邻DODAG中的邻居节点请求拓扑信息。当节点收到不带“请求的信息”选项,或具有“请求的信息”选项且所有谓词在“请求的信息”选项中匹配的DIS消息时,它将终止DIO消息的预定传输,并从一段时间开始重新启动Trickle流算法,最小长度tmin。在这里,“请求的信息”选项用于节点从相邻节点请求DIO消息。

选项可以指定要由接收节点匹配的多个谓词标准,请求者使用它来限制答复的数量。但是DIS传输机制也可以被攻击者利用来攻击网络。例如,恶意节点多播具有不同虚拟身份的大量DIS消息以破坏网络协议并干扰正在进行的通信。

 

0x03 The Spam DIS Attack

Spam DIS攻击的基本思想是,恶意节点多播具有不同虚拟身份的大量DODAG信息请求(DIS)消息,从而导致合法节点重新启动Trickle算法并广播过多的DODAG信息对象(DIO)消息,这会很快耗尽合法节点的能源,并最终导致合法节点无法通信,并遭受LLN中的服务拒绝。在本文中假设攻击者能够捕获和破坏合法节点,获得对包括公钥和私钥在内的所有存储信息的访问权,并将其重新编程为恶意行为。

此外,恶意节点可能会创建从其自己的MAC地址或随机生成的伪造MAC地址派生的虚拟身份。由于MAC地址的大小恒定(例如48位),因此不能保证每个随机生成的虚拟标识都与网络中使用的所有实际MAC地址都不相同。但是,由于网络的24位地址空间包含224个可能的MAC地址,因此生成与网络中现有地址相同的伪造MAC地址的可能性极低,接近于零。因此隐式假设网络中不存在随机生成的虚拟身份,合法节点会将其视为新身份。

首先,发起Spam DIS攻击的一种简单方法是随机生成一个虚拟身份,并将带有虚拟身份的DIS消息多播到所有相邻节点。当合法节点收到带有新身份的DIS消息时,它假定一个新节点希望加入网络,并通过DIS消息探测网络配置和其他参数,这将被视为不一致的路由信息。因此,合法节点从最小周期tmin重新开始Trickle算法,然后在tmin的后半部分的随机时间广播附带当前网络信息的DIO消息。

1591047191230

通过上图所示的示例说明Spam DIS攻击,其中假设nm是一个恶意节点。 nm将带有随机生成的虚拟身份的DIS消息多播到其所有邻居节点ne,nf和ng。当邻居节点(例如nf)从nm接收DIS消息时,它认为新节点希望加入网络并请求当前网络信息。因此,nf从tmin重新开始Trickle算法,然后在tmin的后半部分的任意时间将搭载当前网络信息的DIO消息广播到nm。

其次,如果恶意节点以一致的速率生成多个带有不同虚拟身份的DIS消息,然后将它们组播到相邻节点,则所有接收节点将从头开始重复重新启动Trickle算法,并广播大量DIO消息。例如在下图中,恶意节点nm生成并向节点nf多播具有不同身份的多个DIS消息。

然后,节点nf必须反复从tmin重新启动其Trickle算法,然后广播DIO消息,这导致nf缩短了连续DIO消息的时间间隔。结果,过多的接收到的DIS和广播的DIO消息会大量消耗能量资源和通信带宽,并最终导致合法节点nf耗尽其能量并遭受拒绝服务的困扰。

1591047120755

 

0x04 Performance Evalution

使用OMNeT ++ 进行了广泛的模拟实验,以评估Spam DIS攻击对性能的影响。包含单个DODAG根的30个节点均匀分布在100×100平方米的网络区域中。每个节点的通信范围是30(m)。无线电模型以250 Kbps的正常数据速率模拟CC2420,并且802.15.4 MAC / PHY在2.4 GHz频带中以默认配置运行。数据包注入速率设置为0.1 pkt/s,以模拟低数据速率情况。一组恶意节点随机位于网络中。总仿真时间为5000秒,每个仿真场景重复5次以获得稳态性能指标。

在本文中通过更改关键模拟参数(包括Spam DIS消息注入率(rdis)和恶意节点数(Nmal)),在能耗、节点寿命和生成的DIO消息数方面衡量性能。将Spam DIS攻击与原始RPL(没有攻击者)的性能影响进行了比较。

1591047147038

首先,通过更改Spam DIS消息注入速率和Subfig中的恶意节点数量,根据接收和广播的数据包数量来衡量能耗。如上图左,总体而言,Spam DIS攻击的能耗随着Spam DIS注入速率的增加而增加。这是因为恶意节点可以生成更多的DIS数据包并将其多播到具有更高Spam DIS消息注入率的合法节点,合法节点将相应地答复大量DIO消息。换句话说,合法节点必须接收和广播过多的控制分组。

因此,观察到较大的能量消耗。随着恶意节点数量的增加,能源消耗也显着增加。由于网络中存在更多恶意节点并广播Spam DIS消息,因此合法节点必须分别接收和广播更多DIS和DIO消息,最终导致更大的能耗。其次通过改变Subfig中恶意节点的数量来测量经过的模拟时间的能耗,如上图右。

与攻击者Spam DIS攻击相比,没有攻击者的RPL能耗最低,这是因为DIO消息的发送速率是通过Trickle算法动态调整和调节的,从而通过最小化冗余DIO消息和更少的控制数据包来降低能耗被接收和广播。因此,RPL在没有攻击者的情况下实现了最低的能耗。

随着恶意节点数Nmal的增加,Spam DIS攻击的能耗随着模拟时间的增加而迅速增加。由于更多的恶意节点生成并广播了更多的DIS消息以探测来自邻居节点的DIO消息,因此合法节点会接收到更多的DIS消息,然后广播过多的DIO消息,从而消耗更多的能量。

在Subfig中使用不同数量的恶意节点Nmal和Spam DIS消息注入率来测量节点寿命,结果如下图左。在这里假设每个合法节点都装有一个标准AA电池(400 mAh和1.5 V),并且当合法节点用完一半的电池能量(例如1080焦耳)时,它将停止并且无法进一步通信,而恶意节点没有能量限制。

1591047084966

随着Spam DIS注入速率的增加,整个节点的寿命会迅速减少。这是因为合法节点接收并广播大量控制数据包,并且很快耗尽了存储的能源。在恶意节点数Nmal = 3的情况下,随着Spam DIS消息注入率的提高,节点的寿命从大约130天减少到28天。由于恶意节点生成的DIS消息数量较大,合法节点必须通过广播更多DIO消息来进行响应,这会很快消耗有限的能量。

通过更改Subfig中的Spam DIS消息注入率rdis来确定生成的DIO消息的数量的结果如上图右。在Spam DIS攻击下,与没有攻击者的RPL相比生成了更多的DIO消息。这是因为恶意节点经常广播DIS消息以探测来自合法节点的DIO消息。

随着Spam DIS注入速率的增加,生成的DIO的数量将大大增加。另一方面,原始RPL在没有攻击者的情况下观察到最少数量的DIO消息,因为采用了Trickle流算法来最小化冗余DIO消息以减少能耗。

 

0x05 Concluding Remarks

在本文中研究了Spam DIS攻击,这是基于RPL的LLN中的一种新的严重拒绝服务攻击。对其进行分析并将其与原始RPL进行比较。大量的仿真结果表明Spam DIS攻击会显着增加能耗并缩短节点寿命,从而导致拒绝服务。

作为未来的工作,计划提出一种轻量级的对策,以减轻基于RPL的LLN中的Spam DIS攻击。例如,沿着转发路径的每个中间节点可以维持阈值,以限制一个时间段内从同一节点接收消息的速率。如果接收到的消息数超过阈值,则所有其他消息将被拒绝。

(完)