刘冬兰,张 昊,卢思翰,张方哲,孙莉莉
(1.国网山东省电力公司电力科学研究院,山东 济南 250003;2.国家电力投资集团,北京 100032)
电力行业是国民经济的基础产业,是国民经济发展和人民生活极其重要的基础设施之一[1-3]。电力系统作为涉及国家安全的关键基础设施,成为安全生产工作的重中之重。随着能源互联网建设,大量的电力物联网设备被应用到电网的设备控制、数据采集、环境监测等工作中。一方面提升了电网的信息化和智能化水平,但同时也引入了大量的信息安全漏洞,对电力系统的安全稳定运行产生极大威胁。
随着物联网产业和应用加速发展,一些新问题日益突出,数以亿计的设备接入物联网,针对用户隐私、基础网络环境等的安全攻击不断增多[4-8]。由于电力物联网设备数量巨大、物理部署范围更广,目前面临的风险主要包括三方面:第一,终端设备通常散布在无人值守区域或者各类不安全的物理环境中,可能遭到物理破坏或者俘获。第二,终端操作系统可能存在弱口令、程序漏洞、大量开放端口等安全风险,易感染恶意软件,遭受破坏性攻击或者拒绝服务攻击,甚至被非法控制,构成僵尸网络。第三,终端采用的通信协议类型丰富多样,部分网络通信协议在设计之初未考虑安全,或者存在安全设计缺陷,导致数据在信道传输过程中存在被中间人窃听、劫持、篡改、破解、重放等安全风险。第四,设备存在的未修复安全漏洞,可能被不法人员或组织利用,引起电力系统大面积故障,给经济和社会的稳定运行带来重大影响。
目前,国家电网有限公司在电力物联网设备检测方面,主要包括功能性能及质量层面的检测,缺乏安全性检测体系[9-11]。但是,电力系统物联网设备所引入的安全漏洞实质上处于无法评估的“黑洞”状态,严重威胁了电网系统的安全稳定运行[12-17]。基于上述原因,亟须对电力系统中应用的物联网设备在信息安全维度对其设备安全性、网络安全性等进行系统性体系化的测评系统。
为保证电力物联网系统安全稳定运行,对入网的物联网设备进行安全检测,识别设备上存在的安全问题,确保设备安全性处于合理且可控的范围内是非常重要的。为了实现高效、准确的电力物联网设备安全检测,离不开在设备指纹识别、网络协议识别和固件安全性分析等方面关键技术的研究进展。
由于电力物联网设备众多,为实现对系统的安全检测,首先需要解决的是系统内设备识别的问题。设备指纹是不同设备在通信过程中所携带的标志性信息,可以用于辨识各种不同的设备。目前主流的设备指纹识别技术,从实现方式上分为以下3种。
1)主动式。
主动采集设备的各类信息,比如媒体存取控制位址(Media Access Control Address,MAC)、设备国际移动设备识别码(International Mobile Equipment Identity,IMEI)、广告追踪ID 等与客户端上生成唯一的device_id。
主动式设备指纹识别技术的局限性在于:不同生态的平台对用户隐私数据开放权限不同,很难统一生成唯一识别码,且无法实现Web 和App 跨域统一;由于强依赖客户端代码,这种方式生成的指纹在反欺诈的场景中对抗性较弱。
2)被动式。
被动式设备指纹技术在终端设备与服务器通信的过程中,从数据报文的开放系统互联(Open System Interconnection,OSI)七层协议中,提取出该终端设备的操作系统、协议栈和网络状态相关的特征集,并结合机器学习算法以标识和跟踪具体的终端设备。
与主动式设备指纹技术相比,被动式设备指纹并不必须在设备终端上嵌入用于收集设备特征信息的JS(Javascript)代码或软件开发工具包(Software Development Kit,SDK),其所需要的设备特征都是从终端设备发送过来的数据报文中提取,这也是其所谓“被动式”的原因。其适用范围更广,一些无法植入SDK 和JS 的场景也可以使用。同时跨Web/App,以及同步浏览器同一兼容性识别,主动式设备指纹技术,因为相对来说更为简单直接,所以业界大部分设备指纹技术厂商提供的都是该类设备指纹服务。
被动式设备指纹技术,由于其需要使用机器学习技术构建设备指纹分类算法模型,具有较高的技术壁垒,因而还处于推广起步阶段。
3)混合式。
混合式设备指纹识别技术既有主动采集部分,又有服务端算法生成部分。通过植入SDK和JS,埋点在固定的业务场景,被动触发时的主动去采集要素,并与服务端交互,通过算法混淆加密后,在服务端生成唯一的设备指纹ID,同时写入唯一ID 存于App 应用缓存或浏览器cookie 中。一定时间内,用户再次使用对应业务埋点页面时,无须大量重新上传采集要素,只用比对要素变化比例,通过加权比对,计算得出置信度数值,并通过阈值判断是否重新生成设备指纹码。正常用户在使用时理论上是无感知且很少会主动篡改设备指纹唯一ID。
混合式设备指纹技术克服了主动式设备指纹和被动式设备指纹技术各自的固有的缺点,在准确识别设备的同时扩大了设备指纹技术的适用范围。对于Web页面或App内部的应用场景,可以通过主动式设备指纹技术进行快速的设备识别;而对于不同的浏览器之间、Web 页面与App 之间的设备识别与比对关联,则可以利用被动式设备指纹的技术优势来实现。
网络协议识别对于基于通信数据的网络安全检测和防御有着重要的意义。一般情况下,网络协议是同质化的、标准化的,但实际上各种网络协议在应用过程中存在一些差别。基于这些差别,通过协议指纹匹配和协议规则验证可以实现网络协议的识别。其中,网络协议的指纹特征描述和匹配识别可基于快速哈希表方法实现。
网络协议识别的技术主要包括:
1)基于TCP/UDP端口的识别技术。
传统的应用协议识别算法仅使用传输控制协议/用户数据报协议(Transport Control Protocol/User Data Protocol,TCP/UDP)端 口 进 行 识 别 协 议。在Internet 编号分配管理机构互联网驱动器等权限(Internet Assigned Numbes Authority,IANA)中有各个协议详细的注册端口号。例如,常用的工业互联网协议OPC 基于的DCERPC 协议的端口号是135,Modbus 的端口号是502,IEC104 的端口号是2 404。由于基于TCP/UDP 端口的识别算法简单,需要的相关信息少,基于TCP/UDP 端口的识别算法的时间复杂度和空间复杂度是所有协议识别算法中最低的。
在工业网络中,网络环境是封闭的,网络中可连接的设备、服务、拓扑结构等都是已知的。在封闭的网络中,不会大量出现未知的新应用,已知服务的端口号变更情况也是可以获取的,基于TCP/UDP 端口的识别技术完全可以保证报文的覆盖率和识别率。另外,工控网络对网络安全设备的处理速度有比较高的要求,基于TCP/UDP 端口的识别技术是目前常用的协议识别技术中效率最高的,它可以有效提高网络安全设备的处理速度,因此,基于TCP/UDP端口的识别技术比较适用于工业网络环境。
2)基于报文负载特征的识别技术。
为了提高应用协议识别的准确性,可以通过利用网络数据报文的负载部分对应用层协议进行识别。此方法需要事先详细分析待识别的应用协议的报文负载内容,找出其通信过程中不同于其他任何应用协议的内容作为该应用协议的特征,也称作该应用协议的“指纹”特征。在应用协议识别过程中,该类算法检查数据流中每个数据包TCP首部或UDP首部之上的应用层负载部分,若匹配到某应用协议的指纹特征,则将该数据流标记为相应的应用协议。
在工业网络中,常见的工业协议的指纹特征都比较弱,即可以用来识别的负载特征比较短,例如OPC,Modbus,IEC104,可以用来作为指纹特征的字段长度不多于2 Byte,如果使用基于报文负载特征的识别技术,将带来比较高的误报率。但是,当使用基于TCP/UDP 端口的识别技术无法识别协议时,例如S7协议和微软媒体服务器协议(Microsoft Media Server Protocol,MMS)协议使用了相同的端口,这时就需要使用报文负载特征的识别技术来区分它们了。
3)基于关联分析的检测和识别技术。
在网络中,有一些应用协议使用不止一条连接流传输数据。此类业务应用的控制通道和数据通道是分离的,数据通道没有任何指纹特征和端口特征,因此,需要使用关联分析的识别技术对数据流进行识别。该技术首先识别出控制通道,其次分析控制通道数据流中协商数据通道信息的数据,得到数据通道的IP 和端口特征,最后,根据上述IP 和端口特征来识别数据流。常见的文件传输协议(File Transfer Protocol,FTP)等协议的数据通道就需要靠关联分析的检测和识别技术来进行识别。
关联分析具有特殊的适用性,因此一般需要和基于TCP/UDP 端口的识别技术等其他技术配合使用,能够很大的提高应用协议识别的准确率。由于工业网络中常见的对象链接与嵌入的过程控制数据访问协议(Object Linking and Embedding for Process Control Data Access,OPCDA)也使用多条数据流的方式传输数据,因此,此技术依然适用于工业网络。
4)基于行为特征的识别技术。
基于行为特征的识别技术利用统计学原理,根据应用协议数据流的统计学特征,即:不同的应用协议体现在会话连接状态或者数据流上的状态各有不同。例如,基于对等网络(Peer to Peer,P2P)下载应用的流量的统计学特征为长流大报文,平均包长都在450 Byte以上,下载时间长,连接速率高,优先使用的传输层协议为TCP 等。在基于行为特征的识别技术的使用过程中,通过分析数据连接流的包长、连接速率、传输字节量、包与包之间的时间间隔等信息来与已知标准答案的流量特征模型对比,从而实现识别应用类型,即所使用的协议类型。因此,该方法要进行多元判断分析。同时,由于该方法不需要逐包读取报文内容,其识别速度也比较快。
嵌入式设备通过驱动软件来执行指定的任务,这个驱动软件就是固件。固件与传统的应用程序软件相比,主要区别包括:1)固件通常直接与底层硬件交互以执行其任务;2)固件通常被集成到嵌入式设备中,存储在只读存储器(Read-Only Memory,ROM)或带电可擦可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)中;3)嵌入式系统固件的格式复杂多样,没有统一的标准,通常其数据和代码是交织在一起的,执行的入口点可能硬编码在固件中便于CPU直接使用。
根据嵌入式设备所使用的操作系统类型,固件主要可分为三类:1)I型,基于通用目的操作系统,通常具有较强大的处理器性能和高容量的内存,其固件格式和文件系统相对健全;2)II 型,基于嵌入式操作系统,通常适用于一些计算能力较低的设备,内存管理功能不健全,有较为简单的文件系统,常用于单用途的用户电子设备;3)III 型,不具备操作系统抽象,不存在内存管理和文件系统,功能相对简单。
嵌入式设备通常由硬件、固件/系统、应用软件和网络服务组件组成,固件在这几个层面上均存在被攻击的可能,这对于嵌入式设备的运行安全存在巨大的威胁,因此对固件的安全性进行分析是非常重要的。
固件获取和解析通常是进行固件安全性分析的第一步。不同于传统计算机,嵌入式设备固件通常存储在闪存上,需要通过特殊方法进行提取,主要有以下几类:1)通过调试接口获取,如联合测试工作组(Joint Test Action Group,JTAG)接口或通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)调试口;2)通过模拟设备行为获取,在通信的数据格式和交互协议的基础上,通过修改设备型号或版本号等参数欺骗云端,发送空中下载技术(Over-the-Air Technology,OTA)更新请求,获取固件的下载链接;3)在线获取,主要通过访问设备厂商网站,获取公开可用的固件,通过分析网络通信流量即可得到,但很多设备厂商并未开放公开下载渠道。
目前主流的固件安全性分析工作包括:1)漏洞检测,基于已知的固件漏洞,通过相似度检测或关联算法,判断新的固件中是否存在类似漏洞,后门漏洞主要检测固件中是否存在弱口令、硬编码等高危配置选项;2)分析方法,包括静态分析和动态分析技术,静态分析技术是目前的主流,适用性也较好,但存在误报的问题,需要结合动态分析技术进行弥补;3)符号执行,依赖于反汇编引擎、插桩引擎、求解器等分析组件,生成固件的约束条件集,由分析器分析约束条件以输出分析结果。
基于上述的设备指纹识别、网络协议识别和固件安全性分析等关键性技术,本文设计并实现了电力物联网设备安全检测系统,包括设备识别、漏洞扫描、配置核查、固件检测等核心安全检测模块。知识库模块主要包括设备库、漏洞库、配置库、固件库。
电力物联网设备安全检测系统包括系统首页、安全检测模块、知识库模块、报告模块和系统管理模块,如图1所示。
图1 电力物联网设备安全检测系统功能架构
系统首页主要用于用户查看系统的各项指标数据,包括知识库条数、检测任务及检测问题统计等。
安全检测模块是电力物联网设备安全检测系统的核心功能模块,具备设备识别、漏洞扫描、配置核查和固件检测等功能。设备识别基于多种不同的设备识别技术来实现对种类繁多的电力物联网设备的识别,目前支持自动识别、手动添加和批量导入功能。漏洞扫描支持空间资产探测、系统漏洞扫描、工控漏洞扫描等功能,能够准确地检测设备存在的安全漏洞。配置核查主要是根据安全配置核查基线对典型电力业务场景中的设备进行检测,查找不安全的配置策略。固件检测支持对上传的设备固件进行自动分析及安全检测。
知识库模块主要是将物联网设备检测工作的专家知识和分析模型进行了固化,目前包括设备库、漏洞库、配置库和固件库等知识库构成。
报告模块根据不同的检测场景需求,定制化开发了检测报告模板,目前支持自定义定制设备检测报告、场景检测报告、固件检测报告。
系统管理模块包含用户管理、操作记录和基础配置等功能,为用户提供系统配置入口。
电力物联网设备安全检测系统在系统架构上,自下而上可分为基础平台层、系统服务层、系统核心层和系统接入层,如图2所示。
图2 电力物联网设备安全检测系统整体部署架构示意
基础平台层由支撑系统运行的硬件平台和软件环境构成。
系统服务层由安全检测引擎和各类知识库构成,根据业务流程进行各项安全检测任务。主要包括设备库、漏洞库、配置库、固件库。
系统核心层包含设备识别、配置核查、协议检测、应用检测、系统检测、固件检测、场景检测等核心检测功能。
系统接入层由Web 管理界面和数据接口构成,可对外提供标准接口,便于与各项平台数据融合。
电力物联网设备安全性检测业务流程如图3所示。
图3 电力物联网设备安全性检测业务流程示意
电力物联网设备安全检测业务流程由以下步骤构成:
1)用户首先创建设备识别任务,添加待检测的电力物联网设备,系统利用设备库中所集成设备指纹信息,对待测设备或系统进行自动扫描,将所识别到的设备添加至设备列表;
2)利用漏洞库中所集成的漏洞信息,对待测设备进行漏洞扫描和识别;
3)利用标准配置库中所集成的系统配置标准,对待测设备进行配置核查;
4)单一设备的漏洞扫描和配置核查结果,汇总为设备安全检测报告;
5)对于系统中存在多个设备的情况,单一设备的检测结果,会被关联为场景,形成电力物联网典型应用场景安全检测报告;
6)用户在系统上传设备的固件文件,系统对固件进行解析后与固件库中已有信息进行匹配和关联,形成固件检测结果,并输出固件安全检测报告。
目前,电力物联网设备安全检测系统已积累了品牌库23 613条,固件库11条,协议库22条,漏洞库159 763条,威胁特征库1 028条,用例库443条,有力地支撑了物联终端安全性测试验证。平台首页展示了各类知识库情况,如图4所示。
图4 电力物联网设备安全性检测系统首页
利用本文设计研发的电力物联网设备安全检测平台,对5G 标准型终端、5G 工业无线通信终端等六款5G CPE 设备进行了安全性测试验证,共检测出高危漏洞、中危漏洞及低危漏洞共计174 个。六款5G CPE设备安全性测试分析结果如表1所示。
表1 六款5G CPE设备安全性测试分析结果
利用自研的电力物联网设备安全检测系统检测一台5G CPE 终端,并与行业内知名的某公司漏洞扫描工具检测结果进行了对比分析。
电力物联网设备安全检测系统共检测出高风险、中风险、低风险安全漏洞共计110 个;行业知名某公司漏洞扫描工具共检测出高风险、中风险、低风险安全漏洞共计106个。
从对比结果来看,本文自研的电力物联网设备安全检测系统在检测准确率和覆盖面方面强于行业上目前已有的漏洞扫描工具。两台检测工具对5G CPE 终端检测出来的安全风险对比分析如表2所示。
表2 5G CPE终端检测风险对比分析
利用自研电力物联网设备安全检测平台对三地市公司的哑终端、网关机、变电站智慧物联示范场景等终端设备进行了安全漏洞检测,共检测出各物联终端设备高危漏洞、中危漏洞及低危漏洞共计590个,终端具体安全问题如表3所示。
表3 三地市终端安全检测分析结果
本文基于设备指纹识别、网络协议识别和固件安全性检测等关键技术,提出了电力物联网设备安全检测系统的设计实现方案。对电力物联网设备漏洞情况、配置安全性和固件安全性等多个角度进行综合安全分析,实现了对设备安全性的检测,自动化的系统设计大大提高了用户开展物联网终端设备安全检测工作的效率。通过本系统,用户能够快速、高效地对电力物联网设备进行安全检测,并以此为依据决定是否允许该物联网设备或系统接入电力系统网络,避免了由于物联网设备入网所带来的安全风险和隐患。电力物联网设备安全检测系统能够有效弥补入网设备信息安全维度测评缺失的问题,纠正电力物联网设备未经过信息安全测评就入网的安全漏洞,有效防止电力物联网设备应用导致的信息安全威胁,为电网的安全稳定运行提供基础性的信息安全保障。