发明名称 基于支持向量机的Modbus TCP入侵检测方法
摘要 本发明公开了一种基于支持向量机的Modbus TCP入侵检测方法,预先采集工业控制系统在正常状态下和入侵状态下预定时长内的Modbus TCP数据,提取出客户机向服务器请求的Modbus数据包的功能码和线圈地址,按照时间先后顺序进行排列得到正常状态数据序列和入侵状态数据序列,分别对正常状态数据序列和入侵状态数据序列进行数据统计,得到每个子序列中各个功能码对应的各类线圈地址的出现频率,构建特征向量;将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;在入侵检测过程中,实时采集得到特征向量,输入支持向量机分类模型得到检测结果。本发明可以实现更精确化和细致化的入侵检测。
申请公布号 CN105306463A 申请公布日期 2016.02.03
申请号 CN201510672981.9 申请日期 2015.10.13
申请人 电子科技大学 发明人 辛晓帅;彭义淞;邹见效;徐红兵
分类号 H04L29/06(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 成都行之专利代理事务所(普通合伙) 51220 代理人 温利平;陈靓靓
主权项 一种基于支持向量机的Modbus TCP入侵检测方法,其特征在于,包括以下步骤:S1:采集工业控制系统在正常状态下和入侵状态下预定时长的Modbus TCP数据,提取出Modbus数据包,然后提取出客户机向服务器请求的Modbus数据包,提取得到每个数据包的功能码和线圈地址;将正常状态下每个数据包的功能码和线圈地址作为一组数据,按照时间先后顺序进行排列,得到正常状态数据序列,根据同样的方法得到入侵状态数据序列;S2:对数据序列进行数据统计,提取得到特征向量,其具体方法为:将数据序列划分成长度为L的N个子序列,对于每个子序列,统计每个功能码对应的各类线圈地址的出现次数<img file="FDA0000823758960000011.GIF" wi="86" he="71" />其中n表示子序列的序号,n的取值范围为n=1,2,…,N,i表示功能码的编号,i的取值范围为根据实际需要确定,j表示功能码i对应的线圈地址的类别号,j的取值范围为n=1,2,…,M<sub>i</sub>,M<sub>i</sub>表示功能码i对应的线圈地址类别数量;计算子序列n中功能码i对应的第j类线圈地址的出现频率<img file="FDA0000823758960000012.GIF" wi="134" he="75" /><maths num="0001" id="cmaths0001"><math><![CDATA[<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><mo>...</mo><mo>+</mo><msub><mi>a</mi><mrow><msub><mi>iM</mi><mi>i</mi></msub></mrow></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000823758960000013.GIF" wi="541" he="140" /></maths>构建子序列n对应的特征向量<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>X</mi><mi>n</mi></msub><mo>=</mo><mrow><mo>(</mo><msubsup><mi>rate</mi><mn>11</mn><mi>n</mi></msubsup><mo>,</mo><msubsup><mi>rate</mi><mn>12</mn><mi>n</mi></msubsup><mo>,</mo><mo>...</mo><msubsup><mi>rate</mi><mrow><mn>1</mn><msub><mi>M</mi><mn>1</mn></msub></mrow><mi>n</mi></msubsup><mo>,</mo><msubsup><mi>rate</mi><mn>21</mn><mi>n</mi></msubsup><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>rate</mi><mrow><msub><mi>IM</mi><mi>I</mi></msub></mrow><mi>n</mi></msubsup><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000823758960000014.GIF" wi="974" he="95" /></maths>S3:将正常状态数据序列对应的特征向量标记为1,入侵状态数据序列对应的特征向量标记为0,将正常状态数据序列和入侵状态数据序列的所有特征向量作为训练数据,对支持向量机进行训练,得到支持向量机分类模型;S4:在实际的入侵检测过程中,实时连续采集客户机向服务器请求的Modbus数据包,提取功能码和线圈地址,得到长度为L的数据序列,采用步骤S2中的方法得到对应的特征向量,输入支持向量机分类模型,得到是否存在入侵的检测结果。
地址 611731 四川省成都市高新区(西区)西源大道2006号