英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
摘要
DFAs(确定性有限自动机)和DTMC(Discrete Time Markov Chain)已经提出了用于对SCADA(SupervisoryControl和数据采集)系统中的入侵检测进行MODBUS /TCP建模。 虽然这些模型可以用于学习系统的行为,但是它们要求设计者知道用于构建模型的适当数量的训练数据,在配置更改时重新训练模型,并生成可理解的警报消息。在这篇文章中,我们提出用规范方法补充这些学习的模型。 要构建一个健壮的模型,要考虑配置级规范以及协议规范。由于Modbus / TCP是一种简单的协议,具有每个通信通道的功能代码或命令,设计基于规范的方法适用于监视此通信。我们在两个数据集中对DFA和DTMC方法进行了比较,并说明了如何使用推断的规范来补充这些模型。
介绍
为了便于检测工业控制网络中的异常和潜在攻击,文献中提出了各种方法来建模人机接口(HMI)和可编程逻辑控制器(PLC)之间的通信通道。HMI和PLC通信渠道的模型包括确定性有限自动机(DFA)及其变体和离散时间马尔可夫链(DTMC)。DFA和DMTC模型自动从工业网络中的正常网络流量学习,并且预计会检测到与这种正常行为的偏差,从而作为入侵检测系统(IDS)。基于学习的模型面临着一系列的挑战:例如,只要通信模式是周期性的,DFA模型就会很好,然而,非周期性模式和多种模式将会引入复杂性。此外,这种模式还是无法标记延迟攻击。另一方面,DTMC模型是昂贵的,具有更多的状态和转换。最后,这两个模型都可以从受害(恶意)学习数据中被利用,无论是从一开始,还是系统更新其配置,并需要学习新的模型。在本文中,我们分析这些问题,并提出一种基于规范的入侵检测作为一种补充方法。Modbus TCP是一种相对简单的协议,HMI-PLC通信通道一般不包含大量来自此协议的功能码,因此,每个通道的构建协议和配置级规范都是可行的。
相关工作
以前,Cheung等人已经考虑了基于规范的入侵检测。 在这项工作中,我们将深入探讨规范流程,配置级别规范以及规范与基于学习的方法的比较。Morris et al等人开发了一些特别在Modbus和Modbus TCP网络中检测入侵的第一个规则。同年,Goldenberg等人提出了一种自动学习DFA用于Modbus TCP的方法; 特别地,它们确定可用作检测异常的参考的符号的周期性模式。后续工作扩展了西门子S7协议的方法。Kleinman等人将方法扩展到允许多线程HMI生成多路复用通道模式的状态图。最近,Barbosa等人提出了一个名为“PeriodAnalyser”的工具,它有三个模块:多路复用器 - 将通信流分解成各种流,令牌 - 将每个数据包转换为独立于协议的格式(令牌),并且初学者 - 处理每个令牌以查找和定性活动。最后,Caselli等人提出了另一种通过开发基于概率DTMC模型的序列感知IDS来处理一些工业网络的多线程和非周期性质的方法。在开发用于工业控制网络的IDS时,可能比开发一般信息技术网络的IDS要容易一些,以前的工作表明,开发模型可以自动捕获工业网络的运行,仍然面临着许多挑战。
背景
Modbus TCP是基础Modbus的一种变体,它是SCADA系统中流行的通信协议。Modbus TCP客户端和服务器通过端口502监听和接收数据。该协议由应用数据单元(ADU)组成,应用数据单元(ADU)由两部分组成:Modbus应用协议(MBAP)报头和协议数据单元(PDU),如图 1. MBAP头:MBAP头有四个字段:事务标识符(TID)用于配对事务,因为客户端可以通过相同的TCP连接发送多个消息,而不必等待先前的响应; Modbus的协议标识符(PID)始终为0; 长度提供以下字段的长度(以字节为单位),包括单元标识符(UID),功能代码和数据字段; 和单元标识符用于标识位于非TCP网络上的远程PLC(用于串行桥接)。默认情况下,UID设置为00或FF,由服务器忽略,并在响应中回显。PDU:Modbus 9中定义了三种类型的PDU:Modbus请求,响应和异常响应。PDU有两个字段,i)功能代码(用于Modbus请求和响应PDU)或异常功能代码(用于Modbus异常响应 - 其中最高有效位设置为1,以及ii)有效载荷 - 从1到252字节 - 这可以作为可变参考号(RN),计数,值,数据偏移,子功能代码等。功能代码:在Modbus中,有效功能代码从1到127,分为三类:公共(有文档),用户 定义的(供应商特定的功能)和保留(由旧产品使用)。 公共功能代码是1 - 8,11 - 12,15 - 17,20 - 24,43。Modbus数据模型:串行组合有四个主表:离散输入,线圈,输入寄存器和保持寄存器。根据Modbus请求中的功能代码,访问被定向到特定的主表。并且基于该设备,这些表可以被组织在四个单独的块或单个块中。 在Modbus PDU中,数据项可以从0到65535寻址。另外,基于Modbus请求和响应,字段可能会有所不同。 例如,Modbus读取请求数据有两个字段:RN和位/字数,其中第一个指定要开始读取的存储器地址,第二个指定要读取的存储器对象单元的数量。在对应的Modbus响应中,不包含RN的有效载荷,而是具有i)字节计数 - 完整响应数据量- 读取的内存对象的值。用于Modbus的基于规范的入侵检测:优点和挑战在基于规范的IDS中,构建了规范或要求的模型,并且与此预期的正常行为的任何偏差都将引起警报。基于规范的IDS本质上是网络中允许的行为或连接的“白名单”。 与基于学习的异常检测方法不同,通常从设计文档或手动描述所需行为获得规范。先前描述系统的所有允许的行为可能是一个挑战,并且它可能产生一般的许可系统或产生许多虚假警报的严格控制的系统。在某些情况下,建筑规格昂贵且难以管理。此外,模型验证(由此方法构建)也是一项具有挑战性的任务。另一方面,由于Modbus是简单的协议,在大多数情况下,每个HMI-PLC通道都使用几个功能代码。每个通道的建筑规格相对容易。此外,规范的知识可以在各种渠道中重复使用。另外,由于我们先前定义了允许的行为,即使系统的规范或配置发生变化,我们一般可以从设计文档中提取新的规范,以便在第一天部署新的基于规范的IDS,而基于学习的模型 将需要等待,直到我们从新配置捕获数据来训练新的分类器。为了构建特定工业部署的定制规范,我们不能依赖协议级规范,因为攻击者可以轻松地在满足Modbus TCP协议规范的情况下发现新的攻击。要构建捕获单个部署细节的规范,我们需要关注工业系统的配置。 例如,虽然协议规范对于特定功能代码将保持相同,但是根据具体要求,数据的起始地址和数量可能会从通道改变; 因此,如果两个通道A和B仅带有功能代码(读保持寄存器)的数据,则由于起始地址和输出数量不同,其模型可能完全不同。如果我们不考虑这些细节,对手可以发送具有任何不需要的有效功能代码,起始地址和数量的请求命令; 或者她也可以阻止或延迟响应和模型。
我们的方法
我们认为规则分为两类:从协议导出的规则以及从配置规范中导出的规则。规则如下:1)功能码应对特定通道有效。在通道中,仅使用功能代码的一部分。2)起始地址或RN和输出数量应在有效范围内。3)对于特定通道,RN和输出数量应与预定义的值相匹配。4)响应的等待时间应在预定的持续时间内。规则1源自协议和配置规范。规则2基于协议规范,规则3和4与配置有关。在规则1中,功能码应根据协议规范有效。而对于特定通道,允许定义有效的一组功能代码。由于需求的变化,可以对该组进行修改。根据规则2,参考号码应在所使用的功能码的有效范围内。同样的规则也强制有效的输出量,使总地址不超过地址空间的有效范围; Modbus TCP协议规范中可以找到每个公共功能代码的有效地址范围和输出量。基于配置特定要求(如规则3)的规则,确保输出的起始地址和数量与特定通道的功能代码的配置值相匹配。最后,规则4确保服务器不应该长时间等待有效请求的回复。IDS规则是从通道特定配置文件生成的。
数据
我们使用两个数据集:数据集#1是来自美国现实世界运营的大型水务设施的一天痕迹,数据集#2(1使用的))是从特拉维夫大学的设施经理收集的 使用Modbus TCP监控校园电网。在我们的数据集中,使用不同种类的功能代码,如表二所列。 注意(据我们所知),在网络跟踪捕获期间没有攻击。
实验和结果
在本文中,我们将我们的规范与Goldenberg等人的单一DFA和Caselli等的DTMC进行了比较。 我们的规范被实现为Bro网络监控工具中每个通信通道的规则。对于其他两种方法,Pyshark提取数据,这是Wireshark中使用的tshark的Python工具。提取的数据存储在文件系统和MySQL中。 使用JAVA和MySQL查询创建符号。模型在JAVA中实现。DFA的结果:在DFA中,输入符号定义为4元组(33位)lt;查询/响应(1位),功能码(8位),参考号(16位),位/字 计数(8位)gt;。 请注意,响应消息没有参考号,因此这个16位部分在响应消息中保持为零。 我们使用Moore DFA来模拟转换函数采用输入符号的基本状态,并使用相应的操作返回目标状态。 在这里,定义了四种类型的过渡函数:正常(与模式中的下一个预期状态匹配),重传(基本和目的地状态相同),错(与预期状态不匹配)和未知(外观为 未知符号)转换。 一种学习算法确定是否存在一个小型化的DFA来建模通道的通信跟踪。对于候选DFA的给定长度(P attern length),性能定义为:#normal #normal #re-传输#miss #unknown用于验证数据集(其中#x表示数据集中x个事件的数量)。 该学习算法采用学习窗口长度(用于选择具有大小P长度的候选DFA的网络跟踪中的固定数量的分组),V协议窗口长度(用于验证候选DFA的网络跟踪中的固定数量的分组) 和阈值作为参数。 作者选择threshold = n n 1,其中n是候选DFA的长度。 该算法迭代地检查是否存在DFA的最小值,其性能值超过所提供的V协议窗口长度数据的阈值。如果算法在学习窗口长度内没有找到任何可接受的DFA,则返回“失败”。当性能值超过候选DFA的阈值时,该算法返回DFA。在我们的实验中,我们设置学习窗口长度= 100,V验证窗口长度= 300。像这样,我们还设置P attern length = 2并增加2,直到我们达到学习窗口长度。 对于数据集#1,我们有94个通道,超过1000个数据包。只有28%(27 out 94)产生高于阈值的DFA(即,68%的通道不能用该DFA学习算法建模)。 我们观察到,成功通道的数据大小相对较小(最大的是11 MB),而最大尺寸的通道大约为165 MB,每个通道的平均数据大小约为25 MB。对于数据集#2,所有渠道都导致了成功的DFA模型(我们得到了与此相同的结果)。
为了说明一些差异,我们从这些数据集中选择两个通道,一个具有清晰的模式(数据集1的通道1),另一个具有非周期性模式(数据集2的通道1)。所选频道使用功能码统计表格见表三。候选DFA的性能值如图2所示。我们可以看到数据集#1的通道#1产生其性能值(蓝色圆圈线)总是低于所有候选DFA大小的选择阈值的DFA。然而,对于数据集#2(黑线)的频道#1,我们获得了一个成功的DFA(大小为16),保证该DFA是该频道中互动的良好模型。了解为什么DFA模型在数据集#1中的68%的渠道失败是为了将来的工作。
DTMC的结果:在DTMC中,一个状态S由5元组定义:lt;数据,T ype,事件数,第一个被认为是,最后一个和每一个转换T(来自一个源 状态到目的地状态)由6元组定义:lt;概率,跳数,第一跳,最后跳转,平均经过时间,经过时间的标准偏差。在学习和评估阶段,状态和过渡是用训练数据构建的。 检测机制用于在训练阶段建立的模型中发现未知状态,未知转换和测试数据中的未知概率。 分别为(15225)和(57259)数据集#1和#2的两个选定通道的数据(状态,转换)(使用我们所有的数据)。然而,如果我们仅使用400个数据包(在基于DFA的算法中用于学习和验证),我们分别获得(1589)和(918)(注意,如果我们将所有数据用于DFA培训,我们的结果 不会显着变化,由于数据集中的修复引发的异常,只有一个通道无法被建模为DFA。有趣的是,一些状态只是数据集#2的通道#1的“请求”或“响应”类型。这主要是因为网络跟踪捕获的定时 - 在跟踪开始时,一些响应在没有请求数据包的情况下被收集,并且在跟踪结束时,一些请求被收集而没有响应。 例如,数据集#1的通道1只有一个未配对的TID,而数据集#2的通道1只有49153个不成对的TID。 比较:图3说明了成功生成的DFA的大小和数据集#1的94个通道的DTMC产生的状态数。回想一下,我们只能使用DFA对来自数据集#1的27个通道进行建模; 在这27个通道中学习的DFA的大小在虚线黄线的左侧以红色显示。 我们可以看到成功的DFA的长度很小(1到6之间)。在黄线的右侧是不能用DFA算法建模的通道。请注意,DTMC为这些渠道建模所需的状态数量显着增加,因为这些渠道的模式要更加复杂。 为了学习这些DTMC模型,4.数据集#1由94个通道分别产生400个数据包(蓝色)和全部数据(绿色)的转换数。使用我们所有的训练数据和400个数据包来说明这些初始数据包可以非常有效地建模少量的通道,而其他通道在这400个数据包之后表现出不同的行为,因此需要更长时间的训练。在图4中,我们显示了数据集#1中使用400个数据包和94个通道的完整数据的DTMC状态之间的转换次数。实施规范:我们在Bro中实现了我们的规范规则。 对于Modbus,Bro提供特定于特定功能的事件。 例如,对于功能代码3,有两个事件:modbus读保持寄存器请求和modbus读保持寄存器响应。 规则1(关于有效功能代码)在事件modbus消息中实现,其中我们检查通道是否携带带有非配置功能代码的数据。规则23和4在功能代码特定的请求和响应事件中实现。我
全文共7573字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[145000],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。