CN112968906B - 一种基于多元组的Modbus TCP异常通讯检测方法和*** - Google Patents
一种基于多元组的Modbus TCP异常通讯检测方法和*** Download PDFInfo
- Publication number
- CN112968906B CN112968906B CN202110316520.3A CN202110316520A CN112968906B CN 112968906 B CN112968906 B CN 112968906B CN 202110316520 A CN202110316520 A CN 202110316520A CN 112968906 B CN112968906 B CN 112968906B
- Authority
- CN
- China
- Prior art keywords
- data packet
- modbus tcp
- tuple
- function code
- inode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于多元组的Modbus TCP异常通讯检测方法,包括:从工业控制网络中获取连接,每个连接包含多个Modbus TCP数据包,按照单位时间对数据包流进行分割,得到多个数据包序列。对数据包序列中的每个Modbus TCP数据包进行解析,提取其中的多个功能码、线圈地址、数据长度。在一个数据包序列中,每个功能码对应多个数据包,将具有相同功能码的数据包归为一类,对于每一类数据包,取数据包中的数据长度进行累加求和取平均,每个功能码可以对应一个数据包平均数据长度,得到多元组C1;每个功能码对应多个线圈地址。本发明解决了现有技术只针对Modbus TCP的功能码和线圈地址这两个特征进行提取,导致流量特征提取不足,检测精度不高的技术问题。
Description
技术领域
本发明属于工业网络信息安全领域,更具体地,涉及一种基于多元组的ModbusTCP异常通讯检测方法和***。
背景技术
随着工业互联网时代的到来,越来越多的工业控制网络接入到互联网等公共网络之中,不可避免地要开始考虑工业控制网络怎样才能有更好的安全性,从而抵御来自环境错综复杂的互联网的网络攻击。并且,工业控制网络中的设备通常起着重要的作用,使用者对设备的稳定性和可靠性要求极高,如果工业网络受到攻击,可能会影响工控设备的正常运行,甚至给使用者带来巨大的损失。Modbus TCP协议被广泛应用在工业控制领域,其安全性对工业控制网络有着重大意义,其特性允许接入互联网,因此遭到网络攻击的概率会更大。
对于Modbus TCP通讯异常检测,人们已经不再满足于使用传统的异常检测算法,随着机器学习的飞速发展,许多人开始将基于机器学习的异常检测算法应用到Modbus TCP通讯异常检测中去。尚文利等人提出了一种基于PSO-SVM的Modbus TCP通讯异常检测方法,该方法虽然考虑了功能码的时序性,但是单一地对功能码序列进行检测会导致对连接的特征提取不足;陈鑫龙等人采用基于决策树的通讯异常检测方法,利用决策树对连接中数据包的功能码和线圈地址进行检测,使得算法时间复杂度和检测时延降低,但其只对单个数据包的功能码和线圈地址进行判断,没有考虑数据包之间的关联性和功能码的组合特性,因此导致检测结果偏低;李超等人提出了一种单类支持向量机算法,该研究将连接的功能码和线圈地址组合作为特征,对连接的通讯异常检测效果显著,但其对数据的处理过程过于复杂,降低了通讯的实时性。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于多元组的ModbusTCP异常通讯检测方法和***,其目的在于,通过考虑Modbus TCP数据包中的功能码与线圈地址以及功能码与数据长度的关联性,从数据包中提取两组有关联的多元组,解决现有基于PSO-SVM的Modbus TCP通讯异常检测方法存在的对连接的特征提取不足的技术问题,以及现有基于决策树的通讯异常检测方法由于没有考虑数据包之间的关联性和功能码的组合特性,导致检测结果偏低的技术问题,以及现有单类支持向量机算法由于对数据的处理过程过于复杂,因此降低了通讯实时性的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于多元组的Modbus TCP异常通讯检测方法,包括以下步骤:
(1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,对每个数据包序列中的每个Modbus TCP数据包进行解析,以获取对应的功能码、线圈地址、以及数据长度。
(2)对步骤(1)得到的Modbus TCP数据包的功能码、线圈地址、以及数据长度进行处理,以得到该Modbus TCP数据包对应的多元组C1和C2。
(3)将Modbus TCP数据包对应的多元组C1和C2分别输入训练好的异常检测模型M1和M2,以分别得到输出结果E(h1(C1))和E(h2(C2)),获取连接异常概率值并通过该连接概率值判断连接是否出现异常,其中h1(C1)为多元组C1遍历每颗iTree1n时,多元组C1所落在的外部节点到根节点的边数,h2(C2)为多元组C2遍历每颗iTree2n时,多元组C2所落在的外部节点到根节点的边数,E()表示均值处理,iTree1n为异常检测模型M1中的第n颗孤立树,iTree2n为异常检测模型M2中的第n颗孤立树。
优选地,如果连接异常概率值Score小于0.25,则判定为连接异常,反之则说明连接正常。
优选地,每个数据包序列中包含多个Modbus TCP数据包,每个Modbus TCP数据包中的MBAP中包含该数据包的数据长度,每个Modbus TCP数据包中的PDU中包含该数据包的功能码字段和线圈地址。
优选地,步骤(2)包括以下子步骤:
(2-1)根据客户端实际使用的Modbus功能码的总数确定多元组C1和C2中的对象个数n;
(2-2)根据步骤(2-1)确定的多元组C1的对象个数n,生成多元组C1,C1=(a1,a2,a3……an),其中ai为多元组C1中的元素,且有i∈[1,n];
(2-3)根据步骤(2-1)确定多元组C2的对象个数n,生成多元组C2,C2=(b1,b2,b3……bn);
优选地,多元组C1中的每个元素ai是通过以下公式计算得出:
其中g1(i)为多元组C1中第i个元素ai和与之对应的功能码的映射关系函数,SUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包所对应的数据长度的总和,NUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包的总数。
优选地,多元组C2中的每个元素bi是由以下公式计算得出:
E=Addr(g2(i))
其中g2(i)为多元组C2中第i个元素bi和与之对应的功能码的映射关系函数,Addr(g2(i))为当前数据包序列中所有包含相同功能码g2(i)的数据包所对应的线圈地址集合。
优选地,异常检测模型M1和M2都是iForest模型,且异常检测模型M1和M2是通过以下步骤训练得到的:
(3-1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,按照步骤(2-2)中所述方法将每个数据包序列转换成多元组,并将得到的所有多元组进行组合,以得到训练集SET1={C11,C12,C13,C14……},按照步骤(2-3)中所述方法将每个数据包序列转换成多元组,并将得到的多元组进行组合,以得到训练集SET2={C21,C22,C23,C24……};
(3-2)对于异常检测模型M1,从训练集SET1中随机选择ψ个样本点作为子样本放入第一孤立树iTree1的根节点iNode1n(其中iNode1n为第一孤立树iTree1的第n次迭代生成的子节点),对于异常检测模型M2,从训练集SET2中随机选择ψ个样本点作为子样本放入第二孤立树iTree2的根节点iNode2n(iNode2n为第二孤立树iTree2的第n次迭代生成的子节点),其中样本点数ψ等于256。
(3-3)对于异常检测模型M1,从子样本的属性集Q1中随机选择一个属性q1(其中属性集Q1为多元组C1对应的功能码集合),在当前节点数据中随机产生一个切割点p1∈[lengthmin,lengthmax],其中lengthmin为Modbus TCP数据包长度的最小值,且lengthmin=6,lengthmax为Modbus TCP数据包长度的最大值,且lengthmax=253。对于异常检测模型M2,从子样本的属性集Q2中随机选择一个属性q2(其中属性集Q2为多元组C2对应的功能码集合),在当前节点数据中随机产生一个切割点p2∈[0X00 00,0XFF FF]。
(3-4)对于异常检测模型M1而言,用切割点p1将子样本划分为左子树和右子树,将其属性值VAL(q1)小于p1的所有多元组C1x置于左子树中当前节点iNode1n的左孩子节点iNode1(n+1),将其属性值VAL(q1)大于等于p1的所有多元组C1x置于右子树中当前节点iNode1n的右孩子节点iNode1(n+1)。对于异常检测模型M2而言,用切割点p2将子样本划分为左子树和右子树,将其属性值VAL(q2)小于p2的所有多元组C2x置于左子树中当前节点iNode2n的左孩子节点iNode2(n+1),将其属性值VAL(q2)大于等于p2的所有多元组C2x置于右子树中当前节点iNode2n的右孩子节点iNode2(n+1)。
(3-5)对于异常检测模型M1和M2,在孩子节点中递归步骤(3-3)和(3-4),以不断迭代生成新的孩子节点,直到孩子节点中只有一个数据或树的高度达到限定的高度l为止;
(3-6)重复上述步骤(3-2)至(3-5)达100次,从而得到训练好的异常检测模型M1和M2,其中iForest1和iForest2分别表示两个孤立森林。
按照本发明的另一方面,提供了一种基于多元组的Modbus TCP异常通讯检测***,包括:
第一模块,用于从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,对每个数据包序列中的每个Modbus TCP数据包进行解析,以获取对应的功能码、线圈地址、以及数据长度。
第二模块,用于对第一模块得到的Modbus TCP数据包的功能码、线圈地址、以及数据长度进行处理,以得到该Modbus TCP数据包对应的多元组C1和C2。
第三模块,用于将Modbus TCP数据包对应的多元组C1和C2分别输入训练好的异常检测模型M1和M2,以分别得到输出结果E(h1(C1))和E(h2(C2)),获取连接异常概率值并通过该连接概率值判断连接是否出现异常,其中h1(C1)为多元组C1遍历每颗iTree1n时,多元组C1所落在的外部节点到根节点的边数,h2(C2)为多元组C2遍历每颗iTree2n时,多元组C2所落在的外部节点到根节点的边数,E()表示均值处理,iTree1n为异常检测模型M1中的第n颗孤立树,iTree2n为异常检测模型M2中的第n颗孤立树。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用了步骤(1),其充分考虑了Modbus TCP数据包中的功能码与线圈地址以及功能码与数据长度的关联性,因此能够解决现有基于功能码和线圈地址的Modbus TCP通讯异常检测特征提取不足的技术问题。
(2)由于本发明采用了步骤(2),其将功能码与平均数据长度映射成多元组,将与功能码对应的线圈地址进行异或运算的结果映射成多元组,因此能够解决现有基于功能码序列的检测技术没有考虑不同功能码下,数据长度特征和线圈地址的组合特征的技术问题。
(3)由于本发明采用了步骤(3)和(4),其使用了双iForest模型进行异常通讯的实时检测,易于部署到并行计算平台上,因此能够解决现有基于高复杂度的单检测模型的检测技术进行检测带来的高延时的技术问题。
附图说明
图1是本发明基于多元组的Modbus TCP异常通讯检测方法的流程图。
图2是本发明基于多元组的Modbus TCP异常通讯检测方法的多元组生成过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的基本思路在于,对Modbus TCP连接中的数据包序列进行特征提取,考虑了数据包中的功能码与线圈地址以及功能码与数据长度的关联性,即能够反映出不同的功能码下,线圈地址的组合不同,平均数据包的大小也不同的特征。从而可以通过对单个数据包序列中的数据包按照功能码进行分类,得到每个功能码对应的平均数据长度和线圈地址二进制位的异或组合这两个特征。解决了现有技术只针对Modbus TCP数据包序列中的功能码和线圈地址这两个特征进行提取,导致的流量特征提取不足,检测精度不高的技术问题。提供了一种基于多元组的Modbus TCP异常通讯检测方法。
如图1所示,本发明提供了一种基于多元组的Modbus TCP异常通讯检测方法,包括以下步骤:
(1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,对每个数据包序列中的每个Modbus TCP数据包进行解析,以获取对应的功能码、线圈地址、以及数据长度。
具体而言,每个数据包序列中包含多个Modbus TCP数据包,每个Modbus TCP数据包中的应用协议头(Modbus application protocol header,简称MBAP)中包含该数据包的数据长度,每个Modbus TCP数据包中的分组数据单元(Packet data unit,简称PDU)中包含该数据包的功能码字段和线圈地址。
本步骤(1)的优点在于,不仅考虑了Modbus TCP连接中数据包的功能码、线圈地址,还考虑了数据包的数据长度,更能反映出当前连接的状态。
(2)对步骤(1)得到的Modbus TCP数据包的功能码、线圈地址、以及数据长度进行处理,以得到该Modbus TCP数据包对应的多元组C1和C2。
如图2所示,本步骤包括以下子步骤:
(2-1)根据客户端实际使用的Modbus功能码的总数确定多元组C1和C2中的对象个数n;
具体而言,Modbus标准中定义的功能码有21个(1~21),保留作拓展功能备用的功能码有43个(22~64),保留以备用户功能所用的功能码有8个(65~72),非法功能47个(73~119),保留作内部作用8个(120~127),保留用于异常应答128个(128~255)。
例如,某工厂的Modbus TCP通信中,客户端使用的功能码是0x01 0x02 0x03 0x040x05 0x06 0x15 0x16,则多元组C=(a1,a2,a3......an),其中a1对应0x01,a2对应0x02,…,以此类推,此处n=8。如a1的位置对应于第一个功能码0x01,它的取值由当前数据包序列中所有功能码为0x01的数据包决定。
(2-2)根据步骤(2-1)确定的多元组C1的对象个数n,生成多元组C1,C1=(a1,a2,a3......an),其中ai为多元组C1中的元素,且有i∈[1,n];
更具体地,多元组C1中的每个元素ai是通过以下公式计算得出:
其中g1(i)为多元组C1中第i个元素ai和与之对应的功能码的映射关系函数,SUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包所对应的数据长度的总和,NUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包的总数。
(2-3)根据步骤(2-1)确定多元组C2的对象个数n,生成多元组C2,
C2=(b1,b2,b3......bn);
更具体地,多元组C2中的每个元素bi是由以下公式计算得出:
E=Addr(g2(i))
其中g2(i)为多元组C2中第i个元素bi和与之对应的功能码的映射关系函数,Addr(g2(i))为当前数据包序列中所有包含相同功能码g2(i)的数据包所对应的线圈地址集合。
如当前数据包序列中没有包含功能码g2(i)的数据包,则Addr()返回0x00 00,bi=0x00 00,否则,bi的值等于对E中所有线圈地址的二进制位进行异或运算后的结果。
本步骤(2)的优点在于,将功能码隐式地置于多元组的不同对象下,即多元组中的每个对象的值都是基于某个包含特定功能码的数据包计算得到的。充分反映出不同功能码下,数据长度特征和线圈地址的组合特征。
(3)将Modbus TCP数据包对应的多元组C1和C2分别输入训练好的异常检测模型M1和M2,以分别得到输出结果E(h1(C1))和e(h2(C2)),获取连接异常概率值并通过该连接概率值判断连接是否出现异常,其中h1(C1)为多元组C1遍历每颗iTree1n时,多元组C1所落在的外部节点到根节点的边数,h2(C2)为多元组C2遍历每颗iTree2n时,多元组C2所落在的外部节点到根节点的边数,E()表示均值处理,iTree1n为异常检测模型M1中的第n颗孤立树,iTree2n为异常检测模型M2中的第n颗孤立树;
具体而言,如果Score小于0.25,则判定为连接异常,反之则说明连接正常。
本发明中使用的异常检测模型M1和M2都是iForest模型,iForest是非监督学习异常检测模型,因此无需对训练数据集进行人工标记。根据相关文献数据,使用只有正常样本的数据集进行模型训练,对模型的检测精度影响极小,且可通过增加孤立树数目的方式提高模型检测精度,弥补没有非正常样本所带来的精度损失。
具体而言,本步骤的异常检测模型M1和M2是通过以下步骤训练得到的:
(3-1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,按照步骤(2-2)中所述方法将每个数据包序列转换成多元组,并将得到的所有多元组进行组合,以得到训练集SET1={C11,C12,C13,C14......},按照步骤(2-3)中所述方法将每个数据包序列转换成多元组,并将得到的多元组进行组合,以得到训练集SET2={C21,C22,C23,C24......};
(3-2)对于异常检测模型M1,从训练集SET1中随机选择ψ个样本点作为子样本放入第一孤立树iTree1的根节点iNode1n(其中iNode1n为第一孤立树iTree1的第n次迭代生成的子节点),对于异常检测模型M2,从训练集SET2中随机选择ψ个样本点作为子样本放入第二孤立树iTree2的根节点iNode2n(iNode2N为第二孤立树iTree2的第n次迭代生成的子节点),其中样本点数ψ等于256。
训练集SET1用于训练异常检测模型M1,训练集SET2用于训练异常检测模型M2。两个模型的初始参数一致,由于样本点数ψ=256,则每棵树的限定高度l=ceiling(log2ψ)=8,孤立树的数目t=100。
(3-3)对于异常检测模型M1,从子样本的属性集Q1中随机选择一个属性q1(其中属性集Q1为多元组C1对应的功能码集合),在当前节点数据中随机产生一个切割点p1∈[lengthmin,lengthmax],其中tengthmin为Modbus TCP数据包长度的最小值,且lengthmin=6,lengthmax为Modbus TCP数据包长度的最大值,且lengthmax=253。对于异常检测模型M2,从子样本的属性集Q2中随机选择一个属性q2(其中属性集Q2为多元组C2对应的功能码集合),在当前节点数据中随机产生一个切割点p2∈[0X00 00,0XFF FF]。
(3-4)对于异常检测模型M1而言,用切割点p1将子样本划分为左子树和右子树,将其属性值VAL(q1)小于p1的所有多元组C1x置于左子树中当前节点iNode1n的左孩子节点iNode1(n+1),将其属性值VAL(q1)大于等于p1的所有多元组C1x置于右子树中当前节点iNode1n的右孩子节点iNode1(n+1)。对于异常检测模型M2而言,用切割点p2将子样本划分为左子树和右子树,将其属性值VAL(q2)小于p2的所有多元组C2x置于左子树中当前节点iNode2n的左孩子节点iNode2(n+1),将其属性值VAL(q2)大于等于p2的所有多元组C2x置于右子树中当前节点iNode2n的右孩子节点iNode2(n+1)。
具体而言,多元组的属性值VAL(q1)代表多元组C1x的属性q1对应的值,多元组的属性值VAL(q2)代表多元组C2x的属性q2对应的值。例如,C1x=(a1,a2,a3......an),a3对应的功能码为0x12,q1=0x12,那么有VAL(q1)=a3。
(3-5)对于异常检测模型M1和M2,在孩子节点中递归步骤(3-3)和(3-4),以不断迭代生成新的孩子节点,直到孩子节点中只有一个数据或树的高度达到限定的高度l为止;
(3-6)重复上述步骤(3-2)至(3-5)达100次,对于模型M1有iTree1 1,iTree1 2,iTreei 3......iTree1 100∈iForeSt1,对于模型M2有iTree2 1,iTree2 2,iTree2 3……iTree2 100∈iForest2,从而得到训练好的异常检测模型M1和M2,其中iForest1和iForest2分别表示两个孤立森林。
本步骤(3)的优点在于,其使用了两个基于孤立森林的检测模型对通讯进行异常检测,单个模型对每个多元组进行检测的时间复杂度低,为O(t logψ),且很容易部署到并行计算平台上。这里,同上述所说,t为孤立树数。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于多元组的Modbus TCP异常通讯检测方法,其特征在于,包括以下步骤:
(1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,对每个数据包序列中的每个Modbus TCP数据包进行解析,以获取对应的功能码、线圈地址、以及数据长度;
(2)对步骤(1)得到的Modbus TCP数据包的功能码、线圈地址、以及数据长度进行处理,以得到该Modbus TCP数据包对应的多元组C1和C2;步骤(2)包括以下子步骤:
(2-1)根据客户端实际使用的Modbus功能码的总数确定多元组C1和C2中的对象个数n;
(2-2)根据步骤(2-1)确定的多元组C1的对象个数n,生成多元组C1,C1=(a1,a2,a3……an),其中ai为多元组C1中的元素,且有i∈[1,n];
(2-3)根据步骤(2-1)确定多元组C2的对象个数n,生成多元组C2,C2=(b1,b2,b3......bn);
其中多元组C1中的每个元素ai是通过以下公式计算得出:
其中g1(i)为多元组C1中第i个元素ai和与之对应的功能码的映射关系函数,SUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包所对应的数据长度的总和,NUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包的总数;
多元组C2中的每个元素bi是由以下公式计算得出:
E=Addr(g2(i))
其中g2(i)为多元组C2中第i个元素bi和与之对应的功能码的映射关系函数,Addr(g2(i))为当前数据包序列中所有包含相同功能码g2(i)的数据包所对应的线圈地址集合;
(3)将Modbus TCP数据包对应的多元组C1和C2分别输入训练好的异常检测模型M1和M2,以分别得到输出结果E(h1(C1))和E(h2(C2)),获取连接异常概率值并通过该连接异常 概率值判断连接是否出现异常,其中h1(C1)为多元组C1遍历每颗iTree1n时,多元组C1所落在的外部节点到根节点的边数,h2(C2)为多元组C2遍历每颗iTree2n时,多元组C2所落在的外部节点到根节点的边数,E()表示均值处理,iTree1n为异常检测模型M1中的第n颗孤立树,iTree2n为异常检测模型M2中的第n颗孤立树;其中异常检测模型M1和M2都是iForest模型,且异常检测模型M1和M2是通过以下步骤训练得到的:
(3-1)从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,按照步骤(2-2)中所述方法将每个数据包序列转换成多元组,并将得到的所有多元组进行组合,以得到训练集SET1={C11,C12,C13,C14......},按照步骤(2-3)中所述方法将每个数据包序列转换成多元组,并将得到的多元组进行组合,以得到训练集SET2={C21,C22,C23,C24......};
(3-2)对于异常检测模型M1,从训练集SET1中随机选择ψ个样本点作为子样本放入第一孤立树iTree1的根节点iNode1n,对于异常检测模型M2,从训练集SET2中随机选择ψ个样本点作为子样本放入第二孤立树iTree2的根节点iNode2n,其中样本点数ψ等于256,iNode1n为第一孤立树iTree1的第n次迭代生成的子节点,iNode2n为第二孤立树iTree2的第n次迭代生成的子节点;
(3-3)对于异常检测模型M1,从子样本的属性集Q1中随机选择一个属性q1,在当前节点数据中随机产生一个切割点p1∈[lengthmin,lengthmax],其中lengthmin为Modbus TCP数据包长度的最小值,且lengthmin=6,lengthmax为Modbus TCP数据包长度的最大值,且lengthmax=253;对于异常检测模型M2,从子样本的属性集Q2中随机选择一个属性q2,在当前节点数据中随机产生一个切割点p2∈[0X0000,0XFF FF],其中属性集Q1为多元组C1对应的功能码集合,属性集Q2为多元组C2对应的功能码集合;
(3-4)对于异常检测模型M1而言,用切割点p1将子样本划分为左子树和右子树,将其属性值VAL(q1)小于p1的所有多元组C1x置于左子树中当前节点iNode1n的左孩子节点iNode1(n+1),将其属性值VAL(q1)大于等于p1的所有多元组C1x置于右子树中当前节点iNode1n的右孩子节点iNode1(n+1);对于异常检测模型M2而言,用切割点p2将子样本划分为左子树和右子树,将其属性值VAL(q2)小于p2的所有多元组C2x置于左子树中当前节点iNode2n的左孩子节点iNode2(n+1),将其属性值VAL(q2)大于等于p2的所有多元组C2x置于右子树中当前节点iNode2n的右孩子节点iNode2(n+1);
(3-5)对于异常检测模型M1和M2,在孩子节点中递归步骤(3-3)和(3-4),以不断迭代生成新的孩子节点,直到孩子节点中只有一个数据或树的高度达到限定的高度l为止;
(3-6)重复上述步骤(3-2)至(3-5)达100次,从而得到训练好的异常检测模型M1和M2,其中iForest1和iForest2分别表示两个孤立森林。
2.根据权利要求1所述的基于多元组的Modbus TCP异常通讯检测方法,其特征在于,如果连接异常概率值Score小于0.25,则判定为连接异常,反之则说明连接正常。
3.根据权利要求1或2所述的基于多元组的Modbus TCP异常通讯检测方法,其特征在于,每个数据包序列中包含多个Modbus TCP数据包,每个Modbus TCP数据包中的MBAP中包含该数据包的数据长度,每个Modbus TCP数据包中的PDU中包含该数据包的功能码字段和线圈地址。
4.一种基于多元组的Modbus TCP异常通讯检测***,其特征在于,包括:
第一模块,用于从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,对每个数据包序列中的每个Modbus TCP数据包进行解析,以获取对应的功能码、线圈地址、以及数据长度;
第二模块,用于对第一模块得到的Modbus TCP数据包的功能码、线圈地址、以及数据长度进行处理,以得到该Modbus TCP数据包对应的多元组C1和C2;第二模块包括以下子步骤:
第一子模块,用于根据客户端实际使用的Modbus功能码的总数确定多元组C1和C2中的对象个数n;
第二子模块,用于根据第一子模块确定的多元组C1的对象个数n,生成多元组C1,C1=(a1,a2,a3......an),其中ai为多元组C1中的元素,且有i∈[1,n];
第三子模块,用于根据第一子模块确定多元组C2的对象个数n,生成多元组C2,C2=(b1,b2,b3......bn);
其中多元组C1中的每个元素ai是通过以下公式计算得出:
其中g1(i)为多元组C1中第i个元素ai和与之对应的功能码的映射关系函数,SUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包所对应的数据长度的总和,NUM(g1(i))为当前数据包序列中所有包含相同功能码g1(i)的数据包的总数;
多元组C2中的每个元素bi是由以下公式计算得出:
E=Addr(g2(i))
其中g2(i)为多元组C2中第i个元素bi和与之对应的功能码的映射关系函数,Addr(g2(i))为当前数据包序列中所有包含相同功能码g2(i)的数据包所对应的线圈地址集合;
第三模块,用于将Modbus TCP数据包对应的多元组C1和C2分别输入训练好的异常检测模型M1和M2,以分别得到输出结果E(h1(C1))和E(h2(C2)),获取连接异常概率值并通过该连接异常 概率值判断连接是否出现异常,其中h1(C1)为多元组C1遍历每颗iTree1n时,多元组C1所落在的外部节点到根节点的边数,h2(C2)为多元组C2遍历每颗iTree2n时,多元组C2所落在的外部节点到根节点的边数,E()表示均值处理,iTree1n为异常检测模型M1中的第n颗孤立树,iTree2n为异常检测模型M2中的第n颗孤立树,其中异常检测模型M1和M2都是iForest模型,且异常检测模型M1和M2是通过以下步骤训练得到的:
第四子模块,用于从工业互联网获取Modbus TCP连接,其包括多个Modbus TCP数据包,按照单位时间对Modbus TCP数据包进行分割,以得到多个数据包序列,按照第二子模块中所述方法将每个数据包序列转换成多元组,并将得到的所有多元组进行组合,以得到训练集SET1={C11,C12,C13,C14……},按照第三子模块中所述方法将每个数据包序列转换成多元组,并将得到的多元组进行组合,以得到训练集SET2={C21,C22,C23,C24……};
第五子模块,用于对于异常检测模型M1,从训练集SET1中随机选择ψ个样本点作为子样本放入第一孤立树iTree1的根节点iNode1n,对于异常检测模型M2,从训练集SET2中随机选择ψ个样本点作为子样本放入第二孤立树iTree2的根节点iNode2n,其中样本点数ψ等于256,iNode1n为第一孤立树iTree1的第n次迭代生成的子节点,iNode2n为第二孤立树iTree2的第n次迭代生成的子节点;
第六子模块,用于对于异常检测模型M1,从子样本的属性集Q1中随机选择一个属性q1,在当前节点数据中随机产生一个切割点p1∈[lengthmin,lengthmax],其中lengthmin为Modbus TCP数据包长度的最小值,且lengthmin=6,lengthmax为Modbus TCP数据包长度的最大值,且lengthmax=253;对于异常检测模型M2,从子样本的属性集Q2中随机选择一个属性q2,在当前节点数据中随机产生一个切割点p2∈[0X0000,0XFF FF],其中属性集Q1为多元组C1对应的功能码集合,属性集Q2为多元组C2对应的功能码集合;
第七子模块,用于对于异常检测模型M1而言,用切割点p1将子样本划分为左子树和右子树,将其属性值VAL(q1)小于p1的所有多元组C1x置于左子树中当前节点iNode1n的左孩子节点iNode1(n+1),将其属性值VAL(q1)大于等于p1的所有多元组C1x置于右子树中当前节点iNode1n的右孩子节点iNode1(n+1);对于异常检测模型M2而言,用切割点p2将子样本划分为左子树和右子树,将其属性值VAL(q2)小于p2的所有多元组C2x置于左子树中当前节点iNode2n的左孩子节点iNode2(n+1),将其属性值VAL(q2)大于等于p2的所有多元组C2x置于右子树中当前节点iNode2n的右孩子节点iNode2(n+1);
第八子模块,用于对于异常检测模型M1和M2,在孩子节点中递归第六子模块和第七子模块,以不断迭代生成新的孩子节点,直到孩子节点中只有一个数据或树的高度达到限定的高度l为止;
第九子模块,用于重复上述步骤第五子模块至第八子模块达100次,从而得到训练好的异常检测模型M1和M2,其中iForest1和iForest2分别表示两个孤立森林。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110316520.3A CN112968906B (zh) | 2021-03-25 | 2021-03-25 | 一种基于多元组的Modbus TCP异常通讯检测方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110316520.3A CN112968906B (zh) | 2021-03-25 | 2021-03-25 | 一种基于多元组的Modbus TCP异常通讯检测方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112968906A CN112968906A (zh) | 2021-06-15 |
CN112968906B true CN112968906B (zh) | 2022-02-18 |
Family
ID=76278387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110316520.3A Active CN112968906B (zh) | 2021-03-25 | 2021-03-25 | 一种基于多元组的Modbus TCP异常通讯检测方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112968906B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114500267B (zh) * | 2022-01-14 | 2024-05-28 | 深圳市汇川技术股份有限公司 | 映射关系配置方法、装置、***、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1147677A (zh) * | 1995-10-06 | 1997-04-16 | 清华大学 | 地址码反应堆控制棒棒位测量*** |
CN106209843A (zh) * | 2016-07-12 | 2016-12-07 | 工业和信息化部电子工业标准化研究院 | 一种面向Modbus协议的数据流异常分析方法 |
CN108574694A (zh) * | 2018-04-20 | 2018-09-25 | 浙江中控技术股份有限公司 | 一种Modbus TCP安全防护方法及装置 |
CN110266680A (zh) * | 2019-06-17 | 2019-09-20 | 辽宁大学 | 一种基于双重相似性度量的工业通信异常检测方法 |
CN112350912A (zh) * | 2020-10-29 | 2021-02-09 | 山东八五信息技术有限公司 | 一种基于Modbus协议的数据采集方法、***和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704103B (zh) * | 2014-11-26 | 2017-05-10 | 中国科学院沈阳自动化研究所 | 基于OCSVM双轮廓模型的Modbus TCP通信行为异常检测方法 |
CN105182820B (zh) * | 2015-08-25 | 2017-12-05 | 太原理工大学 | 一种煤矿综采工作面大型装备集中控制平台的实现方法 |
CN110536258B (zh) * | 2019-08-09 | 2021-07-16 | 大连理工大学 | 一种UASNs中基于孤立森林的信任模型 |
CN111294264B (zh) * | 2020-02-17 | 2021-12-24 | 北京和利时***集成有限公司 | 一种基于Modbus TCP协议的通信方法及装置 |
CN112398819A (zh) * | 2020-11-02 | 2021-02-23 | 杭州海康威视数字技术股份有限公司 | 异常识别的方法及装置 |
-
2021
- 2021-03-25 CN CN202110316520.3A patent/CN112968906B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1147677A (zh) * | 1995-10-06 | 1997-04-16 | 清华大学 | 地址码反应堆控制棒棒位测量*** |
CN106209843A (zh) * | 2016-07-12 | 2016-12-07 | 工业和信息化部电子工业标准化研究院 | 一种面向Modbus协议的数据流异常分析方法 |
CN108574694A (zh) * | 2018-04-20 | 2018-09-25 | 浙江中控技术股份有限公司 | 一种Modbus TCP安全防护方法及装置 |
CN110266680A (zh) * | 2019-06-17 | 2019-09-20 | 辽宁大学 | 一种基于双重相似性度量的工业通信异常检测方法 |
CN112350912A (zh) * | 2020-10-29 | 2021-02-09 | 山东八五信息技术有限公司 | 一种基于Modbus协议的数据采集方法、***和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112968906A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109450842B (zh) | 一种基于神经网络的网络恶意行为识别方法 | |
CN109063745B (zh) | 一种基于决策树的网络设备类型识别方法及*** | |
CN110311829B (zh) | 一种基于机器学习加速的网络流量分类方法 | |
CN113364752B (zh) | 一种流量异常检测方法、检测设备及计算机可读存储介质 | |
Jianliang et al. | The application on intrusion detection based on k-means cluster algorithm | |
US7944822B1 (en) | System and method for identifying network applications | |
CN109450721B (zh) | 一种基于深度神经网络的网络异常行为识别方法 | |
CN110868404B (zh) | 一种基于tcp/ip指纹的工控设备自动识别方法 | |
US10454777B2 (en) | Network data processing driver for a cognitive artifical intelligence system | |
Lee et al. | Feature selection algorithm for intrusions detection system using sequential forward search and random forest classifier | |
CN112804253B (zh) | 一种网络流量分类检测方法、***及存储介质 | |
CN114124482B (zh) | 基于lof和孤立森林的访问流量异常检测方法及设备 | |
CN114157502B (zh) | 一种终端识别方法、装置、电子设备及存储介质 | |
Alshammari et al. | Investigating two different approaches for encrypted traffic classification | |
CN113452672B (zh) | 基于协议逆向分析的电力物联网终端流量异常分析方法 | |
CN111245784A (zh) | 多维度检测恶意域名的方法 | |
CN112800424A (zh) | 一种基于随机森林的僵尸网络恶意流量监测方法 | |
CN111835763A (zh) | 一种dns隧道流量检测方法、装置及电子设备 | |
CN112968906B (zh) | 一种基于多元组的Modbus TCP异常通讯检测方法和*** | |
Purnama et al. | Features extraction on IoT intrusion detection system using principal components analysis (PCA) | |
CN116915450A (zh) | 基于多步网络攻击识别和场景重构的拓扑剪枝优化方法 | |
CN116781341A (zh) | 一种基于大语言模型的去中心化网络DDoS攻击识别方法 | |
CN111291078A (zh) | 一种域名匹配检测方法及装置 | |
CN115913655B (zh) | 一种基于流量分析和语义分析的Shell命令注入检测方法 | |
Tang et al. | Malware Traffic Classification Based on Recurrence Quantification Analysis. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220713 Address after: 410000 No. 102, Heguang Road, Xianghu street, Furong district, Changsha City, Hunan Province Patentee after: Hunan Kuangan Network Technology Co.,Ltd. Address before: Yuelu District City, Hunan province 410082 Changsha Lushan Road No. 1 Patentee before: HUNAN University Patentee before: Hunan Kuangan Network Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |