CN110099058B - Modbus报文检测方法、装置、电子设备及存储介质 - Google Patents

Modbus报文检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN110099058B
CN110099058B CN201910372290.5A CN201910372290A CN110099058B CN 110099058 B CN110099058 B CN 110099058B CN 201910372290 A CN201910372290 A CN 201910372290A CN 110099058 B CN110099058 B CN 110099058B
Authority
CN
China
Prior art keywords
modbus
message
modbus message
filtering
strategy
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.)
Active
Application number
CN201910372290.5A
Other languages
English (en)
Other versions
CN110099058A (zh
Inventor
郭立龙
袁键
陈夏裕
吴志华
蔡艳林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Hengtong Industrial Control Safety Research Institute Co Ltd
Original Assignee
Jiangsu Hengtong Industrial Control Safety Research Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Hengtong Industrial Control Safety Research Institute Co Ltd filed Critical Jiangsu Hengtong Industrial Control Safety Research Institute Co Ltd
Priority to CN201910372290.5A priority Critical patent/CN110099058B/zh
Publication of CN110099058A publication Critical patent/CN110099058A/zh
Application granted granted Critical
Publication of CN110099058B publication Critical patent/CN110099058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提出一种Modbus报文检测方法、装置、电子设备及存储介质,涉及工业信息安全技术领域,在由设定的ACL策略、协议栈指纹策略以及DPI规则对Modbus报文进行报文结构层面的过滤后,通过按照设定的字序顺序,对Modbus报文中多个字节的值进行排列组合,从而获得Modbus报文对应的点值数据,进而对Modbus报文进行内容层面的过滤,相比于现有技术,在对Modbus报文进行过滤时,不仅需要Modbus报文满足报文结构层面的要求,还需要Modbus报文包含的内容满足设定的要求,提升了数据报文的安全性。

Description

Modbus报文检测方法、装置、电子设备及存储介质
技术领域
本申请涉及工业信息安全技术领域,具体而言,涉及一种Modbus报文检测方法、装置、电子设备及存储介质。
背景技术
商用防火墙是一种常见的网络安全设备,其功能包括访问控制、NAT(NetworkAddress Translation,网络地址转换)、攻击防护、流量审计等。其中访问控制技术是一种实现在不同网络安全域之间的安全保障方法,对网络层和传输层数据过滤,检测数据流中每个数据包的源IP地址(Internet Protocol Address,互联网协议地址)、目标IP地址、源端口号、目标端口号、协议类型等,确定是否允许数据包通过。
数据采集与监控系统(Supervisory Control And Data Acquisition,SCADA)、分布式控制系统(Distributed Control System,DCS)、过程控制系统(Process ControlSystem,PCS)、可编程逻辑控制器(Programmable Logic Controller,PLC)等工业控制广泛运用于工业控制领域的生产设备的运行,例如核设施、钢铁、化工、石油石化、电力、天然气、先进制造、水利枢纽、环境保护、铁路、城市轨道交通、民航、城市供水供气供热等。
然而,在工业控制系统中,工业网络上使用的通讯协议,例如Modbus、OPC(OLE forProcess Control)等都是应用层协议,商用防火墙的访问控制方法只能完成数据包的网络层及传输层关键字段的匹配过滤,缺少针对工业协议数据包深度解析过滤的技术,无法实现对工业协议数据的深度解析与检测,存在被攻击的安全隐患。
发明内容
本申请的目的在于提供一种Modbus报文检测、装置、电子设备及存储介质,能够提升数据报文的安全性。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种Modbus报文检测方法,所述方法包括:
按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;
若所述ACL策略过滤不通过,则丢弃所述Modbus报文,产生告警日志;
若所述ACL策略过滤通过,则按照设定的协议栈指纹策略,对所述Modbus报文进行过滤;
若所述协议栈指纹策略过滤不通过,则执行丢弃所述Modbus报文,产生告警日志的步骤;
若所述协议栈指纹策略过滤通过,则按照设定的深度报文检测DPI规则,对所述Modbus报文进行过滤;
若所述DPI规则过滤不通过,则执行丢弃所述Modbus报文,产生告警日志的步骤;
若所述DPI规则过滤通过,则判断所述Modbus报文的操作类型;
若所述操作类型为读操作,则确定所述Modbus报文检测通过;
若所述操作类型为写操作,则按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据;
判断所述Modbus报文对应的点值数据是否在设定的阈值范围内;
若所述Modbus报文对应的点值数据在所述设定的阈值范围内,则确定所述Modbus报文检测通过;
若所述Modbus报文对应的点值数据不在所述设定的阈值范围内,则执行丢弃所述Modbus报文,产生告警日志的步骤。
第二方面,本申请实施例提供一种Modbus报文检测装置,所述装置包括:
过滤模块,用于按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;
执行模块,用于若所述ACL策略过滤不通过,则丢弃所述Modbus报文,产生告警日志;
若所述ACL策略过滤通过,则所述过滤模块还用于,按照设定的协议栈指纹策略,对所述Modbus报文进行过滤;
若所述协议栈指纹策略过滤不通过,则所述执行模块丢弃所述Modbus报文,产生告警日志;
若所述协议栈指纹策略过滤通过,则所述过滤模块还用于,按照设定的深度报文检测DPI规则,对所述Modbus报文进行过滤;
若所述DPI规则过滤不通过,则所述执行模块丢弃所述Modbus报文,产生告警日志;
若所述DPI规则过滤通过,则所述过滤模块还用于,判断所述Modbus报文的操作类型;
若所述操作类型为读操作,则所述执行模块还用于,确定所述Modbus报文检测通过;
若所述操作类型为写操作,则所述执行模块还用于,按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据;
所述过滤模块还用于,判断所述Modbus报文对应的点值数据是否在设定的阈值范围内;
若所述Modbus报文对应的点值数据在所述设定的阈值范围内,则所述执行模块确定所述Modbus报文检测通过;
若所述Modbus报文对应的点值数据不在所述设定的阈值范围内,则所述执行模块丢弃所述Modbus报文,产生告警日志。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括存储器,用于存储一个或多个程序;处理器。当所述一个或多个程序被所述处理器执行时,实现上述的Modbus报文检测方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的Modbus报文检测方法。
本申请实施例提供的一种Modbus报文检测、装置、电子设备及存储介质,在由设定的ACL策略、协议栈指纹策略以及DPI规则对Modbus报文进行报文结构层面的过滤后,通过按照设定的字序顺序,对Modbus报文中多个字节的值进行排列组合,从而获得Modbus报文对应的点值数据,进而对Modbus报文进行内容层面的过滤,相比于现有技术,在对Modbus报文进行过滤时,不仅需要Modbus报文满足报文结构层面的要求,还需要Modbus报文包含的内容满足设定的要求,提升了数据报文的安全性。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的电子设备的一种示意性结构框图;
图2为本申请实施例提供的Modbus报文检测方法的一种示意性流程图;
图3为图2中S205的子步骤的一种示意性流程图;
图4为图2中S201的子步骤的一种示意性流程图;
图5为图2中S202的子步骤的一种示意性流程图;
图6为图2中S203的子步骤的一种示意性流程图;
图7为本申请实施例提供的Modbus报文检测装置的一种示意性结构图。
图中:100-电子设备;101-存储器;102-处理器;103-通信接口;300-Modbus报文检测装置;301-过滤模块;302-执行模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1为本申请实施例提供的电子设备100的一种示意性结构框图。该电子设备100可用以实现本申请实施例提供的Modbus报文检测方法,比如在工业数据管理系统中用于防火墙的设备。
该电子设备100包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
存储器101可用于存储软件程序及模块,如本申请实施例提供的Modbus报文检测装置300对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图1所示的结构仅为示意,电子设备100还可以包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
下面以如图1给出的电子设备100作为示意性执行主体,对本申请实施例提供的Modbus报文检测方法进行说明。
请参阅图2,图2为本申请实施例提供的Modbus报文检测方法的一种示意性流程图,包括以下步骤:
S201,按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;若ACL策略过滤通过则执行S202;若ACL策略过滤不通过,则执行S208。
S202,按照设定的协议栈指纹策略,对Modbus报文进行过滤;若协议栈指纹策略过滤通过,则执行S203;若协议栈指纹过滤不通过,则执行S208。
S203,按照设定的深度报文检测DPI规则,对Modbus报文进行过滤;若DPI规则过滤通过,则执行S204;若DPI规则过滤不通过,则执行S208。
S204,判断Modbus报文的操作类型;若为读操作,则执行S207;若为写操作,则执行S205。
S205,按照设定的字序顺序,排列组合Modbus报文中多个字节的值,获得Modbus报文对应的点值数据。
S206,判断Modbus报文对应的点值数据是否在设定的阈值范围内;若在,则执行S207;若不在,则执行S208。
S207,确定Modbus报文检测通过。
S208,丢弃Modbus报文,产生告警日志。
在本申请实施例中,电子设备100按照设定的ACL(Access Control List,访问控制列表)策略,对接收的Modbus报文进行过滤;若该ACL策略过滤通过,则说明该Modbus报文可能为正常的数据报文,此时执行S202,进行下一步检测;反之,若该ACL策略过滤不通过,则说明该Modbus报文为异常报文,比如为网络攻击报文,此时则执行S208,丢弃该报文,并产生告警日志,保护系统安全,避免遭受攻击。
经由上述ACL策略过滤后的Modbus报文,采用设定的协议栈指纹策略对该Modbus报文进一步进行过滤;若协议栈指纹策略过滤该Modbus报文通过,则表征该Modbus报文可能为正常的数据报文,此时执行S203,进行下一步检测;反之,若协议栈指纹策略过滤该Modbus报文不通过,则说明该Modbus报文为异常报文,此时则执行S208。
经过上述协议栈指纹策略过滤后的Modbus报文,采用设定的DPI(Deep PacketInspection,深度报文检测)规则,对该Modbus报文进一步进行过滤;若DPI规则过滤该Modbus报文通过,则表征该Modbus报文可能为正常的数据报文,此时执行S204,进行下一步检测;反之,若DPI规则过滤该Modbus报文不通过,则表征该Modbus报文为异常报文,此时执行S208。
上述执行ACL策略过滤、协议栈指纹策略过滤及DPI规则过滤后的Modbus报文,电子设备100需要进一步判断该Modbus报文的操作类型;若该Modbus报文的操作类型为读操作,即获取某一数据,则该Modbus报文的操作请求并不会对存储的数据库本身产生影响,此时电子设备100则执行S207,确定该Modbus报文检测通过,以执行相应的操作请求;若该Modbus报文的操作类型为写操作,即将Modbus报文中携带的数据信息写入存储的数据库,则该Modbus报文的操作请求可能会对存储的数据库产生一定的影响,此时则执行S205,进行下一步操作。
对于操作指令为写操作的Modbus报文,由于其可能会对存储的数据库产生一定的影响,因此,在本申请实施例中,通过按照设定的字序顺序,对Modbus报文中多个字节的值进行排列组合,从而得到该Modbus报文对应的点值数据。
其中,值得说明的是,Modbus报文对应的点值数据表征的是该Modbus报文携带的数据信息,比如,若某条Modbus报文中多个字节的值组合得到的16进制数为00000102,则换算为10进制的数后,得到的结果为258,则该条Modbus报文对应的点值数据则为258。
由此,在上述通过ACL策略过滤、协议栈指纹策略过滤及DPI规则过滤对Modbus报文进行报文结构层面的过滤后,基于所获得的该Modbus报文对应的点值数据,通过判断该Modbus报文对应的点值数据是否在设定的阈值范围内,来对Modbus报文进行内容层面的过滤;其中,若Modbus报文对应的点值数据在设定的阈值范围内,则执行S208,确定Modbus报文检测通过,该Modbus报文为正常的数据报文;反之,若Modbus报文对应的点值数据没有在设定的阈值范围内,则确定该Modbus报文为异常报文,执行S209,丢弃该Modbus报文,并产生告警日志,保护系统安全,避免遭受攻击。
比如在上述示例中,若设定的阈值范围为10-30,而解析该Modbus报文得到的结果为258,不在设定的阈值范围(10-30)内,则确定该Modbus报文为异常报文,执行S209,丢弃该Modbus报文,产生告警日志;而若解析该Modbus报文得到的结果为15,在设定的阈值范围(10-30)内,则确定该Modbus报文为正常的数据报文,执行S208,确定该Modbus报文检测通过。
基于上述设计,本申请实施例提供的Modbus报文检测方法,在由设定的ACL策略、协议栈指纹策略以及DPI规则对Modbus报文进行报文结构层面的过滤后,通过按照设定的字序顺序,对Modbus报文中多个字节的值进行排列组合,从而获得Modbus报文对应的点值数据,进而对Modbus报文进行内容层面的过滤,相比于现有技术,在对Modbus报文进行过滤时,不仅需要Modbus报文满足报文结构层面的要求,还需要Modbus报文包含的内容满足设定的要求,提升了数据报文的安全性。
在一些可能的实现方式中,用于防火墙的电子设备100,可能需要对多个不同的业务类型下的报文进行过滤,比如对包含锅炉内的压力数据的报文,或者是对培养室内的温度数据的报文,这些不同业务类型的报文可能由不同类型的采集前端进行采集,因此,对于不同业务类型的报文,可能需要操作不同的排列组合方式,才能还原得到每条Modbus报文各自对应的点值数据。
因此,可选地,作为一种可能的实现方式,在实现上述S205时,该Modbus报文中包含有标识信息,该标识信息用于标识该Modbus报文所属的业务类型,比如上述示例中,采用不同的标识信息,用以区分表征锅炉内压力数据的报文以及培养室内温度数据的报文;并且,在电子设备100中,设定的字序顺序为至少一条字序排列规则的集合,每条字序排列规则均为针对某一业务类型的Modbus报文中多个字节的排列组合方式。
并且,可选地,请参阅图3,图3为图2中S205的子步骤的一种示意性流程图,作为一种可能的实现方式,S205包括以下子步骤:
S205a,将设定的字序顺序包含的至少一条字序排列规则中,与Modbus报文包含的标识信息对应的字序排列规则作为目标字序排列规则。
S205b,根据Modbus报文包含的点地址以及点类型,确定Modbus报文中的多个字节为目标字节集合。
S205c,按照目标字序排列规则,组合目标字节集合包含的多个字节的值,得到Modbus对应的编码值。
S205d,解析编码值,得到Modbus报文对应的点值数据。
在本申请实施例中,电子设备100在执行S205时,根据Modbus报文包含的标识信息,在设定的字序顺序包含的至少一条字序排列规则中,将与Modbus报文包含的标识信息对应的字序排列规则作为目标字序排列规则。
例如,若设定的字序顺序包含ruleA和ruleB两条字序排列规则,且ruleA对应的标识信息为1,ruleB对应的标识信息为2;假定电子设备100接收的Modbus报文中包含的标识信息为1,则电子设备100将ruleA确定为目标字序排列规则;同理,若电子设备100接收的Modbus报文中包含的标识信息为2,则电子设备100将ruleB确定为目标字序排列规则。
并且,电子设备100根据该Modbus报文包含的点地址以及点类型,确定该Modbus报文中的多个字节为目标字节集合。
其中,Modbus报文包含的点地址表征编码的第一位在Modbus报文中位置;点类型用以表征该Modbus报文的字符类型。
例如,一条Modbus报文为“00 00 00 00 06 00 01 10 00 64 00 02 00 00 0102”,解析该Modbus报文,得到点类型“00 00 00 00”表征该Modbus报文为DWord 32位无符号数;且根据该Modbus报文的点地址“00 64”解析出编码的第一位的地址为100,则得到的目标字节集合为“00 00 01 02”,包含4个字节的数值。
因此,根据所确定得到的目标字序排列规则,将目标字节集合包含的多个字节的值进行排列组合,得到该Modbus报文对应的编码值,进而解析该编码值,得到Modbus报文对应的点值数据。
比如在前述示例中,假定确定的目标字序排列规则为FFH4 FFH3 FFH2 FFH1,该目标字序排列规则表征从小端开始排列,则得到的编码值为“00000102”,由此,解析该编码值“00000102”,得到该Modbus报文对应的点值数据为258。
其中,作为一种可能的实现方式,基于Modbus报文中包含的源IP、点地址及功能码,标识信息可采用Modbus报文中包含的源IP、点地址或者功能码,其中,功能码用于指示该Modbus报文的作用。
可选地,为实现S201,请参阅图4,图4为图2中S201的子步骤的一种示意性流程图,作为一种可能的实现方式,S201包含以下子步骤:
S201a,解析Modbus报文,获得Modbus报文对应的报文要素信息。
其中,报文要素信息为该Modbus报文包含的内容信息,包括Modbus报文对应的源IP、源端口信息、目标IP、目标端口信息及协议类型中的至少之一。
S201b,判断报文要素信息与设定的ACL策略是否匹配;若为是,则确定ACL策略过滤通过;若为否,则确定ACL策略过滤不通过。
在本申请实施例中,通过将多个报文要素信息预设记录电子设备100的白名单中,作为设定的ACL策略,比如预先设定有多个源IP、源端口、目标IP、目标端口及协议类型。
电子设备100按照预先设定的方式,获取接收的Modbus报文对应的源IP、源端口信息、目标IP、目标端口信息及协议类型中的至少之一作为该Modbus报文对应的报文要素信息,并将该获取的报文要素信息与设定的ACL策略进行匹配;若匹配的上,则表征ACL策略过滤通过;若匹配不上,则表征ACL策略过滤不通过,该Modbus报文为异常报文。
可选地,为实现S202,请参阅图5,图5为图2中S202的子步骤的一种示意性流程图,作为一种可能的实现方式,S202包含以下子步骤:
S202a,判断Modbus报文包含的目标端口与设定的端口是否匹配;若为是,则执行S202b;若为否,则确定协议栈指纹策略过滤不通过。
S202b,判断Modbus报文的报文特征与设定的Modbus协议特征是否匹配;若为是,则确定协议栈指纹策略过滤通过;若为否,则确定协议栈指纹策略过滤不通过。
在本申请实施例中,通过将多个端口信息及多个报文特征预存于电子设备100内,作为白名单,比如可以选择以报文长度作为报文特征预设于电子设备100内。
在对Modbus报文进行协议栈指纹策略过滤时,可以先判断该Modbus报文中包含的目标端口与设定的端口是否匹配,若能够匹配,则执行S202b,进行下一步判断;反之若该Modbus报文中包含的目标端口与设定的端口不匹配,则确定该Modbus报文协议栈指纹策略过滤不通过。
进一步地,在执行S202b时,通过判断该Modbus报文的报文特征与设定的Modbus协议特征是否匹配,若确定该Modbus报文的报文特征与设定的Modbus协议特征匹配,则确定该Modbus报文协议栈指纹策略过滤通过;反之,若确定该Modbus报文的报文特征与设定的Modbus协议特征不匹配,则确定该Modbus报文协议栈指纹策略过滤不通过。
比如,采用报文长度32作为设定的Modbus协议特征,在执行S202b时,若该Modbus报文的报文长度为30,与该设定的Modbus协议特征不匹配,则确定该Modbus报文协议栈指纹策略过滤不通过;而若该Modbus报文的报文长度为32,与该设定的Modbus协议特征匹配,则确定该Modbus报文协议栈指纹策略过滤通过。
可选地,为实现S203,请参阅图6,图6为图2中S203的子步骤的一种示意性流程图,作为一种可能的实现方式,S203包含以下子步骤:
S203a,解析Modbus报文,获得Modbus报文对应的协议要素信息。
其中,协议要素信息为该Modbus报文为满足Modbus协议所包含的要素信息,包含Modbus报文对应的设备地址、功能码、寄存器地址、寄存器数量中的至少之一;
S203b,判断协议要素信息与设定的白名单是否匹配;若为是,则确定DPI规则过滤通过;若为否,则确定DPI规则过滤不通过。
在本申请实施例中,通过将多个协议要素信息预设于电子设备100中,作为预设的白名单,比如预先设定多个设备地址、功能码、寄存器地址、寄存器数量等等。
电子设备100接收Modbus报文,并解析该Modbus报文后,获得该Modbus报文包含的设备地址、功能码、寄存器地址、寄存器数量中的至少之一,作为该Modbus报文对应的协议要素信息,并将获得的该Modbus报文对应的协议要素信息与设定的白名单进行匹配,若匹配的上,即该Modbus报文对应的协议要素信息预先记录于电子设备100的白名单中,则确定该Modbus报文DPI规则过滤通过;反之,若匹配不上,即该Modbus报文对应的协议要素信息没有预先记录于电子设备100的白名单中,则确定该Modbus报文DPI规则过滤不通过。
下面以一个应用实例对S205及S206进一步进行说明。
例如,一条过滤规则为:
点名:tag1;
功能码:16;
点地址:100;
数据类型:DWord32位无符号数;
字节顺序:FFH4FFH3FFH2FFH1;
设定的阈值范围为:10-20;
若接收的Modbus报文为:00 00 00 00 06 00 01 10 00 64 00 02 04 00 00 0102;
解析该Modbus报文,获得:
功能码:16(10);
点地址:100(64)
点值数据:258(00 00 01 02按照FFH4 FFH3 FFH2 FFH1进行解析得到的值)
其中,得到的点值数据不在设定的阈值范围内,因此丢弃该Modbus报文,并产生告警日志。
基于与上述实施例相同的发明思路,请参阅图7,图7为本申请实施例提供的Modbus报文检测装置300的一种示意性结构图,该Modbus报文检测装置300包括过滤模块301及执行模块302。
过滤模块301,用于按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;
执行模块302用于若ACL策略过滤不通过,则丢弃Modbus报文,产生告警日志;
若ACL策略过滤通过,则过滤模块301还用于按照设定的协议栈指纹策略,对Modbus报文进行过滤;
若协议栈指纹策略过滤不通过,则执行模块302丢弃Modbus报文,产生告警日志;
若协议栈指纹策略过滤通过,则过滤模块301还用于按照设定的深度报文检测DPI规则,对Modbus报文进行过滤;
若DPI规则过滤不通过,则执行模块302丢弃Modbus报文,产生告警日志;
若DPI规则过滤通过,则过滤模块301还用于判断Modbus报文的操作类型;
若操作类型为读操作,则执行模块302还用于确定Modbus报文检测通过;
若操作类型为写操作,则执行模块302还用于按照设定的字序顺序,排列组合Modbus报文中多个字节的值,获得Modbus报文对应的点值数据;
过滤模块301还用于判断Modbus报文对应的点值数据是否在设定的阈值范围内;
若Modbus报文对应的点值数据在设定的阈值范围内,则执行模块302确定Modbus报文检测通过;
若Modbus报文对应的点值数据不在设定的阈值范围内,则执行模块302丢弃Modbus报文,产生告警日志。
可选地,作为一种可能的实现方式,Modbus报文中包含有标识信息,标识信息用于标识Modbus报文所属的业务类型;设定的字序顺序为至少一条字序排列规则的集合;
执行模块302在按照设定的字序顺序,排列组合Modbus报文中多个字节的值,获得Modbus报文对应的点值数据时,具体用于:
将设定的字序顺序包含的至少一条字序排列规则中,与Modbus报文包含的标识信息对应的字序排列规则作为目标字序排列规则;
根据Modbus报文包含的点地址以及点类型,确定Modbus报文中的多个字节为目标字节集合;
按照目标字序排列规则,组合目标字节集合包含的多个字节的值,得到Modbus对应的编码值;
解析编码值,得到Modbus报文对应的点值数据。
可选地,作为一种可能的实现方式,标识信息为Modbus报文中包含的源IP、点地址或者功能码。
可选地,作为一种可能的实现方式,过滤模块301在按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤时,具体用于:
解析Modbus报文,获得Modbus报文对应的报文要素信息,其中,报文要素信息包含Modbus报文对应的源IP、源端口信息、目标IP、目标端口信息及协议类型中的至少之一;
判断报文要素信息与设定的ACL策略是否匹配;
若报文要素信息与设定的ACL策略匹配,则确定ACL策略过滤通过;
若报文要素信息与设定的ACL策略不匹配,则确定ACL策略过滤不通过。
可选地,作为一种可能的实现方式,过滤模块301在按照设定的协议栈指纹策略,对Modbus报文进行过滤时,具体用于:
判断Modbus报文包含的目标端口与设定的端口是否匹配;
若目标端口与设定的端口不匹配,则确定协议栈指纹策略过滤不通过;
若目标端口与设定的端口匹配,则判断Modbus报文的报文特征与设定的Modbus协议特征是否匹配;
若Modbus报文的报文特征与设定的Modbus协议特征不匹配,则确定协议栈指纹策略过滤不通过;
若Modbus报文的报文特征与设定的Modbus协议特征匹配,则确定协议栈指纹策略过滤通过。
可选地,作为一种可能的实现方式,过滤模块301在按照设定的深度报文检测DPI规则,对Modbus报文进行过滤时,具体用于:
解析Modbus报文,获得Modbus报文对应的协议要素信息,其中,协议要素信息包含Modbus报文对应的设备地址、功能码、寄存器地址、寄存器数量中的至少之一;
判断协议要素信息与设定的白名单是否匹配;
若协议要素信息与设定的白名单匹配,则确定DPI规则过滤通过;
若协议要素信息与设定的白名单不匹配,则确定DPI规则过滤不通过。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请实施例提供的一种Modbus报文检测、装置、电子设备及存储介质,在由设定的ACL策略、协议栈指纹策略以及DPI规则对Modbus报文进行报文结构层面的过滤后,通过按照设定的字序顺序,对Modbus报文中多个字节的值进行排列组合,从而获得Modbus报文对应的点值数据,进而对Modbus报文进行内容层面的过滤,相比于现有技术,在对Modbus报文进行过滤时,不仅需要Modbus报文满足报文结构层面的要求,还需要Modbus报文包含的内容满足设定的要求,提升了数据报文的安全性。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

Claims (10)

1.一种Modbus报文检测方法,其特征在于,所述方法包括:
按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;
若所述ACL策略过滤不通过,则丢弃所述Modbus报文,产生告警日志;
若所述ACL策略过滤通过,则按照设定的协议栈指纹策略,对所述Modbus报文进行过滤;
若所述协议栈指纹策略过滤不通过,则执行丢弃所述Modbus报文,产生告警日志的步骤;
若所述协议栈指纹策略过滤通过,则按照设定的深度报文检测DPI规则,对所述Modbus报文进行过滤;
若所述DPI规则过滤不通过,则执行丢弃所述Modbus报文,产生告警日志的步骤;
若所述DPI规则过滤通过,则判断所述Modbus报文的操作类型;
若所述操作类型为读操作,则确定所述Modbus报文检测通过;
若所述操作类型为写操作,则按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据,其中,所述点值数据为所述Modbus报文中多个字节的值经排列组合后的十进制数值;
判断所述Modbus报文对应的点值数据是否在设定的阈值范围内;
若所述Modbus报文对应的点值数据在所述设定的阈值范围内,则确定所述Modbus报文检测通过;
若所述Modbus报文对应的点值数据不在所述设定的阈值范围内,则执行丢弃所述Modbus报文,产生告警日志的步骤。
2.如权利要求1所述的方法,其特征在于,所述Modbus报文中包含有标识信息,所述标识信息用于标识所述Modbus报文所属的业务类型;所述设定的字序顺序为至少一条字序排列规则的集合;
按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据的步骤,包括:
将所述设定的字序顺序包含的至少一条字序排列规则中,与所述Modbus报文包含的标识信息对应的字序排列规则作为目标字序排列规则;
根据所述Modbus报文包含的点地址以及点类型,确定所述Modbus报文中的多个字节为目标字节集合,其中,所述Modbus报文包括至少一段编码,所述点地址表征对应编码在所述Modbus报文中的首地址,所述点类型表征所述Modbus报文的字符类型;
按照所述目标字序排列规则,组合所述目标字节集合包含的多个字节的值,得到所述Modbus对应的编码值;
解析所述编码值,得到所述Modbus报文对应的点值数据。
3.如权利要求2所述的方法,其特征在于,所述标识信息为所述Modbus报文中包含的源IP、点地址或者功能码。
4.如权利要求1-3任一项所述的方法,其特征在于,按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤的步骤,包括:
解析所述Modbus报文,获得所述Modbus报文对应的报文要素信息,其中,所述报文要素信息包含所述Modbus报文对应的源IP、源端口信息、目标IP、目标端口信息及协议类型中的至少之一;
判断所述报文要素信息与所述设定的ACL策略是否匹配;
若所述报文要素信息与所述设定的ACL策略匹配,则确定所述ACL策略过滤通过;
若所述报文要素信息与所述设定的ACL策略不匹配,则确定所述ACL策略过滤不通过。
5.如权利要求1-3任一项所述的方法,其特征在于,按照设定的协议栈指纹策略,对所述Modbus报文进行过滤的步骤,包括:
判断所述Modbus报文包含的目标端口与设定的端口是否匹配;
若所述目标端口与所述设定的端口不匹配,则确定所述协议栈指纹策略过滤不通过;
若所述目标端口与所述设定的端口匹配,则判断所述Modbus报文的报文特征与设定的Modbus协议特征是否匹配;
若所述Modbus报文的报文特征与所述设定的Modbus协议特征不匹配,则确定所述协议栈指纹策略过滤不通过;
若所述Modbus报文的报文特征与所述设定的Modbus协议特征匹配,则确定所述协议栈指纹策略过滤通过。
6.如权利要求1-3任一项所述的方法,其特征在于,按照设定的深度报文检测DPI规则,对所述Modbus报文进行过滤的步骤,包括:
解析所述Modbus报文,获得所述Modbus报文对应的协议要素信息,其中,所述协议要素信息包含所述Modbus报文对应的设备地址、功能码、寄存器地址、寄存器数量中的至少之一;
判断所述协议要素信息与设定的白名单是否匹配;
若所述协议要素信息与所述设定的白名单匹配,则确定所述DPI规则过滤通过;
若所述协议要素信息与所述设定的白名单不匹配,则确定所述DPI规则过滤不通过。
7.一种Modbus报文检测装置,其特征在于,所述装置包括:
过滤模块,用于按照设定的访问控制列表ACL策略,对接收的Modbus报文进行过滤;
执行模块,用于若所述ACL策略过滤不通过,则丢弃所述Modbus报文,产生告警日志;
若所述ACL策略过滤通过,则所述过滤模块还用于,按照设定的协议栈指纹策略,对所述Modbus报文进行过滤;
若所述协议栈指纹策略过滤不通过,则所述执行模块丢弃所述Modbus报文,产生告警日志;
若所述协议栈指纹策略过滤通过,则所述过滤模块还用于,按照设定的深度报文检测DPI规则,对所述Modbus报文进行过滤;
若所述DPI规则过滤不通过,则所述执行模块丢弃所述Modbus报文,产生告警日志;
若所述DPI规则过滤通过,则所述过滤模块还用于,判断所述Modbus报文的操作类型;
若所述操作类型为读操作,则所述执行模块还用于,确定所述Modbus报文检测通过;
若所述操作类型为写操作,则所述执行模块还用于,按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据,其中,所述点值数据为所述Modbus报文中多个字节的值经排列组合后的十进制数值;
所述过滤模块还用于,判断所述Modbus报文对应的点值数据是否在设定的阈值范围内;
若所述Modbus报文对应的点值数据在所述设定的阈值范围内,则所述执行模块确定所述Modbus报文检测通过;
若所述Modbus报文对应的点值数据不在所述设定的阈值范围内,则所述执行模块丢弃所述Modbus报文,产生告警日志。
8.如权利要求7所述的装置,其特征在于,所述Modbus报文中包含有标识信息,所述标识信息用于标识所述Modbus报文所属的业务类型;所述设定的字序顺序为至少一条字序排列规则的集合;
所述执行模块在按照设定的字序顺序,排列组合所述Modbus报文中多个字节的值,获得所述Modbus报文对应的点值数据时,具体用于:
将所述设定的字序顺序包含的至少一条字序排列规则中,与所述Modbus报文包含的标识信息对应的字序排列规则作为目标字序排列规则;
根据所述Modbus报文包含的点地址以及点类型,确定所述Modbus报文中的多个字节为目标字节集合,其中,所述Modbus报文包括至少一段编码,各所述点地址分别对应不同编码在所述Modbus报文中的首地址,所述点类型表征所述Modbus报文的字符类型;
按照所述目标字序排列规则,组合所述目标字节集合包含的多个字节的值,得到所述Modbus对应的编码值;
解析所述编码值,得到所述Modbus报文对应的点值数据。
9.一种电子设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
CN201910372290.5A 2019-05-06 2019-05-06 Modbus报文检测方法、装置、电子设备及存储介质 Active CN110099058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910372290.5A CN110099058B (zh) 2019-05-06 2019-05-06 Modbus报文检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910372290.5A CN110099058B (zh) 2019-05-06 2019-05-06 Modbus报文检测方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110099058A CN110099058A (zh) 2019-08-06
CN110099058B true CN110099058B (zh) 2021-08-13

Family

ID=67446962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910372290.5A Active CN110099058B (zh) 2019-05-06 2019-05-06 Modbus报文检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110099058B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110505136B (zh) * 2019-10-15 2021-07-27 正星科技股份有限公司 分层式modbus通讯系统及方法
CN110971407B (zh) * 2019-12-19 2022-06-24 江苏亨通工控安全研究院有限公司 基于量子秘钥的物联网安全网关通信方法
CN111262861A (zh) * 2020-01-16 2020-06-09 四川效率源科技有限责任公司 一种识别和过滤modbus tcp/udp协议的方法
CN111314373A (zh) * 2020-03-05 2020-06-19 南水北调中线信息科技有限公司 一种报文监控方法及装置
CN113242109B (zh) * 2021-04-14 2022-05-27 中国信息通信研究院 用于校验报文数据的方法、装置和设备
CN113364746B (zh) * 2021-05-24 2022-08-02 湖南华菱涟源钢铁有限公司 设备识别方法、装置、设备及计算机存储介质
CN113746925B (zh) * 2021-09-06 2023-06-09 北京天融信网络安全技术有限公司 一种文件传输行为审计方法、装置、电子设备及存储介质
CN114422249A (zh) * 2022-01-20 2022-04-29 北京华电云博科技有限公司 一种modbus安全检测方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741862A (zh) * 2010-01-22 2010-06-16 西安交通大学 基于数据包序列特征的irc僵尸网络检测系统和检测方法
CN102164049A (zh) * 2011-04-28 2011-08-24 中国人民解放军信息工程大学 加密流量的普适识别方法
US8819821B2 (en) * 2007-05-25 2014-08-26 New Jersey Institute Of Technology Proactive test-based differentiation method and system to mitigate low rate DoS attacks
CN106502234A (zh) * 2016-10-17 2017-03-15 重庆邮电大学 基于双轮廓模型的工业控制系统异常检测方法
CN106789388A (zh) * 2016-03-25 2017-05-31 新华三技术有限公司 报文检测内容的确定方法及装置
CN109600258A (zh) * 2018-12-10 2019-04-09 英赛克科技(北京)有限公司 工业协议报文记录装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819821B2 (en) * 2007-05-25 2014-08-26 New Jersey Institute Of Technology Proactive test-based differentiation method and system to mitigate low rate DoS attacks
CN101741862A (zh) * 2010-01-22 2010-06-16 西安交通大学 基于数据包序列特征的irc僵尸网络检测系统和检测方法
CN102164049A (zh) * 2011-04-28 2011-08-24 中国人民解放军信息工程大学 加密流量的普适识别方法
CN106789388A (zh) * 2016-03-25 2017-05-31 新华三技术有限公司 报文检测内容的确定方法及装置
CN106502234A (zh) * 2016-10-17 2017-03-15 重庆邮电大学 基于双轮廓模型的工业控制系统异常检测方法
CN109600258A (zh) * 2018-12-10 2019-04-09 英赛克科技(北京)有限公司 工业协议报文记录装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
工业控制系统入侵检测技术研究;刘灿成;《中国优秀硕士论文全文数据库信息科技辑》;20180215(第2期);全文 *

Also Published As

Publication number Publication date
CN110099058A (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
CN110099058B (zh) Modbus报文检测方法、装置、电子设备及存储介质
CN109922085B (zh) 一种基于plc中cip协议的安全防护系统及方法
CN110912927B (zh) 工业控制系统中控制报文的检测方法及装置
CN109344611B (zh) 应用的访问控制方法、终端设备及介质
CN109660518B (zh) 网络的通信数据检测方法、装置以及机器可读存储介质
CN112351035B (zh) 一种工控安全态势感知方法、装置及介质
CN106330601A (zh) 测试用例生成方法及装置
CN111835777B (zh) 一种异常流量检测方法、装置、设备及介质
CN111865960A (zh) 一种网络入侵场景分析处理方法、系统、终端及存储介质
CN111835737B (zh) 基于自动学习的web攻击防护方法、及其相关设备
CN108881271B (zh) 一种代理主机的反向追踪溯源方法及装置
WO2015024315A1 (zh) 核电站网络入侵报警方法和系统
CN116451215A (zh) 关联分析方法及相关设备
US10454959B2 (en) Importance-level calculation device, output device, and recording medium in which computer program is stored
CN113886829A (zh) 一种失陷主机检测方法、装置、电子设备及存储介质
CN113709129A (zh) 一种基于流量学习的白名单生成方法、装置和系统
CN111614614B (zh) 应用于物联网的安全监测方法和装置
JP7396371B2 (ja) 分析装置、分析方法及び分析プログラム
CN114978782B (zh) 工控威胁检测方法、装置、工控设备以及存储介质
CN109145609B (zh) 一种数据处理方法和装置
CN111049685A (zh) 电力系统的网络安全感知系统、网络安全感知方法和装置
CN114281774A (zh) 一种日志识别方法、装置、电子设备及存储介质
WO2016118153A1 (en) Marking nodes for analysis based on domain name system resolution
JPWO2018138793A1 (ja) 攻撃・異常検知装置、攻撃・異常検知方法、および攻撃・異常検知プログラム
CN112666907A (zh) 工业控制策略生成方法、装置、电子设备及存储介质

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