互联网工控漏洞扫描系统设计研究
2020-07-06贾宝林黄思蓓
贾宝林,黄思蓓
(上海工业自动化仪表研究院有限公司,上海 200233)
0 引言
工业控制系统是现代工业基础的核心。在互联网与工业控制系统深入融合的背景下,越来越多的工控设备暴露在互联网上[1]。因此,及时、准确地发现这些工控设备存在的安全隐患,已成为当务之急。
互联网工控漏洞扫描系统,可以有针对性地扫描互联网工控设备,以及时发现可能存在的漏洞与隐患[2],并将其上报至相关单位,从而有效地降低设备被攻击的风险。
1 互联网工控漏洞扫描系统
互联网工控漏洞扫描系统是在工业控制系统与物联网、互联网呈现出深度融合的背景下设计的。互联网设备具有数量大、品类多的特点。由于IPv4数量总数的限制,互联网上的IP多为动态地址,具有一定的时效性。这就要求本系统在设计时需要足够的扫描性能,以满足在较短时间范围内完成一轮扫描的需求。本系统主要对象为工业控制设备。工业控制设备与传统互联网设备在安全机制及通信协议方面有着很大的差别。在工控系统中,存在多种标准通信协议,同时也有很多私有协议。利用传统的漏洞扫描方法,无法正确探测出工控设备的相关信息。本系统支持多种工控通信协议,可以快速进行主机存活判断、开放端口识别、设备信息提取操作,同时具备常见工业控制系统和软件识别功能,如可编程逻辑控制器(programmable logic controller,PLC)、数据采集与监控(supervisory control and data acquisition,SCADA)、分布式控制系统(distributed control system,DCS)、交换机等[3]。本系统集成了专业的工业控制系统安全漏洞库。库中整合了已公开的工控相关漏洞信息,可覆盖多种设备指纹,如厂商、型号、固件版本等。系统在对设备进行识别后,将通过设备型号、固件版本等按系统内部构建的索引信息进行自动匹配[4],从而快速诊断出系统是否包含可能存在的漏洞。
本文提出一种互联网工控漏洞扫描系统的设计和开发流程,并提供一种可行的架构,以便相关开发和设计人员对互联网工控漏洞扫描系统进行设计和开发。
2 互联网工控漏洞扫描系统设计的过程
互联网工控漏洞扫描系统作为一个面向互联网的漏洞扫描工具,其扫描对象具有扫描范围大、对象种类多、扫描结果数据量大等特点。同时,互联网上对象IP多为动态地址,实时性要求较高,需要在较短的时间内完成扫描,并将数据进行汇聚分析。为了让用户获取实时性较高的信息,在系统设计过程中需要重点设计大规模扫描的方式;同时,针对被扫对象分类复杂的特点,要保证各探测手段灵活方便,以便动态调整。本文提出一种将实时扫描贯穿于系统整个过程的设计方法,主要包括需求调研、数据分析、架构设计、部署测试四个部分。每个部分都着重从用户使用及系统有效性角度考虑,以满足用户预期效果。
2.1 需求调研
工业控制系统是现代工业基础的核心,广泛用于石油化工、电力、轨道交通等领域,是国家基础设施建设的重要组成部分。目前,超过80%的民生工程基础设施依靠工控系统来实现自动化作业,工控安全问题已经上升到国家战略高度。很多工业控制系统由于存在设计时未考虑安全、长生命周期、采用商业信息技术(information technology,IT)和同外界连网等问题[5],随着计算机网络技术在工控系统中的应用日益增多,其系统被网络中存在的恶意程序或者网络攻击破坏的风险大大增加[6]。同时,随着工业4.0、中国制造2025计划的实施,5G的加速部署,物联网等技术的逐渐普及,互联网与工控系统有着深度融合的趋势。因此,只有及时、准确地探测互联网中的工业控制设备是否存在漏洞,才能有效减少外部的攻击威胁,将风险、经济损失降到最低。
本系统面向互联网工控设备,与传统网络扫描有本质区别,需要在准确探测到设备信息的基础上提高扫描性能,以确保数据的实时、有效性。
2.2 数据分析
本系统在对扫描对象进行探测时,需要频繁创建socket连接、开关端口等操作。对于单个服务器,端口开放的数量及并发线程数,会有一定的数量限制,从而造成性能瓶颈。本系统扫描对象为互联网设备,具有目标数量大的特点。考虑到本系统对数据实时性的要求,单台服务器架构无法满足现有的需求。本系统以集群的方式,突破单台服务器的硬件限制,从而最大程度提高扫描性能[7]。
互联网设备种类繁多,暴露在互联网上的工控设备种类具有不确定性。为了覆盖尽可能多的工控设备种类,对设备的指纹匹配具有较高的要求。本系统集成数十种工控指纹匹配模板,覆盖西门子、施耐德、罗克韦尔、倍福、巴合曼、台达、红狮、欧姆龙、和利时、三菱、霍尼韦尔等国内外知名厂商的PLC、DCS、SCADA等。
现有国内外主流的漏洞共享平台共三种:公共漏洞库(CVE)、国家信息安全共享平台(CNVD)、国家信息安全漏洞库(CNNVD)。为最大化兼容、覆盖各种漏洞,本系统将此三种漏洞信息汇总,以CVE为关联,集成统一的自有漏洞库,并在格式化后创建索引,以便快速匹配。
2.3 架构设计
在经过需求调研与数据分析之后,基本可以确定漏洞扫描系统所需要具备的功能点、性能要求及数据输出要求等。接下来需要进行详细的功能设计。此阶段主要考虑扫描系统的高效性、扫描探测手段的灵活性、扫描数据的准确性以及漏洞匹配的精确性。因此,在架构设计时,需要以扫描性能与数据准确性为中心,遵循数据实时性、准确性等原则。
系统架构设计主要分成以下四个部分:①扫描任务管理与扫描集群设计;②扫描单元设计;③漏洞匹配;④数据存储。系统结构图如图1所示。
图1 系统结构图
①本系统面向的对象为互联网设备,具有扫描对象数量大的特点,同时互联网上的设备多为动态IP。这就需要扫描结果具有一定的时效性,尽可能在短时间内完成一轮扫描,并将数据进行汇总。为满足这一需求,本系统采用了扫描集群的方式,可同时部署多台扫描节点同步进行扫描,然后统一入库处理。该集群使用一个主节点+多个子节点的方式部署:主节点主要用于处理外部输入的扫描任务;子节点则用于具体的扫描过程。当主节点接收到扫描任务后,根据当前任务所需要扫描的范围及数量,将当前任务拆分为若干个子任务,并通过中间件方式将子任务分发至各子节点中;各子节点接收到任务信息后开启扫描过程,并将实时扫描数据发送到数据存储模块。
②每一个扫描节点为一个扫描单元。各扫描单元本质上为独立的扫描系统,具备整个扫描过程的完整功能。扫描单一对象时,一般分为以下步骤:主机探测、端口发现、指纹匹配、设备信息提取、漏洞匹配、漏洞验证。扫描数据流如图2所示。对于多扫描对象的任务,采用线程池的方式;同时,扫描多个对象,以达到并发扫描的效果。对于最为关键的指纹匹配过程,采用动态配置的方式,只需要按指定的格式生成指纹探测模板,并添加模板描述信息,即可集成至本系统中,方便后续添加维护。
③本系统漏洞库集成了CVE、CNVD、CNNVD三种官方漏洞库。CNVD与CNNVD分别可与CVE漏洞进行关联,根据三者之间的关系将三种漏洞集成为一体,构建自有漏洞库。同时,将各漏洞所关联的产品列表格式化后,以厂商、型号、版本三段式结构建漏洞匹配索引;设计漏洞匹配服务程序,部署于主节点服务器进行集中化管理。各子节点通过socket方式与漏洞匹配服务程序相关,获取匹配中的漏洞数据。
图2 扫描数据流示意图
漏洞匹配服务通信过程如图3所示。
图3 漏洞匹配服务通信过程示意图
④本系统数据存储采用Redis+Mysql两种数据库组合方式。Redis用于缓存临时数据,Mysql则用于存储分类后的扫描结果。本系统采用扫描集群方式部署,在主节点部署Redis数据库缓存临时数据。各子节点扫描完指定对象后,无需与主节点进行交互,直接将扫描数据存入Redis数据库中。由独立的程序从Redis中读取缓存数据,对数据进行分类、聚合后,存入Mysql中。当入库性能不够时,还可以开启多个入库程序,以同时读取缓存数据入库。
本系统扫描集群设计、Redis缓存入库设计、指纹探测等设计均为动态部署,可根据现场设备条件及性能、扫描深度需求作出灵活调整。
2.4 部署测试
系统的设计与开发编码完成后,需要进行部署测试,验证设计的合理性,并进行调试修改。其目标是取得最佳的用户体验。部署测试主要包括功能测试、性能测试、数据准确性测试三部分。部署测试在隔离的虚拟环境下运行,通过大量的虚拟目标IP及虚拟设备[8],模拟出现实的互联网环境,从而在有效验证系统各功能点的同时,不会影响线上设备的正常运行。
功能测试主要是为了保证整个系统各功能点符合预期的效果,包括扫描任务的状态、扫描集群间通信、扫描数据流转、数据完整性等。性能测试主要是为了保证整个系统运行的高效性。通过部署多个扫描结点,对虚拟环境下的目标对象进行大规模扫描探测;通过交换机监测数据包速率,对实时扫描结果进行汇总,计算单位时间内完成扫描的数量,并作出相应的调整优化,以符合预期的效果。数据准确性测试主要包括在扫描过程中,获取的各对象数据与实际信息是否一致,以及匹配到的漏洞与公开的漏洞信息是否一致。通过部署测试,以及后续的调试优化,使整个系统达到预期的效果,基本符合设计要求。
3 设计实例
研究者为某地区部门设计互联网工控漏洞扫描系统,经上级主管部门批准,对指定范围内的互联网设备进行漏洞扫描。其扫描对象数量级达到千万级。通过部署扫描集群的方式,高效的扫描可能存在漏洞,在数天内即可完成一个周期的扫描任务。后续可通过增加扫描节点,进一步缩短扫描周期,为用户提供实时、精准的数据信息。
通过调整扫描集群部署配置,调整扫描结点、Redis缓存数据库、漏洞匹配服务器等资源配置,使扫描性能达到最优。通过调整指纹匹配模板,对工控设备进行针对性扫描,以获取详细的设备信息,保证漏洞扫描的准确性。
4 结论
随着现阶段工控系统、物联网、互联网的深度融合[9],暴露在互联网上的工控设备与物联网设备数量与日俱增。快速、及时地发现这些设备可能存在的漏洞,对于减少可能存在的危害、避免造成直接的经济损失,起着关键作用。
本文围绕我国工控网络与互联网融合后安全领域相关的现实需求,提出了互联网工控漏洞扫描系统的设计方法。通过需求调研、数据分析、架构设计、部署测试等一套完整的流程,设计了高性能、高有效性的漏洞扫描系统。该系统能对暴露在互联网上的工控设备进行针对性扫描, 以及时、有效地发现可能存的威胁与漏洞。此设计过程可以在一定程度上为漏洞扫描系统设计提供设计流程上的参考,也可以在架构设计上为设计人员漏洞扫描系统设计提供可行的方案。