CN105306463B - 基于支持向量机的Modbus TCP入侵检测方法 - Google Patents
基于支持向量机的Modbus TCP入侵检测方法 Download PDFInfo
- Publication number
- CN105306463B CN105306463B CN201510672981.9A CN201510672981A CN105306463B CN 105306463 B CN105306463 B CN 105306463B CN 201510672981 A CN201510672981 A CN 201510672981A CN 105306463 B CN105306463 B CN 105306463B
- Authority
- CN
- China
- Prior art keywords
- function code
- data sequence
- mrow
- coil
- data
- 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.)
- Expired - Fee Related
Links
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/1416—Event detection, e.g. attack signature detection
Abstract
本发明公开了一种基于支持向量机的Modbus TCP入侵检测方法,预先采集工业控制系统在正常状态下和入侵状态下预定时长内的Modbus TCP数据,提取出客户机向服务器请求的Modbus数据包的功能码和线圈地址,按照时间先后顺序进行排列得到正常状态数据序列和入侵状态数据序列,分别对正常状态数据序列和入侵状态数据序列进行数据统计,得到每个子序列中各个功能码对应的各类线圈地址的出现频率,构建特征向量;将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;在入侵检测过程中,实时采集得到特征向量,输入支持向量机分类模型得到检测结果。本发明可以实现更精确化和细致化的入侵检测。
Description
技术领域
本发明属于Modbus TCP入侵检测技术领域,更为具体地讲,涉及一种基于支持向量机的Modbus TCP入侵检测方法。
背景技术
工业控制系统广泛的应用于我国电力、水利、污水处理、石油天然气、化工、交通运输、制药以及大型制造行业,过去十年间,工业控制系统开始广泛采用信息技术,开放的软硬件技术、协议标准的应用以及工业控制系统和信息系统的集成使工业控制系统接口越来越开放,减弱了系统与外界的隔离。越来越多的案例表明,来自商业网络、因特网以及其它因素导致的信息安全问题正逐渐在工业控制系统中扩散,直接影响了工业稳定生产及人身安全。而Modbus TCP协议作为一种通讯协议,被广泛的应用于多种工业控制系统中,保证Modbus TCP通讯的安全,具有重大的意义。图1是基于Modbus TCP通讯的工业控制网络拓扑框图。如图1所示,基于Modbus TCP通讯的工业控制网络包括Modbus服务器和Modbus客户机,通过工业控制网络进行通信。
Modbus TCP通讯的安全技术主要包括防火墙技术、隔离网闸、加密传输技术、入侵检测技术、Modbus TCP深度包解析等。防火墙技术主要提供传输层与网络层的访问控制机制,体现了系统管理的安全策略,但是其技术缺乏对于应用层协议的支持,无法防御来至于应用层层面的攻击。隔离网闸技术阻断对重要设施的直接访问,可以极大程度减少系统风险,但是隔离网闸的部署需要依赖于工业控制系统合理的层次划分与拓扑设计,而往往由于业务需要不能进行尽善尽美的结构设计。加密传输技术可以防止通讯信息遭受窃取与篡改,但是会加重息处理的负担,会对工业控制系统通讯的实时性造成一定的影响,另外工业设备中的芯片处理能力也难以支持复杂的加密方法。入侵检测技术将网络中捕获的流量与已知的攻击特征模式进行匹配,识别出攻击行为,可作为其他安全技术的有力补充。但是该方法需要建立在已知攻击特征的基础之上,无法应对攻击特征未知的情况。Modbus TCP深度包解析的研究相对较少,虽然该方法能对数据包头以及数据内容等信息进行分析和识别。但该方法是一种被动式的防御,一旦攻击行为做到高精度的伪造,防御将失效,仍然无法确保Modbus TCP通讯的安全。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于支持向量机的Modbus TCP入侵检测方法,根据线圈地址的出现频率来构建特征向量,实现对Modbus TCP入侵的准确检测。
为实现上述发明目的,本发明基于支持向量机的Modbus TCP入侵检测方法包括以下步骤:
S1:采集工业控制系统在正常状态下和入侵状态下预定时长的Modbus TCP数据,提取出Modbus数据包,然后提取出客户机向服务器请求的Modbus数据包,提取得到每个数据包的功能码和线圈地址;将数据包的功能码和线圈地址,按照时间先后顺序进行排列,得到数据序列;
S2:对数据序列进行数据统计,提取得到特征向量,其具体方法为:将数据序列划分成长度为L的N个子序列,对于每个子序列,统计每个功能码对应的各类线圈地址的出现次数其中n表示子序列的序号,n的取值范围为n=1,2,…,N,i表示功能码的编号,i的取值范围为根据实际需要确定,j表示功能码i对应的线圈地址的类别号,j的取值范围为n=1,2,…,Mi,Mi表示功能码i对应的线圈地址类别数量;计算子序列n中功能码i对应的第j类线圈地址的出现频率
构建子序列n对应的特征向量其中I表示功能码编号i的最大值;
S3:将正常状态数据序列对应的特征向量标记为1,入侵状态数据序列对应的特征向量标记为0,将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;
S4:在实际的入侵检测过程中,实时连续采集客户机向服务器请求的Modbus数据包,提取功能码和线圈地址,得到长度为L的数据序列,采用步骤S2中的方法得到对应的特征向量,输入支持向量机分类模型,得到是否存在入侵的检测结果。
本发明基于支持向量机的Modbus TCP入侵检测方法,预先采集工业控制系统在正常状态下和入侵状态下预定时长的Modbus TCP数据,提取出客户机向服务器请求的Modbus数据包的功能码和线圈地址,按照时间先后顺序进行排列得到正常状态数据序列和入侵状态数据序列,分别对正常状态数据序列和入侵状态数据序列进行数据统计,得到每个子序列中各个功能码对应的各类线圈地址的出现频率,构建特征向量;将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;在入侵检测过程中,实时采集得到特征向量,输入支持向量机分类模型得到检测结果。本发明采用功能码对应线圈地址出现的频率作为检测特征,相比于一般只选择功能码作为检测特征的技术,本发明在检测上更精确化和细致化。
附图说明
图1是基于Modbus TCP通讯的工业控制网络拓扑框图;
图2是本发明基于支持向量机的Modbus TCP入侵检测方法的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图2是本发明基于支持向量机的Modbus TCP入侵检测方法的流程图。如图2所示,本发明基于支持向量机的Modbus TCP入侵检测方法包括以下步骤:
S201:数据采集:
首先需要对Modbus TCP数据进行数据采集,其具体过程为:采集工业控制系统在正常状态下和入侵状态下预定时长的Modbus TCP数据。本实施例中利用Linux内核的Netfilter机制编写采集流量模块,来采集Modbus TCP数据。从Modbus TCP数据中提取出Modbus数据包,然后去除响应客户机请求的Modbus数据包,在剩余的客户机向服务器请求的Modbus数据包中提取得到每个数据包的功能码和线圈地址。将数据包的功能码和线圈地址,按照时间先后顺序进行排列,得到数据序列。
S202:计算特征向量:
对数据序列进行数据统计,提取得到特征向量。其具体的方法为:
将数据序列划分成长度为L的N个子序列,也就是每个子序列中包含L组数据,对于每个子序列,统计每个功能码对应的各类线圈地址的出现次数其中n表示子序列的序号,n的取值范围为n=1,2,…,N,i表示功能码的编号,其取值范围根据实际需要确定。按照Modbus协议,可用功能码为255个。经统计可知,Modbus中常用的功能码对应i的取值范围为i=1-8,11-17,20-24,40,42,43,48,66,67,91,100,125,126。j表示功能码i对应的线圈地址的类别号,j的取值范围为n=1,2,…,Mi,Mi表示功能码i对应的线圈地址类别数量。
本实施例中采用链表来进行统计,链表项的匹配项为功能码和线圈地址类别。依次对子序列中的每个数据在链表中进行匹配,如果功能码和线圈地址类别存在,则将对应的数值加1,否则在链表中新增加功能码和线圈地址类别的匹配项,将对应的数值置为1。在对子序列中的所有数据统计完毕后,输出链表中存在的功能码和线圈地址类别对应的统计数据将链表中不存在的功能码和线圈地址类别对应的统计数据置为0。
在对子序列统计完成后,计算子序列n中功能码i对应的第j类线圈地址的出现频率
根据得到的功能码i对应的第j类线圈地址的出现频率构建子序列n对应的特征向量其中I表示功能码编号i的最大值。也就是说,将每个功能码对应的每类线圈地址的出现频率构成特征向量。
S203:支持向量机模型训练:
将正常状态数据序列对应的特征向量标记为1,入侵状态数据序列对应的特征向量标记为0,将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型。
S204:入侵检测:
在实际的入侵检测过程中,实时连续采集客户机向服务器请求的Modbus数据包,提取功能码和线圈地址,得到长度为L的数据序列,采用步骤S202中的方法得到对应的特征向量,输入支持向量机分类模型,根据输出结果来得到是否存在入侵的检测结果。
为了说明本发明的检测效果,采用仿真工业控制系统进行实验验证。在仿真工业控制系统中,采集了150个数据,其中125个正常状态下的样本,25个入侵状态下的异常样本,取子序列长度为5。经过数据预处理后,得到每个子序列的特征向量。
将所有特征向量分成5份,其中4份作为训练样本输入支持向量机模块中,得到检测模型。模型参数如下:
本实施例中采用径向基核函数,核函数参数nu=0.090472,转化为二次规划求解得到的最小值obj=-7.134602,判决函数的偏置项rho=0.534765,标准支持向量数量nSV=26,边界上的支持向量数量nBSV=2,支持向量总数量Total nSV=26。
将剩余1份特征向量分别对检测模型进行测试。经对测试结果进行统计,分类准确度可达到95.6753%,可见本发明所提供的基于支持向量机的Modbus TCP入侵检测方法能够有效实现对Modbus TCP入侵事件的检测。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (1)
1.一种基于支持向量机的Modbus TCP入侵检测方法,其特征在于,包括以下步骤:
S1:采集工业控制系统在正常状态下和入侵状态下预定时长的Modbus TCP数据,提取出Modbus数据包,然后提取出客户机向服务器请求的Modbus数据包,提取得到每个数据包的功能码和线圈地址;将正常状态下每个数据包的功能码和线圈地址作为一组数据,按照时间先后顺序进行排列,得到正常状态数据序列,根据同样的方法得到入侵状态数据序列;
S2:对数据序列进行数据统计,提取得到特征向量,其具体方法为:将数据序列划分成长度为L的N个子序列,对于每个子序列,统计每个功能码对应的各类线圈地址的出现次数其中n表示子序列的序号,n的取值范围为n=1,2,…,N,i表示功能码的编号,i的取值范围为根据实际需要确定,j表示功能码i对应的线圈地址的类别号,j的取值范围为n=1,2,…,Mi,Mi表示功能码i对应的线圈地址类别数量;出现次数的统计方法为:
创建链表,链表项的匹配项为功能码和线圈地址类别,依次对子序列中的每个数据在链表中进行匹配,如果功能码和线圈地址类别存在,则将对应的数值加1,否则在链表中新增加功能码和线圈地址类别的匹配项,将对应的数值置为1;在对子序列中的所有数据统计完毕后,输出链表中存在的功能码和线圈地址类别对应的统计数据将链表中不存在的功能码和线圈地址类别对应的统计数据置为0;
计算子序列n中功能码i对应的第j类线圈地址的出现频率
<mrow>
<msubsup>
<mi>rate</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
<mi>n</mi>
</msubsup>
<mo>=</mo>
<mfrac>
<msub>
<mi>a</mi>
<mrow>
<mi>i</mi>
<mi>j</mi>
</mrow>
</msub>
<mrow>
<msub>
<mi>a</mi>
<mrow>
<mi>i</mi>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>a</mi>
<mrow>
<mi>i</mi>
<mn>2</mn>
</mrow>
</msub>
<mo>+</mo>
<mn>...</mn>
<mo>+</mo>
<msub>
<mi>a</mi>
<mrow>
<msub>
<mi>iM</mi>
<mi>i</mi>
</msub>
</mrow>
</msub>
</mrow>
</mfrac>
</mrow>
构建子序列n对应的特征向量其中I表示功能码编号i的最大值;
S3:将正常状态数据序列对应的特征向量标记为1,入侵状态数据序列对应的特征向量标记为0,将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;
S4:在实际的入侵检测过程中,实时连续采集客户机向服务器请求的Modbus数据包,提取功能码和线圈地址,得到长度为L的数据序列,采用步骤S2中的方法得到对应的特征向量,输入支持向量机分类模型,得到是否存在入侵的检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510672981.9A CN105306463B (zh) | 2015-10-13 | 2015-10-13 | 基于支持向量机的Modbus TCP入侵检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510672981.9A CN105306463B (zh) | 2015-10-13 | 2015-10-13 | 基于支持向量机的Modbus TCP入侵检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105306463A CN105306463A (zh) | 2016-02-03 |
CN105306463B true CN105306463B (zh) | 2018-04-13 |
Family
ID=55203215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510672981.9A Expired - Fee Related CN105306463B (zh) | 2015-10-13 | 2015-10-13 | 基于支持向量机的Modbus TCP入侵检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105306463B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209843A (zh) * | 2016-07-12 | 2016-12-07 | 工业和信息化部电子工业标准化研究院 | 一种面向Modbus协议的数据流异常分析方法 |
CN106330949B (zh) * | 2016-09-13 | 2019-07-16 | 哈尔滨工程大学 | 一种基于马尔科夫链的入侵检测方法 |
CN106502234B (zh) * | 2016-10-17 | 2018-11-23 | 重庆邮电大学 | 基于双轮廓模型的工业控制系统异常检测方法 |
CN106649034B (zh) * | 2016-11-22 | 2020-08-28 | 北京锐安科技有限公司 | 一种可视化智能运维方法及平台 |
CN107104960A (zh) * | 2017-04-20 | 2017-08-29 | 四川电科智造科技有限公司 | 一种基于机器学习的工业控制系统入侵检测方法 |
CN108134780B (zh) * | 2017-12-12 | 2021-03-16 | 重庆邮电大学 | 基于改进决策树算法的智能家居安防设备安全性判断方法 |
CN108200087B (zh) * | 2018-02-01 | 2020-05-12 | 平安科技(深圳)有限公司 | web入侵检测方法、装置、计算机设备和存储介质 |
CN108761250B (zh) * | 2018-07-26 | 2019-12-24 | 电子科技大学 | 一种基于工控设备电压电流的入侵检测方法 |
CN109120477B (zh) * | 2018-08-16 | 2021-09-24 | 广东芬尼克兹节能设备有限公司 | 基于modbus协议的动态解析方法、装置、服务器及存储介质 |
CN109787874B (zh) * | 2018-12-06 | 2021-11-09 | 珠海派诺科技股份有限公司 | 基于Linux平台的实时收发方法、设备及存储介质 |
CN111885084A (zh) * | 2020-08-03 | 2020-11-03 | 国网新疆电力有限公司电力科学研究院 | 一种入侵检测方法、装置及电子设备 |
CN117278661B (zh) * | 2023-11-23 | 2024-04-09 | 中汽数据(天津)有限公司 | 一种工业物联网多协议解析方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984170A (zh) * | 2012-12-11 | 2013-03-20 | 清华大学 | 一种工业控制网络安全过滤系统及方法 |
CN103929439A (zh) * | 2014-05-07 | 2014-07-16 | 昆山华恒焊接股份有限公司 | 一种数据传输方法及modbus服务器 |
CN104519065A (zh) * | 2014-12-22 | 2015-04-15 | 北京卓越信通电子股份有限公司 | 一种支持过滤Modbus TCP协议的工控防火墙实现方法 |
-
2015
- 2015-10-13 CN CN201510672981.9A patent/CN105306463B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984170A (zh) * | 2012-12-11 | 2013-03-20 | 清华大学 | 一种工业控制网络安全过滤系统及方法 |
CN103929439A (zh) * | 2014-05-07 | 2014-07-16 | 昆山华恒焊接股份有限公司 | 一种数据传输方法及modbus服务器 |
CN104519065A (zh) * | 2014-12-22 | 2015-04-15 | 北京卓越信通电子股份有限公司 | 一种支持过滤Modbus TCP协议的工控防火墙实现方法 |
Non-Patent Citations (2)
Title |
---|
"MODBUS TCP/IP协议防火墙的研究与实现";高栋梁;《中国优秀硕士学位论文全文数据库信息科技辑》;20150815;第3.2节 * |
"基于PSO-SVM的Modtus TCP通讯的异常检测方法";尚文利等;《电子学报》;20141115;第3-4节 * |
Also Published As
Publication number | Publication date |
---|---|
CN105306463A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105306463B (zh) | 基于支持向量机的Modbus TCP入侵检测方法 | |
CN107241226B (zh) | 基于工控私有协议的模糊测试方法 | |
CN104506507B (zh) | 一种sdn网络的蜜网安全防护系统及方法 | |
CN105429963B (zh) | 基于Modbus/Tcp的入侵检测分析方法 | |
CN103748853B (zh) | 用于对数据通信网络中的协议消息进行分类的方法和系统 | |
CN102088379B (zh) | 基于沙箱技术的客户端蜜罐网页恶意代码检测方法与装置 | |
CN105027510B (zh) | 网络监视装置和网络监视方法 | |
CN109600363A (zh) | 一种物联网终端网络画像及异常网络访问行为检测方法 | |
CN101399710B (zh) | 一种协议格式异常检测方法及系统 | |
CN104361035B (zh) | 检测数据库篡改行为的方法及装置 | |
CN106572107A (zh) | 一种面向软件定义网络的DDoS攻击防御系统与方法 | |
CN106534224B (zh) | 智能网络攻击检测方法及装置 | |
CN107196930A (zh) | 计算机网络异常检测的方法、系统及移动终端 | |
Shang et al. | Modbus/TCP communication anomaly detection based on PSO-SVM | |
CN106921676A (zh) | 一种基于OPCClassic的入侵检测方法 | |
CN108718298A (zh) | 一种恶意外连流量检测方法及装置 | |
CN105959270A (zh) | 一种基于谱聚类算法的网络攻击检测方法 | |
CN110324323A (zh) | 一种新能源厂站涉网端实时交互过程异常检测方法及系统 | |
CN109660518A (zh) | 网络的通信数据检测方法、装置以及机器可读存储介质 | |
CN102882748A (zh) | 网络接入检测系统和网络接入检测方法 | |
CN111177779A (zh) | 数据库审计方法、其装置、电子设备及计算机存储介质 | |
CN107958154A (zh) | 一种恶意软件检测装置及方法 | |
CN107104960A (zh) | 一种基于机器学习的工业控制系统入侵检测方法 | |
CN107818132A (zh) | 一种基于机器学习的网页代理发现方法 | |
CN107659560A (zh) | 一种用于海量网络数据流日志处理的异常审计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180413 Termination date: 20201013 |