基于支持向量机的ModbusTCP入侵检测方法

文档序号:9551305阅读:472来源:国知局
基于支持向量机的Modbus TCP入侵检测方法
【技术领域】
[0001] 本发明属于ModbusTCP入侵检测技术领域,更为具体地讲,涉及一种基于支持向 量机的ModbusTCP入侵检测方法。
【背景技术】
[0002] 工业控制系统广泛的应用于我国电力、水利、污水处理、石油天然气、化工、交通运 输、制药以及大型制造行业,过去十年间,工业控制系统开始广泛采用信息技术,开放的软 硬件技术、协议标准的应用以及工业控制系统和信息系统的集成使工业控制系统接口越来 越开放,减弱了系统与外界的隔离。越来越多的案例表明,来自商业网络、因特网以及其它 因素导致的信息安全问题正逐渐在工业控制系统中扩散,直接影响了工业稳定生产及人身 安全。而ModbusTCP协议作为一种通讯协议,被广泛的应用于多种工业控制系统中,保证 ModbusTCP通讯的安全,具有重大的意义。图1是基于ModbusTCP通讯的工业控制网络拓 扑框图。如图1所示,基于ModbusTCP通讯的工业控制网络包括Modbus服务器和Modbus 客户机,通过工业控制网络进行通信。
[0003] ModbusTCP通讯的安全技术主要包括防火墙技术、隔离网闸、加密传输技术、入侵 检测技术、ModbusTCP深度包解析等。防火墙技术主要提供传输层与网络层的访问控制机 制,体现了系统管理的安全策略,但是其技术缺乏对于应用层协议的支持,无法防御来至于 应用层层面的攻击。隔离网闸技术阻断对重要设施的直接访问,可以极大程度减少系统风 险,但是隔离网闸的部署需要依赖于工业控制系统合理的层次划分与拓扑设计,而往往由 于业务需要不能进行尽善尽美的结构设计。加密传输技术可以防止通讯信息遭受窃取与篡 改,但是会加重息处理的负担,会对工业控制系统通讯的实时性造成一定的影响,另外工业 设备中的芯片处理能力也难以支持复杂的加密方法。入侵检测技术将网络中捕获的流量与 已知的攻击特征模式进行匹配,识别出攻击行为,可作为其他安全技术的有力补充。但是该 方法需要建立在已知攻击特征的基础之上,无法应对攻击特征未知的情况。ModbusTCP深 度包解析的研究相对较少,虽然该方法能对数据包头以及数据内容等信息进行分析和识 另IJ。但该方法是一种被动式的防御,一旦攻击行为做到高精度的伪造,防御将失效,仍然无 法确保ModbusTCP通讯的安全。

【发明内容】

[0004] 本发明的目的在于克服现有技术的不足,提供一种基于支持向量机的ModbusTCP 入侵检测方法,根据线圈地址的出现频率来构建特征向量,实现对ModbusTCP入侵的准确 检测。
[0005] 为实现上述发明目的,本发明基于支持向量机的ModbusTCP入侵检测方法包括以 下步骤:
[0006] S1 :采集工业控制系统在正常状态下和入侵状态下预定时长的ModbusTCP数据, 提取出Modbus数据包,然后提取出客户机向服务器请求的Modbus数据包,提取得到每个数 据包的功能码和线圈地址;将数据包的功能码和线圈地址,按照时间先后顺序进行排列,得 到数据序列;
[0007] S2:对数据序列进行数据统计,提取得到特征向量,其具体方法为:将数据序列划 分成长度为L的N个子序列,对于每个子序列,统计每个功能码对应的各类线圈地址的出现 次数<,其中η表示子序列的序号,η的取值范围为η= 1,2,…,N,i表示功能码的编号, i的取值范围为根据实际需要确定,j表示功能码i对应的线圈地址的类别号,j的取值范 围为η= 1,2,…,Μ;,Μ;表示功能码i对应的线圈地址类别数量;计算子序列η中功能码i 对应的第j类线圈地址的出现频率《^< :
[0008]
γ'·.Ι.Δ· .'應丫
[0009]构建子序列η对应的特征向量= …ra/e〗,,…,;其中 I表示功能码编号i的最大值;
[0010]S3 :将正常状态数据序列对应的特征向量标记为1,入侵状态数据序列对应的特 征向量标记为0,将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据, 对支持向量机进行训练,得到支持向量机分类模型;
[0011] S4 :在实际的入侵检测过程中,实时连续采集客户机向服务器请求的Modbus数据 包,提取功能码和线圈地址,得到长度为L的数据序列,采用步骤S2中的方法得到对应的 特征向量,输入支持向量机分类模型,得到是否存在入侵的检测结果。
[0012] 本发明基于支持向量机的ModbusTCP入侵检测方法,预先采集工业控制系统在 正常状态下和入侵状态下预定时长的ModbusTCP数据,提取出客户机向服务器请求的 Modbus数据包的功能码和线圈地址,按照时间先后顺序进行排列得到正常状态数据序列和 入侵状态数据序列,分别对正常状态数据序列和入侵状态数据序列进行数据统计,得到每 个子序列中各个功能码对应的各类线圈地址的出现频率,构建特征向量;将正常状态数据 序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支 持向量机分类模型;在入侵检测过程中,实时采集得到特征向量,输入支持向量机分类模型 得到检测结果。本发明采用功能码对应线圈地址出现的频率作为检测特征,相比于一般只 选择功能码作为检测特征的技术,本发明在检测上更精确化和细致化。
【附图说明】
[0013] 图1是基于ModbusTCP通讯的工业控制网络拓扑框图;
[0014] 图2是本发明基于支持向量机的ModbusTCP入侵检测方法的流程图。
【具体实施方式】
[0015] 下面结合附图对本发明的【具体实施方式】进行描述,以便本领域的技术人员更好地 理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许 会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0016] 实施例
[0017] 图2是本发明基于支持向量机的ModbusTCP入侵检测方法的流程图。如图2所 示,本发明基于支持向量机的ModbusTCP入侵检测方法包括以下步骤:
[0018] S201 :数据采集:
[0019] 首先需要对ModbusTCP数据进行数据采集,其具体过程为:采集工业控制系统 在正常状态下和入侵状态下预定时长的ModbusTCP数据。本实施例中利用Linux内核的 Netfilter机制编写采集流量模块,来采集ModbusTCP数据。从ModbusTCP数据中提取 出Modbus数据包,然后去除响应客户机请求的Modbus数据包,在剩余的客户机向服务器 请求的Modbus数据包中提取得到每个数据包的功能码和线圈地址。将数据包的功能码和 线圈地址,按照时间先后顺序进行排列,得到数据序列。
[0020] S202 :计算特征向量:
[0021] 对数据序列进行数据统计,提取得到特征向量。其具体的方法为:
[0022] 将数据序列划分成长度为L的N个子序列,也就是每个子序列中
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1