基于指纹的协议识别及安全风险预警
2020-07-31叶水勇
叶水勇
(国网安徽省电力有限公司黄山供电公司,安徽 黄山 245000)
0 引 言
电力系统的安全稳定运行是关系社会稳定和经济发展的共性问题[1],2015年12月23日,乌克兰电网因遭受黑客攻击而导致大面积停电,这次事件进一步提高了国网公司对电力工控系统信息安全问题的关注。随着“大云物移”等新技术在电力系统的应用和智能电网的发展,电力工控侧的信息安全问题将更加突出[2]。为适应“互联网+”和能源互联网的发展,保障电力工控侧的信息安全,亟需针对电力工控系统研究开发信息安全风险评估的标准和工具。
1 研究内容
1.1 电网工控系统网络协议指纹分析
对于网络协议指纹的选择,即对n维特征属性的选择,是网络协议识别面临的主要问题。原则上选择可以基于任何可获得信息,包括基于单个数据包的信息与基于整个数据包集合的信息等,然而不同的特征选取对识别算法的准确性、时间复杂度和空间复杂度有很大影响。网络协议指纹的属性可以从以下几个方面进行研究,如图1所示。
图1 网络指纹分析的研究流程图
1.1.1 端口分析
TCP/IP网络模型中,传输层协议根据端口对应用层协议进行复用和解复用,故数据包中的传输层端口指明了其所属应用层协议类别[3-4]。互联网数字分配机构(Internet Assigned Numbers Authority,IANA)定义了标准应用层协议所使用的约定端口号,如DNS协议使用TCP 53端口、UDP 53端口,FTP控制协议使用TCP 21端口等。
端口的使用并无强制规定,IANA给出的只是建议端口,协议在具体实现过程中可自行选择所用端口。由于实现简单,早期的用户自定义协议中多数使用固定端口技术,但是随着网络安全日益严峻和ISP对特定协议流量的管控,网络协议开始采用动态端口技术,如各种P2P软件为躲避检测允许使用者自行指定通信端口或者双方协商使用端口。在更进一步的实现中,某些新的网络协议开始使用特定应用层协议作为承载层,在其上构造自己的网络协议,以更加隐蔽的方式进行传输。
对使用固定端口的协议,以端口作为协议特征也不一定准确,因为无法保证不同协议使用不同端口,如QQ文字聊天协议使用UDP 8000端口,迅雷下载服务同样使用UDP 8000端口。对使用动态端口的协议,提取其中协商好的数据流会话端口,利用此端口识别后续的多媒体数据流会话,但是这种方法依赖于对控制会话协议的完全理解,对没有协议规范的用户自定义协议则无法使用。利用标准应用层协议作为承载层的协议,基于端口的识别会产生较多的无用结果。
在准确性方面,基于端口的特征识别方法是比较低的,但是其对作为网络基础服务的应用层协议可以使用。因为它们需要提供公共服务,所以选择端口需要严格遵守约定,其他应用也极少会占用这些协议所用端口,对于这些协议的识别,使用端口特征识别准确性仍然较高,典型协议有SMTP、DNS协议。
1.1.2 应用层载荷内容
网络协议包括语法、语义和时序三个要素[5]。语法定义了数据包的格式,语义定义了对所交换数据的理解和需要采取的行为,时序定义了数据交换的顺序,三者共同构成数据通信中双方交互的过程与内容。这些内容在多个通信过程中基本相同,即双方需要表达的语义信息具有一定的稳定性,由此保证了协议数据中某些内容的取值较为固定。
多数情况下,考虑到后续的扩展升级等工作,协议在设计时多会预留某些空间,称为保留域,现有版本实现中并不使用,被设置为随机值或者固定值。当这些保留域被设置为固定值时,表现为协议数据中某些内容的取值固定不变。
这种协议特征的提取多由人工完成,识别结果的准确性最高,常被用作其他识别技术研究中识别效果的对照,并且更新简单,仅需添加新的特征串即可。但该特征需要查看具体载荷内容,涉及用户隐私信息,同时该特征无法应用于加密协议。
1.1.3 基于流量的统计
不同协议的网络数据包在其传输过程中表现出一些较为固定的外在特征[6-7]。例如,VoIP协议的数据包时间间隔维持在一个固定值附近,且数据包较小,长度接近,明显区分于块传输类协议;块传输类协议数据包时间间隔不固定,为充分利用网络带宽,减少包头等附加信息对带宽的占用,传输采用尽可能大的数据包进行。流量统计特征的存在一部分依赖于应用层协议的行为,一部分依赖于具体网络环境,基于统计的识别方式可以剔除某些网络环境所引起的影响,利用这些特征构建识别模型进行协议识别。
1.1.4 传输层行为
更大范围内的协议特征。采用P2P网络架构的协议自然地表现出某些不同于采用主从式网络架构的协议的特征,如与特定主机上某一端口进行通信的远端端口的分布情况。其主要应用于P2P流量的识别,通过综合多个属于同一协议的会话信息定义协议的行为特征,现已提出的行为特征有同时使用TCP和UDP进行会话,如P2P协议[8]。
IP地址和端口的数量比。P2P主机在一个随机选定的端口上接受其他P2P主机的连接,其他P2P主机同样随机选择连接时所使用的端口,随机选择的端口号相同的概率极低,故P2P流量中,与同一
相对于以上所提出的各种特征,行为特征的准确性低,不能用作通用的协议识别特征。例如,特征一在多媒体协议和网络游戏中较为常见,而在方案实际识别时,是通过端口或者其他辅助手段排除协议干扰的。另外,特征受具体网络环境的影响也较大。例如,由于NAT的存在,多个IP可能被聚合成一个NAT 地址,从而导致对特征二的统计失败。
综上,行为特征较为简单,但不能作为通用协议识别特征。现有研究中仅被作为P2P类协议的识别特征,实现时需要统计较多信息,借助其他技术剔除较严重的误识别情况,无法满足多种网络协议识别的要求。
1.2 基于指纹的协议识别
1.2.1 基于应用层载荷特征的协议识别
基于应用层载荷特征来对网络流量进行分类[9],是指通过检测在网络流数据包的载荷内容中是否出现特定字节串,或者数据包的载荷内容是否匹配特定字节正则表达式,来判定该网络流所属的网络应用的类型。
1.2.2 基于网络流统计特征的协议识别
网络流统计特征是指可以有效区分不同网络应用的网络流属性统计值[10-11],包括网络流传输的数据包数、网络流的持续时间、网络流传输的数据包的长度平均值和网络流中数据包的时间间隔的平均值等。
使用模式识别的方法可以将网络流量分类的问题抽象为给定网络流的M种属性的统计值,任意一个网络流可以使用向量(y1,y2, …,yM)∈RM表示。给定网络应用的类型集合{c1,c2, …,cK},同时给定训练集T,训练集中的点由yi∈RM和cj两部分构成,其中:yi表示网络流的属性向量,cj表示网络应用类型。需要根据给定的训练集T,得到一个映射G:RM→ {c1,c2, …,cK},来对网络流量进行分类。
使用基于网络流统计特征的方法进行网络流量分类,有两点需要考虑:分类算法的选取和网络流属性的选取。下面简要地介绍使用Naïve Bayes算法对网络流量进行分类的过程。
Naïve Bayes算法通过条件概率p(cj|yi)的大小来判断网络流yi是否属于网络应用类型cj。p(cj|yi)由式(1)计算得出:
(1)
其中:p(cj)表示网络应用类型cj在网络流中出现的先验概率;f(yi|cj)是向量yi在网络应用类型cj中出现的概率。
Naïve Bayes算法假设各个网络流属性之间独立,且各个网络流属性均满足高斯分布。为表述简单且不失一般性,只针对1个网络流属性(y1)和2种网络应用类型(c1和c2)进行分析。假设在训练集T中网络应用类型c1出现n1次,网络应用类型c2出现n2次,且n1+n2=n,则p(c1)和p(c2)有式(2)估计:
(2)
如上所述,各个网络流属性均满足高斯分布,则网络流属性yi在网络应用类型c1上的正态分布概率密度函数为:
μ1和σ1可由式(3)来估计:
(3)
对于网络应用类型c2,也可用同样的方法进行计算。综上,可以得出概率p(cj|yi)的估计式:
选取合适的网络流属性,剔除其中的无关属性和冗余属性,对分类算法的准确率会有很大影响。无关属性是指不包含网络应用类型信息的网络流属性,冗余属性是指与已考虑过的某一属性有很大关联性的网络流属性。使用无关属性对网络流量分类不起任何作用,使用冗余属性则会在一定程度上加重相关联的属性在分类时的权重,影响分类的结果。存在两种从网络流属性中选取合适属性的方法:filter方法和wrapper方法。filter方法使用训练集T来判断某一网络流属性与网络流量分类的相关性,此相关性可以使用该网络流属性在不同网络应用类型上的区分度来度量。wrapper方法通过对比使用不同的网络流属性组合进行分类的结果,来判断网络流属性与网络流量分类的相关性,通过不断迭代,可以得到最优的网络流属性组合。filter方法是前向选择,而wrapper算法是后向选择。经过判断网络流属性的相关性和剔除冗余属性这两个步骤后,就可以得到合适的网络流属性。
1.2.3 基于传输层行为特征的协议识别
与基于应用层载荷特征的流量分类方法和基于网络流统计特征的流量分类方法不同,基于主机行为特征的流量分类方法不只关注单个网络流的特征,而是将主机的网络行为同网络应用类型关联起来,然后判断主机产生的网络流对应的网络应用类型。
1.3 网络流量实时分析与预警研究
基于协议指纹,对网络流量进行实时分析,其流程如图2所示。主要分为预处理、协议识别和深度分析三部分。
图2 网络流量实时分析与预警图
1.3.1 预处理部分
主要分为数据包头处理、应用层端口映射、连接信息管理和外网IP映射[12]。数据包头处理完成网络数据包的网络层和传输层的包头信息的提取,如源/目的IP地址、源/目的端口、传输层协议、IP数据包大小、源/目的以太网地址等。端口映射、外网IP映射主要用于识别具有固定端口、固定服务器IP地址的协议。连接信息管理主要用于跟踪TCP会话、UDP会话,只要识别出一个会话中的某个数据包的协议类型,就可以判定该会话的协议类型。
1.3.2 协议识别部分
主要是利用协议的指纹特征库对网络数据包的内容进行特征匹配,主要分三种情况:简单指纹匹配、正则式匹配和自定义特征匹配。简单指纹匹配是指将数据包载荷中的前N字节(例如前32字节)与协议特征库中的特征做匹配,来判断数据包的协议类型。正则式匹配是指将数据包的整个载荷与协议正则式特征库中的正则式特征做匹配,来判断数据包的协议类型。自定义特征匹配是指利用一些复杂特征,如包长序列,来识别会话的协议类型。最后对识别的协议流量进行分类和统计,完成各个会话的信息统计,如该会话的带宽、持续时间、已通过的字节数、已通过的包数等。
1.3.3 安全检测部分
主要是对网络流量的内容进行深度分析,以发现和定位其中可能的网络入侵行为。首先,根据协议指纹等信息,对网络流量的多层协议信息进行信息提取;其次,综合分析多个连接会话信息,对网络协议背后的行为信息进行分析;最后,发现和定位其中可能存在的网络入侵行为,并向系统管理人员发出警报。
2 关键技术
2.1 建立网络协议指纹的形式化描述方法
电力工控系统众多,网络协议非常复杂,包括SCADA系统、电能量采集系统、地区调度数据网、配网SCADA等“大运行”支撑系统,以及机房环境监控、门禁、视频监控、生产实时管控、负荷预测等辅助系统。同时,调度数据网设备类型复杂,除了一般的路由器、交换机等网络设备,还包括隔离装置、加密装置、远动机等设备[13]。
2.2 网络入侵行为检测技术研究
通过建立协议过滤的防火墙规则,发现其中可能存在的恶意入侵行为,即在工控系统受到攻击时能够及时发现攻击网络数据流,从而实现对网络入侵行为的检测和预警。
3 实施方案
通过对电力工业控制系统中的设备信息、网络通信等进行收集[14],分析工控系统中的网络数据流量,定义初步规则进行筛选,将协议数据包划分为完整的通信数据流并进行相互之间的区分。通过对通信数据包协议的分析,总结出其常规特征,并研究协议指纹的模型及其形式化描述方法。结合已有工控协议标准和设计思想,研究分析协议格式以及协议规则。
根据协议指纹特征,对变电站控制系统网络中的流量进行实时分析与识别[15]。例如,在防火墙上配置协议过滤规则,就可以及时发现各类恶意入侵的行为,当工控系统受到攻击时,可以在第一时间发现网络被攻击的数据流,从而保证工控系统的网络安全。
基于以上方法和技术的研究,开发网络通信流量实时分析原型系统,通过对网络通信流量进行实时分析,及时发现并定位网络中存在的各类入侵行为,将告警信息第一时间发送给系统管理人员。
4 成果应用
公司自主研发的基于指纹的协议识别系统分别在黄山110 kV上宅变电站和黄山35 kV凫峰变电站开展核心功能实地试验。其中,上宅变电站试验结果如下:
1)试验发现上宅变电站的站控层网络有8个网段,活动设备有61台,开放端口有2个,具体如表1所示。涉及的嵌入式设备有:armorlink(芯发威达)、EST(EST株式会社)、Inspur(浪潮)、Jetway(捷波IPC)。
表1 网络流量分析
2)分析结果通过拓扑图进行可视化展示,如图3所示。
图3 分析结果展示图
通过拓扑展示可以清晰地看出原IP地址和目的IP地址设备的详细参数、连接所使用的IEC61850协议、连接次数等信息。部分分析结果如图4所示。
3)系统使用过程中各阶段信息如图5所示。
图5 系统使用过程中各阶段截图
5 结 语
针对电力工控侧的信息安全防护问题,黄山公司在调度数据网中建立了工控网络指纹库,并基于该库对网络中传输的数据进行协议识别、对流量进行实时分析、对发现的潜在风险进行预警;通过建立工控安全监测手段、增强工控安全防护体系、开展电网工控系统信息安全和事故反措工作,提升电网工控系统安全防护水平。