姚 旭,王 钢,任秀勤,张立芳,孙 叶
(1.内蒙古工业大学 信息工程学院,内蒙古 呼和浩特 010051; 2.内蒙古工业大学 信息化建设与管理中心,内蒙古 呼和浩特 010051; 3.北方联合电力海勃湾发电厂,内蒙古 乌海 016000)
随着互联网、物联网、5G等网络技术的不断发展,工业控制系统(Industrial Control System,ICS)[1]网络已经由相对独立封闭的网络环境逐步接入通用互联网。当前工业控制系统结合多种新型信息技术已成为近年来的发展趋势。同时也为工业控制系统网络安全防护工作带来新任务、新挑战。
电力行业作为工业控制领域的重要组成部分,生产环境一旦被破坏或失去控制不仅对经济和公共安全问题造成影响,还会造成国家安全隐患。电力系统安全关系着国计民生,其网络安全问题不容小觑[2]。由于工业网络逐步介入互联网,通用互联网的信息安全威胁逐步渗透到传统的电力系统中[3]。早年工控网络环境以物理防护为主,设计研发的工控协议并没有考虑通用互联网威胁,很多工控协议缺乏安全机制。从2010年伊朗曝出震网病毒(Stuxnet)事件[4]开始,国外频频曝出各类工控网络安全事件[5]。2015年末,乌克兰电力系统遭受恶意软件攻击导致大规模的停电事故[6]。2019年委内瑞拉发生两次大面积停电事件[7]。2021年5月美国大型成品油管道运输公司遭受了勒索软件的攻击[8]。目前发电厂的网络防护还是以物理隔离为主,但早在2013年,斯诺登事件中已经曝光了一组美国国家安全局的物理隔离攻击技术。有证据表明利用声波、电磁波、电磁辐射可以成功入侵一台物理隔离计算机[9]。
由于国外电力系统黑客入侵事件频发,电力系统网络安全防御一直是国外各大工业控制实验室的研究热点。Proceedings of the IEEE在2012年就对电力控制系统的网络攻击的实现模式与安全防护体系进行深入研究[10]。目前在增强智能电网的应用程序和基础架构安全性的研究上也有突出成果[11]。中国近年没有发生网络攻击导致的电力事故,但常有对电力系统扫描嗅探行为。
国内一些研究机构已经开始注意到电力系统中的信息安全问题。清华团队深入研究智能电网信息系统。南瑞集团已深入研究电网恶意攻击的辨识方法以及电网侧主动防御策略[10]。工控蜜罐的交互方面研究主要集中在工控协议解析和交互能力方面。现在大多工控蜜罐实现了西门子和施耐德设备的相关协议,如S7相关协议和Modbus协议,对于其他工控协议涉猎较少。
基于以上研究,该文设计并实现了基于发电厂控制系统的蜜罐系统,主要工作如下:
(1)使用蜜罐的思想,结合沙盒技术,实现一个基于沙盒技术的发电厂蜜罐。经过对内蒙古地区发电厂实地考察,深入了解DCS(分散控制系统,Distributed Control System)网络拓扑结构,通过结合沙盒完成高“甜度”蜜罐。
(2)系统依照cuckoo设定客户机和分析机,将采用对客户机部署沙盒捕获到的恶意文件、恶意流量等信息上传分析机,采用cuckoo的分析机制进行分析。
(3)通过逆向协议分析技术,主要对发电厂DCS系统使用的工控协议进行逆向解析,完善工控蜜罐的EGD私有协议仿真,深度分析其协议内部数据,分析在发电厂正常数据的协议包内容情况并学习。
系统通过捕获操作系统层面数据和协议通讯数据两方面来监控发电厂控制系统,实现一个蜜罐系统。该蜜罐系统将捕获数据对比发电厂实际操作层面数据以及实际流量分布情况来确定攻击数据,从主动防御方面保护发电厂控制系统网络。
EGD协议,即Ethernet Global Data以太网全球数据。EGD协议是应用于电子控制器上的一种通用语言[12]。
EGD协议和大多数工控协议一样是应用层协议,EGD数据是由一台PLC周期性地发送给另一台(组)PLC。在EGD通讯方式下,通讯节点分为Producer和Consumer。EGD协议是基于UDP/IP的协议,占用UDP端口18 246[13]。
EGD协议支持单播(Unicast)和多播(Multicast)的模式,可以以点对点或点对多点的方式进行数据交互。EGD协议使用的是生产者-消费者(Producer-Consumer)模型。Producer和Consumer之间以Exchange(交换数据包)进行数据交互,一个Exchange最多可以包含1 400个字节的数据[14]。
研究对象EGD协议通过协议逆向技术解析,EGD协议是基于UDP的应用层协议数据包,由EGD协议打包原始数据后,使用通用数据协议对协议数据单元(PDU)进行封装,由UDP/IP封装后进行连接和传送,由于UDP的无连接、最大交付性,而EGD协议结构简单,通讯中也会一定程度依赖软件配置。
EGD数据消息会按照要求从生产者发送到消费者,每个EGD消息主要分成两部分:固定标头和数据消息,标头具有固定的格式共32字节组成。具体协议解析见图1和表1。
表1 EGD字段解析
图1 EGD协议格式
结合发电厂控制系统和逆向协议分析技术,使用抓包工具并调整参数,采用单一变量通过分析对比不同操作时数据包的异同点。由于EGD协议使用以太网结构协议,使用抓包工具Wireshark等网络协议分析工具。探测输入数字量、输出数字量、输入模拟量、输出模拟量等。
逆向分析得知,该发电厂控制系统通信协议没有进行加密传输,采用明文传输,只是在建立连接时通过认证来实现数据的安全。
经过分析,在EGD数据消息部分此系统协议结构又分为值和品质两个字段。其中品质内容共4个字节,其数据长度由品质内容中的字符类型字段决定数据长度。具体分析见表2。
表2 EGD data字段解析
由于工控蜜罐的诱捕能力主要决定因素是蜜罐的仿真能力,针对现有工控蜜罐,高交互蜜罐成本高,低交互蜜罐诱捕能力不足等问题,该文基于发电厂控制系统仿真提出引入沙盒技术,将发电厂控制系统放入沙盒中运行作为一个蜜罐,完成蜜罐高仿真的同时防止因攻击者识别蜜罐转而攻击真实设备。
如图2所示,设计的高交互工控蜜罐总体架构分为数据捕获模块、数据控制模块、数据分析模块。
图2 系统总体架构
系统采用cuckoo沙盒分析机制,数据捕获模块为了提高工控蜜罐的诱捕能力,系统仿真采用将真实发电厂控制系统放入沙盒中,形成一个高真实度的交互场景。对沙盒内部信息进行监控并捕获异常数据,主要监控正常的进程、文件路径、网络流量等,捕获可能因攻击产生的异常数据,满足工控蜜罐的捕获需求。
针对网络流量监控,除去正常的通信协议外,主要对发电设备采取的私有通讯协议EGD进行解析,并以此为基础开发实现了对EGD协议正常规约刻画,识别非规约协议。
数据控制模块,用来将蜜罐捕获到的异常信息进行转储并输出,告知系统安全管理用户并及时阻断。
蜜罐的分析机制主要在数据分析模块上,对蜜罐捕获的文件、恶意代码、异常流量数据进行分析,采用已有的开源沙盒分析工具cuckoo,将获得的样本通过xmlRPC远程过程调用,使用http协议进行传输。由cuckoo进行分析并将结果输出。
该文构建的发电厂控制系统蜜罐以开源沙盒架构cuckoo为基础,基于发电厂通讯协议EGD私有协议进行开发和发电厂控制系统业务仿真,采用将发电厂控制系统置于cuckoo沙盒内,形成高交互仿真程度蜜罐。整个蜜罐系统使用Django框架进行开发。
工控蜜罐的仿真程度决定着蜜罐诱捕能力的第一环,采用将发电厂控制系统置于沙盒中营造真实环境,提高蜜罐“甜度”,满足了攻击者针对EGD私有协议进行攻击的场景构建。将真实发电厂控制系统部署在沙盒内,不仅使真实系统置于受控范围内,同时沙盒原有的防逃逸功能可以有效防止攻击者,因识别蜜罐借助蜜罐为跳板转而攻击其他设备。而蜜罐最基本的功能是在使攻击者毫无察觉的情况下,捕获攻击者对工控系统发起整个攻击过程的全部信息。系统采用python3语言编写来完成工控蜜罐的捕获工作。主要对系统的访问文件路径、进程以及网络流量进行监控和捕获攻击信息。
进程数据监控以及文件数据监控调用的核心库是psutil。对整个发电厂运行环境进行进程、文件监控,并通过机器学习训练出的模型来优化原有的进程白名单,解决传统的白名单过滤机制单一而且需要经常维护的难题。主要监控进程创建的相关信息,以及进程对文件的操作信息。
对于网络流量信息捕获使用python中的scapy库抓取系统数据包并保存为pacp文件。scapy已经在内部实现了大量的网络协议如DNS、ARP、IP、TCP、UDP等等,可以用它来编写。通过该第三方库将捕获的流量信息转储至数据库中。使用上述方式完成发电厂蜜罐系统的捕获功能。
发电厂蜜罐系统针对识别攻击行为主要在进程、文件、网络数据包及其流量上对攻击者采取一定的控制措施。将捕获的进程文件信息通过训练好的模型,判断是否为异常进程,并索引到该异常进程,对非法进程及时发现并告警,客户端可以采用是否阻断进程对异常进程进行处理。对于疑似病毒文件调用cuckoo接口,提交至cuckoo进行分析并将分析结果页面转回。
具体流程见图3。
图3 进程、文件监控流程
采集网络数据包,在数据链路层解析以太网协议、点对点等协议,识别源mac地址和目的mac地址等数据链路层基本信息。在网络层解析IP协议相关内容,确定源IP地址和目的IP地址。传输层解析TCP、UDP等报文协议内容,并识别出源端口号目的端口号等信息。应用层根据发电厂通讯协议报文特征,识别出工控协议报文,并将其报文格式进行识别。具体流程见图4。
图4 网络监控流程
3.3.1 cuckoo分析机制
cuckoo是一个开源的自动化恶意软件分析系统[15]。它用于自动运行和分析文件,并收集全面的分析结果,概述了恶意软件在隔离的操作系统中运行时的行为[15]。整个cuckoo分为两部分:
Cuckoo Host:cuckoo的核心服务端,负责分析任务的启动和分析结果报告的生成,还要负责管理多个虚拟机。
Analysis Guest:分析客户机,这里采用蜜罐将作为分析的客户机,负责提供虚拟环境供目标样本运行,检测目标的运行情况,并将检测到的数据汇报给Cuckoo Host。
Cuckoo总体架构,host主要接收分析任务,启动作为分析机的蜜罐,将样本和一些必要的分析代码通过http协议传输给client端。cuckoo通过其内部分析代码来获取样本的行为,然后待分析完毕,将分析结果通过tcp传输给host端,将client回复到样本执行的状态。
3.3.2 异常进程及文件的识别
发电厂蜜罐系统捕获系统数据以及网络流量数据,可以对其数据通过机器学习识别攻击,将可能存在安全隐患的数据信息转存数据库后,做进一步处理。监控主要文件以及关键访问路径,将进程关联对文件操作的相关数据,将可疑数据调用训练完毕的检测模型接口对其进行判断,并将结果显示。
计算机攻击通常会造成进程对文件的操作异常比如对关键文件的读、写、打开、等;同时攻击时常伴有高CPU利用率占用资源以及对内存资源占用、磁盘空间占用、文件的操作时长等,通过进程执行时触发文件的操作对应的时间序列等信息来判断是否为异常数据。
(1)数据的提取。
通过进程捕获工具和蜜罐捕获的进程文件模块,提取电厂系统运行时的正常进程、文件数据的正常数据。攻击数据的获取主要从网站中下载永恒之蓝病毒和震网病毒样本,另一种是从Honeynet Project(蜜网项目)网站中下载真实攻击恶意软件样本。对捕获的数据进行特征筛选、数据降维、数据归一化处理后得到样本情况:正常数据3 710,攻击数据2 490,共计6 200。
(2)最优分类模型筛选。
将捕获的进程数据提取进程行为的特征向量,建立计算机正常进程的信息模型,通过进程对文件重要层级的操作,进程对磁盘文件活动的监控等,使用机器学习训练模型来判别异常进程。由于识别攻击问题属于二分类问题即是否受到攻击。该文主要采用以下机器学习进行建模训练:KNN、逻辑回归、随机森林、KVM、决策树。主要选取的评价指标有:精确率(precision)、召回率(recall)、F1度量(F1-score)、准确率。详细评价指标见公式(1)~公式(4)。
(1)
(2)
(3)
(4)
现将分类算法的评价结果展示在表3中。
表3 模型评价结果对比
上述5种分类器均采用同样的数据集进行训练,通过对比上述5个经典分类模型在4个评价指标上的结果可知,5种算法中精确率较高的是决策树和随机森林分类器都达到了1,但是在召回率等其他度量上,并没有随机森林高,因此采用随机森林分类器对进程相关数据进行分析并判定异常。
3.3.3 异常网络流量的识别
将识别出的异常数据分为两类,第一类是普通网络数据,将捕获到的将异常数据包进行转储并告警,同时将形成的pacp文件可以选择提交cuckoo进行处置。第二类是工控数据包,主要指EGD报文,分析工控协议的报文长度,工控协议报文的数据单元标识信息是否完整且正确。根据报文解析结果对报文进行分流,工控协议报文进行进一步的深入解析,将解析后的EGD协议对报文进行违反规约检测。
根据发电厂控制系统环境网络结构,系统主干网络采用TCP/IP工业以太网结构设计,采用标准EGD协议,构成发电厂控制系统的基本网络架构,组成单元机组数据高速网络(Unit Data Highway,UDH),负责实现系统各控制器与人机接口单元(HMI)的互联及数据共享。
控制器与IO模块间通讯网络通过总线连接设备与冗余控制器构成串行环网结构,实现IO模块与控制器的实时数据交互。
基于发电厂原有环境,现将发电厂蜜罐部署如下。将发电厂蜜罐系统接入真实系统以太网中形成闭环,通过沙盒客户机机制将真实系统放入沙盒中,模拟一个或多个真实的工程师站或网关工具。并将多个客户机与分析管理主机相连。
针对发电厂控制系统的工控蜜罐系统进行业务逻辑测试,主要任务是检验蜜罐系统在捕获数据以及识别攻击两方面。在虚拟机内以上述方式部署该蜜罐系统,运行数据转储模块主程序和数据捕获模块主程序。
4.2.1 测试识别EGD协议数据
测试系统识别EGD协议信息,查看系统对EGD协议分析的能力。图5是系统捕获的日志信息。
图5 EGD协议捕获日志
通过包捕获工具对比可知,本蜜罐系统可以捕获并解析出需要的数据包信息。
4.2.2 测试异常进程告警
测试系统捕获关联文件的异常进程信息。通过后台日志显示抓取到的异常日志,实时监控系统进程异常,如图6所示。
图6 异常进程信息捕获
主动防御技术中,蜜罐技术在工控领域的应用日渐成熟,针对不同的工业系统使用的工控协议,该文解析了EGD通讯协议,深度分析其协议内部数据,分析在发电厂正常数据的协议包内容情况并做出攻击识别。同时使用蜜罐的思想与沙盒技术的结合,完成蜜罐的高仿真环境。通过监控网络流量、工控协议包和进程关联文件等相关信息, 识别异常。进而提升整个工业控制系统网络环境安全。