一种自学习协议规则的入侵检测方法

文档序号:10515514阅读:429来源:国知局
一种自学习协议规则的入侵检测方法
【专利摘要】本发明涉及一种自学习协议规则的入侵检测方法,其主要步骤包括:对正常数据流的采集,划分,聚类,协议格式的提取。生成五元组协议规则,并且进行持久化保存。检测时读取规则信息,生成五元组规则映射表,数据包依次与各规则进行比对,进行数据包深度包解析。本发明与现有的技术比,不依赖特定的协议,可以自学习出需要检测的协议格式,进行深度包解析,准确率高,技术简单,易于推广。
【专利说明】
-种自学习协议规则的入侵检测方法
技术领域
[0001] 本发明设及协议逆向分析与入侵检测领域,具体设及一种自学习协议规则的入侵 检测方法,属计算机互联网技术领域。
【背景技术】
[0002] 随着信息技术的普及,网络带来的安全问题愈发突出。网络攻击的种类越来越多, 带来的危害也越来越大。网络安全作为信息安全的重要组成部分,关系到国家安全与社会 稳定,并且其重要性随着全球信息化步伐的加快而日趋突出。
[0003] 现阶段,互联网采用因特网四层协议,即应用层、传输层、网络层、物理层。其中应 用层的信息传送的协议数据单元称为段或报文。通过使用数据包嗅探技术能够获取应用层 数据包的信息,通过分析数据包的情况,判断系统是否遭到入侵。
[0004] libpcap/winpcap是Windows和Linux下常用的数据包嗅探技术,通过调用 libpcap/winpcap动态库的接口接收网络设备发送的报文,能够很便捷的实现应用层的数 据包获取与分析。
[0005] 通过检索发现专利CN104702584A提供了一种自学习通讯对象的方法,该方法通过 预先设定特定的功能码,实现了通讯对象间的访问控制,但并不能解决自学习报文通讯格 式的问题,无法根据网络中捕获的信息数据自动生成关键字段规则。

【发明内容】

[0006] 为了克服现有技术的不足,本发明目的在于提供一种自学习协议规则的入侵检测 方法,能够通过自学习协议中的各字段信息,判断数据包的异常,实现入侵检测。
[0007] 本发明的自学习协议规则的入侵检测,方法,其步骤主要包括:
[000引1)采集数据包信息:捜集应用层的数据包信息(利用libpcap/winpcap捜集信息), 并进行五元组划分;所述五元组包括源IP、目的IP、源端口、目的端口、协议类型;
[0009] 2)协议结构提取:通过W序号位为主要判断依据,进行数据包的划分,提取协议的 格式信息;
[0010] 3)检测模型生成:通过对划分后的数据包进行协议格式信息的归纳与保存,生成 相应的包含规则信息的配置文件;
[0011] 4)协议格式检测:读取所述配置文件,生成检测接口,然后读取网络中的数据包并 与配置文件中的检测规则作比对,判断是否符合规则信息,进而判断该数据包是否为正常 数据包。
[0012] 本发明应用领域为网络入侵检测领域,在传统的网络深度包解析的基础上,提出 了网络协议编码自学习方法。通过捜集系统正常工作时的数据流,获取通讯协议的特征,根 据运些特征进行深度包检测,并进行了实验结果测试与分析。该方案不依赖协议本身,对协 议格式的检测具有良好的效果,易于推广,通用性强,检测率高;
【附图说明】
[0013] 图1是本发明方法的总体流程示意图。
[0014] 图2是采集过程流程示意图。
[0015] 图3是协议结构提取的流程示意图。
[0016] 图4是检测模型的流程示意图。
[0017] 图5是协议格式检测的流程示意图。
[0018] 图6是实施例中仿真系统的网络拓扑情况示意图。
[0019] 图7是实施例中部分报文格式示意图。
【具体实施方式】
[0020] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和 附图,对本发明做进一步说明。
[0021] 本发明的自学习协议规则的入侵检测方法,其总体流程如图1所示,具体包括如下 步骤:
[00剖 1.数据包采集
[0023] 基于libpcap/wi叩cap动态库的接口接收网络设备发送的报文,将网卡开启混杂 模式,采集一整套正常工作流程数据。将数据包按源IP、目的IP、源端口、目的端口、协议类 型(TCP、UDP或者ICMP)信息划分成"组类",对于每个组中的数据包,按接受到的先后顺序进 行排序。图2是采集过程流程示意图,具体采集方法如下:
[0024] a).获取网卡信息列表;
[0025] b).设置过滤信息,为每个网卡开启一个嗅探线程,分别进行嗅探,获取信息;
[00%] C).获取下一条数据包,获取数据包的源IP、目的IP、源端口、目的端口、协议类型 (TCP、UDP或者ICMP)信息,判断之前是否存在该"组类",如果存在则转到步骤d),如果不存 在则转到步骤e);
[0027] d).存在该组类,在字典中获取该"组类"的列表,将数据包的应用层信息加入到列 表的最后;然后转到步骤f);
[0028] e).不存在该"组类",将组类的五元组转化成字符串作为字典的key,将一个空的 列表作为value,存入字典中,将该数据包的应用层信息存入到新的列表中,然后转到步骤 f);
[0029] f).是否结束嗅探,不结束则转到步骤C),否则结束。
[0030] 2.协议结构提取
[0031] 对每个"组类"的中的信息分别进行结构获取。图3是协议结构提取的流程示意图, 具体提取方法如下:
[0032] a).若组类中的报文比较少,低于某一限定值/临界值(如:只有5条),则不进行分 析,直接作为静态"组类"。所述静态"组类"是指将组类中的每条报文都当做一条规则,将数 据的每一位都当做常量位处理,只有当数据包与该类中的某数据包完全一致时,才能当做 一致。
[0033] b).若组类中的报文数量大于临界值,则将每个"组类"的数据包按数据包长度进 行预划分,同长度的数据包划分为"小组"。
[0034] C).对每个"小组"进行"再划分"。定义"协议的头部":某小组中,前N个相同的字 节;假设小组中数据包的头长度为N(N大于等于1),将具有相同的头部的数据包划分为一个 "小组",对每个"小组"中的报文从左往右进行字节比对判断,若该小组中存在序号位,运停 止对小组的划分,聚合为一组。若该小组中不存在序号位,则假设数据包头长度为N+1继续 划分。其中,判断序号位的方法:当某一位呈现循环等差数列,则判断为序号位,例如序列: 1、2、3、4、5、1、2、3、4、5.......
[0035] d).对每个"再划分"后的小组进行其他位信息的提取,小组中,某个位置的值一 样,则判定为常量位,某个位置的值不一样,则判定为变量位。
[0036] 3.检测模型生成
[0037] 对某个小组中生成的协议格式进行规则的生成,包括:源IP,目的IP,源端口,目的 端口,协议类型,数据包长度,各变量位、常量位、序号位。对于生成的规则,W字典作为规则 存储结构,字典中的key为源IP、源端口、目的IP、目的端口、协议类型五元组;规则信息包 含:数据包长度、常量位信息、常量位掩码信息、序号位的位置、当前序号位的报文值。据此 生成检测的配置信息,Wjson方式保存到配置文件中。生成的规则Wjson数据方式做规则 的持久化保存方式。
[0038] 1)常量位的提取方式:利用步骤2)中对小组的划分结果,在小组中,从左往右依次 判断当前位置的各位是否相同,若当前位置相同,则认定为常量位或者长度位,否则认定为 变量位或者序号位。
[0039] 2)长度位的提取方式:利用对常量位判断的结果,在常量位中,依次判断是否符 合:1字节长度位,2字节长度位,4字节长度位。若不符合长度位信息,则判断该位置为一般 常量位。下面具体说明长度位的提取方式:
[0040] a)在单字节常量位X中,1字节长度位提取方式:判断X是否等于整个报文长度,若 相等记为"单字节全长度位";判断X是否等于当前位置之后的报文长度,若相等记为"单字 节后长度位";判断X是否等于当前位置之后的报文长度加1,若相等记为"单字节包含长度 位"。
[0041] b)在两相邻的常量位XY中,2字节长度位提取方式:判断X+256巧是否等于整个报 文长度,若相等记为"两字节低位全长度位";判断X+256巧是否等于当前位置之后的报文长 度,若相等记为"两字节低位后长度位";判断X+256巧是否等于当前位置之后的报文长度加 2,若相等记为"两字节低位包含长度位";判断256林巧是否等于整个报文长度,若相等记为 "两字节高位全长度位";判断256林巧是否等于当前位置之后的报文长度,若相等记为"两 字节高位后长度位";判断256林巧是否等于当前位置之后的报文长度加2,若相等记为"两 字节高位包含长度位"。
[0042] C)在四相邻的常量位WXYZ中,4字节长度位提取方式:判断W+256林+Υ+256*Ζ是否 等于当前位置之后的报文长度,若相等记为"四字节低位长度位";判断256*W+X+256巧+Ζ是 否等于当前位置之后的报文长度,若相等记为"四字节高位长度位";并且将后面的报文部 分划分为两段。
[0043] 3)序号位的提取方式:利用对变量位判断的结果,在变量位中,对各位依次判断是 否符合序号位信息,若不符合序号信息,则判断该位置为一般变量位;否则为序号位。具体 地,在该变量位的序列中,需要同时满足w下四个条件,才表示此位为序号位:条件一,该序 列是循环等差数列;条件二,循环等差数列的公差不为0;条件Ξ,循环等差数列的公差相 等;条件四,循环等差数列的周期大于等于1。
[0044] 图4是检测模型生成的流程示意图,具体方法如下:
[0045] a).读取保存规则信息的配置文件,获取下一条规则信息;
[0046] b).将五元组转化为字符串,判断存储规则模型的字典中是否存在该五元组,如果 存在则转到步骤C),如果不存在则转到步骤d);
[0047] C).字典中存在该五元组,获取字典中存储该五元组规则的列表,将新的规则信息 添加到列表中,规则信息包括报文长度,序号位的位置,当前序号位的报文值,常量位的掩 码,常量位的值,然后转到步骤e);
[004引d).字典中不存在该五元组,将五元组的字符串作为key,-个空的列表作为 value,存入字典中,在该列表中添加该规则的信息,规则包括报文长度,序号位的位置,当 前序号位的报文值,常量位的掩码,常量位的值;
[0049] e).判断是否还有下一条规则信息,如果存在则转到步骤a),如果不存在则结束。
[(K)加]4.协议格式检测
[0051] 在网络中部署检测程序,读取检测的协议规则,利用libpcap/winpcap动态库的接 口接收网络设备发送的报文,与规则依次进行判断,如果符合某个规则,表示正常数据包, 若全都不符合,表示异常数据包,产生报警。图5是协议格式检测的流程示意图,具体过程如 下:
[0052] a).获取下一条数据包应用层信息;
[0053] b).查找字典中该数据包五元组对应的规则集,如果不存在该五元组对应的规则 集,则报警,转到步骤a);如果存在对应的规则,则转到步骤C);
[0054] C).判断是否已经读到规则集中的最后一条规则,如果是最后一条规则,则报警, 转到步骤a);如果不是最后一条规则,从规则集种读下一条规则,转到步骤d);
[0055] d).判断当前数据包长度是否与规则报文长度相同,不一致则转到步骤C);一致则 转到步骤e);
[0056] e).判断序号位的值是否与当前序号位的值的公差为一致,如果不一致则转到步 骤C);如果一致则转到步骤f);
[0057] f).报文的应用层信息与规则的掩码做与运算,如果结果与规则需要的结果不一 致,转到步骤C);如果一致则表示该报文符合要求,转到步骤a)。
[0058] 为验证发明的有效性,本发明针对浙江中控DCS控制系统仿真平台下的SCNET协议 进行了协议格式编码特征提取,如图6是仿真系统的网络拓扑情况,该仿真系统包含一个上 位机、两个DCS控制器和8个溫控箱,上位机用于监视8个溫控箱实时溫度值并且能够执行对 溫控箱加热开关的打开和关闭操作。该仿真模型中,本文只考虑上位机与DCS控制器之间的 协议编码学习。经过实际工程验证,只需要考虑数据采集组播、命令控制组播、DCS与上位机 之间的数据包,过滤掉了其他干扰的数据包。学习到协议规则后,自动生成深度包检测规 贝1J,部分报文格式见图7。
[0059] 然后为验证学习的协议效果,通过人为构造数据包进行协议格式的验证,协议中 各字段的识别率见表1。同时在理解了协议规则后我们通过人为构造崎形的数据包,来进行 协议攻击,判断检测效率。自学习深度包解析入侵检测结果的实验数据见表2。
[0060] 表1.各字段的识别率
[0061]
[0065] 本发明不限于在TCP/IP网络环境中实施,也可W实施在不依赖五元组信息应用层 协议中。将五元组信息变更为传输对象的特征值即可。本发明的主要精神在于应用层协议 特征提取方法和利用运些特征进行应用层报文的检测方法。
[0066] 综上所述,本发明公开了自学习协议规则的入侵检测方法。上面描述的应用场景 及实施例,并非用于限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内, 可作各种更动和润饰。因此,本发明的保护范围视权利要求范围所界定。
【主权项】
1. 一种自学习协议规则的入侵检测方法,其特征在于,包括以下步骤: 1) 采集应用层的数据包信息,并将数据包按源IP、目的IP、源端口、目的端口、协议类型 划分组类; 2) 根据序号位对每个组类中的数据包进行划分,并提取协议的格式信息; 3) 对划分后的数据包进行协议格式信息的归纳,生成规则信息并保存在配置文件中; 4) 获取待检测的网络数据包的应用层信息,并与配置文件中的规则信息作比对,以判 断该数据包是否为正常数据包。2. 如权利要求1所述的方法,其特征在于,步骤2)对数据包进行划分时,假设一个协议 头部的长度为N,将具有相同的头部的数据包划分为一个小组,对每个小组中的报文从左往 右进行字节比对判断,若该小组中存在序号位,这停止对小组的划分,生成协议规则;如果 不存在序号位,则假设协议头部长度为N+1,进行迭代判断。3. 如权利要求2所述的方法,其特征在于,步骤3)生成的规则信息以字典作为存储结 构,字典中的key为源IP、源端口、目的IP、目的端口、协议类型五元组,规则信息包含:数据 包长度、常量位信息、常量位掩码信息、序号位的位置、当前序号位的报文值。4. 如权利要求3所述的方法,其特征在于,步骤3)中常量位的提取方式为:利用步骤2) 中对小组的划分结果,在小组中从左往右依次判断当前位置的各位是否相同,若当前位置 相同,则认定为常量位或者长度位,否则认定为变量位或者序号位。5. 如权利要求4所述方法,其特征在于,步骤3)中长度位的提取方式为:利用对常量位 判断的结果,在常量位中依次判断是否符合:1字节长度位,2字节长度位,4字节长度位;若 不符合长度位信息,则判断该位置为一般常量位。6. 如权利要求5所述的方法,其特征在于,所述长度位的提取方式具体包括: a) 在单字节常量位X中,1字节长度位提取方式:判断X是否等于整个报文长度,若相等 记为"单字节全长度位";判断X是否等于当前位置之后的报文长度,若相等记为"单字节后 长度位";判断X是否等于当前位置之后的报文长度加1,若相等记为"单字节包含长度位"; b) 在两相邻的常量位XY中,2字节长度位提取方式:判断X+256*Y是否等于整个报文长 度,若相等记为"两字节低位全长度位";判断Χ+256*Υ是否等于当前位置之后的报文长度, 若相等记为"两字节低位后长度位";判断Χ+256*Υ是否等于当前位置之后的报文长度加2, 若相等记为"两字节低位包含长度位";判断256*Χ+Υ是否等于整个报文长度,若相等记为 "两字节高位全长度位";判断256*Χ+Υ是否等于当前位置之后的报文长度,若相等记为"两 字节高位后长度位";判断256*Χ+Υ是否等于当前位置之后的报文长度加2,若相等记为"两 字节高位包含长度位"; c) 在四相邻的常量位WXYZ中,4字节长度位提取方式:判断W+256*X+Y+256*Z是否等于 当前位置之后的报文长度,若相等记为"四字节低位长度位";判断256*W+X+256*Y+Z是否等 于当前位置之后的报文长度,若相等记为"四字节高位长度位";并且将后面的报文部分划 分为两段。7. 如权利要求5所述的方法,其特征在于,步骤3)中序号位的提取方式为:利用对变量 位判断的结果,在变量位中依次判断是否符合序号位,若不符合序号信息,则判断该位置为 一般变量位。8. 如权利要求7所述的方法,其特征在于,在变量位的序列中,同时满足以下四个条件 则表示为序号位:条件一,该序列是循环等差数列;条件二,循环等差数列的公差不为ο;条 件三,循环等差数列的公差相等;条件四,循环等差数列的周期大于等于1。9.如权利要求1所述的方法,其特征在于,步骤4)利用libpcap/winpcap动态库的接口 接收网络设备发送的数据包,并与配置文件中的规则信息作比对,如果符合某个规则,表示 该数据包为正常数据包;若全部规则都不符合,则表示该数据包为异常数据包,产生报警。
【文档编号】H04L29/06GK105871861SQ201610245290
【公开日】2016年8月17日
【申请日】2016年4月19日
【发明人】石志强, 王中杰, 杨安, 孙利民, 朱红松
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1