本发明属于测试,具体涉及一种工控系统未知协议逆向解析及安全测试方法。
背景技术:
1、工业控制系统安全是网络空间安全的重要组成部分,工控协议安全需要实现工控协议安全测试、可靠性测试、漏洞侦搜等工作,目前常用的协议测试方法有静态分析、特征扫描等,但是需要充分了解被测设备的内部逻辑结构,而多数工控设备涉及敏感信息,无法满足上述测试条件。模糊测试被泛化的定义为一种负向测试技术,通过向目标系统或设备发送大量无效的、非预期的、变异的或随机的输入并监视错误结果来发现潜在安全威胁。模糊测试不依赖被测设备的内部逻辑结构是实现工控未知协议安全性测试有效方法,但是充分了解的协议结构和语义特征,从而构造有效测试数据流,现有的协议模糊测试框架均是针对于已知协议进行,依靠人工或捕获工具获取协议信息,对未知协议而言,由于协议信息不对外公开,无法实现测试。
2、图1为传统的工控网络协议的模糊测试框架图,由于不同的工控协议所定义的数据传输结构、数据取值定义和数据处理标准都不相同,该方法需要人工判断协议类型,并根据已知协议信息结合变异规则构造用于测试的畸形数据,通过向被测目标发送测试数据的方式,实现工控协议的安全检测。
3、传统的工控协议测试方法需要协议特征信息足够了解,从而针对不同协议构造特定的畸形测试数据,但是未知协议信息不对外公开,无法获取构造测试数据所需的协议信息,因此该方法不能满足工控未知协议的安全测试;另外,传统工控协议测试方法中的通常采用随机生成的方式填充协议字段生成测试数据,该方法不能保证高效的检测出被测目标的潜在安全威胁。
技术实现思路
1、针对现有技术中存在的上述技术问题,本发明提出了一种工控系统未知协议逆向解析及安全测试方法,设计合理,克服了现有技术的不足,具有良好的效果。
2、为了实现上述目的,本发明采用如下技术方案:
3、一种工控系统未知协议逆向解析及安全测试方法,包括如下步骤:
4、步骤1:工控未知协议流量捕获;
5、步骤2:静态序列比对,协议聚类;
6、步骤3:协议特征序列提取;
7、步骤4:协议动态轨迹提取;
8、步骤5:获取特征信息;
9、判断是否获取到未知协议特征信息,若是则进入步骤6,否则进入步骤1;
10、步骤6:协议格式存储;
11、步骤7:未知协议模糊测试数据包生成;
12、步骤8:执行未知协议模糊测试;
13、步骤9:监视异常并发现薄弱环节,实现工控未知协议的安全测试。
14、优选地,采用定制抓包软件捕获真实流量,并将捕获的真实流量作为进行下一步数据处理的原始数据,并将协议数据包以特定格式存储。
15、优选地,步骤2中,通过静态序列比对,采用由短至长的规则对采集到的数据进行分词,把协议序列两两局部比对直到所有序列全都参加过比对,实现协议聚类。
16、优选地,步骤3中,采用全局序列对比的方式,通过协议的编辑距离计算方法,解析出协议数据字段的包括具体字符内容、特定长字段和可变字段在内的格式信息。
17、优选地,步骤4中,采用污点标记技术,通过对数据处理的内存地址的记录,完成对数据的动态轨迹监控,获得所需的协议交互状态的记录,实现动态跟踪。
18、优选地,步骤6中,用xml语言存储解析到的协议格式信息。
19、优选地,步骤7中,采用基于随机生成、协议模板和变异相结合的策略,构造工控网络未知协议模糊测试数据包,由于在构造测试用例需要加入随机或者异常的数据,因此构建一个畸形数据数据库,用于存储各种畸形数据和变异规则,包括整型值、字符串、分隔符、格式化字符串、字符转换、目录遍历,同时构建一个漏洞数据库,这个漏洞数据库有两个作用,一个是在选择具体的测试协议或数据库作为被测目标时作为参考,一个是作为测试用例和构造测试用例的样本数据。
20、优选地,步骤8中,通过"地址+端口"的方式自动化向被测目标发送步骤7构建的未知协议模糊测试数据包。
21、优选地,步骤9中,监控被测目标的异常情况,并记录触发异常的测试用例;监视手段主要包括监控包方式、进程监控、行为监控、日志;监控方式是根据返回的数据判断目标的异常与否:如果返回的数据是正常的,则说明被测目标是正常的;如果没有返回任何数据或返回异常数据,则需要根据结果进行判断目标的状态。
22、本发明所带来的有益技术效果:
23、本发明一种基于特征字段提取的未知协议逆向解析方法,逆向分析出工控未知协议的协议信息,实现未知协议的安全测试,可以满足工控系统未知协议安全测试的需求。本发明在没有协议说明的条件下,搜集被测协议的正确数据包,通过静态序列比对和污点标记技术,获取未知协议结构信息和交互序列,解决了工控未知协议安全测试所需的协议特征信息获取问题。本发明所设计的未知协议安全测试方法采用基于随机生成、协议模板和变异相结合的策略,自动构造工控网络未知协议模糊测试数据,解决了现有方法依赖人工单字段随机填充生成测试数据效率低的问题,大大提升测试效率的同时,保证较高的测试准确度。
1.一种工控系统未知协议逆向解析及安全测试方法,其特征在于:包括如下步骤:
2.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤1中,采用定制抓包软件捕获真实流量,并将捕获的真实流量作为进行下一步数据处理的原始数据,并将协议数据包以特定格式存储。
3.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤2中,通过静态序列比对,采用由短至长的规则对采集到的数据进行分词,把协议序列两两局部比对直到所有序列全都参加过比对,实现协议聚类。
4.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤3中,采用全局序列对比的方式,通过协议的编辑距离计算方法,解析出协议数据字段的包括具体字符内容、特定长字段和可变字段在内的格式信息。
5.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤4中,采用污点标记技术,通过对数据处理的内存地址的记录,完成对数据的动态轨迹监控,获得所需的协议交互状态的记录,实现动态跟踪。
6.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤6中,用xml语言存储解析到的协议格式信息。
7.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤7中,采用基于随机生成、协议模板和变异相结合的策略,构造工控网络未知协议模糊测试数据包,由于在构造测试用例需要加入随机或者异常的数据,因此构建一个畸形数据数据库,用于存储各种畸形数据和变异规则,包括整型值、字符串、分隔符、格式化字符串、字符转换、目录遍历,同时构建一个漏洞数据库,这个漏洞数据库有两个作用,一个是在选择具体的测试协议或数据库作为被测目标时作为参考,一个是作为测试用例和构造测试用例的样本数据。
8.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤8中,通过"地址+端口"的方式自动化向被测目标发送步骤7构建的未知协议模糊测试数据包。
9.根据权利要求1所述的工控系统未知协议逆向解析及安全测试方法,其特征在于:步骤9中,监控被测目标的异常情况,并记录触发异常的测试用例;监视手段主要包括监控包方式、进程监控、行为监控、日志;监控方式是根据返回的数据判断目标的异常与否:如果返回的数据是正常的,则说明被测目标是正常的;如果没有返回任何数据或返回异常数据,则需要根据结果进行判断目标的状态。