APP下载

从“0”到“1”:我国自主研发工控协议通讯健壮性测试平台

2015-01-16工业控制系统信息安全技术国家工程实验室工业控制系统安全检测中心李航

自动化博览 2015年9期
关键词:工控漏洞通讯

工业控制系统信息安全技术国家工程实验室工业控制系统安全检测中心 李航

从“0”到“1”:我国自主研发工控协议通讯健壮性测试平台

工业控制系统信息安全技术国家工程实验室工业控制系统安全检测中心 李航

针对工业控制系统的信息安全问题,工业控制系统信息安全技术国家工程实验室工业控制系统安全检测中心(“检测中心”)提出一个想法,就是从检测入手,涵盖整个工控系统的设计、研发,到最后的运行,进行全生命周期的跟踪,这样才能保证整个工业控制系统最根本的一个免疫力的提升。面对工业控制系统的信息安全问题,我们不能仅仅是“病了吃药”,也要增加其自身的免疫力,提升抵抗力。这也是工业控制系统安全检测中心工作的主要目的。我今天将介绍的是我国自主研发的工控协议通讯健壮性测试平台。

图1 工业控制系统架构图

1 工业控制系统(Industrial Control Systems,ICS)

工业控制系统是由各种自动化组件以及对实时数据进行采集、监测的过程控制组件,共同构成的确保工业基础设施自动化运行、过程控制与监控的业务流程管控系统,如图1所示。主要由数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)等组成。

工业控制系统普遍存在于几乎所有的工业领域和关键基础设施中,包括核设施、钢铁、有色、化工、石油石化、电力、天然气、先进制造、水利枢纽、环境保护、铁路、城市轨道交通、民航、城市供水供气供热以及其他与国计民生紧密相关的领域,工业控制系统已是国家安全战略的重要组成部分。

分布式控制系统,也称为分散式控制系统,即DCS,是一个由过程控制级和过程监控级组成的以通信网络为纽带的多级计算机系统,综合了计算机(Computer)、通讯(Communication)、显示(CRT)和控制(Control)等4C技术,其基本思想是分散控制、集中操作、分级管理、配置灵活、组态方便。

SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监视控制系统。SCADA系统是以计算机为基础的DCS与电力自动化监控系统。它应用领域很广,可以应用于电力、冶金、石油、化工、燃气、铁路等领域的数据采集与监视控制以及过程控制等诸多领域。

可编程逻辑控制器,即PLC,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同。

工业控制系统大量应用了通讯技术、信息化技术、网络技术和控制技术等,广泛应用在工业领域的计算机系统中。工业控制系统的本质就是计算机系统。

2 “0”与“1”的世界

PC也好,智能手机也好,都可以被看作一种小型的计算机系统。计算机系统由硬件系统和软件系统组成,通过操作系统和应用软件不断调用硬件资源进行工作,在硬件和软件之间进行通讯。硬件系统是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统赖以工作的实体。软件是各种程序和文件,用于指挥整个系统按指定要求进行工作。

CPU能够读懂的代码就是机器语言(machine language),即计算机可以直接识别的二进制代码,机器语言是一种指令集的体系,这种指令集,称为机器码(machine code),是计算机的CPU可直接解读的数据。计算机直接识别的二进制代码由两个基本字符“0”、“1”组成:(1)从物理角度,通常理解为低电平和高电平;(2)计算机直接可以读懂的就是“0”和“1”有规律排列的二进制代码。包括计算机系统内部,也包括计算机之间的通讯。

工业控制系统遵循计算机系统指令集的特点,即机器语言,“0”与“1”的排列组合。研究机器语言或者研究“0”和“1”,它的不断排列会不会是一个没有边界的研究?实际上不是的。因为在任何物理条件下,工业控制系统的设备是有限的,工业控制系统的指令是有限的。从另一个角度考虑,既然工业控制系统是个计算机系统,如果把它整个看成一个大的计算机,在工业控制系统设备与设备之间的通讯,就可以看成计算机之间的指令之间不断地传输、运算、控制,统称为工业控制系统的协议。当然这种协议可能包括计算机方面的TCP/IP协议。对工业控制系统来说,它是一个最常用的搭建网络技术的平台,允许监控和控制,其内部的通讯控制指令集即工业控制系统协议,MODBUS IP协议,也是有限的。为什么要考虑这些?因为我们发现,如果硬件CPU有后门,无线或是脉冲信号触发后门引起的最终漏洞的原因都是“0”到“1”的变化,一个脉冲或者一个持续的“0”或“1”,永远都摆脱不了“0”和“1”这个排序。因此,研究工业控制系统最基本的安全问题,我个人认为是研究“0”和“1”,即它的协议。

3 工业控制系统协议漏洞的健壮性测试

工业控制系统协议出现漏洞的事件比较多。安全事件,从控制器的角度来说,可能引起的就是工业控制协议的安全问题,是不稳定的漏洞。因此,检测中心提出,研究工控安全问题,首先就要从它的协议入手,从设计到研发,一直到整个运行过程,不断地去积累,不断地去测试它的健壮性,提高控制器本身的一个抗干扰能力。

在这方面国外已经走得比较靠前了,目前有ISASecure认证。它是基于IEC 62443标准系列发展安全认证流程的联盟,目前被公认是工业控制系统领域最专业的安全认证流程。ISASecure目前包含嵌入式设备安全认证(EDSA)、系统安全认证(SSA)和安全开发生命周期认证(SDLA)三个项目。如图2所示,不管是EDSA认证,还是SSA认证,其基础均是设备和系统的通信健壮性测试,在保证该前提下,不断地评估上层软件的安全性、功能的安全性,才能保证整个系统相对的安全性。

图2 嵌入式设备安全认证(EDSA)及系统安全认证(SSA)

目前,国际上已经获得ISASecure认证认可的通讯稳健性(CRT)测试工具有芬兰Codenomicon的Defensics,日本FFRI的RavenforICS以及加拿大Wurldtech的Achilles。其中相对比较有名的是Wurldtech的Achilles,Wurldtech已经被GE收购。因此,使用国外测试工具存在两个方面的问题:其一,GE公司既生产控制器PLC、相关的工业控制系统,又去做测试认证,检测产品的安全性。其二,所有测试的最终数据必须返回到GE公司进行存档。虽然GE同中国用户会签订保密协议,但是我们所有控制系统的数据他们都有掌握,这其实也是一个很大的安全问题。那我们自己的测试工具在哪里?

4 自主研发工业控制系统通讯协议健壮性测试平台

图3 B/S操作界面

由于我国对整个工业控制系统的通讯健壮性测试还是空白,检测中心针对工控安全这个最基本的问题,为了解决这一短摆,自主研发了工业控制系统通讯健壮性测试平台。该平台是为控制设备生产商、最终用户以及类似我们这样的检测单位,定制的一个测试设备,主要是测试控制器本身网络安全的健壮性,能够帮助用户发现工控系统网络中已知和未知的漏洞。本测试平台采用B/S模式,运用强大的模糊测试引擎,进行包括工业控制协议的模糊测试,以及进行整个工业控制系统的网络压力测试等。如图3所示为B/S操作界面,图4为测试工具的硬件平台。

图4 测试工具的硬件平台

图5 所示为工业控制系统通讯协议健壮性测试平台的连接方式。在整个系统或者是被测设备上下位机之间建立桥接模式。在不进行分析,不进行攻击测试的时候,它是by pass的,对被测设备没有任何的干扰。进行测试时,相对应的引擎会针对它的通讯协议进行监控,后台不断分析其具体模式。并且平台带有一定的自学习能力,能够学习所用的协议是什么内容、什么格式。

图5 工业控制系统通讯协议健壮性测试平台的连接方式

4.1 为什么要采用模糊测试

模糊测试(fuzzing)是一类安全性测试的方法,是一种通过向目标系统提供非预期的输入并监视异常结果来发现漏洞的方法,是一种黑盒测试的方法。

在模糊测试中,用随机坏数据(也称做 fuzz)攻击一个设备、程序或者系统,然后观察哪里遭到了破坏。模糊测试的技巧在于它是不符合逻辑的:自动模糊测试不去猜测哪个数据会导致破坏(就像人工测试员那样),而是将尽可能多的杂乱数据投入程序中。由这个测试验证过的失败模式令人感到震撼,因为任何按逻辑思考的人都不会想到这种失败。

工业控制系统的设计人员最大的特点是,所有的研发都按照自己的设计流程来,自己的逻辑该怎么样就怎么样,他不会考虑中间逻辑混乱了、变化了之后会怎样。整个调试系统也一样,如果按照自己设计的流程,逻辑走得通,这套工控系统就OK。他没有专门考虑整个逻辑发生变化,或者是不合逻辑的情况出现时,工控系统到底是什么样的。为什么采用模糊测试呢?模糊测试并没有真正意义上的规则可以遵循,衡量模糊测试成功与否的唯一标准就是测试得到的结果,它不是按照设计人员的思维去测试,它打破了按逻辑出发的方式,没有真正意义上的规则可以遵循。模糊测试不是简单的枚举或遍历,需要预测产品中存在哪些类型的错误,以及哪些输入能够引发这些错误。所以我们从开发人员的思路来确定模糊测试的方法,并且从开发人员容易忽视的角度来进行模糊测试算法进行设计,让更多的漏洞提前暴露出来。

模糊测试包括六个步骤:确定测试目标、确定输入向量、生成模糊测试数据、执行模糊测试数据、监事异常、判定发现的漏洞是否可被利用,最终发现异常,确定漏洞属于哪个等级。主要方法是使用两个模糊器,一是基于变异的模糊器,一是基于生成的模糊器,最终形成测试用例,进行测试来验证它的控制器是否有相关的问题。

4.2 主要特点和功能

(1)模糊测试。

· 通过对不同协议的语法测试来探测被测设备对协议实现的健壮性;

· 通过对被测设备进行压力测试来测试其抗压能力;

· 通过Fuzzer来进行各个协议的模糊测试。

(2)通过对已有的已知协议进行模糊测试。

· 包括TCP/IP协议,工业控制协议,例如:MODBUS、MMS、GOOSE等;

· 对以上协议进行构造错误报文发送到被测设备;

(3)对未知的私有协议进行模糊测试。

(4)监控功能。

· 监控被测设备是否能正确处理这些错误数据;

· 如果设备出现问题,是否能够恢复。

(5)端口扫描。

(6)测试用例加载:加载可配置参数的不同测试用例(根据协议分)。

(7)网络监控:监控被测设备的网络状态。

(8)漏洞挖掘:通过执行测试用例来进行漏洞挖掘。

(9)根源分析与回溯。

(10)事件日志。

猜你喜欢

工控漏洞通讯
《茶叶通讯》简介
《茶叶通讯》简介
通讯报道
漏洞
工控编程编译工具应用现状分析及展望
工控系统脆弱性分析研究
工控速派 一个工控技术服务的江湖
工控速浱 一个工控技术服务的江湖
三明:“两票制”堵住加价漏洞
漏洞在哪儿