面向车联网泛洪攻击的流量异常检测方法
2020-09-21谢一臻王永建
李 源,谢一臻,王永建,江 虹
(1.西南科技大学 信息工程学院,四川 绵阳 620010;2.北京邮电大学 国际学院,北京 100876;3.国家计算机网络与信息安全管理中心,北京 100031;4.西南科技大学 信息工程学院,四川 绵阳 620010)
车联网概念由物联网衍生而来,是未来智能交通系统应用的最重要组成部分之一,在车联网网络拓扑中,路侧单元作为车联网的固定接入点,连接车联网与外部互联网和车联网管理平台,车辆节点之间采用无中心的自组织网络结构连接[1]。由于车联网车辆节点快速行驶、拓扑结构多变等特点[2],使其容易遭到攻击者的攻击,为道路交通带来安全隐患。
泛洪攻击指攻击者向攻击目标发起流量泛洪,导致攻击目标被大量的冗余信息占用网络和计算处理资源,使其他合法车辆无法正常使用网络服务,即发生拒绝服务(Denial of service,DoS)[3]。
与传统无线网络相比,车联网泛洪攻击的危害和防御手段都不相同,车辆节点使用车载通信单元通过无线网络进行通信,复杂的网络环境和频繁变化的拓扑结构,要求泛洪攻击的防御手段要具有较高的实时性和足够的轻量化。
文献[4]中提出了一种分布式处理的实时流量检测系统,在该系统中采用大数据的分布式处理方式,对网络流量的特征进行提取与训练,建立网络流量模型,从而对流量异常进行准确实时检测。此方法检测准确度和实时性较高,但是分布式的大数据特征提取对设备计算处理能力要求较高。
文献[5]针对网络流量特征提取不准确和鲁棒性不高的问题,提出了基于深度特征学习的方法来检测流量异常。通过优化多层降噪自动编码器(Stacked denoising autoencoders,SDA)结构从而提高特征提取的准确性。此方法大幅提高了检测准确度,但是计算复杂度较高。
文献[6]关注到了小包流量的特征,通过网络流量的自相似性和小波分析技术来检测流量异常,从而检测分布式拒绝服务(Distributed denial of service,DDoS)攻击。此方法操作简单,计算复杂度低,但是检测准确度不够高。
文献[7]提出了一种基于流量预测和密度聚类的流量异常检测方法,该方法利用改进的循环神经网络来预测流量,并将预测结果输入到聚类中进行检测。改进的循环神经网络和改进的聚类检测方法可以提高检测准确度,但是流量预测对训练数据集依赖过大,巨大的计算复杂度并不适用于车联网环境。
文献[8]针对DDoS检测的实时性和准确性较低的问题,利用多协议融合特征的时间序列预测方法来检测DDoS攻击。利用自回归积分移动平均模型(Autoregressive integrated moving average model,ARIMA)对时间序列进行建模和预测,利用傅里叶级数修正预测偏差序列,通过修正的检测模型来识别DDoS攻击。但是ARIMA模型只适用于简单传统网络流量,不适用于车联网流量。
文献[9]提出了采用具有长相似性的自相关函数Hurst参数H值作为其统计特征来表征流量异常,从而监视系统和网络的异常行为。此方法关注H参数在估计攻击的自相似性和正常流量的自相似性之间进行区分的有效性。使用互相关方法,同时区分攻击流量与合法流量。但这两种方法中的Hurst自相似度计算都在中心服务器中进行,因此在采集统计流量是需要占用大量网络资源,并且集中式计算H值的方式不适用于车联网环境。
针对以上研究现状中存在的问题,本文提出了一种新的适用于车联网环境的轻量化异常流量检测方法,通过基于滑动窗口的R/S方法计算网络流量的自相似参数H曲线,依据自相似变化曲线检测流量异常。采用分级检测,路侧单元对流量预处理,可以有效减轻网络链路的传输负担;并能做到路侧单元与云端计算检测轻量化,具有较高的检测准确度。
1 车联网泛洪攻击原理
泛洪攻击指攻击者向攻击目标发起流量泛洪,导致攻击目标被大量的冗余信息占用网络和计算处理资源,使其他用户无法正常使用服务。车联网节点快速移动,网络拓扑不断改变,节点与路侧单元的有效通信时间很短,特殊的网络结构使泛洪攻击与在传统网络中的有所不同[10]。车联网泛洪攻击可以根据攻击所在位置分为内部攻击和外部攻击。外部攻击是指攻击节点短时间内不断地向路侧单元重复发送大量入网请求,从而耗尽路侧单元的计算处理资源,导致其他合法节点无法正常入网。内部攻击是指攻击者通过先攻击占用车联网中合法节点作为傀儡节点,这些傀儡节点在网络中发动泛洪攻击,耗尽网络带宽等资源。外部攻击可以使用签名认证手段达到很好的防御效果,本文主要研究车联网内攻击节点针对路侧单元发起泛洪攻击的检测方法。攻击节点发送大量数据流量,发起泛洪攻击占尽网络资源。泛洪攻击发生时,网络中数据流量必然发生异常变化。车联网泛洪攻击示意图如图1所示。
在普通无线网络中,针对不同的泛洪方式采用相对应的检测防御手段。对于基于网络协议的泛洪攻击,例如TCP SYN泛洪攻击,可以采用IP签名认证的方式进行检测,或者修补协议存在的漏洞,来防御攻击;对基于网络流量的泛洪攻击,可以采用异常流量检测的方式,检测异常流量从而识别泛洪攻击。针对车联网实际应用场景,攻击节点在发起泛洪攻击时,攻击包数据流会引起网络流量的自相似度发生异常变化。本文采用流量自相似度计算的方式来识别检测车联网中的泛洪攻击。
2 Hurst自相似度计算
人们早期对网络流量特性的研究中发现,网络流量在长时间尺度下具有一定的相关性,即具有长相关特性(Long range dependence,LRD)[11]。在之后的研究中,研究人员在多种网络中都证实了网络流量具有自相关特性。网络信号的局部结构和总体结构在某种条件或某种尺度上相比,具有某种程度的一致性。从流量的角度上看,网络流量在不同时间尺度上都具有一定程度的自相似特性。自相似性是网络流量所固有的性质,并且这一特性可以应用到车联网流量异常检测中。
对于自相似过程的定义如下:
存在一个平稳随机过程X={Xk,k=1,2,…},均值μ=E[Xk],方差δ2=E[(Xk-μ)2]。令r(k)为此过程的自相关函数。如果其所有的m阶聚集过程Xm,自相关函数rm(k)都满足
rm(k)=r(k):αk-β0<β<1,k→∞
(1)
那么此过程是严格二阶自相似过程。
其自相似函数满足
r(k)=H(2H-1)k2H-1k→∞
(2)
式中:Hurst自相似参数H=1-β/2。自相似参数H是描述网络流量自相似特性的重要指标,其中0 (3) 计算R/S统计量 (4) 对于自相似序列,当n→∞,E[R/S(n)]~CHnH,其中CH为和n不相关的常数。两边同时取对数得到 logE[R/S(n)]=logCH+Hlogn (5) 分别使用logE[R/S(n)]和logn为纵横坐标作直线图,直线斜率就是Hurst自相似参数H。即得到在时间为n时,车辆节点的流量自相似度。 分级检测主要分为路侧单元预检测和云端二次检测两级检测机制。车联网中各个路侧单元在采集到车联网内部车辆节点的数据流量信息后,对流量进行预计算处理,首先将网中传输的数据包流量进行筛选和整理计算得出时间上的数据包流量速率,之后对车辆节点的流量速率自相似度进行计算,依据自相似参数变化情况检测流量突变,若检测到流量异常,则将有异常时段的数据包信息上报云端进行二次处理检测攻击。云端对流量异常数据包进行进一步检测,整合统计各个节点的数据包发送量,检测出存在泛洪攻击的车辆节点。分级流量异常检测可以使路侧单元和与云端的计算处理都做到轻量化,减轻路侧单元和云端计算压力。路侧单元将流量进行预处理后上报到云端,云端只需对存在流量异常的数据包信息进行二次检测。在做到路侧单元轻量化计算时,也可以减小节点上传路侧单元的数据包大小,缓解车联网网络流量压力。 在路侧单元预检测具体步骤如下: (1)统计数据包大小。路侧单元监测采集来自车辆节点A、B、C、D…发送的数据包数量及大小,并按照数据包收发的时间粒度来统计记录各个节点的数据流量,得到各个节点的数据包大小序列XA={XA1,XA2,XA3,…},XB={XB1,XB2,XB3,…},XC={XC1,XC2,XC3,…},XD={XD1,XD2,XD3,…}…,计算按秒为时间粒度的数据包大小,得到数据包统计序列X={X1,X2,X3,…},其中X1={XA1,XB1,XC1,XD1…},X2={XA2,XB2,XC2,XD2,…},X3={XA3,XB3,XC3,XD3,…},…。 (3)计算自相似参数H。根据流量序列R={R1,R2,R3,…},利用滑动窗口方式依次取子序列,得到子序列subR={subR1,subR2,subR3,…},利用R/S法计算自相似参数H,得到自相似参数序列H={H1,H2,H3,…}。 (4)依据自相似变化曲线检测流量异常。根据H={H1,H2,H3,…}得到流量自相似度变化曲线。正常情况下,网络流量自相似变化曲线是一条在0.5以上相对平稳的曲线,然而发生泛洪攻击时,自相似变化曲线发生显著变化,出现“凸”字形特征。通过检测曲线的台阶型阶跃变化,来检测流量发生异常的时段。 (5)上报异常流量。路侧单元将自相似曲线“凸”字形变化区间的数据包信息上报云端,包括数据包发送时刻Time、源IP、数据包长度Length等信息以及数据包内容Data。 云端二次检测详细步骤如下: (1)云端接收到路侧单元的流量异常报警,并将路侧单元上报的数据包报文解析和统计,得到流量异常期间各个车辆节点数据包发送量,重新整理统计得到表1。 表1 各节点数据包信息表 (2)划分30 s作为时间粒度,分别按照源IP统计每一个时间粒度中的数据包发送量,得出统计结果见表2。 表2 各时段节点数据包大小统计表 (3)依据各节点在各时段的数据发送量,对比分析,如果某源IP的发送量持续高于其他源IP,并且该节点IP的数据发送量比它其他时段发送量都高,那么就能判断该源IP为攻击节点。 本文实验使用个人笔记本电脑,配置如下:AMD A8-4500M 1.9 GHz四核处理器;Windows7 64位操作系统;12 GB内存。仿真软件包含Wireshark和Pycharm,Wireshark是一个网络数据包抓包软件,能够从网络中抓取数据包并解析数据包内容;Pycharm是Python代码开发工具,具有强大的代码编辑调试功能。Python版本为3.7。 本文的实验数据取自北京市部分客运货运车辆节点与车联网管理平台的数据。利用Wireshark软件可以解析得到包括源IP、目的IP、数据包发送时间、数据包长度、数据包内容等信息。使用Wireshark解析到的数据包信息如图2所示。 数据包中Data部分利用交通部JT/T808协议封装数据内容。因此对照JT/T808协议的数据帧格式如表3所示,可以得到车辆当前的行驶状态,以及当前数据包发送的时间戳。 表3 JT/T808数据格式 利用Pycharm开发工具编写Python程序计算数据速率,依据数据包大小与包发送时间差,可以求得该时段内的数据速率。相邻数据包时间间隔t,数据包长度L,则以L/t来计算速率,具体计算方式见第3节。计算得到的数据速率统计如图3所示。 本文通过模拟数据包恶意多次重放来模拟车联网中的泛洪攻击。选择IP为10.145.1.190的车辆节点为恶意节点发起泛洪攻击,此攻击节点重复发送内容相似的数据包到车联网中。分别模拟3种攻击强度:低强度泛洪攻击、中强度泛洪攻击、高强度泛洪攻击。模拟3种攻击强度的参数设置如表3所示。 表3 各时段节点数据包大小统计表 对以上3种不同攻击强度的数据包计算数据流量,得到流量曲线如图4所示。 本文采用基于滑动窗口的R/S自相似参数计算方法,来计算车联网中的正常网络流量和攻击流量的自相似变化曲线。在计算正常流量的自相似曲线时,首先将实际车联网数据包进行预处理,得到数据包大小序列,依照时间差计算数据速率序列,之后用滑动窗口的方式依次从前往后取出流量子序列,对每一个子序列采用R/S法计算得到H值,从而得到自相似参数H值序列,最后绘制得到正常流量的自相似变化曲线,如图5所示。 在计算攻击流量的自相似变化曲线时,首先在模拟攻击重放发送数据包之后,分别得到3种数据包大小序列,依照时间差分别计算数据速率序列,之后用滑动窗口的方式依次对各个攻击强度的流量序列从前往后取出流量子序列,对每一个子序列采用R/S法计算得到H值,从而得到3种强度的自相似参数H值序列,最后绘制得到低中高强度的自相似变化曲线。3种攻击强度的流量自相似变化曲线如图6所示。 从流量自相似曲线可以发现3条曲线“凸”字形变化的位置大约在1 100~3 100 s,此时段就是从H值计算滑动窗口覆盖攻击位置的时刻,因此在起始位置加上滑动窗口大小1 500 s,从而可以得出泛洪攻击的位置大约在2 600~3 600 s之间。为了将实验结果进行准确量化分析,将检测机制正确检测到“凸”字形变化作为检测成功,将未能正确检测到流量异常变化作为误检测,那么检测成功次数在总实验次数中的比例就是检测准确率,误检测次数在总实验次数中的比例就是误报率。经过多次重复实验,统计得到检测准确率和误报率分别如图7和图8所示。 可以看出,检测准确率随着攻击强度的增强而升高,误报率随着攻击强度的增强而降低,在高强度攻击情况下,本检测方法能够达到94%左右的检测准确率和6%左右的误报率。 将检测机制检测到的异常区间起始时刻与实际攻击起始时刻的差值作为流量突变检测时间。经过多次实验计算不同攻击强度下平均检测时间如表4所示。 表4 不同攻击强度下异常检测时间 由表4可以看出,本文的流量异常检测方法能在较短时间内发现并检测出流量出现“凸”字形异常变化,并且攻击强度越高,检测所需的平均时延就越短,在高强度攻击情况下,能够在泛洪攻击发生后13 s左右检测出流量出现异常。路侧单元检测到自相似曲线“凸”字形变化后,立即将异常变化时段的数据包信息上报到云端,让云端对这一时段内所有数据包进行进一步分析,检测泛洪攻击。 云端接收到路侧单元上报的数据包信息之后,对所有数据包进行整理与分析,统计得出各个源IP在每一时刻发送数据包大小,并分析时段内数据包大小变化情况。为减轻云端统计各数据包大小的计算量,并更直观观察数据变化情况,本文以30 s为时间间隔进行统计,得出30 s为间隔时间的数据包大小变化曲线。3种攻击强度下,攻击时段各个源IP发送数据包的大小如图9所示。 由图9可以明显观察到,源IP为10.145.1.190的车辆节点在泛洪攻击发生时刻,数据包发送大小明显高于其他节点,并且保持在一个相对稳定的值。对比低中高3个强度的攻击情况,恶意车辆节点的数据包也有明显差异,随着攻击强度的增加,攻击节点每30 s内发送数据包的总大小也增加。由此可以判断泛洪攻击发生时段流量的异常变化,是由于车辆节点10.145.1.190大量发送数据包造成的。因此检测结果得出由节点10.145.1.190发起了泛洪攻击。在单个攻击源情况下,云端识别到的异常节点的数据包发送量将明显区别于正常节点的发送量,但是在多个攻击源情况下,云端统计到的数据量可能出现多个异常值,影响云端判断异常节点,此时暂不考虑多个攻击源攻击车联网的情形。 本文针对车辆网环境下的泛洪攻击,提出了基于滑动窗口Hurst自相似参数的流量异常检测方法。该方法通过在路侧单元上计算车联网数据包流量的自相似参数H值变化曲线,识别流量异常变化,并将流量异常变化时段的数据包信息上报云端,云端统计各节点数据包发送情况来检测发起泛洪攻击的恶意车辆节点。实验结果表明,流量异常检测方法可有效检测不同强度的泛洪攻击。路侧单元使用Hurst自相似参数计算流量自相似性变化曲线,可以有效检测流量异常变化,云端统计数据包的源IP并分析数据包发送情况可以有效识别单节点泛洪的恶意节点,该方法可有效减轻路侧单元和云端的计算负载和网络数据传输负载。此外,该方法还存在待改进的地方,针对于多节点泛洪攻击检测方法还需完善;检测实时性还有待提高。3 分级流量异常检测
4 仿真实验
4.1 仿真平台
4.2 数据预处理
4.3 模拟泛洪攻击
4.4 计算流量自相似度
4.5 云端统计数据包
5 结论