CN114070800A - 一种结合深度包检测和深度流检测的secs2流量快速识别方法 - Google Patents
一种结合深度包检测和深度流检测的secs2流量快速识别方法 Download PDFInfo
- Publication number
- CN114070800A CN114070800A CN202111274050.5A CN202111274050A CN114070800A CN 114070800 A CN114070800 A CN 114070800A CN 202111274050 A CN202111274050 A CN 202111274050A CN 114070800 A CN114070800 A CN 114070800A
- Authority
- CN
- China
- Prior art keywords
- protocol
- data
- state
- packet
- secs2
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2483—Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于工控网络协议技术领域,具体为一种结合深度包检测和深度流检测的SECS2流量快速识别方法。本发明方法包括:利用机器学习的方法根据标注的SECS2协议数据集学习提取出包检测和流检测的特征库并存储,提前预加载用于识别的特征库,循环读入数据包文件,并对单个的数据包加载特征规则来进行识别,综合判定该数据包是否为SECS2协议数据包同时输出判定结合和改变程序运行逻辑。本发明对SECS2协议识别的准确性和全面性有较大提升;同时在会话状态管理器以及综合裁决部分都留有较大的可扩展性,可以根据具体的识别结果来动态反馈调整整体的识别性能,保证对数据包中SECS2协议的准确识别性。
Description
技术领域
本发明属于工控网络协议技术领域,具体涉及一种在工控通信网络中精确识别工控通信协议的方法。
背景技术
随机计算机和互联网技术的结合发展,传统工业领域开始从人工操作机台的方式向自动化操作机台的方式转变,工业控制***也结合物联网开始制定和实施一系列符合工业控制规范的通信标准,工业控制***软件也越来越多地采用统一的通用协议、通用硬件和通用软件。在采用通用标准的同时,虽然降低了工控***接入互联网网络的难度,减少了工控网络和通信网络产生数据通信冲突的可能性,但同时也增加了工控网络被恶意攻击的风险。针对传统通信网络的攻击方法,例如对通信流量的流量嗅探攻击以及对通信流量的恶意篡改或者重放攻击等方式,新兴的工控流量对工控网络的管理和工控通信流量的识别也提出了新的挑战。在工控通信领域存在机台、EAP众多,协议端口可任意指定的情况,导致人工配置工作量大,例如若采用Wireshark截获的SECS2数据,在缺省状态下将导致解析错误,需要人工根据捕获数据包特征进行协议解析调整,因此自动协议识别是亟待解决的问题。对工控通信流量中的特征流量识别,将有助于入侵检测***更好地识别恶意流量攻击,更有针对性地保护工控业务安全。
当前工控通信环境中的流量按照不同应用服务类型分为不同种类,主要类型如下表所示:
工控网络流量协议类型
协议 | 说明 |
HTTP/HTTPS | Web终端控制、超文本信息传输 |
ARP | 地址解析协议 |
DNS | 域名解析解析 |
ICMP | 控制报文协议 |
IGMP | 组管理协议 |
其他非工控通信协议 | 维技工控网络通信必要的其他非工控通信协议 |
工控通信协议 | 用于传输工控指令和数据的工控协议 |
当前网络环境中,针对流量协议识别的方法主要有三种:(1)基于端口识别的技术,(2)深度包检测技术,(3)深度流检测技术。
基于端口识别的识别技术原理上较为简单,主要针对TCP/IP协议栈协议,利用识别协议的特征端口号来完成识别过程,例如在HTTP协议定义规范中通常使用80端口来作为通信端口,SNMP协议通常使用161端口等。端口识别技术仅检查数据包中的通信端口字段,并依据字段的不同将不同的流量包进行划分和甄别。根据通信数据流中的源端口和目的端口字段可以将流量数据包进行简单的静态划分,但随着网络环境的复杂化发展,应用功能的多样化,通信进程会使用动态随机化的端口或者应用镜像端口来隐藏和保护应用进程,这样就会使得端口识别这种技术的识别精度受到较大程度影响,基于此在后续的技术发展中提出了深度包检测技术和深度流检测技术。
深度包检测技术是一种部署在应用层的流量识别和特征检测技术,与传统的的端口识别技术和普通报文分析技术相比,深度包检测技术会检测TCP/IP协议栈中的下4层协议信息,其中包括源地址、源端口、目的地址、目的端口,并通过分析应用层的协议载荷信息来搜索协议的特征签名,对数据包的应用层数据完成解包的深度分析,识别出相应的协议,协议的特征签名通常表现为数据包出现特定字符串或特定数字,在协议的识别过程中,可以参考结合一些数据包的首部字段信息。总结来说深度包检测技术在端口识别技术的基础上结合分析数据包载荷中的特征字段,来将未知的网络流量在应用层关联到具体的应用。在大多数的基于TCP/IP协议栈的通信应用中,在网络数据包的载荷部分,都会使用固定位置的特殊字符来表征协议属性,通过将这类特征字符作为关联协议类型的特征签名,通过匹配特征签名即可以快速准确地识别特征明显的协议。这种方法在准确性、实时性、健壮性方面都取得了令人满意的效果,也在许多入侵流量监测***中得到应用。
深度流检测技术与深度包检测技术进行应用层的载荷匹配不同,深度流检测技术采用的是一种对流量行为进行识别的技术,即不同的应用通信数据体现在会话连接或者数据流上的整体行为状态是存在差异的,例如针对HTTP协议在一段时间的包发送速率行为以及拥塞行为等和其他协议都会表现出整体性的特征,这种整体特征也可以用于作为判定协议类型的依据。深度流检测技术依据数据包的五元组(源端口号,源IP地址,协议名,目的端口,目的IP地址)将数据包分为不同的流,对不同数据流设置响应的参数特征,依据特征的表现值研究不同数据流的统计特性,通过对流的各种不同参数的统计分析来识别不同类型的应用,进而标记网络流量。对于不同网络协议的数据流,一般情况下,可以选取数据包的长度、源地址和目的地址分布、数据包的到达率、数据包的数量、业务流持续时间与平均流速率等参数进行统计、比较和分析,来完成对不同协议流的特征提取和行为识别。
但上述方法都存在一些无法避免的缺陷:建立在TCP/UDP协议上的应用层协议服务端端口可任意指定。无法通过端口识别所采用的协议。
在深度包检测方法中,包数据载荷的特征分析需要依赖于一个完整会话(会话指的是一个完整的通信过程,即从通信主机和控制机台建立连接到数据传输和最后中断连接)的连接和数据传输过程,在一个完整的工业控制***的通信过程中,数据传输并不是一个独立阶段过程,其前后还包括传输信道的连接和传输信道的关闭等过程。网络上截获的数据包可能是一条连接所传输通信数据的某个部分,而包含关键字的内容通常是在应用层协议的“头部”,通常在刚建立连接后通信双方的几个交互回合中,到真正传输数据的时候已经不再频繁出现关键词。例如HTTP协议在浏览器发往WEB服务器的reguest数据的开头有“GET”、“POST”等指令可以作为关键词,但真正在上传一个文件的过程中所捕获的数据包已经没有关键词。因此在没有全面截获连接建立初始阶段数据包的情况下,获得一个连接中途传输的数据包则很难判定其采用什么协议,对于一组非完整通信会话的数据包,如果仅是依据载荷的特征匹配这一单一识别方法的话,将很大程度上降低识别率,增大误报率。此外在深度流检测方法中,由于需要根据协议特征寻找合适的特性参数来作为甄别和划分数据流的参考,对整体数据流的特征分析对单协议或者特性不明显的协议将会增大整体分析的开销,甚至可能会影响主线程的性能,导致丢包或者高延迟问题,对于维护网络的健壮性是不利的。
如何结合当前的主流的数据流分析方法来设计一种针对SECS2工控协议的快速识别的方法是一个要研究和解决的问题。
发明内容
目前,现有的工控通信控制***中无法快速准确识别SECS2流量;基于端口识别的方法无法准确处理进程通信端口动态变化;完整通信包进行深层次的包解析对于检测一个单独的特定协议成本开销过大,在进行包解析过程中通常需要检测追踪数据会话(即SESSION,指的是协议交互过程中的一个完整的传输过程),这对于非完整会话的传输数据包并不具有可识别能力;当前流量识别方法不能高效准确识别SECS2协议,本发明的目的在于提供一种结合深度包检测和深度流检测的SECS2流量快速识别方法,以解决上述问题。
本发明提供的结合深度包检测和深度流检测的SECS2流量快速识别方法,涉及协议的快速识别***,所述***包括特征学习器、特征读取并管理调用器、流量特征识别器、协议整体表决器;其中,所述特征学习器用于完成针对SECS2协议的协议特征学习和提取。所述特征读取并管理调用器用于实现对SECS2的特征库的加载和动态管理。所述流量特征识别器用于实现对未知数据包的预处理过程、深度包检测的状态转移管理过程、深度流检测的特征参数数据处理和存储,并能根据处理的特征数据来判定数据包表现为SECS2协议数据包的总体概率值,包处理过程的主体***将从包识别角度管理SECS2协议识别的会话流程,后文中将该***表述为协议状态转移管理器,同理,流处理过程的主体***后文中将表述为协议流处理器。所述协议整体表决器将结合协议状态转移管理器、协议流处理器的输出结果来表决判定数据包是否为SECS2协议,并根据判定结果来反馈修正所述协议状态转移管理器和协议流处理器的中间判定参数值,完善整体的判定过程。
本发明提出的结合深度包检测和深度流检测的SECS2流量快速识别方法,具体步骤为:
步骤1:特征学习。
由特征学习器利用已经标注完成的数据包集,读取已经标注的SECS2协议数据包集,将其分割为有效的独立数据包,利用机器学习的方法对提前标注识别的SECS2协议数据包集进行特征学习,利用正则表达式和字段校验以及状态转移的方法,针对完整的SECS2协议会话,提取出符合各会话阶段的SECS2深度包检测特征字符,生成并可持久化存储的包检测特征库;提取符合SECS2协议的特征数据字段;针对包检测特征,将SECS2协议中的字特征值信息整理为包特征库;其中,特征值信息主要为间隔出现的特征字符,将固定位置可出现的静态字段合集作为判定协议的特征值信息;将一些整体的包特性整理为流特征库,结合流检测特征,所述特征包括但不限于最小报文长度、报文最大间隔时间、总包长、总字节数、总会话时间(即该包与创建会话成功时的时间间隔)、包间隔时间(与上一个包的间隔时间)等,依据如上数据流特征,将特征库持久化存储,建立符合SECS2协议的流特征库并存储。
步骤2:特征加载,即加载持久化存储的特征库;
由特征读取并管理调用器根据上述步骤1中完成的特征库,分别读取包检测特征和流检测特征,加载完成以后将特征库贮存在程序中,同时建立动态特征库管理进程,管理并动态调整整个特征库的变化情况,等待后续特征识别步骤调用。
步骤3:特征识别。
由流量特征识别器创建会话状态,状态的存储和转移使用状态转移机来处理。具体流程为,流量特征识别器循环读入处理数据包,并经过数据包预处理,判定该数据包是否符合SECS2连接(根据TCP会话五元组),如果符合SECS2连接特征则直接标记为SECS2数据包,否则调用后续的流量识别过程。其中,首先利用特征信息判定该数据包是否可用于进行深度包检测,并将可执行的数据包划分为子集包A,将未通过判定的数据包划分为子集包B;按照SECS2协议字段定义,赋予处理出的部分PAYLOAD值含义,以供后续字段匹配和识别处理;读取内存中的特征信息哈希表,生成一个包匹配处理器,同时根据通信会话的需要,设定一个会话管理器,并为处于当前会话通信状态下的数据包创建五元组(源IP,源端口,目的IP,目的端口,会话ID),用于表示当前会话管理器控制的会话包,会话管理器用于识别和管理数据包通信会话的状态转移特征,按照状态转移流程来识别和处理通信会话中的个体数据包;根据已经存在的SECS2协议数据链路连接,判定当前数据包是否属于该连接:若符合连接特征,则判定为SECS2协议流量;若当前无SECS2协议连接或当前数据包不符合已有连接的特征,对于符合会话状态的数据包将依据深度包检测特征方法来处理,对于不符合当前会话状态要求的数据包,将其划分到子集包B中;利用上述步骤预处理出的流特征参数文件,生成一个流匹配处理器,并为每一个流特征参数分配一个相适应的权重比值;流匹配处理器将获取到的特征宏观流参数信息作用于子集包B中的数据包中,根据匹配器参数与数据包特征的匹配适应性以及参数的对应权重比,计算该数据包表现为SECS2协议包的概率值,将判定概率作为步骤结果输出,以供后续步骤做整体性裁决。
步骤4:综合表决/判决。
由协议整体表决器将结合包检测识别结果和流检测特征概率,统一判定该数据包是否为SECS2通信数据包,返回结果形式均采用函数结构形式,针对循环处理的每一个数据包,返回一个函数判定结果,并同时根据流量数据是否处理完成,对未处理完成的数据包继续进行循环读取处理,最后统一输出结果。
本发明在基于深度包检测和深度流检测的流量识别的基础上,进行改进,使得对SECS2协议识别的准确性和全面性有较大提升,识别过程中可以根据字符特征字段进行深度包识别,同时考虑流整体上的SECS2协议特性,来综合保证对SECS2协议识别的准确性。同时在会话状态管理器以及综合裁决部分都留有较大的可扩展性,可以根据具体的识别结果来动态反馈调整整体的识别性能,保证对数据包中SECS2协议的准确识别性。基于本方法实现的协议预处理器、协议状态转移管理器、协议流处理器、协议整体表决器四部分组成的***,可以完整覆盖本发明中介绍的协议识别功能,能在较短时间内判定未知数据包是否为SECS2协议数据包的概率,提升对SECS2数据包识别的准确性和可靠性。
附图说明
图1为SECS2协议识别过程。
图2为SECS2协议字段。
图3为深度包检测状态转移机。
图4协议会话建立过程。
具体实施方式
为了使该领域的从业技术人员可以更加清晰快速地理解本发明的技术方法,现结合附图作进一步详细地说明:
本发明的基于深度包检测和深度流检测方法,如图1所示,包括如下步骤:
步骤1:特征学***均包长等整体特征,将特征库持久化存储,等待SECS2协议包和流特征提取步骤调用;
步骤2:特征加载,特征读取并管理调用器加载持久化存储的特征库,分别读取包检测特征和流检测特征,加载完成以后将特征库贮存在程序中,等待后续特征识别步骤调用;
步骤3:特征识别,流量特征识别器创建会话状态,状态的存储和转移将使用状态转移机来处理。该处理器会循环读入处理数据包,并首先经过数据包预处理,判定该数据包是否符合SECS2连接(根据TCP会话五元组),如果符合SECS2连接特征则直接标记为SECS2数据包,否则调用后续的流量识别过程。如果当前包特征符合会话状态阶段特征,则进行深度包匹配,并将不符合会话状态的数据包划分为单独的子集,将该独立子集输入深度流检测程序;对不符合会话状态特征的数据包以及不符合预处理特征的数据包加载流特征库进行针对总体特征的深度流匹配判定,将包检测和流检测的结果统一输入到下一步骤;
步骤4:综合表决/判决,协议整体表决器会结合包检测识别结果和流检测特征概率,统一判定该数据包是否为SECS2通信数据包,输出判定信息并判定包是否处理完成,如若没有完成则继续对后续包进行循环处理,如若所有包均完成判定则结束。
所述步骤1包括:
步骤101:特征学习器读取已经标注的SECS2协议数据包集,将其分割为有效的独立数据包,利用正则表达式和字段校验以及状态转移的方法,针对完整的SECS2协议会话,提取出符合各会话阶段的SECS2深度包检测特征字符,生成并可持久化存储包检测特征库;
步骤102:特征学习器利用机器学习的方法结合流检测特征,包括但不限于最小报文长度、报文最大间隔时间、总包长、总字节数、总会话时间(即该包与创建会话成功时的时间间隔)、包间隔时间(与上一个包的间隔时间)等特征,依据如上数据流特征,建立符合SECS2协议的流特征库并存储。
所述步骤2包括:
步骤201:特征读取并管理调用器加载存储的深度包检测和深度流检测特征库,同时建立动态特征库管理进程,管理并动态调整整个特征库的变化情况。
所述步骤3包括:
步骤301:流量特征识别器读取数据包文件以后,根据数据链路层中数据链路的类型,提取判定链路层协议,据此判定数据来源,提取出链路层以上即网络层数据并同时丢弃其他数据;在提出到网络层数据以后,首先判定是否为IP协议报文,若为非IP协议则丢弃该数据报文,若判定为IP协议报文,则去掉IP头部以后保留下上层数据,同时丢弃其他数据;依据同样的处理流程处理判定是否为TCP协议,并保留处理出TCP协议的载荷(PAYLOAD);初步结合SECS2的协议状态特征字预处理出待进一步判定的子集包A,并根据SECS2协议文档建立特征字符映射哈希表(具体的特征字符在步骤2中详述);同时根据步骤1中的特征学习规则,选取最小报文长度、报文最大间隔时间、总包长、总字节数、总会话时间(即该包与创建会话成功时的时间间隔)、包间隔时间(与上一个包的间隔时间)等特征作为深度流特征检测的判定参数分别记为P1,P2……Pn,并根据所筛选的大量的SECS2正常通信数据流,根据机器学习结果计算出上述P1,P2……Pn表征的动态特性阈值β1、β2……βn;
步骤302:流量特征识别器根据预处理的数据包特征以及数据连接特征,判定是否有已经存在的SECS2协议数据链路连接,判定当前数据包是否属于该连接,如若符合连接特征则判定为SECS2协议流量,并直接向综合表决器返回判定结果,此时可判定该数据包为SECS协议的判定概率为100%;如若当前无SECS2协议连接或当前数据包不符合已有连接的特征,则继续进行一下步骤;
步骤303:由图2报文协议结构所示,其中报文头部信息占10个字节,包含6部分信息,在交互数据的开头阶段,其中数据信息的Stream和Function信息包含在MessageHeader中的Header Byte 2&3,控制信息与数据传输信息的区别体现在Session ID和SType中,下面将进一步解释头部中的各字段:
(1)Session ID:其表示为一个16位无符号整数,用来关联控制消息和其后的数据消息。对于数据信息和建立通讯时第一次发送的Request,Session ID=0建立通讯后,返回的Response会产生非零的Session ID(1-65535),后续的控制信息都会使用这一非零的Session ID;
(2)Header Byte 2:其表示不同HSMS协议阶段的消息特征。对于控制信息,此字段表示为0;对于数据信息,此处将包含W-bit(是否需要回复)和消息SECS Stream信息;
(3)Header Byte 3:其表示不同协议阶段的消息特征,不同于Header Byte 2的是,该字段表示的是SECS Function。对于控制信息,此字节为0;对于数据信息,此处将表示包含的SECS Function信息;
(4)PType:其表示类型是一个8位无符号整数,表示类型是一个枚举值,其表示含义为消息头部和消息文本的编码类型,通常设计中其取值为0,表示编码类型为SECS-II;
(5)SType:其同样为无符号整型数,用于表示消息类型,取值为0时表示数据消息,否则表示控制消息,会话类型不同取值表示的消息类型如下表1所示;
表1,SType关系表
(6)System Bytes:用于在整个通信过程中标示特定的传输阶段,每条数据信息和控制信息的System Bytes必须互不相同;但回复信息必须和请求信息有相同的SystemBytes。
下面将继续介绍会话管理的状态转移。
(1)根据图3所示将经过预处理与检验的有效载荷输入至会话管理器,判定为否是当前会话状态有效的可转移状态,当前状态如果是初始创建会话包,则创建初始会话,状态机将管理状态转移至状态1(建立会话状态),如果无法从当前会话状态转移至载荷状态,则将其加入子集B中;
(2)当前会话状态为状态1,判定输入载荷中用于TCP会话管理的部分是否和TCP会话状态相符合,如若TCP连接正常的情况,则状态机将管理状态转移至状态2(建立协议会话状态),如果TCP连接超时则此载荷被转移至子集B,状态机状态不变;
(3)当前会话状态为状态2,判定输入载荷是否为协议创建载荷,结合图4中的载荷数据;
(3.1)首先Active方会发送Select.req数据,原始数据流为:00 00 00 0a 00 0000 00 00 01 00 00 00 01。根据图2中的协议字段解析如下:
此时发送载荷为控制载荷,无Message Text字段,并将SType置为1明确指示消息类型为Select.req类型。
(3.2)Passive方将发送Select.rsp包,表示建立连接,原始数据流为:00 00 000a ff ff 00 00 00 02 00 00 00 01。根据图2中的协议字段解析如下:
Session ID返回非零值0xffff,之后的控制信息都会采用同样的Session ID来作为会话管理ID,同样地由于Select.rsp是为Select.req的回复消息,System Bytes相同均置为1,并将SType置为2明确指示消息类型为Select.rsp类型。
(3.3)Active方在建立连接以后会发送Linktest.req作为控制信息,原始数据流为:0000 00 0a ff ff 00 00 00 05 00 00 00 02。根据图2中的协议字段解析如下:
Session ID将使用之前通信过程中确定的非零值0xffff,System Bytes将按照增量顺序增长以区别于先前的请求会话,并将SType置为5明确指示消息类型为Linktest.req类型。
(3.4)Passive方将发送Linktest.rsp信息作为回复Linktest.req,原始数据流为:00 00 00 0a ff ff 00 00 00 06 00 00 00 02。根据图2中的协议字段解析如下:
同样Session ID采用已确定的0xffff,System Bytes与Linktest.req中的载荷相同,并将SType置为6明确指示消息类型为Linktest.rsp类型。
如上即建立协议控制状态的过程,如果上述状态变化符合设计,状态机将管理状态转移至状态3(建立协议控制状态),如果上述任意状态出现超时或者未按时到达的情况,则协议控制状态超时,状态机将管理状态转移至状态1;
(4)当前会话状态为状态3,接收传输数据的载荷,可用于传输协议数据,如若出现发送数据类型异常或者接收数据时间超时的情况,状态机将管理状态转移至状态1,数据正常传输时状态机将管理状态维持在状态4(建立协议数据发送状态),例如按照SECS2协议设计发送S2F49数据,传输数据经解析以后如下所示:
数据信息的Session ID为0,此ID为重新会话商议ID,与协议会话创立时的ID不同,Header Byte 2(1000 0010)最高位的1表明W-bit为1,低位的数据表明Stream为2即S2,Header Byte 3表明Function为49,System Bytes=10表示这是第十次相互发送信息。对于传送的数据,使用一个队列结构来保存,首先Data Format指明表示Length的字节数n和类型,再用n个字节表示List的长度;对于队列中的每个数据,同样先用一个字节指明表示Length的字节数n和类型,再用n个字节表示数据的长度m,之后的m个字节就是数据的值。例如传输ASCII数据“OBJSPEC=‘OBJSPEC’,原始传输数据为:41 11 4F 42 4A 53 50 45433D 27 4F 42 4A 53 50 45 43 27。传输数据经解析以后如下所示:
Data Format(0x0100 0001)最低的两个bits指明需要1个字节表示数据的长度,高位的六个bits指明数据类型为ASCII之后的一个字节表示数据长度为11个字节,紧接其后的11个字节即传输的ASCII值;
步骤304:深度流特征检测首先设定一个流状态累加器,该累加器会将已经识别完成的流量特征汇总聚合,并同时描绘出当前已识别数据流特征和SECS2数据流特征的相符性和差异性。
步骤401:协议整体表决器根据深度包检测和深度流检测的判定结果,收集整个数据包中判定为SECS2协议包的数据,将提取出的数据包汇总成新的SECS2数据流,并依据上述方法步骤,利用新的数据流对参数数据特征以及协议字符特征进行反馈和修正,提升***后续的识别准确性,并根据SECS2协议的连接特征,以及步骤3中的SECS2会话管理器,如若会话连接建立成功,则创建当前识别过程的SECS2协议连接,该协议连接可用于步骤302的有效连接识别过程。
针对数据包判定概率,采用如下的计算模式:
针对进行深度流检测过程的数据包,读取步骤1中选择的特征P1,P2……Pn所对应的特性阈值β1、β2……βn,并根据特性与协议的关联程序设定概率权重比α1、α2……αn,同时规定状态判定阈值M;根据特征P1,P2……Pn计算每个独立数据包的特征字段数值,并分别记为γ1、γ2……γn,分别比较γi与βi,i=1,2,……,n,,若满足γi<βi,则记为对该数据包该特征数值有效,通过判定所有的特征值之后,将符合的αn(n为满足γi<βi的i)代入公式:
Z1=αj1+αj2......αjk, (1)
其中,j1,j2,jk均是符合的阈值判定的特征序号,αj1、αj2……αjk为其对应的概率权重值,结合流状态累加器的当前数据流整体特征得到判定概率值Z1;
针对进行深度包检测过程的数据包,首先赋予协议数据包字段独立权值,针对上述的Session ID、Header Byte 2等字段,其对应权值为δz1、δz2……δzn,同样针对某些字段有多种赋值的情况,对应赋予权值(δz1-1、δz1-2…)、(δz2-1、δz2-2…)等;根据状态管理器所管理的状态所知,在不同会话状态中,对应字段有不同的特征值,根据对应字段不同特征值的权值,可以计算其该状态下的状态概率。首先赋予其不同状态以不同状态权值,用符号ε1、ε2……εn来表示。根据深度包检测过程中对应字段的符合情况以及状态管理器对应的状态转移情况,使用如下公式计算深度包检测过程状态概率(其中n表示不同状态,x、y等表示该状态下不同字段不同取值):
Z2=(δz1-x+δz2-y……)*εn, (2)
如上公式表示,根据协议不同阶段的字段值不同,将所有协议字段的对应权值进行加权求和,然后再乘以对应阶段的对应权值εn,求得深度包检测过程对应的状态概率Z2。
结合深度流检测过程和深度包检测过程计算得出的状态概率Z1和Z2,综合判定该数据包的协议种类,一般情况下还是采用分别加权求和的办法,根据求得的权重和来返回判定结果。同时可以指出的是,由于如上判定方法并不能简单根据固定概率来判定结果(除根据连接状态,已经达到100%判定概率的情况),在运行时通过机器学习方法还需特定指出一个判定阈值,该阈值可动态调整并判定状态概率。
步骤402:协议整体表决器将输出步骤401中的判定结果,以一个函数返回值的形式来呈现,对每一个读取处理的数据包,如果其判定概率为100%则返回布尔值为真,其他情况下均返回综合判定概率值以及和阈值比较的布尔结果,高于阈值的返回布尔值为真,低于阈值的返回布尔值为假,并同时判定流量数据是否处理完成,对未处理完成的数据包继续进行循环读取处理。
Claims (4)
1.一种结合深度包检测和深度流检测的SECS2流量快速识别方法,其特征在于,使用协议的快速识别***,所述***包括特征学习器、特征读取并管理调用器、流量特征识别器、协议整体表决器;其中,所述特征学习器用于完成针对SECS2协议的协议特征学习和提取;所述特征读取并管理调用器用于实现对SECS2的特征库的加载和动态管理;所述流量特征识别器用于实现对未知数据包的预处理过程、深度包检测的状态转移管理过程、深度流检测的特征参数数据处理和存储,并能根据处理的特征数据来判定数据包表现为SECS2协议数据包的总体概率值,包处理过程的主体***将从包识别角度管理SECS2协议识别的会话流程,后文中将该***表述为协议状态转移管理器;同理,流处理过程的主体***后文中将表述为协议流处理器;所述协议整体表决器将结合协议状态转移管理器、协议流处理器的输出结果来表决判定数据包是否为SECS2协议,并根据判定结果来反馈修正所述协议状态转移管理器和协议流处理器的中间判定参数值,完善整体的判定过程。
2.根据权利要求1所述结合深度包检测和深度流检测的SECS2流量快速识别方法,其特征在于,具体步骤为:
步骤1:特征学习;
由特征学习器利用已经标注完成的数据包集,读取已经标注的SECS2协议数据包集,将其分割为有效的独立数据包,利用机器学习的方法对提前标注识别的SECS2协议数据包集进行特征学习,利用正则表达式和字段校验以及状态转移的方法,针对完整的SECS2协议会话,提取出符合各会话阶段的SECS2深度包检测特征字符,生成并可持久化存储的包检测特征库;提取符合SECS2协议的特征数据字段;针对包检测特征,将SECS2协议中的字特征值信息整理为包特征库;其中,特征值信息主要为间隔出现的特征字符,将固定位置可出现的静态字段合集作为判定协议的特征值信息;将一些整体的包特性整理为流特征库;这里,所述特征包括最小报文长度、报文最大间隔时间、总包长、总字节数、总会话时间即该包与创建会话成功时的时间间隔、包间隔时间,依据如上数据流特征,将特征库持久化存储,建立符合SECS2协议的流特征库并存储;
步骤2:特征加载,即加载持久化存储的特征库;
由特征读取并管理调用器根据上述步骤1中完成的特征库,分别读取包检测特征和流检测特征,加载完成以后将特征库贮存在程序中,同时建立动态特征库管理进程,管理并动态调整整个特征库的变化情况,供后续特征识别步骤调用;
步骤3:特征识别;
由流量特征识别器创建会话状态,状态的存储和转移使用状态转移机来处理;具体流程为,流量特征识别器循环读入处理数据包,并经过数据包预处理,根据TCP会话五元组判定该数据包是否符合SECS2连接,如果符合SECS2连接特征,则直接标记为SECS2数据包,否则调用后续的流量识别过程;其中,首先利用特征信息判定该数据包是否可用于进行深度包检测,并将可执行的数据包划分为子集包A,将未通过判定的数据包划分为子集包B;按照SECS2协议字段定义,赋予处理出的部分PAYLOAD值含义,以供后续字段匹配和识别处理;读取内存中的特征信息哈希表,生成一个包匹配处理器,同时根据通信会话的需要,设定一个会话管理器,并为处于当前会话通信状态下的数据包创建五元组用于表示当前会话管理器控制的会话包,五元组为:源IP,源端口,目的IP,目的端口,会话ID;会话管理器用于识别和管理数据包通信会话的状态转移特征,按照状态转移流程来识别和处理通信会话中的个体数据包;根据已经存在的SECS2协议数据链路连接,判定当前数据包是否属于该连接:若符合连接特征,则判定为SECS2协议流量;若当前无SECS2协议连接或当前数据包不符合已有连接的特征,对于符合会话状态的数据包将依据深度包检测特征方法来处理,对于不符合当前会话状态要求的数据包,将其划分到子集包B中;利用上述步骤预处理出的流特征参数文件,生成一个流匹配处理器,并为每一个流特征参数分配一个相适应的权重比值;流匹配处理器将获取到的特征宏观流参数信息作用于子集包B中的数据包中,根据匹配器参数与数据包特征的匹配适应性以及参数的对应权重比,计算该数据包表现为SECS2协议包的概率值,将判定概率作为步骤结果输出,以供后续步骤做整体性裁决;
步骤4:综合表决/判决;
由协议整体表决器将结合包检测识别结果和流检测特征概率,统一判定该数据包是否为SECS2通信数据包,返回结果形式均采用函数结构形式,针对循环处理的每一个数据包,返回一个函数判定结果,并同时根据流量数据是否处理完成,对未处理完成的数据包继续进行循环读取处理,最后统一输出结果。
3.根据权利要求1所述结合深度包检测和深度流检测的SECS2流量快速识别方法,其特征在于,步骤3的具体流程为:
步骤301:流量特征识别器读取数据包文件以后,根据数据链路层中数据链路的类型,提取判定链路层协议,据此判定数据来源,提取出链路层以上即网络层数据并同时丢弃其他数据;在提出到网络层数据以后,首先判定是否为IP协议报文,若为非IP协议则丢弃该数据报文,若判定为IP协议报文,则去掉IP头部以后保留下上层数据,同时丢弃其他数据;依据同样的处理流程处理判定是否为TCP协议,并保留处理出TCP协议的载荷;初步结合SECS2的协议状态特征字预处理出待进一步判定的子集包A,并根据SECS2协议文档建立特征字符映射哈希表;同时根据步骤1中的特征学习规则,选取最小报文长度、报文最大间隔时间、总包长、总字节数、总会话时间、包间隔时间特征作为深度流特征检测的判定参数,分别记为P1,P2……Pn,并根据所筛选的大量的SECS2正常通信数据流,根据机器学习结果计算出上述P1,P2……Pn表征的动态特性阈值β1、β2……βn;
步骤302:流量特征识别器根据预处理的数据包特征以及数据连接特征,判定是否有已经存在的SECS2协议数据链路连接,判定当前数据包是否属于该连接,如若符合连接特征则判定为SECS2协议流量,并直接向综合表决器返回判定结果,此时可判定该数据包为SECS协议的判定概率为100%;如若当前无SECS2协议连接或当前数据包不符合已有连接的特征,则继续进行一下步骤;
步骤303:报文协议结构包括头部信息占 10 个字节,包含 6 部分信息,在交互数据的开头阶段,其中数据信息的 Stream 和 Function 信息包含在 Message Header 中的Header Byte 2&3,控制信息与数据传输信息的区别体现在 Session ID 和 SType 中;头部中的各字段解释如下:
(1)Session ID:其表示为一个 16 位无符号整数,用来关联控制消息和其后的数据消息;对于数据信息和建立通讯时第一次发送的 Request,Session ID=0 建立通讯后,返回的Response 会产生非零的 Session ID(1-65535),后续的控制信息都会使用这一非零的Session ID;
(2)Header Byte 2:其表示不同HSMS协议阶段的消息特征;对于控制信息,此字段表示为0;对于数据信息,此处将包含 W-bit和消息SECS Stream 信息;
(3)Header Byte 3:其表示不同协议阶段的消息特征,不同于Header Byte 2的是,该字段表示的是SECS Function;对于控制信息,此字节为 0;对于数据信息,此处将表示包含的SECS Function信息;
(4)PType:其表示类型是一个 8 位无符号整数,表示类型是一个枚举值,其表示含义为消息头部和消息文本的编码类型,通常设计中其取值为 0,表示编码类型为 SECS-II;
(5)SType:其同样为无符号整型数,用于表示消息类型,取值为 0 时表示数据消息,否则表示控制消息;
(6)System Bytes: 用于在整个通信过程中标示特定的传输阶段,每条数据信息和控制信息的System Bytes 必须互不相同;但回复信息必须和请求信息有相同的SystemBytes;
会话管理的状态转移:
(1)将经过预处理与检验的有效载荷输入至会话管理器,判定为否是当前会话状态有效的可转移状态,当前状态如果是初始创建会话包,则创建初始会话,状态机将管理状态转移至状态1:建立会话状态,如果无法从当前会话状态转移至载荷状态,则将其加入子集B中;
(2)当前会话状态为状态1,判定输入载荷中用于TCP会话管理的部分是否和TCP会话状态相符合,如若TCP连接正常的情况,则状态机将管理状态转移至状态2:建立协议会话状态,如果TCP连接超时则此载荷被转移至子集B,状态机状态不变;
(3)当前会话状态为状态2,判定输入载荷是否为协议创建载荷;
如上即建立协议控制状态的过程,如果上述状态变化符合设计,状态机将管理状态转移至状态3:建立协议控制状态,如果上述任意状态出现超时或者未按时到达的情况,则协议控制状态超时,状态机将管理状态转移至状态1;
(4)当前会话状态为状态3,接收传输数据的载荷,可用于传输协议数据,如若出现发送数据类型异常或者接收数据时间超时的情况,状态机将管理状态转移至状态1,数据正常传输时状态机将管理状态维持在状态4:建立协议数据发送状态;
步骤304:深度流特征检测首先设定一个流状态累加器,该累加器会将已经识别完成的流量特征汇总聚合,并同时描绘出当前已识别数据流特征和SECS2数据流特征的相符性和差异性。
4.根据权利要求3所述结合深度包检测和深度流检测的SECS2流量快速识别方法,其特征在于,步骤4的具体流程为:
步骤401:协议整体表决器根据深度包检测和深度流检测的判定结果,收集整个数据包中判定为SECS2协议包的数据,将提取出的数据包汇总成新的SECS2数据流,并依据上述步骤,利用新的数据流对参数数据特征以及协议字符特征进行反馈和修正,提升***后续的识别准确性,并根据SECS2协议的连接特征,以及步骤3中的SECS2会话管理器,如若会话连接建立成功,则创建当前识别过程的SECS2协议连接,该协议连接可用于有效连接识别过程;
针对数据包判定概率,采用如下的计算模式:
针对进行深度流检测过程的数据包,读取步骤1中选择的特征作为深度流特征检测的判定参数,记为P1,P2……Pn,根据机器学习结果计算出上述P1,P2……Pn表征的动态特性阈值即为β1、β2……βn;根据特性与协议的关联程序设定概率权重比为α1、α2……αn,同时规定状态判定阈值M;根据特征P1,P2……Pn计算每个独立数据包的特征字段数值,并分别记为γ1、γ2……γn,分别比较γi与βi,i=1,2,……,n,,若满足γi<βi,则记为对该数据包该特征数值有效,通过判定所有的特征值之后,将符合的αn,n为满足γi<βi的i,代入公式:
其中,j1,j2,jk均是符合的阈值判定的特征序号,αj1、αj2……αjk为其对应的概率权重值,结合流状态累加器的当前数据流整体特征得到判定概率值Z1;
针对进行深度包检测过程的数据包,首先赋予协议数据包字段独立权值,针对上述的Session ID、Header Byte 2这些字段,其对应权值为δz1、δz2…… δzn,同样针对某些字段有多种赋值的情况,对应赋予权值(δz1-1、δz1-2…)、(δz2-1、δz2-2…);根据状态管理器所管理的状态所知,在不同会话状态中,对应字段有不同的特征值,根据对应字段不同特征值的权值,可以计算其该状态下的状态概率;首先赋予其不同状态以不同状态权值,用符号ε1、ε2…… εn来表示;根据深度包检测过程中对应字段的符合情况以及状态管理器对应的状态转移情况,使用如下公式计算深度包检测过程状态概率,其中n表示不同状态,x、y等表示该状态下不同字段不同取值:
Z2 = (δz1-x + δz2-y……)* εn (2)
如上公式表示,根据协议不同阶段的字段值不同,将所有协议字段的对应权值进行加权求和,然后再乘以对应阶段的对应权值εn,求得深度包检测过程对应的状态概率Z2;
结合深度流检测过程和深度包检测过程计算得出的状态概率Z1和Z2,综合判定该数据包的协议种类,采用分别加权求和的办法,根据求得的权重和来返回判定结果;并在运行时通过机器学习方法设定一个判定阈值,用于动态调整并判定状态概率;
步骤402:协议整体表决器将输出步骤401中的判定结果,以一个函数返回值的形式来呈现,对每一个读取处理的数据包,如果其判定概率为100%则返回布尔值为真,其他情况下均返回综合判定概率值以及和阈值比较的布尔结果,高于阈值的返回布尔值为真,低于阈值的返回布尔值为假,并同时判定流量数据是否处理完成,对未处理完成的数据包继续进行循环读取处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274050.5A CN114070800B (zh) | 2021-10-29 | 2021-10-29 | 一种结合深度包检测和深度流检测的secs2流量快速识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274050.5A CN114070800B (zh) | 2021-10-29 | 2021-10-29 | 一种结合深度包检测和深度流检测的secs2流量快速识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114070800A true CN114070800A (zh) | 2022-02-18 |
CN114070800B CN114070800B (zh) | 2023-06-27 |
Family
ID=80236079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111274050.5A Active CN114070800B (zh) | 2021-10-29 | 2021-10-29 | 一种结合深度包检测和深度流检测的secs2流量快速识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114070800B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037698A (zh) * | 2022-05-30 | 2022-09-09 | 天翼云科技有限公司 | 一种数据识别方法、装置及电子设备 |
CN115412532A (zh) * | 2022-08-15 | 2022-11-29 | 深圳市风云实业有限公司 | 一种sip及扩展协议会话控制流识别及处理的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995740A (zh) * | 2018-01-02 | 2019-07-09 | 国家电网公司 | 基于深度协议分析的威胁检测方法 |
CN113037646A (zh) * | 2021-03-04 | 2021-06-25 | 西南交通大学 | 一种基于深度学习的列车通信网络流量识别方法 |
-
2021
- 2021-10-29 CN CN202111274050.5A patent/CN114070800B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109995740A (zh) * | 2018-01-02 | 2019-07-09 | 国家电网公司 | 基于深度协议分析的威胁检测方法 |
CN113037646A (zh) * | 2021-03-04 | 2021-06-25 | 西南交通大学 | 一种基于深度学习的列车通信网络流量识别方法 |
Non-Patent Citations (1)
Title |
---|
詹成;张伟;: "基于数据流前端检测的快速协议识别", 现代电子技术, no. 23 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037698A (zh) * | 2022-05-30 | 2022-09-09 | 天翼云科技有限公司 | 一种数据识别方法、装置及电子设备 |
CN115037698B (zh) * | 2022-05-30 | 2024-01-02 | 天翼云科技有限公司 | 一种数据识别方法、装置及电子设备 |
CN115412532A (zh) * | 2022-08-15 | 2022-11-29 | 深圳市风云实业有限公司 | 一种sip及扩展协议会话控制流识别及处理的方法 |
CN115412532B (zh) * | 2022-08-15 | 2023-07-21 | 深圳市风云实业有限公司 | 一种sip及扩展协议会话控制流识别及处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114070800B (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7483972B2 (en) | Network security monitoring system | |
CN112714045B (zh) | 一种基于设备指纹和端口的快速协议识别方法 | |
CN114070800B (zh) | 一种结合深度包检测和深度流检测的secs2流量快速识别方法 | |
US20200059431A1 (en) | System and method for identifying devices behind network address translators | |
CN110347501A (zh) | 一种业务检测方法、装置、存储介质及电子设备 | |
CN111866024B (zh) | 一种网络加密流量识别方法及装置 | |
CN112235264A (zh) | 一种基于深度迁移学习的网络流量识别方法及装置 | |
CN115473850B (zh) | 一种基于ai的实时数据过滤方法、***及存储介质 | |
US7907543B2 (en) | Apparatus and method for classifying network packet data | |
CN112600725B (zh) | 一种icmp报文加速方法 | |
CN111953670A (zh) | 基于Meek传输插件的自适应混淆方法、***及计算机存储介质 | |
CN111741127B (zh) | 通信连接阻断方法、装置、电子设备及存储介质 | |
KR20020049462A (ko) | 인터넷상 트래픽의 상위 계층 프로토콜들을 구분하는 방법및 장치 | |
CN101710898A (zh) | 一种应用软件通信协议特征的描述方法 | |
CN114050917B (zh) | 音频数据的处理方法、装置、终端、服务器及存储介质 | |
CN115037698B (zh) | 一种数据识别方法、装置及电子设备 | |
CN113938312B (zh) | 一种暴力破解流量的检测方法及装置 | |
CN105357166A (zh) | 一种下一代防火墙***及其检测报文的方法 | |
RU2264649C1 (ru) | Способ обнаружения удаленных атак на автоматизированные системы управления | |
CN117395162B (zh) | 利用加密流量识别操作***的方法、***、设备及介质 | |
US20230208864A1 (en) | Network equipment and processing system and method for learning network behavior characteristics | |
EP4207678A1 (en) | Network equipment and processing system and method for learning network behavior characteristics | |
RU2265242C1 (ru) | Способ мониторинга безопасности автоматизированных систем | |
TWI805156B (zh) | 學習網路行為特徵的網路設備、處理系統與方法 | |
US20210158217A1 (en) | Method and Apparatus for Generating Application Identification Model |
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 |