APP下载

面向工控联网设备的安全管理技术

2021-12-02陈翊璐程晟滔张哲宇王子博王佰玲

科学技术与工程 2021年33期
关键词:工控周期性数据包

陈翊璐,孙 军,程晟滔,张哲宇,王子博,王佰玲*

(1.哈尔滨工业大学(威海)计算机科学与技术学院,威海 264209;2.哈尔滨工业大学网络空间安全研究院,哈尔滨 150001;3.国家工业信息安全发展研究中心,北京 100040)

工业控制系统(industrial control system,ICS)是电力、制造、石油、化工、交通运行等国家关键基础设施行业中的基础信息物理系统,其重要性不言而喻。近年来,ICS与互联网融合程度逐渐加深,导致ICS中大量网络安全漏洞暴露于互联网中,ICS网络安全事件频发[1]。ICS在设计之初缺乏网络安全层面的考虑,专有设备和软件有诸多漏洞,同时系统设置也存在固有缺陷[2-3]。安全管理包括联网设备探测、设备类型识别、漏洞扫描和漏洞管理等过程,能够获取工业控制系统联网设备(以下简称工控联网设备)的漏洞信息,提高ICS安全性,因此对工控联网设备进行有效安全管理研究有重要意义。

漏洞扫描技术是常用的网络安全检测技术,主要分为基于主机的漏洞扫描和基于网络的漏洞扫描。基于主机的漏洞扫描技术通常借助代理软件对目标进行扫描。工控环境中存在大量的可编程逻辑控制器(programmable logic controller,PLC)、远程测控终端单元(remote terminal unit,RTU),但这类设备的计算和运行资源不丰富,不适用安装代理软件的方式完成扫描任务,同时代理软件本身也可能引入漏洞,因此基于主机的漏洞扫描技术不适用于ICS。

基于网络的漏洞扫描技术首先对系统进行探测,尽可能识别出网络中的所有设备。探测方式可分为主动探测、被动探测以及基于搜索引擎的非入侵式探测[4]。基于搜索引擎的非入侵式探测是一种间接探测方式,不适用于ICS。主动探测通常基于网络协议向网络设备发送探测数据包[5],然后根据设备的返回数据包,分析设备详细信息,例如系统、固件等[6]。ICS具有多种工控协议,于新铭等[7]针对Modbus、S7、DNP3和BACnet 这4种工控协议,提出了一种并发进行资产探测的通用方法,有效优化了资产探测的高效性和通用性。但该方法在探测工控联网设备时,将在短时间内向设备发送大量探测包,这会影响对实时性要求较高的工控联网设备的运行,甚至导致设备运行错误[8],所以该方法在工控网络中需谨慎使用。被动探测则不需要发送探测数据包,而是通过解析已得到的流量数据包,获得网络拓扑结构、网络中存在的设备及设备的一些信息。

对系统进行网络探测后,利用探测得到的信息进行漏洞扫描。漏洞扫描器主要分为基于插件和基于漏洞数据库两类。基于插件的扫描方法通过调用插件来实现漏洞扫描,插件便于管理、更新和维护,也具有良好的扩展性。基于漏洞数据库的扫描方法将探测及识别到的设备信息在漏洞数据库中进行匹配,检索出该设备可能存在的漏洞[9]。根据类似思路,Gawron等[10]利用系统日志以及网络服务网日志信息来获取设备和应用,再进一步通过通用平台枚举项(common platform enumeration,CPE)编号检索漏洞。该方法的关键是探测识别到的设备信息以及漏洞数据库,探测得到的设备信息越详细,匹配到的漏洞越准确,漏洞数据库的完整性以及准确性直接影响漏洞扫描结果的准确性。这种扫描方式是静态的,得到漏洞扫描结果后可以根据漏洞优先级排序,或者采用其他漏洞管理方法。例如,Farris等[11]提出的一种漏洞优先排序管理系统 (vulnerability control,VULCON),可以筛选出一些易被利用或高危害的漏洞来进行进一步的漏洞利用验证。通过漏洞分析和利用研究,可以更深入地掌握漏洞的详细成因[12]。这种静态漏洞扫描方式对工控网络影响较小,更适用于ICS。

联网设备类型识别是后续获取设备详细信息和漏洞管理的关键。识别工控联网设备需借助普渡模型,明确ICS的各个设备所属层次,即管理层、过程层和控制层。Al Ghazo等[13]基于通信模式识别设备层次,利用从数据包提取的缓存时间(time to live,TTL)以及局域网地址(media access control,MAC)地址等信息识别各类设备的厂商和型号。而Shen等[14]验证了利用层次间响应时间可区分不同类型的工控联网设备。在设备类型识别方面,PLC、工控上位机以及数据库服务器的识别较成熟,但对ICS中同样常见的人机接口(human machine interface,HMI)设备的识别存在着不足。

现以获悉工控联网设备存在的漏洞信息为目的,研究工控联网设备安全管理中联网设备探测、设备类型识别、漏洞扫描和漏洞管理过程中的关键技术。首先,在对设备类型研究的基础上[15],针对HMI无法准确识别的问题,通过对其通信流量长度及周期性特征分析,实现在MAC地址信息不完备的情况下对HMI的识别。其次,考虑工控联网设备的漏洞扫描需尽可能避免网络波动,从而避免对业务连续性和实时性的影响,改进工控联网设备扫描的静态信息匹配,即利用设备信息优先在漏洞库内进行查询,根据漏洞等级,实现设定优先级的动态漏洞扫描。为达到上述目的,同时针对工控漏洞库规模逐步扩大问题,提出一种多级索引信息匹配的漏洞检索方法。最后,设计一套面向工控联网设备的安全管理系统。

1 面向工控设备的漏洞扫描系统

1.1 漏洞扫描系统整体架构

根据ICS的脆弱性特点和分层结构,采用主被动结合的漏洞扫描模型进行分层扫描。该漏洞扫描模型的输入为捕获的工控流量,并将该流量输入到层次识别模块。

层次识别模块能根据输入的流量分析网络中的存活设备,并通过设备层次识别算法获得存活设备所在层次,即控制层、过程层和管理层。控制层设备多为PLC等工控网络特有的扫描敏感性设备;管理层设备多为主机;过程层中的设备虽本质上属于主机,但其中的HMI设备、数据采集与监视控制(supervisory control and data acquisition,SCADA)服务器、工程师站等都是工控网络特有设备,其设备类型的确定将有利于进行漏洞扫描。重点研究HMI识别方法。

工控漏洞扫描主要分两个部分,一是主动探测,二是漏洞库匹配。主动探测利用流量信息分析设备使用的协议,再根据协议构造相应的探测包,来获得设备的详细信息,例如,设备厂商、设备类型、设备型号、固件版本等。漏洞库匹配主要将探测得到的设备信息与工控漏洞库匹配以获得漏洞信息。漏洞扫描系统的整体架构由3个部分组成,分别是数据采集模块、设备探测模块和漏洞扫描模块,如图1所示。

1.1.1 数据采集模块

在该模块中,为了尽可能完整描述层次间的通信关系,流量镜像交换机将部署于控制层,过程层和管理层之间,负责实时收集流量数据。

1.1.2 设备探测模块

该模块部署于服务器上,用于探测目标网络中设备的具体信息,包括过程层设备和管理层设备的端口、服务及操作系统信息,以及工控联网设备的设备类型、设备厂商、设备型号等信息。设备探测模块结构图如图2所示。

图2 设备探测模块结构图Fig.2 The structure of device detection module

设备探测模块主要包括被动探测和主动探测。离线识别采集到的工控网络流量后,对得到的传统网络设备使用常用的资产探测工具,例如Nmap、Masscan等,进行端口扫描、服务识别和操作系统识别。对工控联网设备,构造设备探测数据包,并对设备的返回数据包进行解析以及匹配工控指纹库获得工控联网设备的详细信息。这种主被动结合的方法旨在更全面准确地识别资产。

1.1.3 漏洞扫描模块

漏洞扫描模块利用探测到的设备信息,包括工控联网设备的设备类型、设备厂商、设备型号信息,以及传统网络设备的开放端口、操作系统等信息进行漏洞扫描,获得设备上可能存在的漏洞信息。该模块与资产探测模块共同部署,在资产探测获得的信息分类处理后,将传统网络设备信息传入传统漏洞扫描工具进行漏洞扫描,将工控联网设备信息传入工控漏洞库进行漏洞匹配。

1.2 基于周期性及通信长度的HMI识别

1.2.1 HMI介绍

HMI指人机交互界面,包含HMI硬件和相应的专用画面组态软件。HMI属于ICS特有设备,并且使用工控协议与PLC通信,传统的漏洞扫描工具无法完全探测出所有HMI的漏洞信息,因此需要先进行HMI识别。识别HMI的关键在于过程层设备的区分。过程控制层中的历史数据库、工程师站和HMI等设备的功能不同造成了其通信特性的诸多不同。HMI设备可以显示当前的控制状态、过程变量,包括数字量(开关量)和数值等数据;可以显示报警信息;可以通过硬件或可视化图形按键输入数字量、数值等控制参数;可以通过内置功能对PLC内部进行简单的监控、设置等。

HMI的交互具有周期性。大量实验发现,其与历史的通信长度最长,但与工程师站的交互特点并不明显。因此,利用此特性,对HMI的通信长度和周期性展开研究。

(1)HMI的通信长度特征。HMI与SCADA服务器进行连接时,在SCADA服务器与上层设备的交互过程中,同等时间内与HMI之间的通信长度最长[16]。基于这一结论开展研究,探索HMI与其他工控联网设备之间是否也拥有最长通信长度。故统计HMI与PLC之间的通信长度,以及其他控制层设备与PLC设备的通信长度。由于根据通信长度识别HMI并不可靠,因此为实现HMI识别,还需考虑设备通信的周期性。

(2)HMI的通信周期性特征。HMI每隔固定时间向PLC设备发起一次数据读取请求,其通信周期性高于工程师站和历史数据库。为测量HMI的通信周期性,对通信数据包的分组间隔intg进行了统计实验与深入分析。

按照设定的分组间隔对数据包进行划分,对分组进行整理,并设置五元组(源IP,源端口,目的IP,目的端口,分组间隔)。对每个通信四元组(源IP,源端口,目的IP,目的端口),采用分组间隔的标准差stdintg和分组间隔的平均值meanintg设定通信周期性参数Pc,即Pc=stdintg/meanintg,使用Pc衡量通信周期性,Pc越大代表通信周期性越差,反之,周期性越好。

1.2.2 HMI设备识别算法

ICS可划分为3个层次:控制层(0层)、过程层(1层)、企业层(2层),各层次设备之间的通信关系如下:2层设备只与1层设备通信,1层可以与2层和0层设备通信,0层设备可以与0层和1层设备通信。通过捕获网络中的数据包,获得每个源IP设备的目的IP集,利用目的IP集的关系判断所有IP设备的所在层次。对过程层设备的流量数据进行分析,重点解决过程层中HMI的识别混淆问题。

HMI识别过程主要包含数据包分组、通信长度统计及排序。首先,根据通信周期性按照分组间隔对数据包分组,然后计算每个分组内的通信长度,最后根据通信长度进行排序,通信长度最高的为HMI设备。HMI设备的识别过程如算法1所示。HMI算法输入包括原始PCAP以及IP集合。原始PCAP用于提取通信关系,通信关系由六元组构成,包括数据包的源IP、源端口、目的IP、目的端口、包长和时间戳。

算法1 HMI设备识别算法输入 捕获的工控流量包(PCAP) 控制层IP集合(CIPs) 设备层IP集合(DIPs)输出 HMI对应的IP1: forpktinpcapdo2: 提取数据包中源IP、源端口、目的IP、目的端口、包长、包时间;3: endfor4: 根据前四元组进行聚合,形成流集合flows=(sip,sport,dip,dport):vul1,vul2,…,vul=(size,time);5: forflowinflowsdo6: forvulinflowdo7: ifvul[i+1].time-vul[i].time≥intgthen8: 计算前面小于0.78的间隔的数据包的长度之和,记作segsize;9: 将sigsize加入flowsegs,flowsegs=(sip,sport,dip,dport):segsize1,sigsize2,…;10: endif11: endfor12: endfor13: forflow1,flow2inflowsegsdo14: ifflow1.sip==flow2.sipthen15: 将两条流中的segsize进行加和,记为len;16: 加入IPlens,IPlens=sip:len,…;17: endif18: endfor19: 对IPlens中的元素按照值进行由大到小排序;20: returnIPlens[0];

在分组时,根据六元组中的前四元组进行流聚合,将设备层返回给控制层的数据包聚合到流中,然后根据流中数据包间的时间间隔进行分组。其中,利用通信周期性,可排除历史数据库通信数据。然后计算每条流的总通信长度,并按照源IP求和,得到控制层IP与设备层IP通信的总通信长度,利用最大的通信长度这一特性识别HMI设备。由于PLC层和过程层设备与控制层设备交互周期性较弱,因此,在分组阶段对误判的IP具有一定的容错性。

1.3 基于漏洞分析的多级索引匹配方法

由于工控网络对实时性要求较高,直接应用主动扫描方法可能影响工控联网设备运行,甚至导致设备异常,所以ICS的漏洞扫描以静态匹配方式为主。静态匹配的漏洞扫描方式首先获取系统的设备信息,例如设备类型、设备固件和固件版本。利用获取到的设备详细信息查询工控漏洞数据库,检索该设备可能存在的漏洞,再对这些漏洞一一验证。主动探测获得设备漏洞信息后,匹配漏洞库中的设备索引,进而确定设备上可能存在的漏洞信息。因此,构建漏洞库时除考虑漏洞库全面性外,还需考虑匹配速率。

工控漏洞数据库的规模不断增大,对检索算法提出了较高要求。提出使用厂商、设备类型和影响产品来建立工控漏洞数据库的多级索引,并在此基础上提出一种基于多级多索引信息匹配的工控漏洞检索方法。产品记录的总条数N远多于厂商数V和设备类型数D,因此直接搜索记录即一级索引的算法用时显著高于多级索引。选择BM(Boyer-Moore)算法和KMP(Knuth-Morris-Pratt)算法作为候选基本算法。实验发现BM算法在三级索引条件下效率较高,同时在漏洞库构建中,将厂商作为一级索引,设备类型为二级索引、产品型号为三级索引,能快速有效匹配漏洞。

2 实验结果和分析

2.1 HMI识别算法测试与分析

2.1.1 实验数据

HMI识别算法在新加坡的iTrust实验室的安全水处理测试床(secure water treatment testbed,SWaT testbed)实验数据集[17]上展开验证。安全水处理测试床网络架构如图3所示。

图3 安全水处理测试床网络架构Fig.3 Network architecture of secure water treatment testbed

该测试床有完整的三层网络架构,即控制层、过程层和企业层,也有多种典型的工控联网设备,例如,控制层的PLC,过程层的工程师站、历史数据库、HMI以及其他设备。通过分析通信数据包,可确定该实验数据的系统中HMI设备的IP为192.168.1.100。其中,HMI设备识别算法是在层次识别之后进行的,因此,HMI识别结果在一定程度上依赖于层次识别结果。

2.1.2 数据处理

(1)HMI的通信长度。为探究HMI与工控联网设备的通信长度特征,统计1 min之内HMI与PLC的通信长度,以及其他过程层设备与PLC通信长度,结果如图4所示。HMI与PLC的通信长度短于历史数据库,故仅根据通信长度来识别系统中的HMI设备并不可靠。因此,为实现HMI的识别,还需考虑设备的周期性。首先验证仅利用周期性是否可以识别HMI,若不能,则结合周期性以及通信长度来识别HMI,其中,先筛除不具有周期性的历史数据库,再根据通信长度进行识别HMI设备。

图4 1 min通信长度统计Fig.4 Statistics of communication length in 1 min

(2)HMI的周期性。计算设备通信周期性的第一步是对数据包进行分组,组内相邻数据包通信间隔需小于分组时间间隔。HMI数据包间的通信间隔统计结果如图5所示。HMI与PLC的通信具有明显的周期性,且其组间间隔时长在0.6~1 s。基于对捕获包的分析,将分组时间间隔定为0.78 s。根据各个设备间的通信数据包分组间隔计算不同设备的通信周期性参数。周期性参数计算结果如图6所示,HMI设备的周期性参数较高,故其周期性较差,而设备192.168.1.201和192.168.1.207会周期性地发送保持连接的数据包,其定时更为严格,故参数值较低。而历史数据库192.168.1.200在此次周期性筛选中被排除。因此,只借助周期性来识别HMI设备并不可行,需要将HMI的周期性和通信长度进行结合,进而实现HMI的精确识别。

图5 HMI与PLC之间通信数据包时间间隔Fig.5 Time interval of communication packets between HMI and PLC

图6 数据流周期性参数Fig.6 Period parameters of the data flow

2.1.3 算法实验及其结果

实验数据输入至算法1中,测试结果表明,该算法可以较准确地识别HMI设备。算法主要由两部分组成,对流进行分组及统计数据长度并排序。

在流分组后,对长度不为零的流进行分组长度加,结果如图7所示。其中,数据流(192.168.1.100,49 163,192.168.1.20,44 818)的通信长度最长。

图7 数据流通信长度Fig.7 Communication length of the data flow

获取流长度之后,对源IP相同的流通信长度进行进一步加和,得到过程层设备中每个设备与下层设备的通信总量,计算结果如图8所示,HMI设备192.168.1.100的通信长度最大,由此可以证明算法的有效性。

图8 过程层设备数据长度Fig.8 Data length of the process-level devices

HMI识别模块选取了1 min的通信数据实验结果,如表1所示,HMI设备的IP为192.168.1.100,其通信长度最长,这也可证明该算法能达到准确识别HMI的目的。HMI识别在一定程度上依赖于层次识别,经多次实验证明,在层次识别准确率为92.86%时,该算法仍能准确识别HMI设备。

表1 1 min通信数据实验结果Table 1 Experimental results of communication in 1 min

2.2 漏洞数据的多级索引匹配测试与分析

2.2.1 实验数据

工控漏洞库来自国家信息安全漏洞库(China National Vulnerability Database of Information Security,CNNVD)的工控行业漏洞库。获取的漏洞库中厂商数量为293,设备类型共213种,产品总记录条数为5 732。获取的信息包括url、标题、CNVD ID、公开日期、危害级别、影响产品、BUGTRAQ ID、CVE ID、漏洞描述、漏洞类型、参考链接、漏洞解决方案、厂商补丁、验证信息、报送时间、收录时间、更新时间、漏洞附件等字段的信息。此外,为了拓展漏洞库的字段索引,提取每条设备信息的厂商和设备类型,以辅助后续的漏洞匹配。用于实验的资产信息如表2所示。

表2 资产信息Table 2 Assets information

2.2.2 算法实验及其结果

在一级索引方面,直接以产品型号作为索引,对BM算法和KMP算法进行了比较,算法结果如图9所示。经实验发现,相比于KMP算法,BM算法的匹配速率更高。

图9 KMP与BM算法比较Fig.9 Comparison of the KMP and BM algorithms

如图10所示,对BM算法的一级和二级索引进行了比较分析,分别进行了以厂商作为一级索引、以产品作为二级索引和以类型作为一级索引以及以产品作为二级索引的实验。实验结果表明,对于同一种产品,二级索引显著提高了漏洞匹配速率。在索引顺序方面,无论是厂商作为一级索引还是产品类型作为一级索引并无显著差别。因此针对二级索引和三级索引进行了研究,实验结果如图11所示。

图10 BM算法一级和二级索引对比Fig.10 Comparison of the first and second indexes in the BM algorithm

图11 BM算法二级和三级索引对比Fig.11 Comparison of the second and third indexes in BM algorithm

经实验分析发现,在三级索引条件下,先进行厂商匹配,再进行类型和产品匹配的效率较高,且更为稳定。因此,针在漏洞库的索引构建,提出将厂商作为一级索引、设备类型作为二级索引、产品型号作为三级索引的多级索引信息匹配的漏洞检索方法。

3 结论

结合工控联网设备的网络特性、业务特点及安全需求,提出了一种结合通信长度和周期性特征的HMI设备识别算法以及一种基于多级索引信息匹配的漏洞检索方法,同时结合团队前期研究设计了一个面向工控联网设备的安全管理系统。实验证明该系统可准确识别工控系统中的联网设备,并能根据识别到的工控联网设备信息快速检索到其可能存在的漏洞。

猜你喜欢

工控周期性数据包
工控编程编译工具应用现状分析及展望
工控系统脆弱性分析研究
基于蜜罐的工控网络安全防护技术研究进展
二维隐蔽时间信道构建的研究*
慢速抗阻训练:周期性增肌的新刺激模式
智能矿井工控网络安全防护系统研究与实践
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
新广告商:广告业周期性在弱化,而集中度在提升 精读
C#串口高效可靠的接收方案设计
一类整数递推数列的周期性