基于模糊测试工控协议漏洞挖掘技术研究

2023-09-20 07:57刘博洋刘潮任艺琳满芮苗晗
科技风 2023年24期

刘博洋 刘潮 任艺琳 满芮 苗晗

摘 要:随着工业信息化的快速发展,工控系统利用最新的计算机网络技术以提高系统间的集成、互联以及信息化管理水平,由封闭的系统到开放式系统的转变引发的网络安全事件逐年增多,目前已成为工控系统网络安全中亟待解决的问题。模糊测试(fuzzing)技术可以在保证工控系统实时性和业务连续性的同时,使用大量畸形数据输入至目标程序,通过监测异常行为达到挖掘工控系统中潜在漏洞的目的。传统的模糊测试方法通过提取工控协议特征生成测试用例,并使用新生成的测试用例作为模糊测试的输入,以提高目标程序。并以测试用例能否引发协议实体异常为标志,尽可能全面地挖掘协议存在的漏洞。模糊测试方法自动化程度高、不需要源代码的支撑、可重复性强、误报率低。模糊测试中生成测试用例传统方法,针对协议的某个状态或者单个功能类型码发送测试用例,能发现对应单个协议状态或者单个功能类型码的漏洞,但是很多安全漏洞都是由多个协议状态或多个功能类型码共同作用所觸发的。所以,已有的模糊测试方法并没有对被测对象进行全面、完整的漏洞检测。模糊测试方法不受限于被测系统内部细节和复杂程度,可以在有程序源代码或没有源代码的情况下执行,可扩展性和实用性较好,已经成为当前最有效的漏洞挖掘方法。

关键词:工控协议;模糊测试;漏洞挖掘

1 概述

工业控制系统(Industrial Control Systems,ICS)是计算机设备和工业生产控制部件组成的自动控制系统,主要包括数据采集与监测控制系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端单元(RTU)以及现场总线控制系统(FCS)等[12]。随着工业信息化的快速发展,工控系统由最早专用封闭的计算机实时监控系统发展到广泛应用互联网信息技术的综合性业务系统。其开放性导致系统安全漏洞和缺陷极易被攻击者利用,工控系统的安全问题愈发突显[34]。

随着工业化与信息化的有效融合,越来越多的工控协议与设备集成了以太网功能,并将嵌入式技术、现场总线、工业以太网、多种工业控制网络互联以及无线通信技术融合到工业控制网络中,由此引入的网络安全风险会对工控系统造成巨大的威胁。而工控系统因其具有特殊性,其中大量工控系统采用私有协议、系统稳定性要求高、网络结构和行为相对稳定但对网络防护要求相对较高。传统的工控安全防护目标重点在于保护信息不泄露,而工控系统安全防护的重点在于保证生产业务的连续稳定可用且对信息的实时性要求更高。

在电力行业工控系统中,从发电端到用电端的每个环节都有不同形态的电力工控终端进行数据采集、指令调度、远程控制等工作,工控终端与主站之间的控制信息和数据均通过工控协议实现传递[5]。因工控协议存在安全设计缺陷,加之系统缺乏安全防护机制,在使用过程中极易暴露出安全漏洞,攻击者可利用以上安全漏洞达到对工控系统控制的目的。

工控系统因设计漏洞,极易成为攻击者的目标,漏洞挖掘技术作为检测工控系统漏洞的关键技术,可以在未出现网络安全问题的情况下及时发现潜在安全隐患,防范未知风险,从而达到安全防御的作用[6]。常用的漏洞挖掘技术包括人工分析技术、补丁比对技术、动静态分析技术以及模糊测试技术。人工分析技术是一种通过人工构造输入条件,观察目标状态的灰盒分析技术,该种漏洞挖掘方法高度依赖操作人员的经验。补丁比对技术通过反汇编调试的手段对原始文件和补丁文件进行反汇编,比较打补丁前后的二进制文件的差异,即可明确漏洞位置。静态分析技术是通过逆向技术获得被分析目标源代码,并检测程序中不符合安全规则的行为,发现程序中存在的漏洞的白盒分析技术。该方法因需不断扩大特征库而导致误报率高,也存在较大局限性。动态分析技术是利用调试器作为动态分析工具,通过观察执行过程中程序的运行状态发现漏洞[7]。其中,模糊测试技术(fuzz testing)是一种基于缺陷注入的自动化软件测试技术,它利用黑盒分析技术方法,黑盒测试是通过将大量未知数据作为模糊测试的输入,以程序是否出现异常为标志,以此判断程序中是否存在安全漏洞[810]。模糊测试技术作为动态分析技术的一种,因其操作简单、误报率低以及良好的自动化测试能力,近些年在漏洞挖掘领域取得了长足的发展。

2 模糊测试方法

模糊测试通过提取工控网络协议的协议特征,随机生成测试用例,将其输入协议实体程序中,并实时监控被测对象的状态,对协议实体异常进行分析。该技术不依赖于被测对象的源代码,测试原理简单,自动化程度较高,测试范围广,是一种高效的网络协议漏洞挖掘方法。

基于工控协议的模糊测试方法以网络报文为测试用例,待被测对象接收到网络报文后,对网络报文进行解析,从而提取出相关数据信息,数据进入程序内部进行业务逻辑处理的同时,可以实现对被测对象的运行状态的监控。模糊测试的工作原理是通过事先构造好的测试用例发送给测试目标后通过测试目标反馈的问题找出测试目标漏洞的过程[1113]。从执行过程的角度来说,大致可以分为以下五个阶段。

2.1 确定测试对象

模糊测试的第一步为确定测试对象,我们将确定测试对象的原则定义为:一切向测试目标程序输入的数据都应该被认为是危险的,所有测试对象都可能是存在潜在安全风险的模糊测试变量,测试人员根据测试对象的特征选择适合的工具以及测试框架进行模糊测试。

2.2 生成模糊测试数据

大多数模糊测试的方法是通过向目标系统不断输入可以诱发软件缺陷的测试数据,因此测试数据的生成是模糊测试非常关键的环节,模糊测试数据的生成方式主要有两种:一种是通过预先确定的值,使用基于已存在的数据通过算法将其变异,生成新的测试数据;另一种是通过分析被测试应用程序及其使用的数据格式,动态生成测试数据。

2.3 执行模糊测试

确定测试对象以及完成模糊测试数据生成的两个步骤后,就可以进行模糊测试。执行模糊测试需要依据测试目标选择对应的测试方法,该步骤通过自动化的手段向被测系统发送数据包、利用被测试程序打开包含测试数据的文件。

2.4 监视异常

测试过程中,对异常和错误进行监控是模糊测试过程中极为重要的步骤,模糊测试的目的不仅是确定被测试程序是否存在安全漏洞,更重要的是确定程序为何会产生异常。模糊测试需要根据被测应用和所决定采用的模糊测试类型来设置各种形式的监视,从而发现漏洞并及时进行漏洞修复。

2.5 判定是否存在潜在的安全漏洞

模糊测试中发现漏洞,需要判定该漏洞是否是一个可被利用的安全漏洞,以防漏洞被攻击者利用,导致安全问题的发生。

3 自动化模糊测试工具

工控协议自身具有协议种类多、协议构造非公开、面向控制等特点,使得模糊测试前期对协议进行解析十分困难,加之协议脚本构造过程复杂,极大降低了模糊测试方法在工控协议领域的测试效率。因此,利用生成技术或变异技术构造测试样例就成为模糊测试过程中的关键问题,其决定了模糊测试的效率。目前,自动化测试工具的开发,可以快速构造测试样例,对模糊测试效率的提升有很大帮助。常用的自动化测试工具分为两大类,一类可以根据已知输入数据的规范制作新的输入,代表工具有SPIKE、Sulley、SNOOZE、Peachfuzz、Boofuzz等;另外一种是根据已知数据样本通过变异的方法生成新的测试用例,代表工具有ProxyFuzz、SecFuzz、GPF、TaoF等[1417]。以下为几种常用的自动化模糊测试工具。

SPIKE模糊测试工具是最具有代表性的模糊测试创建工具集,它可以基于网络协议生成测试数据。SPIKE通过块的概念将产生的数据以不同格式嵌入自身测试数据中,这样可以通过一种易于理解的方式描述协议构成,使基于块的协议模型有较强可读性。当需要在特定位置嵌入精确数据时,SPIKE的块可以极大程度上缩短计算时间,提升工作效率。

Peach模糊测试工具是一个开源的模糊测试框架,其具有两种测试用例生成方法,基于变异的测试用例生成方法和基于生成的测试用例生成方法。前者根据已有的数据样本中的某个元素值进行修改,用于实现变异测试用例的生成。但通过该方法生成的测试用例可能不被被测对象接受,适用范围具有局限性。另外一种测试方法是根据目标协议特征,定义Peach Pits文件中的数据结构和类型,实现基于协议特征的测试用例的生成。

Sulley模糊测试工具是基于Python的开源模糊测试框架,可以支持整个模糊测试流程,不仅可以简化测试用例的生成,同样可以对与目标系统之间的数据传输,以及目标系统的监控的模糊测试全流程进行简化。

结语

工控系统广泛应用在电力、水利、交通运输、航空航天等工业领域,是国家基础设施的重要组成部分。随着工业化与信息化的深度融合,二者结合使工控系统由独立封闭的物理环境,变成与企业内网甚至互联网产生了数据交换的开放性网络。并且打破了工控系统物理环境上的封闭性以及系统软硬件的专用性,这给不法分子创造了可乘之机。在数据传输方面工控协议从私有化转向通用化,攻击者从工控通信协议中的安全漏洞入手,对整个系统的正常工作產生影响。作为安全漏洞主要的分析测试方法之一,模糊测试只需要掌握很少的目标知识,并且可以很容易地扩展到大型应用程序,可重用性好,因此已经成为最流行的漏洞发现解决方案[18]。

参考文献:

[1]周光凯.联网工控设备巡查系统的设计与实现[D].哈尔滨工业大学,2017.

[2]吴丹丹.面向工控协议的模糊测试方法研究[D].南京理工大学.

[3]康荣保,张晓,杜艳霞.工业控制系统信息安全防护技术研究[J].通信技术,2018,51(08):19651971.

[4]周颖,郭荣华,贺惠民,等.工业网络安全:智能电网SCADA和其他工业控制系统等关键基础设施的网络安全[M].国防工业出版社,2014.

[5]赖英旭,杨凯翔,刘静,等.基于模糊测试的工控网络协议漏洞挖掘方法[J].计算机集成制造系统,2019,25(9):22652279.

[6]黄秀丽,张涛,马媛媛,等.一种基于模糊测试的电网工控协议漏洞挖掘系统和方法,CN105245403A[P].2016.

[7]任泽众,郑晗,张嘉元,等.模糊测试技术综述[J].计算机研究与发展,2021,58(05):944963.

[8]杨凯翔.基于模糊测试的工控网络协议漏洞挖掘方法研究[D].北京工业大学.

[9]宾冬梅,杨春燕,余通,等.基于电力Modbus公开协议的模糊测试方法[J].通信企业管理,2022(02):7788.

[10]吴丹丹.面向工控协议的模糊测试方法研究[D].南京理工大学.

[11]Yuan J.Research on attack graph generation for industrial control network security and vulnerability analysis[J].Modern Electronics Technique,2016.

[12]Ndiaye M,JF Pétin,Camerini J,et al.Performance assessment of industrial control system during presales uncertain context using automatic Colored Petri Nets model generation[C]// International Conference on Control.IEEE,2016.

[13]Banerjee S,Grossmann D.An Electronic Device Description Language based approach for communication with dbms and file system in an industrial automation scenario[C]//IEEE International Conference on Emerging Technologies & Factory Automation.IEEE,2016:14.

[14]罗常.工业控制系统信息安全防护体系在电力系统中的应用研究[J].机电工程技术,2016,45(12):97100.

[15]Liu B,Liang S,Cai Z,et al.Software Vulnerability Discovery Techniques:A Survey[C]// Fourth International Conference on Multimedia Information Networking & Security.IEEE,2013.

[16]黃奕.基于模糊测试的软件安全漏洞发掘技术研究[D].中国科学技术大学.

[17]Gan S,Chao Z,Qin X,et al.CollAFL:Path Sensitive Fuzzing[C]// 2018 IEEE Symposium on Security and Privacy(SP).IEEE Computer Society,2018.

[18]S Rawat,V Jain,A Kumar,et al.VUzzer:Applicationaware Evolutionary Fuzzing[C]// Ndss.2017.

作者简介:刘博洋(1994— ),女,汉族,北京人,硕士研究生,助理工程师,研究方向:网络安全;刘潮(1982— ),男,汉族,河北石家庄人,工学学士,助理工程师,研究方向:网络安全;任艺琳(1997— ),女,汉族,河北定州人,工学学士,助理工程师,研究方向:网络安全;满芮(1996— ),女,回族,山东德州人,硕士研究生,助理工程师,研究方向:网络安全;苗晗(1993— ),女,汉族,河北廊坊人,硕士研究生,助理工程师,研究方向:网络安全。