专注于车载信息安全和预期功能安全技术研究
电话:+86 21 62655001
您的位置: 网站首页 > 学术前沿
2020-06-15 15:37:54

工业网络中入侵检测系统的深度学习方法

来源:学术前沿 浏览次数:256 点赞数:2

摘要—网络通过允许灵活的数据转换为世界带来了便利,但同时也暴露了许多漏洞。网络入侵检测系统(NIDS)可帮助系统和网络管理员检测其组织中的网络安全漏洞。识别匿名攻击和新攻击是IDS研究的主要挑战之一。深度学习(2010年代)是机器学习的一个子领域(1980年代),它关注的是基于大脑结构和功能的算法,称为人工神经网络。这种学习算法的发展可以改善IDS的功能,尤其是在工业控制系统中,以提高IDS在未知攻击下的检测率。在这项工作中,我们提出了一种深度学习方法,以实施有效且增强的IDS以保护工业网络。

关键字-入侵检测系统,深度学习,SCADAModbus,工业控制系统,人工神经网络。

1. 引言

卡巴斯基实验室说,针对工业控制系统的针对性攻击是对关键国家基础设施的大威胁。当今的工业控制系统(ICS)面临一系列数字威胁。特别是两个。一方面,数字攻击者越来越多地将目标对准并成功获得对工业组织的未经授权的访问。一些行为者使用恶意软件,而另一些行为者则使用鱼叉式网络钓鱼(或捕鲸)和其他社会工程技术。主要挑战与以下事实有关:这些系统通常控制与电力,运输,水,天然气和其他关键基础设施有关的物理过程。这意味着几乎需要100%的可用性,这又意味着中断这些系统进行安全更新等工作非常困难且成本很高。由于ICS的输出与物理过程有关,因此任何停机时间(例如断电)的影响都可能影响数百万人。

基于签名和基于异常的入侵检测系统是有效的网络安全监视策略的一方面。很少有资产所有者在企业ITICS网络之间的边界部署和配置IDS / IPS

但是,网络入侵检测因其倾向于产生大量感知到的误报和误报而受到批评。基于签名的IDS缺乏检测以前从未见过的新型攻击的能力,并且基于异常的生成大量误报率,此外还难以选择网络中流量数据集的正常行为。

各种机器学习技术已被用于开发NIDS,例如关节神经网络(ANN),支持向量机(SVM),朴素贝叶斯(NB),随机森林(RF),自组织图(SOM)等。NIDS是作为分类器而开发的,以区分正常流量和异常流量[3]

本文提出了一种使用深度学习的入侵检测系统来保护ICS网络。所提出的技术使用具有二进制分类的多层感知器,并在网络仿真后训练高维Modbus数据包数据,并用正常和恶意标记数据,为了使神经网络了解网络的正常和异常行为的底层结构。

 

1. 工业控制系统和入侵检测系统

2.1工业控制系统概述

工业控制系统(ICS)是一个通用术语,涵盖了几种类型的控制系统,包括监督控制和数据采集(SCADA)系统,分布式控制系统(DCS)以及其他控制系统配置,例如可编程逻辑控制器(PLC)。在工业部门和关键基础设施中发现。ICS由控制组件(例如电气,机械,液压,气动)的组合组成,这些组件共同作用以实现工业目标(例如,物质或能量的制造,运输)。

如今,许多ICS都是从将IT功能插入现有物理系统中演变而来的,通常是替换或补充物理控制机制。例如,嵌入式数字控件替代了旋转机械和引擎中的模拟机械控件。成本和性能的提高促进了这一发展,从而产生了当今的许多智能技术,例如智能电网,智能交通,智能建筑和智能制造。尽管这增加了这些系统的连接性和重要性,但也对它们的适应性,弹性,安全性和安全性提出了更高的要求。

ICS控制物理世界,IT系统管理数据。ICS具有许多不同于传统IT系统的特征,包括不同的风险和优先级。其中一些风险包括对人类健康和安全的重大风险,对环境的严重破坏以及诸如生产损失之类的财务问题以及对一国经济的负面影响。ICS具有不同的性能和可靠性要求,并且还使用在典型的IT网络环境中可能被视为非常规的操作系统和应用程序。必须以在正常操作以及网络攻击期间维持系统完整性的方式实施安全保护。

ICS的基本操作如图1所示[4]

典型的ICS包含许多控制回路,人机界面以及远程诊断和维护工具,这些工具是在分层网络体系结构上使用一系列网络协议构建的。控制回路利用传感器,执行器和控制器(例如PLC)来操纵某些受控过程。传感器是一种可以测量某些物理属性,然后将这些信息作为受控变量发送到控制器的设备。控制器根据控制算法和目标设定点解释信号并生成相应的操作变量,并将其传输到执行器。执行器(例如控制阀,断路器,开关和电动机)用于根据控制器的命令直接操纵受控过程。

工业控制系统是关键的国家基础设施的基础,对于以下行业的成功至关重要:

电力生产和分配

水的供应和处理

食品的生产

油气的生产和供应

化学和制药的生产

电信

组件和成品的制造

纸和纸浆生产[5]

SCADA和工业协议(例如Modbus / TCP)对于与大多数控制设备的通信至关重要。不幸的是,这些协议中的许多协议都是在没有内置安全性的情况下设计的,并且通常不需要任何身份验证即可在控制设备上远程执行命令。

2.2 工业控制系统的入侵检测

很长一段时间以来,ICS/SCADA是一个依赖于不同的嵌入式设备和明文通信(Modbus/TCP)的领域,没有考虑到安全方法,这使得它容易受到不同类型的攻击,成为网络威胁的目标。这导致了对与工业控制系统相关的安全问题成为新的焦点。

入侵检测系统能够提供对网络上任何入侵行为的可见性和检测能力,IDS能够对网络安全或端点安全事件做出报警响应。用于ICT网络的IDSs已经变得非常流行;特别是对于识别许多已知恶意代码的签名(例如SNORT规则),其他IDSs利用modelbase异常检测器。现代的集成电路设备通常不属于现代ICT网络中的计算机系统。ICS设备通常没有考虑到安全日志记录和处理。它通常不运行ICT桌面和服务器中使用的标准操作系统。基于网络的IDSs是一种网络设备,它直接从网络收集网络流量,通常从一个中心点,如路由器或交换机。来自多个网络传感器的数据可以聚合到一个中央处理引擎中,也可以在收集计算机上进行处理。网络流量也可以分析为不满意的流量或行为模式;要么是与以前建立的流量或行为模型不一致的模式,要么是显示不符合标准的特定流量模式,例如违反特定的通信协议。

2.3 深度学习和入侵检测系统

基于签名的入侵检测系统能够有效地检测已知的攻击,并且具有较高的检测精度和较低的虚警率。但是,在检测未知或新的攻击时,由于可以预先在IDS中安装的规则的限制,它的性能会受到影响。另一方面,基于异常的IDS非常适合于检测未知和新的攻击。尽管异常检测IDS产生了很高的假阳性率,但其在识别新攻击方面的理论潜力已经得到了研究领域的广泛接受。在为未知的未来攻击开发有效且灵活的NIDS时,主要出现了两个挑战。首先,从网络流量数据集中选择合适的特征进行异常检测比较困难。由于攻击场景不断变化和演变,为某类攻击选择的特性可能不适用于其他类型的攻击。其次,无法从实际网络中获得用于开发NIDS的标记流量数据集。

深度学习属于机器学习方法的一种,它利用信息处理阶段的连续层,按照层次的方式进行模式分类和特征或表示学习。通常深度学习在图像分类结果中起着重要的作用。此外,深度学习还广泛应用于语言、图形建模、模式识别、语音、音频、图像、视频、自然语言和信号处理等领域。深度学习方法有:深度信念网络(deep Belief Network, DBN)Boltzman Machine (BM)Restricted Boltzman Machine (RBM)deep Boltzman Machine (DBM)deep Neural Network (DNN)Auto Encoderdeep / Auto Encoder……[6]

学习算法的改进可以提高入侵检测系统的检测率和降低误报率。基于深度学习的方法可以帮助克服开发有效的NIDS的挑战。我们可以从不同的来源收集未标记的网络流量数据,使用深度学习技术可以获得这些数据集的良好特征表示。然后,这些特征可以应用于监督分类到一个小的,但标记的交通数据集,包括正常和异常的交通记录。标记数据集的流量数据可以在一个封闭的、隔离的、专用的网络环境中进行采集。

在这项工作中,我们将使用多层感知器与二进制分类,我们发现有用的类型的神经网络,其中只有两个输出类将是正常的和恶意的。感知器是一个单神经元模型,是更大的神经网络的前身。这是一个研究领域,研究如何用简单的生物大脑模型来解决困难的计算任务,比如我们在机器学习中看到的预测建模任务。我们的目标不是要建立真实的大脑模型,而是要开发出可靠的算法和数据结构,我们可以用这些算法和数据结构来模拟难题。

神经网络的强大之处在于它们能够学习训练数据中的表示,以及如何将其与要预测的输出变量更好地关联起来。在这个意义上,神经网络学习映射。数学上,他们能够学习任何映射函数,并已被证明是一个通用的近似算法。神经网络的预测能力来自于网络的层次结构或多层结构。数据结构可以挑选(学习表示)不同尺度或分辨率的特性,并将它们组合成更高阶的特性。例如从线条,到线条的集合,再到形状。

1. 深度学习算法在网络流量分析中的应用

构建好的深度学习方法的步骤包括准备数据、定义和编译模型、拟合模型以及评估(预测)模型。我们将从一个关于深度学习结构的简要概述开始。

3.1深度神经网络概述

神经元:神经网络的基础是人工神经元。这些是简单的计算单元,具有加权的输入信号,并使用激活函数产生输出信号。

神经元的权重:每个神经元都有一个偏差,这个偏差可以被认为是一个输入,它的值总是10,它也必须加权。例如,一个神经元可能有两个输入,在这种情况下它需要三个权重。每个输入一个,偏差一个。权重通常初始化为小的随机值,比如00.3之间的值,不过也可以使用更复杂的初始化方案。与线性回归一样,更大的权重表明模型的复杂性和脆弱性增加。在网络中保持权值较小是可取的,可以使用正则化技术。

激活函数:加权的输入被求和并通过一个激活函数,有时被称为传递函数。激活函数是一个简单的映射,将加权后的输入和神经元的输出相加。它被称为激活函数,因为它控制着神经元被激活的阈值和输出信号的强度。在历史上,简单的阶跃激活函数被使用在这样的情况下,如果求和输入高于阈值,例如0.5,那么神经元将输出值1.0,否则将输出值0.0。传统的方法是使用非线性激活函数。这使得网络能够以更复杂的方式组合输入,从而在它们可以建模的函数中提供更丰富的功能。使用逻辑函数(sigmoid函数)输出01之间的s型分布,使用双曲正切函数(Tanh)输出在-1+1范围内的相同分布。目前,整流激活函数已被证明提供了更好的结果。

网络的神经元:DL涉及制作非常大且深的(即许多层的神经元)神经网络来解决特定的问题,如图3所示。因此,就像人类大脑细胞中的神经元是分层组织的一样,神经网络中的神经元也常常是分层组织的。因此,如果输入在输出之前经过几个非线性,那么算法就是深度的。

输入层从某个数据集获取输入的首层称为输入或可见层,因为它是神经网络的暴露部分。通常,神经网络的特征是具有一个输入层,数据集中的每个输入值对应一个神经元。

隐藏层在输入层之后,我们有隐藏层,它们被称为隐藏层,因为它们没有直接暴露给输入。神经网络比较简单的例子是在隐层中有一个神经元直接输出一个值。随着计算能力和非常高效的库的增加,可以构建非常深入的神经网络。神经网络可以有很多隐藏层。它们很深,因为在过去,它们训练起来非常慢,但使用现代技术和硬件训练可能只需要几秒钟或几分钟。

输出层后一层称为输出层,它负责导出与问题所需格式相对应的值或值向量。

 

3.2神经网络的训练

数据分类:为了在深度学习中使用二进制分类,我们应该捕获两种类型的数据,在我们的情况下,训练神经网络将是正常的和恶意的数据包。由于神经网络只能处理数字数据,所以我们必须为网络数据包标记0(表示正常)1(表示恶意)        

我们捕获了一个由正常网络流量组成的大数据集,即ICS设备的正常行为。为了获取恶意包,我们准备了一个表,表中包含了与正常包相反的函数和值,即不同的IP源、IP目的地、端口号、协议编号、Modbus(函数、值、寄存器、线圈)等,然后我们捕获了几乎相同数量的包。然后,我们将普通包和恶意包合并到一个数据集中,并添加了一列,将普通包标记为0,恶意包标记为1

数据值:数据必须是数值的,例如实数。如果我们有分类数据,例如一个值为男性和女性的性别属性,我们可以将其转换为一个实值表示,称为one hot encoding。在这里,为每个类值添加一个新列(对于男性和女性的性别,为两个列),并根据每行的类值为每行添加01

神经网络要求输入以一致的方式缩放。我们可以将它缩放到01之间的范围,这就是归一化。另一种常用的技术是对其进行标准化,使每一列的分布的均值为0,标准差为1。缩放也适用于图像像素数据。在我们的示例中,数据将是一个捕获的PCAP文件,其中的字段由IP地址、端口号、十六进制Modbus值组成,如图4所示。

因此,在对神经网络进行训练之前,必须对数据进行充分的准备,我们应该将IP地址、十六进制值以及所有其他非十进制属性转换为十进制,希望是在01之间。

随机梯度下降法:经典的、仍然是首要选择的神经网络训练算法称为随机梯度下降。这是每次作为输入向网络公开一行数据的地方。当神经网络产生一个输出值时,它会对输入的向上激活的神经元进行处理。这称为网络上的正向传递。在网络训练之后,为了对新数据进行预测,也会使用这种类型的pass

将网络的输出与期望输出进行比较,并计算误差。然后,这个错误通过网络传播回来,每次一层,并根据它们对错误的贡献大小更新权重。这个聪明的数学运算叫做反向传播算法。对训练数据中的所有示例重复该过程。为整个训练数据集更新网络的一轮称为epoch。一个网络可以训练数十个、数百个或数千个epoch, epoch循环的一个例子如图5所示。

预测一旦训练好了神经网络,它就可以用来预测。您可以对测试或验证数据进行预测,以评估模型对不可见数据的处理能力。您还可以操作地部署它,并使用它不断地进行预测。网络拓扑和之后的权重集就是您需要从模型中保存的全部内容。预测是通过向网络提供输入并执行向前传递来实现的,允许它生成一个输出,您可以将其用作预测[7]

3.3模型的方法

神经网络的准备:由于深度学习结构被定义为层的序列,我们将创建一个序列模型,并一次添加一个层,直到我们满意我们的网络拓扑。首先要做的是确保输入层具有正确的输入数量。在我们的例子中,输入的个数就是从网络数据包中提取的字段个数,如图6所示,后面一个字段表示数据包是正常的还是恶意的

如上图所示,我们有12个输入,包括不同类型的字段(IPTCPMODBUS)。神经网络将尝试使用这些属性进行训练和学习。

我们如何知道要使用的隐藏层的数量和它们的类型?这是一个有点难的问题。我们可以使用一些启发式的方法,通常通过反复试验可以找到好的网络结构。一般来说,我们需要一个足够大的网络来捕获问题的结构,如果这有帮助的话。在本例中,我们将使用一个三层的全连接网络结构,如图6所示。

接下来,考虑一下我们的层的结构,我们有一个输入层,一些隐藏层和一个输出层。如前所述,在二进制分类问题上表现良好的一种网络是多层感知器。这种类型的神经网络通常是完全连接的。这意味着我们要构建一个相当简单的完全连接的层堆栈来解决这个问题。对于我们将要使用的激活函数,很好使用常用的函数之一,即relu激活函数[8]

在过去的几年中,RLU在逻辑/连续输出方面变得非常流行。它计算函数:

ReLU改善神经网络的一种方法是加快训练速度。梯度计算非常简单(取决于x的符号为01)。

由于后面一层的期望输出是分类/类别,并且其输出边界是(01),我们将使用S型激活,S型是logistic函数的特例,其公式为:

        

因此,在构建模型时,重要的是要考虑到首层需要使输入形状清晰。该模型需要知道预期的输入形状,这就是为什么您总是在图层的文档以及图7的实际示例中找到输入形状,输入尺寸,输入长度参数的原因。

编码:但是,训练必须仅在数字字段上进行,也就是说,如果我们具有格式为xxx.xxx.xxx.xxxIP地址,则网络将无法理解它,就好像我们拥有FF00的十六进制Modbus数据一样为了解决此问题,必须将数据转换为十进制,我们使用Excel插件将IP地址和十六进制值转换为数字,以便所有字段都变为十进制值。

由于不同领域的规模千差万别,因此可能会对网络学习能力产生连锁反应。为了克服这个问题,我们使用了数据标准化。标准化是一种缩放技术,它假设您的数据符合正态分布。如果给定的数据属性是正常的或接近正常的,则可能是要使用的缩放方法。

标准化的结果是,将对特征进行重新缩放,以使它们具有标准正态分布的属性,平均值为0,标准偏差为1。这可以认为是减去平均值或将其居中数据。当输入数据值的比例不同时,标准化可能会有用,甚至在某些机器学习算法中也是必需的。下表显示了正常数据包的网络输入转换:

计算时间:用于运行算法的机器是2.4 GHzIntel®Corei73630QM,具有8GB安装的内存(RAM),该内存具有基于x64的处理器,4个内核和8个逻辑处理器。学习的总时间(培训+测试)为3228秒,即54分钟(图8)。

2. 结果与讨论

4.1网络描述

我们的ICS网络由SCADAPLC和模拟的加热器过程组成,该过程触发大量流量的网络,以收集和分析要显示在SCADA屏幕上的实时数据,反应器图如图9所示。

下表总结了上图所示的系统输入/输出:

使用HIL系统和局域网的现有方法,设计了一种混合方法,该方法考虑了一些约束条件,以便模拟包含PLC,局域网,SCADA控件和由电子设计零件构建的虚拟模型的工业环境,以及用于操作员交互的IHM。图9展示了系统的一般模式。

PLC执行虚拟模型的控制。它从数字样机接收数据,就像它是一个传感器一样,它捕获诸如流体加热器过程之类的物理过程的持续信息。然后,它使用接收到的数据来计算控制信号,该控制信号通过模拟输出发送到模型。

SCADA为主管显示系统信息,该主管可以访问有关工业过程的主要系统信息,该信息来自PLCPLC从传感器获取信息并更新系统状态。主管使用PC来控制系统的某些功能,例如水温和高度。真实网络是由交换机创建的。

4.2建议的方法

提出的入侵检测系统考虑了一般的攻击情形,其中恶意数据包被注入到由加热器和PLC组成的SCADA网络系统中。提议的入侵检测可监视传入的数据包并确定攻击。

在这项工作中,我们考虑了很常见的工业协议,即MODBUS协议。

我们的IDS设计由两个主要阶段组成,即训练阶段和检测阶段。培训阶段是离线进行的,因为这很耗时。在训练阶段,将处理Modbus数据包以提取代表网络正常行为的功能。每个经过训练的Modbus数据包都有一个标签,指示正常或恶意数据包,我们称之为监督学习。我们采用神经网络结构来训练功能。检测阶段的工作原理几乎相同,从传入的数据包中提取了相同的特征,并且神经网络结构使用训练后的参数进行计算,以预测正常或恶意的二进制决策。

为了执行训练阶段,我们模拟了由实际值组成的网络流量,以使神经网络继续训练。

 

准备模拟:该模拟由三个虚拟机组成,首个是将以0.1s的速度执行以生成高网络流量的过程,第二个是SCADA HMI屏幕,该屏幕将显示结果并能够更改结果。然后,如图10所示,PLC控制器负责对其进行的寄存器和线圈的读/写操作,由PLC来控制冷却流量。

该过程发送和接收多个输入/输出变量,这些变量除了为该变量发送的值外,还对应于modbus地址,其地址及其对应变量如图11所示。

捕捉流量:运行PLC,过程和SCADA后,可以使用Wireshark捕获大量网络数据包,然后对其进行过滤,以获取仅在计算机之间运行的Modbus / TCP通信。这些分组的一个例子在图12中示出。

可以使用Tshark(安装Wireshark时安装的工具)将捕获的PCAP文件保存为CSV,我们可以在其中选择仅保存的特定字段(IP源,IP目标,端口,协议,Modbus数据等)。现在,在获得良好的流量并将其转换为CSV文件后,我们可以在训练神经网络之前对任何字段进行调整和执行任何操作。

4.3结果

使用TensorflowKeras在准备好的数据集上训练神经网络后,我们可以在同一数据集上评估网络的性能,这将给我们提供准确性和训练损失(将数据分成70%进行训练和30%的训练后)从测试的百分比来看,这些评估表明了网络在接受训练的数据上的表现如何,在整个训练过程中,训练的准确性通常会不断提高。在训练和测试数据集上使用Tensorflow可视化,我们可以查看我们方法的准确性,如图13所示。

如我们所见,经过训练的数据的准确性随着步数(历元)的增加而增加,直到达到约99.89%的准确性为止,这意味着检测到任何恶意数据包的99.89%的变化发生了变化。网络。值得一提的是,神经网络在训练过程中表现非常出色,这可以通过查看网络学习从提供给他的数据中绘制图案的速度来注意到,因此在040个时期之间,精度达到了大约100%的检测。这是为了确保在对数据进行网络训练之前对数据进行十进制化和整形的重要性。

此外,在每个时期之后,针对验证集对模型进行测试,Keras可以将训练数据的一部分分离到一个验证数据集中,并在每个时期之后在该验证数据集上评估模型的性能。损失越小,模型越好。损失不是相对于准确性的百分比,而是对训练或验证集中每个示例所犯错误的总和。图14示出了训练网络时的损失。

与准确性相似,损失会随着时期的增加而减少,直到达到0.005%的值为止,这在训练结束时几乎可以忽略不计。

可以在训练结束时查看神经网络描述,图15显示了三层及其对应的形状(输入神经元)和参数,例如22812个神经元乘以19输入(18个数据包字段+ 1种类型的包)。

为了测试恶意数据包的神经网络,我们准备了许多具有不同IP地址,端口,功能和值组合的异常数据包,并向其中注入了IDSIDS可以检测到所有99.9%的高精度数据包,Keras在向其注入正常数据包时显示的结果示例为0.99987454,在四舍五入后变为正常值1

与自学式学习(STL)和soft-max回归(SMR)相比,此结果显示出更高的效率,其中使用SMR时,准确率达到97%,STR达到98.4%,而我们讨论的方法达到99.9精度百分比。

3. 结论与未来工作

我们提出了一种基于深度学习的方法来构建有效且灵活的IDS。实现了多层感知器和基于二进制的IDS。我们使用模拟的网络数据集来评估异常检测的准确性。我们观察到IDS异常检测准确性显示出很高的检测百分比。通过增加检测拒绝服务攻击的能力并向字段添加时间戳以了解数据包通常到达的时间间隔,可以进一步提高性能。