CN114050979B - 一种工业控制协议安全测试系统及装置 - Google Patents

一种工业控制协议安全测试系统及装置 Download PDF

Info

Publication number
CN114050979B
CN114050979B CN202111374639.2A CN202111374639A CN114050979B CN 114050979 B CN114050979 B CN 114050979B CN 202111374639 A CN202111374639 A CN 202111374639A CN 114050979 B CN114050979 B CN 114050979B
Authority
CN
China
Prior art keywords
test
protocol
module
industrial control
information
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
CN202111374639.2A
Other languages
English (en)
Other versions
CN114050979A (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.)
Chengdu Zhuoyuan Network Technology Co ltd
Original Assignee
Chengdu Zhuoyuan Network Technology 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 Chengdu Zhuoyuan Network Technology Co ltd filed Critical Chengdu Zhuoyuan Network Technology Co ltd
Priority to CN202111374639.2A priority Critical patent/CN114050979B/zh
Publication of CN114050979A publication Critical patent/CN114050979A/zh
Application granted granted Critical
Publication of CN114050979B publication Critical patent/CN114050979B/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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/14Arrangements for monitoring or testing data switching networks using software, i.e. software packages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种工业控制协议安全测试系统及装置,包括Web模块、数据包解析模块、测试用例生成模块、测试用例执行模块、监控模块以及报告生成模块;所述Web模块用于测试管理,测试脚本在线配置和测试结果的显示;所述数据包解析模块用于处理用户的数据包输入,解析协议结构;所述测试用例生成模块用于生成测试用例;所述测试用例执行模块用于通过测试工具向被测设备发送测试数据;所述监控模块用于监控异常事件并保存日志;所述报告生成模块用于生成可视化的HTML格式的测试报告。本发明支持对工业和自动化设备通信可靠性进行测试。

Description

一种工业控制协议安全测试系统及装置
技术领域
本发明属于工业控制系统技术领域,具体涉及一种工业控制协议安全测试系统及装置。
背景技术
针对工业控制系统在安全领域的研究,我国起步较晚,还未形成成熟的研究体系。随着网络攻击事件的持续涌现,工控安全问题的日益严重,逐渐引起了我国政府对工控安全问题的重点关注,并相继制定了相关工作方案和通知决策。例如,2011年,工信部发布了451号文——《关于加强工业控制系统信息安全管理的通知》,以此加强各企业的安全管理工作。国家电监会在2013年发布了50号文——《电力工控信息安全专项监管工作方案》,以此增强电力行业在安全管控方面的意识。2016年7月,工信部部长在一次工作座谈会上,提议“推进《工业控制系统信息安全防护指南》的落实”,并于2016年10月,《指南》全面印发,由此可以看出,工控领域的安全问题,得到了国家的高度重视。目前,国内有关工控设备的漏洞挖掘、扫描分析技术,仍处于研究、探索阶段,部分科研单位开展相关课题研究,可用于输入被测试工控设备或系统的测试数据,进而检验工控设备或系统的安全性。
国内对于工控领域的测试方法研究,尚且还在摸索研究阶段。当前工控设备或系统存在的主要安全风险有以下几个方面:
(1)多数工控设备采用通用的通信协议。工控设备或系统采用TCP/IP等通用的通信协议,通用通信协议存在的安全风险也势必会影响到工控设备或系统的安全。
(2)调试终端大多采用通用操作系统。大部分的工控设备操作站或调试终端均安装Windows、Linux等通用操作系统。再加上,日常安全管理不到位,致使多数操作系统长时间不升级、不安装系统补丁,形成了大量的安全漏洞。
(3)日常安全管理策略不到位。缺少针对工控设备的日常安全管理策略及制度要求,工控设备使用无章可循,为安全事件留下了大量安全隐患。
(4)工控软件本身缺少安全性设计。数工控设备更重视设备功能、性能,安全性设计考虑缺失,甚至连最基本的杀毒软件都不安装,或及时安装也不会及时更新系统补丁,是大多数工控软件存在的共性问题,这都为工控设备安全事件埋下严重隐患。
发明内容
本发明的目的在于,为克服现有技术缺陷,提供了一种工业控制协议安全测试系统及装置。
本发明目的通过下述技术方案来实现:一种工业控制协议安全测试系统,包括Web模块、数据包解析模块、测试用例生成模块、测试用例执行模块、监控模块以及报告生成模块;
所述Web模块用于测试管理,测试脚本在线配置和测试结果的显示;
所述数据包解析模块用于处理用户的数据包输入,解析协议结构;
所述测试用例生成模块用于生成测试用例;
所述测试用例执行模块用于通过测试工具向被测设备发送测试数据;
所述监控模块用于监控异常事件并保存日志;
所述报告生成模块用于生成可视化的HTML格式的测试报告。
进一步地:所述Web模块包括前端页面和后端服务器;
所述前端页面用于模糊校本目标配置,模糊测试网口配置,以及各种测试功能操作;
所述后端服务器运行在测试仪表上,与前端页面交互,接收命令、保存文件、将执行结果返回到页面上,根据接收的命令调用相应的处理模块,处理执行的结果。
进一步地:所述数据包解析的具体步骤为:解析网络流文件,首先提取其中的协议号协议地址信息,取得协议的内容部分,并将内容部分通过特征分析方式得到其结构信息,进而生成模糊测试脚本。
进一步地:所述模糊测试脚本包括测试信息、目标信息、本地信息和协议信息测试信息;
所述目标信息标识了即将测试的目标服务器的信息,包括服务器IP地址,协议号和目标端口号;其中,IP地址用于发现目标主机,协议号包含在IP协议包头部的协议号字段的值,通过解析该值可以建立对应的网络连接;
所述本地信息标识一些测试机本地配置,作为网口配置;
所述协议信息标识了具体的测试内容,即是发送的包的具体负载内容,所述内容包括三个层次:Status、Block和Primitive。
进一步地:所述解析协议结构的步骤为:
a.使用pcapy库提取头部信息和Payload;
b.建立系统进化树,计算距离矩阵和建树;
c.当系统进化树建立完成后,通过距离阈值来划分子树;
d.用二维的全局序列对比算法两两对比每一对兄弟节点,将序列的信息逐层向上传递,最终在根节点处得到所有子序列的对齐结果;
e.从根节点开始,从上往下传递gap信息,对齐所有序列;
f.得到所有序列的对齐之后的结果之后,将其存放到一个对齐数组中,逐字节对对齐数组进行分析,分析完成之后,分析结果将通过模糊测试脚本生成模块保存为JSON文件。
进一步地:所述测试用例生成模块根据上一阶段生成的测试脚本,生成大量的模糊测试数据,使用预先定义好的数据填充规则,逐一替换模糊测试脚本中的字段,生成大量新的测试数据。
进一步地:所述测试用例执行模块对于测试器的部署分为两种方式:
普通测试:将自身作为客户端,测试作为服务器端的对象;
内联测试:采用中间人的方式,将自身部署在服务器和客户端之间,对截获的包进行分析,估计协议帧的有效区域,并分别进行变异,实时生成畸形报文,发送给测试对象,同时接受返回结果,判断对象的状态,决定下一步变异策略。
进一步地:所述监控模块采用两种监控方法,包括:
基于网络流量的异常检测:使用心跳机制,以间歇性“发包一响应”的形式探测目标是否出错,同时结合异常隔离机制,在每传输一组测试用例后通过发送心跳包的方式检测对象是否发生异常,如果超过一定的时间阈值未收到回复包,则认为测试对象发生了异常;
基于I/O的异常检测:PLC设备在正常运行时会不断与下层生产过程进行数据I/O交互,如果工艺处理机制受到协议栈影响发生异常,会波及到下层I/O信号。
进一步地:所述报告生成模块将数据包的发送接收消耗的时间,发送的时间戳、数据包的类型以及测试结果的判断统计数据转换成HTML格式,生成可视化的用户方便交流的HTML格式的测试报告。
一种工业控制协议安全测试装置,其特征在于,包括硬件层、驱动层、协议层、业务层、管控及接口层,所述硬件层包括主控板卡和接口板卡,所述驱动层包括操作系统内核、硬件驱动和物理层接口,所述工业控制协议安全测试装置上设置有工业控制协议安全测试系统。
前述本发明主方案及其各进一步选择方案可以自由组合以形成多个方案,均为本发明可采用并要求保护的方案。本领域技术人员在了解本发明方案后根据现有技术和公知常识可明了有多种组合,均为本发明所要保护的技术方案,在此不做穷举。
本发明的有益效果:
(1)本发明支持对工业和自动化设备通信可靠性进行测试
对于工业和自动化设备而言,采取内联的部署方式,将测试工具插入到服务器和客户端之间,使用重放的方式对截获的网络数据包进行突变,产生畸形数据。
(2)本发明支持对常见工业协议和Internet协议实施Fuzz测试
作为一个自动化模糊测试系统,最终目标是使用任意类型的数据包作为输入,该系统都能够正确的识别协议的结构和语义特征。系统在支持未知工业以太网协议的基础上,还需要支持对常见工业协议和Internet协议实施Fuzz测试。
(3)本发明支持发现已知和未知漏洞
模糊测试工具成功的标志是发现被测设备上的漏洞,其更广泛的成功定义是具备发现未知漏洞的能力。对于已知漏洞,项目仪表可以确保一定条件下复现;对于未知漏洞,在增大覆盖率达到一定程度时,必定能够探测出相应的漏洞。
(4)本发明支持对未知协议进行分析和测试
本项目能够在不引入先验知识的情况下,根据网络流文件自动逆向出大量合乎规范的测试数据,并发送给被测设备。采用基于网络流量的“Network Trace”方法。对于协议的逆向分析分为两步,报文分类和报文域的推断。捕获的初始报文流,最后输出比较精确的报文分组和报文格式信息,对于每一个报文分组都输出一个报文格式模板。
(5)本发明支持风暴测试
风暴测试的发包速率达到10000pps。
(6)本发明支持数据包的捕获
捕获缓存不小于100MB。
附图说明
图1是本发明系统框架图;
图2为本发明实施例中脚本格式图;
图3为本发明实施例中模糊测试数据的生成示意图;
图4为本发明总体框架示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,术语“水平”、“竖直”、“悬垂”等术语并不表示要求部件绝对水平或悬垂,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
另外,本发明要指出的是,本发明中,如未特别写出具体涉及的结构、连接关系、位置关系、动力来源关系等,则本发明涉及的结构、连接关系、位置关系、动力来源关系等均为本领域技术人员在现有技术的基础上,可以不经过创造性劳动可以得知的。
实施例1:
参考图1所示,本发明公开了一种工业控制协议安全测试系统,包括Web模块、数据包解析模块、测试用例生成模块、测试用例执行模块、监控模块以及报告生成模块;
所述Web模块用于测试管理,测试脚本在线配置和测试结果的显示;
Web作为用户和测试者之间的桥梁,主要功能包括测试管理,测试脚本在线配置和测试结果的显示三个部分。
Web主要包括两个部分:前端页面和后端服务器。
前端页面为用户提供一个可视化的操作页面,帮助用户方便进行模糊测试。其提供的功能包括:模糊校本目标配置,模糊测试网口配置,以及各种测试功能操作等。并且为了满足各种测试场景,提供了模糊测试脚本可视化编辑功能。
后端服务器运行在测试仪表上,作为用户和测试系统之间的桥梁,主要功能包括:
(1)与前端页面交互,接收命令、保存文件、将执行结果返回到页面上;
(2)根据接收的命令调用相应的处理模块,处理执行的结果。
由于通过包结构识别方法所识别出来的原网络流文件中包含的服务器信息可能是不合适的。用户可能从正在通信的A设备与B设备之间抓取了网络流信息,然后对C设备执行测试,此时识别出来的原始模糊测试脚本中的服务器信息就是错误的。因此,为了应对这种情况,用户可以简单的在图形化界面下修改目标参数。同样的,用户可以在页面上自行修改修改协议信息相关配置,当点击保存之后,服务器会将页面内容自动保存为对应格式的JSON脚本交给系统执行。
命令回显的实现则十分简单,由于数据统计等工作均是在后端模块内部执行,因此直接将后端模块的执行结果发送到前端即可。
所述数据包解析模块用于处理用户的数据包输入,解析协议结构;
协议解析是通过公开资料或者对网络数据流量的分析,理解待测协议的层次、包字段结构、会话过程等信息,为后续测试用例的生成打下基础。通过智能算法对工控网络协议的结构进行学习,提取协议的格式,为测试用例的生成提供模板。
数据包解析分为包括以下几个步骤:解析网络流文件,首先提取其中的协议号协议地址等信息,取得协议的内容部分,并将内容部分通过特征分析等方式得到其结构信息,进而生成模糊测试脚本。
(1)模糊脚本格式说明
为了方便序列化、存储和传输,本方法使用JSON作为模糊测试脚本的格式,如图2所示,其内容主要分为4个部分:测试信息、目标信息、本地信息和协议信息测试信息主要包含一些对于该测试的描述,便于用户分辨不同测试。内容包括测试名、脚本创建具体时刻的时间戳和对于该测试脚本的描述信息。
目标信息标识了即将测试的目标服务器的信息,包括服务器IP地址,协议号和目标端口号。其中,IP地址用于发现目标主机,而协议号则是包含在IP协议包头部的协议号字段的值,通过解析该值可以建立对应的网络连接。例如,如果该值为6的话则在测试过程中会自动建立TCP连接,理论上通过设置该值可以适配所有基于IP协议的协议测试。而目标端口号则是一个可选项,如果目标协议是TCP协议或者是UDP协议的话,则就需要目标端口号来建立对应连接。
本地信息则是标识一些测试机本地配置,此处仅仅包含了网口配置。因为测试系统可以运行在安装了多个网卡的测试机上,当执行高速发包的时候,就需要将测试网口和控制网口区分开来,避免访问页面的时候造成网络拥塞。将网卡信息保存在测试脚本中,在下次测试的时候就能够直接运行,一定程度上简化了用户的操作。
协议信息则标识了具体的测试内容,即是发送的包的具体负载内容。此处将其分为三个层次:Status、Block和Primitive。
Status代表协议状态,在协议结构识别阶段,系统会根据距离阈值对协议包进行分类,不同类别的协议包最后得到的识别结果就被称作一个Status。由于本方法中不包含对于协议状态机的推断,因此在最终测试过程中仅仅是简单地按照插入顺序依次测试每一个Status
Primitive代表一个具体的字段,例如静态宇段、动态字节字段等等都是使用个Primitive来表示的。在Primitive中,包含了对该字段执行模糊所需要的所有参数,例如:对静态字段来说,参数就仅仅只是它的值;对动态字节字段来说参数就有最小长度、最大长度、最大模糊次数、模糊数据生成方式等等。由于不同的字段类型需要不同的参数,并且同一个字段类型的参数也可能不尽相同,因此可以省略部分参数,省略的部分系统会自动使用默认参数来代替,这为前端的显示带来了问题。为了解决这种问题,设计采用“数据决定显示”的方式,即模糊脚本中不仅仅包含了具体的协议信息,还包含前端显示所需要的信息,降低了页面显示与具体业务之间的耦合度。具体的表示方式下:
Figure BDA0003363389760000101
Figure BDA0003363389760000111
为了表示任意类型的Primitive,此处使用数组来存放Primitive的所有参数。其中,每一个参数都是一个对象,对象有两个重要属性:“name”和“type”。其中,“name”是该参数的名称,“type”则代表该参数的类型,其决定了其在前端的展示方式。type参数的取值分为以下几种:static类型代表在前端页面无法修改该值,string类型代表在前端可以通过输入文本的方式来修改该值,digit类型代表前端可以通过输入数值的方式来修改该值,enum类型代表前端可以通过一个下拉框的形式来选择一个值。通过这两个字段,就可以设置任意类型的Primitive参数;通过多个参数组成的数组,就能够设置任意类型的Primitive了。通过此种方式,能够在前端不修改的情况下添加新的Primitive类型,提升了系统的可扩展性。
Block代表字段的集合,一个Block中可以包含多个连续的Primitive。Block的存在是为了处理特殊字段,由于特殊字段需要标识一块区域(例如代表一段区域的校验和),因此可以将特殊字段指定到一个特定的Block来实现该功能。
(2)协议格式的解析
a)首先是头部信息和Payload提取的过程。提取过程使用pcapy库。需要注意的是,在Payload提取的时候,如果识别出IP包头部的协议号字段是6(TCP协议)或者是17(UDP协议)时,就需要先移除传输层协议头部,再提取payload。由于待分析的数据包数量并不会很多,所以提取出来的Payload以(序号,序列)的元组形式存放于内存当中,便于后期整理和分析。
b)接下来需要建立系统进化树,距离矩阵的计算和建树。其中,节点需要保存的内容包括:该节点所代表的序列的序号,该节点的两个子节点序列之间的距离,该节点的序列内容,以及需要向下传递的Gap位置数组。
c)当系统进化树建立完成之后,就可以通过距离阈值来划分子树。该阈值的设定需要依赖于测试人员的经验,因此默认情况下,距离阈值为1.0,也就是不会划分子树。
d)从建树过程中可以得知,建立的每一棵子树都是二叉树。因此,此时就可以用二维的全局序列对比算法两两对比每一对兄弟节点,将序列的信息逐层向上传递,最终在根节点处得到所有子序列的对齐结果。
e)为了分析子序列中每一个位置的字段,我们需要对齐所有序列。因此接下来就从根节点开始,从上往下传递gap信息。经过这一过程之后,所有的序列长度都被统一。
f)得到所有序列的对齐之后的结果之后,将其存放到一个对齐数组中。此时就可以逐字节对其进行分析。当分析完成之后,分析结果将通过模糊测试脚本生成模块保存为JSON文件,至此数据包结构分析阶段结束。用户可以通过前端页面查看和修改已经生成的模糊测试脚本文件。
所述测试用例生成模块用于生成测试用例;
测试用例的生成分为两类:
(1)基于生成的Fuzzing.这种方法基于与有效输入结构和协议状态相关的生成规则进行建模,构造模糊输入。基于生成的模糊测试器使用随机的方式构造长度字符串(包含随机字节)的模糊输入。基于生成的模糊测试器,通过编码的方式来产生成功概率高的测试用例。
(2)基于突变的Fuzzing.这种方法通过在已有数据样本中插人畸形字节以及(或者)变换字节来修改正常输入,制造模糊输入.一些现代的突变Fuzzing测试器基于输入层的描述构造其模糊决策。该方法对变异的初始值有着很强的依赖性,不同的初始值会造成代码覆盖率差异很大,从而会产生截然不同的测试效果。
因此,采用基于生成的模糊测试更加高效和便捷。在该部分,根据上一阶段生成的测试脚本,生成大量的模糊测试数据。使用预先定义好的数据填充规则,逐一替换模糊测试脚本中的字段,生成大量新的测试数据。
基于生成的数据生成的方式,关键在于如何选取模糊测试数据库,好的模糊测试数据能够让测试事半功倍。此处字节数据和字符数据采用不同的数据生成方式:对于字符数据,模糊测试数据库中包含了大量的代码注入语句和超长字符串,并且处于可扩展性的考虑,系统将模糊测试数据库以文件的形式保存在工作目录中,当系统开始运行的时候再将其加载到内存里,方便开发人员修改和添加模糊测试数据;而对于字节数据,由于没有语义,因此数据生成方式只有遍历方式和采样方式两种。在实现中本系统采用生成器的方式来生成测试数据,极大地节省了运行时内存占用,使得系统能够支持更大规模的测试用例。
在实际的模糊测试过程中,系统会逐个字段地进行模糊测试。例如,在如图3中,会首先模糊primitive1(如果该字段是可以模糊的字段),即使用模糊测试数据库中的模糊数据填充primitive1,而其他primitive保持默认值,组成一个协议数据包发往被测设备。当primitive1的测试结束之后,才会依次测试其他的primitive。
测试用例执行模块用于通过测试工具向被测设备发送测试数据;
执行阶段,测试工具向被测设备发送测试数据,对于测试器的部署分为两种方式:
(1)普通测试:将自身作为客户端,测试作为服务器端的对象;
(2)内联测试:采用中间人的方式,将自身部署在服务器和客户端之间,对截获的包进行分析,估计协议帧的有效区域,并分别进行变异,实时生成畸形报文,发送给测试对象,同时接受返回结果,判断对象的状态,决定下一步变异策略。
另外,在发送数据包时,根据协议类型建立不同类型的数据连接。其建立连接的依据是输入数据包头部的协议号字段,根据协议号的不同,分别会建立TCP连接、UDP连接和RAW SOCKET连接。
监控模块用于监控异常事件并保存日志;
工控系统的核心组件运行环境封闭且存储计算资源受限,无法通过附加调试组件的方式记录异常事件并保存日志,只能依赖其他方式进行检测,因此监控模块采用两种监控方法,包括:
基于网络流量的异常检测。使用心跳机制,以间歇性“发包一响应”的形式探测目标是否出错,同时结合异常隔离机制,在每传输一组测试用例后通过发送心跳包的方式检测对象是否发生异常,如果超过一定的时间阈值未收到回复包,则认为测试对象发生了异常。从该组用例中找出触发异常的单个测试用例,并保存异常产生的流量数据,以便进一步分析。此外,对于构建于TCP之上的工控网络协议,捕获用于重建连接的TCP RST和非正常重复出现的SYN请求也可以用来发现测试对象的网络异常。
使用基于I/O的异常检测。PLC设备在正常运行时会不断与下层生产过程进行数据I/O交互,如果工艺处理机制受到协议栈影响发生异常,会波及到下层I/O信号。该方法需要使用具有D/A或者A/D转换功能的接口卡,将工控设备的I/0输出线外接到工控机上,同时在平台上运行流程仿真程序,部署监测程序不断轮询I/O口的信号交互情况,当发生异常时一方面发送消息给Fuzzing测试端以便保存场景信息,另一方面本地保存I/O异常情况和流程断点以便进一步分析。
报告生成模块用于生成可视化的HTML格式的测试报告。
在执行模糊测试的过程中,系统会自动将每一次的数据包发送结果保存下来,包括数据包的发送接收消耗的时间,发送的时间戳、数据包的类型以及测试结果的判断。当测试完成之后,报告生成模块会自动将这些统计数据转换成HTML格式,生成可视化的用户方便交流的HTML格式的测试报告。
如图4所示,一种工业控制协议安全测试装置,包括硬件层、驱动层、协议层、业务层、管控及接口层,所述硬件层包括主控板卡和接口板卡,所述驱动层包括操作系统内核、硬件驱动和物理层接口,所述工业控制协议安全测试装置上设置有工业控制协议安全测试系统。协议层:实现网络协议支持及不同协议栈之间的转换。业务层:实现仪表的核心功能包括流量处理支持和测试模块。管控及接口层:通过平台化测试环境,为用户提供统一的测试平台和硬件配置接口。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种工业控制协议安全测试系统,其特征在于,包括Web模块、数据包解析模块、测试用例生成模块、测试用例执行模块、监控模块以及报告生成模块;
所述Web模块用于测试管理,测试脚本在线配置和测试结果的显示;
所述数据包解析模块用于处理用户的数据包输入,解析协议结构;
所述解析协议结构的步骤为:
a.使用pcapy库提取头部信息和Payload;
b.建立系统进化树,计算距离矩阵和建树;
c.当系统进化树建立完成后,通过距离阈值来划分子树;
d.用二维的全局序列对比算法两两对比每一对兄弟节点,将序列的信息逐层向上传递,最终在根节点处得到所有子序列的对齐结果;
e.从根节点开始,从上往下传递gap信息,对齐所有序列;
f.得到所有序列的对齐之后的结果之后,将其存放到一个对齐数组中,逐字节对对齐数组进行分析,分析完成之后,分析结果将通过模糊测试脚本生成模块保存为JSON文件;
所述测试用例生成模块用于生成测试用例;
所述测试用例执行模块用于通过测试工具向被测设备发送测试数据;
所述监控模块用于监控异常事件并保存日志;
所述报告生成模块用于生成可视化的HTML格式的测试报告。
2.根据权利要求1所述的工业控制协议安全测试系统,其特征在于,所述Web模块包括前端页面和后端服务器;
所述前端页面用于模糊校本目标配置,模糊测试网口配置,以及各种测试功能操作;
所述后端服务器运行在测试仪表上,与前端页面交互,接收命令、保存文件、将执行结果返回到页面上,根据接收的命令调用相应的处理模块,处理执行的结果。
3.根据权利要求1所述的工业控制协议安全测试系统,其特征在于,所述数据包解析的具体步骤为:解析网络流文件,首先提取其中的协议号协议地址信息,取得协议的内容部分,并将内容部分通过特征分析方式得到其结构信息,进而生成模糊测试脚本。
4.根据权利要求3所述的工业控制协议安全测试系统,其特征在于,所述模糊测试脚本包括测试信息、目标信息、本地信息和协议信息测试信息;
所述目标信息标识了即将测试的目标服务器的信息,包括服务器IP地址,协议号和目标端口号;其中,IP地址用于发现目标主机,协议号包含在IP协议包头部的协议号字段的值,通过解析该值可以建立对应的网络连接;
所述本地信息标识一些测试机本地配置,作为网口配置;
所述协议信息标识了具体的测试内容,即是发送的包的具体负载内容,所述内容包括三个层次:Status、Block和 Primitive。
5. 根据权利要求1所述的工业控制协议安全测试系统,其特征在于, 所述测试用例生成模块根据上一阶段生成的测试脚本,生成大量的模糊测试数据,使用预先定义好的数据填充规则,逐一替换模糊测试脚本中的字段,生成大量新的测试数据。
6.根据权利要求1所述的工业控制协议安全测试系统,其特征在于,所述测试用例执行模块对于测试器的部署分为两种方式:
普通测试:将自身作为客户端,测试作为服务器端的对象;
内联测试:采用中间人的方式,将自身部署在服务器和客户端之间,对截获的包进行分析,估计协议帧的有效区域,并分别进行变异,实时生成畸形报文,发送给测试对象,同时接受返回结果,判断对象的状态,决定下一步变异策略。
7.根据权利要求1所述的工业控制协议安全测试系统,其特征在于,所述监控模块采用两种监控方法,包括:
基于网络流量的异常检测:使用心跳机制,以间歇性“发包一响应”的形式探测目标是否出错,同时结合异常隔离机制,在每传输一组测试用例后通过发送心跳包的方式检测对象是否发生异常,如果超过一定的时间阈值未收到回复包,则认为测试对象发生了异常;
基于I/O的异常检测:PLC设备在正常运行时会不断与下层生产过程进行数据I/O交互,如果工艺处理机制受到协议栈影响发生异常,会波及到下层I/O信号。
8.根据权利要求1所述的工业控制协议安全测试系统,其特征在于,所述报告生成模块将数据包的发送接收消耗的时间,发送的时间戳、数据包的类型以及测试结果的判断统计数据转换成HTML格式,生成可视化的用户方便交流的HTML格式的测试报告。
9.一种工业控制协议安全测试装置,其特征在于,包括硬件层、驱动层、协议层、业务层、管控及接口层,所述硬件层包括主控板卡和接口板卡,所述驱动层包括操作系统内核、硬件驱动和物理层接口,所述工业控制协议安全测试装置上设置有如权利要求1-8任意一项所述的工业控制协议安全测试系统。
CN202111374639.2A 2021-11-19 2021-11-19 一种工业控制协议安全测试系统及装置 Active CN114050979B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111374639.2A CN114050979B (zh) 2021-11-19 2021-11-19 一种工业控制协议安全测试系统及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111374639.2A CN114050979B (zh) 2021-11-19 2021-11-19 一种工业控制协议安全测试系统及装置

Publications (2)

Publication Number Publication Date
CN114050979A CN114050979A (zh) 2022-02-15
CN114050979B true CN114050979B (zh) 2023-06-13

Family

ID=80210023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111374639.2A Active CN114050979B (zh) 2021-11-19 2021-11-19 一种工业控制协议安全测试系统及装置

Country Status (1)

Country Link
CN (1) CN114050979B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114666257B (zh) * 2022-03-23 2023-11-14 成都卓源网络科技有限公司 一种网络协议模糊测试方法及框架
CN114760234B (zh) * 2022-03-30 2024-05-10 中核武汉核电运行技术股份有限公司 一种工控系统协议解析结果的验证系统和方法
CN114928559B (zh) * 2022-07-20 2022-09-27 合肥工业大学 一种基于心跳检测的工控软件输出有效判定方法
CN115604037B (zh) * 2022-12-13 2023-05-30 广州市盛通建设工程质量检测有限公司 一种故障监测系统的通信安全测试方法
CN116095195B (zh) * 2023-04-06 2023-06-20 北京理工大学 一种基于国产化平台的工业以太网数据包生成方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245403B (zh) * 2015-10-27 2019-09-06 国网智能电网研究院 一种基于模糊测试的电网工控协议漏洞挖掘系统和方法
CN105404207B (zh) * 2015-12-14 2019-09-06 中国电子信息产业集团有限公司第六研究所 一种工业环境漏洞挖掘设备与方法
US20200042712A1 (en) * 2018-07-31 2020-02-06 Veracode, Inc. Open-source software vulnerability analysis

Also Published As

Publication number Publication date
CN114050979A (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
CN114050979B (zh) 一种工业控制协议安全测试系统及装置
CN111277578B (zh) 加密流量分析特征提取方法、系统、存储介质、安全设备
CN113542299A (zh) 一种基于模糊测试的工业互联网漏洞挖掘方法及系统
CN111488577B (zh) 一种基于人工智能的模型建立方法和风险评估方法及装置
CN102123058A (zh) 一种对网络协议解码器进行测试的测试设备和方法
CN109639756A (zh) 一种终端网络关联关系展示和设备接入实时监测系统
CN112532614A (zh) 一种用于电网终端的安全监测方法和系统
CN113934621A (zh) 模糊测试方法、系统、电子设备及介质
CN116668079A (zh) 网络系统漏洞扫描方法
CN116662184B (zh) 一种基于Bert的工控协议模糊测试用例筛选方法及系统
CN117332095A (zh) 一种基于资产探测的网络空间知识图谱构建方法
CN117201601A (zh) 物联网设备接入方法、装置、设备及存储介质
CN112363939A (zh) 快速生成模糊测试网络协议模板的方法及系统、设备
CN111770097A (zh) 一种基于白名单的内容锁防火墙方法及系统
CN116366512A (zh) 测试用例生成方法、装置及计算机可读存储介质
CN113760753B (zh) 基于灰盒模糊技术的quic协议测试方法
CN110708182A (zh) 一种针对网络打印机协议的安全检测方法及装置
CN112953975B (zh) 一种网络安全态势感知系统及方法
CN113596065A (zh) 一种基于机器学习的ssh协议登录状态检测方法
CN114330363A (zh) 一种基于漏洞语义智能解析的工控协议漏洞挖掘方法
CN113315769A (zh) 工控资产信息收集方法及装置
CN112436969A (zh) 一种物联网设备管理方法、系统、设备及介质
Xu et al. FIoTFuzzer: Response-based black-box fuzzing for IoT devices
CN116708001B (zh) 工业控制系统私有协议漏洞探测方法及装置
CN117041362B (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