面对日益严峻的网络安全形势,分析对工业控制系统开展模糊测试的意义,研究网络协议模糊测试的理论基础,设计一种模糊测试框架,根据框架对广泛应用的工控设备进行安全性测试,发现 潜在安全风险,以便及时采取风险应对措施,防止安全风险被进一步利用,降低工业控制系统安全风险被利用的概率。 

随着“两化”融合的推进和以太网技术在工业控制系统中得到大量使用,进而引发的病毒和木马攻击工控设备的事件不断出现,严重威胁基础工业控制设备的安全运行,其造成的 损失可能非常巨大,甚至不可估量。2010 年 10 月, 伊朗“震网”(Stuxnet) 病毒事件,引起了各国对工控设备安全的高度重视。面对安全形势日益 严峻,国内外生产企业都把工业控制系统安全防护建设提上了日程。而在工业控制系统中,工控网络存在着特殊性,导致商用 IT 网络的安全技术无法适应工业控制系统。所以,必须要针对工业控制系统设备进行安全性模糊测试, 发现潜在安全风险,以便及时采取风险应对措施,防止安全风险被进一步利用,降低工业控制系统安全风险被利用的概率。

安全事件

近年来,越来越多工控设备被攻击事件频 繁被媒体曝光。2015 年 12 月,某黑客组织使用 BlackEnergy 恶意程序对乌克兰电力系统进行攻 击破坏,造成严重的电力安全事故。该安全事 件导致伊万诺 - 弗兰科夫斯克、 霍洛登卡、卡 卢什、多丽娜、 科西夫、纳维尔纳及亚列姆恰 等地区停电 3 小时以上,数十万户受到事件影 响。这是第一次由于工控设备受到网络攻击而 导致的大面积停电事故,具有非常重要的历史意义。

工控设备安全风险分析

工控设备存在的主要安全风险

当前工控设备或系统存在的主要安全风险 有以下几个方面:

(1)多数工控设备采用通用的通信协议

多数工控设备或系统采用 TCP/IP 等通用的 通信协议,通用通信协议存在的安全风险也势 必会影响到工控设备或系统的安全。

(2)调试终端大多采用通用操作系统

目前,大部分的工控设备操作站或调试终 端均安装 Windows、Linux 等通用操作系统。再 加上,日常安全管理不到位,致使多数操作系 统长时间不升级、不安装系统补丁,形成了大 量的安全漏洞。

(3)日常安全管理策略不到位

缺少针对工控设备的日常安全管理策略及 制度要求,工控设备使用无章可循,为安全事 件留下了大量安全隐患。

(4)工控软件本身缺少安全性设计

多数工控设备更重视设备功能、性能,安 全性设计考虑缺失,甚至连最基本的杀毒软件 都不安装,或及时安装也不会及时更新系统补 丁,是大多数工控软件存在的共性问题,这都 为工控设备安全事件埋下严重隐患,见图 1。

图 1 典型工控系统的安全问题

国内外工控设备安全研发情况

目前,在工控设备的风险分析及漏洞发现方面,欧美国家仍处于领先地位。 加拿大的伍尔德泰克公司的 Achilles 的模糊测试功能已相对成熟,且形成了相对完整的认 证管理体系,在国际上有一定的知名度。国内外知名工控厂商,多数已通过其认证。

芬兰科诺康公司的漏洞挖掘、扫描技术在全球也有一定的技术优势。2014 年,科诺康公司利用其技术优势,成功发现震惊世界的互联 网漏洞——心脏出血漏洞。

目前,国内有关工控设备的漏洞挖掘、扫 描分析技术,仍处于研究、探索阶段,少部分科研单位已开展相关课题研究。

必要性及意义

目前,大量嵌入式工控设备被广泛应用, 如通信保护装置、工控交换机、计量监测等。 这些被广泛应用的嵌入式设备多数基于通用芯 片、操作系统、通用协议进行设计、开发,产 品厂商重点关注工控设备的功能、性能及易用 性,工控设备的安全设计及实现,往往被忽略。 随着工控设备或系统安全风险不断突出,嵌入 式设备潜在的安全风险、漏洞也被不断发现, 势必对工控设备或系统安全形成重要的威胁。

基于此,有必要对工控系统所使用的各类 嵌入式设备进行安全风险研究和测试,提前发 现工控设备或系统存在的安全风险或漏洞,不 断提升工控设备或系统的风险应对能力,进一 步确保工控设备或系统的安全稳定运行。

工业控制系统模糊测试

理论依据

工业控制系统的的模糊测试是自动化生成 可用于输入被测试工控设备或系统的测试数据, 进而检验工控设备或系统的安全性。

测试方法

根据预期的测试目标,明确怎样通过标准 协议进行模糊测试。模糊测试方法一般为如下三种:

(1)白盒测试。

(2)黑盒测试。

(3)灰盒测试。

白盒测试:此方法需要根据被测工控系统的全部代码、设计文档等资源进行全透明 测试。此方法高度依赖代码开放度,属于代码级测试。

方法优势:针对完整代码进行评审、测试,覆盖程度最高。

方法劣势:分析完整开发代码复杂性太高,不可避免地会产生误报。测试人员的业务水平对测试结果也会产生比较大的影响。而且,多数厂商并不愿意提供完整的源代码给测试人员。

黑盒测试:此方法可完全忽略被测工控系统 的内部逻辑,仅通过对被测系统进行外部扫描进 行安全性验证、测试。测试者模拟用户行为进行输入,通过输出结果分析工控设备的安全性。

方法优势:可操作性、可实现性非常高, 适用于各种不同类型的工控设备;方法简单,可在不了解工控设备内部逻辑的基础上开展测试工作;结果可重现,此方法可在任何情况下重现测试结果。

方法劣势:对工控设备的安全分析结果不全面。

灰盒测试:该方法是以上两种方法的折中, 包含黑盒测试逻辑的同时,也包含通过各种途径获得的系统内部逻辑。

方法优势:既具有良好的可用性,也有比较高的覆盖率。

方法劣势:测试方法复杂性较高,对测试人员业务素养有较高要求。

综合考虑到复杂性、可实现性、易用性及可重现性,选择黑盒测试方法作为模糊测试的方法。

技术路线

模糊测试通过向工控设备或系统应用程序 逆向输入污染数据,同时监控工控设备的输出 异常,对发现工控系统、设备、协议的存在的 安全风险具有重大意义,使得风险发现不再完 全依赖于 CVE/CNVD 等公开漏洞库。

测试用污染数据的生成主要有以下几种方法:

预先生成测试用例

该方法首先对工控设备协议规则进行研究、 分析,理解该协议规则所支持的数据类型、结 构以及可以接受的数值范围。然后,根据协议 规则生成用于测试被测试工控设备的边界范围 或违规范围测试用例。

创建预先生成测试用例需要大量的工作量, 但是测试用例一旦形成,就具备很高的复用性, 用于测试某种工控设备协议、规则的不同实现。 但是,这种方法的局限性在于缺乏随机性,测 试用例执行完成,测试工作便结束。

生成随机数据输入

随机生成数据的方法是效率比较低的方法,但是,该防范可以迅速识别目标设 备或系统中是否有存在严重安全风险。随 机生成数据方法可以简单地向目标设备或 系统发送伪随机数据,期望得到正常或非 正常的结果。

强制性测试

此方法是一种相对有效的模糊测试方法, 此方法基本不需了解工控设备相关知识。该方 法关键在于不断修改数据发送给被测设备或系 统。除了不断发送数据外,该方法还加入了必 要的错误检测、日志分析等手段。但是,该方 法效率相对较低,在生成垃圾数据处理上会形 成很多不必要的浪费。但是,该防范的优势也是比较明显的,具体如下:

(1)该方法的测试过程可以完全实现自动化。

(2)使用该方法的代码覆盖程度依赖于一致的合法数据包,即使要达到较低的覆盖率, 对样本的需求量也比较大。

自动协议生成测试

自动协议生成测试可以理解为强制性测试的升级版。使用该测试方法,首先要研究被测工控设备或系统的协议、规则。

测试者需要区别数据包中的静态部分和动态部分,动态部分可以被模糊化变量替代。模糊测试器动态生成测试数据,并将输入到被测设备。

该方法的测试结果对测试者的依赖程度较高,测试者需要能够了解协议、规则中最容易发生故障的部分。

模糊测试方法对数据结构了解得越多,就越能够在模糊测试中关注那些易于引发异常的协议中的部分,所以必须要了解工控系统通信协议的组成与规范,这样才能生成一个更好的模糊测试数据。

例如:在 IP 分片的测试中,主要在如下两 个方面做了变异,第一是标识符(Identifier)字段, 第二个标记(Flags)字段,一方面,在标记字段中, MF 位是用来说明是否有更多的分片,正常情况 下,如果所有的分片都发送完毕后这个位会被 置成 0,标识所有的分片都已经就绪,可以重组 所有的分片,而在变异的数据包中这个位并没 有去理会是否所有的分片都收到,而是一直标 识为后续片,导致接收方需要不断缓存分片, 另一方面,除了上述处理外,还不断的改变标 识符字段,导致了会产生很多组这样的无法重 组的报文,当这样的报文所需要的空间超过系 统可以承受的空间而又无法正确处理这样的错 误的时候就会导致缓冲区溢出,进而导致系统崩溃。

综上所述,从模糊测试的原理进行深度研 究。基于测试用例的程序编译实现变异报文的 构建,借以对工控系统协议的错误或缺陷进行 检查。本文设计了一个自动化测试框架以实现 其可拓展性和完备性,实现测试目标的全方面 监控,测试结果的全方位管理。

测试效果

基于本文设计实现的工业控制系统模糊测 试框架(见图 2),对工控系统中广泛使用的某 型号变压器保护设备、某型号测控装置进行了 漏洞挖掘,发现了 MMS 协议语法漏洞、IP 分片 报文漏洞等多个原创高危漏洞。

图 2 工业控制系统模糊测试框架

以下是对某款设备进行测试的结果:

00ARP 监视器显示被测设备 ARP 请求的响 应时间(见图 3),X 轴是时间轴,Y 轴标识响 应时间,单位为毫秒 (ms)。被测设备在 17:57:48 及之前工作正常,ARP 响应时间在 0.5ms 左右, 在 17:57:48 之后已经无法对 ARP 请求作出响应, 说明被测设备已经出现故障。

图3 ARP监视器

图4 ICMP监视器

ICMP 监视器显示被测设备对 ICMP 请求 的响应时间(见图 4),X 轴是时间轴,Y 轴 标识响应时间,单位为毫秒 (ms)。被测设备在 17:57:48 及之前工作正常,ICMP 响应时间在 0.5ms 左右,在 17:57:48 之后已经无法对 ICMP 请求作出响应,说明被测设备已经出现故障。

TCP 监视器显示被测设备开放的 TCP 端口 的数量(见图 5),X 轴是时间轴,Y 轴标识 TCP 端口的数量。被测设备在 17:57:49 及之前 工作正常,开放的 TCP 端口为 2 个,在 17:57:49 之后无法探测到开放的 TCP 端口,说明被测设 备已经出现故障。

图5 TCP监视器

综上所述,在测试过程中,用于监视协议 栈的 ICMP 和 ARP 监视器突然超时,而用于监 视服务的 TCP 监视器的端口开放数量也从 2 个 变为 0 个,说明所有的服务已经关闭,由此可 以推断,此款设备已经宕机。

结语  

本文在研究模糊测试的理论方法的基础上, 选择适当的技术路线,设计实现了一个工业控制系统模糊测试框架,基于此框架发现了工控领域中使用的部分设备的原创高危漏洞。这说明,对工业控制系统进行健壮性测试,对提高工控安全性具有积极的意义,是一个重要的努力方向。  

作者 >>>

崔欣,国家知识产权局专利局主任科员, 主要从事电子信息领域专利审查工作。

温彦龙,中国电子信息产业集团有限公司 副处长、高级工程师,主要从事网络安全与信 息化管理工作。 

(本文选自《信息安全与通信保密》2018年第九期)

声明:本文来自信息安全与通信保密杂志社,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。