江泽鑫
(广州邦讯信息系统有限公司,广东 广州 510080)
随着信息技术的发展,信息安全攻击手段也在不断丰富和发展,譬如2010年的伊朗核电站遭受“震网”病毒攻击导致离心机损坏,2015年和2016年乌克兰电网遭受“Black Energy”病毒感染导致大面积停电。近年来的信息安全事件表明黑客攻击在攻击者、攻击对象、攻击手段三方面发生转变:
(1)攻击者专业性和组织性更强,由以往无组织的业余爱好者,发展为有组织、有赢利模式的黑客团队,甚至上升为国家层面的网络作战部队。
(2)攻击对象目的性和针对性更强,由以往攻击互联网网站,发展为地下黑产[1]和针对特定工业控制(简称“工控”)系统的攻击。
(3)攻击手段更加综合,由以往利用公开漏洞攻击,发展为社会工程学、地下0DAY漏洞交易、水坑攻击、摆渡病毒等长时间持续的综合攻击,即高级持续威胁(APT)攻击。
2010年伊朗“震网”病毒事件[2]后,工控安全成为了安全领域的研究热点。目前研究对象主要集中在工控的设备安全(如施奈德PLC安全问题)、工控通信协议安全(如Modbus、CAN)和工控软件安全(如西门子、亚控、三维力控等公司软件)这三个方面。ICS-CERT发布了2010年至今的工控漏洞[3],公开数据显示针对能源领域的工控攻击越来越频繁。
伊朗核电站控制系统具有物理隔离和部署集中两大安全优势,但在社会工程学、0DAY漏洞和摆渡病毒等面前仍然难挡黑客攻击。电力监控系统不仅是分散网络控制系统较难物理管控,而且随着智能电网业务迅速发展,监控系统的资产、威胁、脆弱性都不断增加,给电力监控系统的安全防护带来更大的挑战。虽然2015年国家能源局专门发文升级了电力监控系统的安全防护要求,但其主要是针对近年来新增的配用电和新能源领域的防护、商密和等保的合规性要求。电力监控系统的安全防护重点仍然是系统的总体架构及边界的纵深防护,在与电力业务层结合上的安全防护相对薄弱。本文的贡献在于针对电力行业广泛使用的IEC 60870-5-104(简称104)规约[4]的安全性进行研究:
(1)分析了目前电力行业规约的安全性,并指出104规约遥控过程的不安全特性。
(2)提出104规约遥控报文中间人攻击三种方法。
(3)设计开发了104规约遥控报文攻击程序,并进行模拟攻击实验。
(4)提出104规约防护对策和建议。
104规约报文分为三类:I帧、S帧、U帧。其中I帧是变长帧,用于传输数据;S帧固定6字节,用于确认接收I帧;U帧同样固定6字节,用于控制启动/停止/测试。遥控报文属于I帧,用于传输遥控指令,I帧的详细结构如图1所示。
图1 104规约I帧报文格式
其中APCI部分的4个控制域内容主要为报文的发送序列号和接收序列号。其中图1的ASDU部分详细定义如图2所示。
图2 104规约I帧ASDU定义
其中类型标识是测量值、带时标值、命令等与业务相关的类型标识。其中可变结构限定词主要定义信息体的数量。传送原因是一个枚举值,可以取周期、突发、激活、激活确认、停止激活、文件传输等。其他字段的定义用于描述传输对象的内容。
可见,104规约报文格式的定义主要针对业务需求进行定义,缺乏安全层面的考虑。一个安全的协议应当包括以下四个部分:
(1)机密性:让通信双方传输的内容无法直接被通信通道的第三人容易知晓,譬如加密措施。
(2)完整性:确保数据传输过程中不被篡改,如主站发送遥控“合”,不会在传输过程中被非法篡改为遥控“分”,或者应该具有识别报文被篡改的能力,譬如消息摘要、HMAC。
(3)抗抵赖性:消息发送方对自己发送的内容无法否认,譬如数字签名。
(4)抗重放性:消息接收方应能识别接收到的合法消息是否为旧的消息或已接收过的消息,而不执行消息内容的要求,譬如时间戳、消息序列号或窗口。
根据104规约的定义,其显然不具备保密性、完整性、抗抵赖性。104规约4个控制域的发送序列号和接收序列号可以一定程度上实现抗重放,但抗重放性相对较弱。
(1)104规约的U帧可以控制104交互过程的启停。目前测试过的104规约在实现U帧启动后,序列号基本都是0或1开始,可以很容易实现重放攻击。
(2)由于序列号内容没有通过进一步的完整性措施保证,极易被黑客一并篡改从而实现报文重放攻击。
104规约主要业务功能包括遥测、遥信和遥控,其中遥控最为重要。遥控业务中主站和厂站交互过程如图3所示。
图3 104规约遥控交互过程
遥控交互过程包括I帧报文来回交互2次,其中第2个报文的返校可以校核遥控指令的正确与否(即遥控的“合”与“分”是否正确),同时在第3个报文中同样再附带遥控分合字段。104规约的遥控交互过程虽然通过操作人员介入进行返校,似乎增强了安全性,但这只是“虚假”的安全感,它不会对104规约遥控过程起到任何安全性作用,理由是:
(1)遥控交互过程在同一TCP会话通道之内,能够劫持一个报文也就能劫持所有报文,返校报文和遥控预置报文一样可以被轻松篡改。
(2)操作人员的介入是基于104规约通道的报文返校,如果通信通道遭受攻击,操作人员则无法感知。
因此,遥控返校是一个“虚假”的安全感,不仅不会增加遥控安全性,反而使得决策者产生“大意”并放松安全警戒。可见,返校正确不代表安全,不代表厂站/终端接收的遥控报文正确;返校的作用仅仅是在返校错误时方便操作人员发现异常。
本节分析三种有效的104规约中间人攻击,主要包括:应用层(TCP/IP网络模型的第5层)的透明代理中间人、ARP(TCP/IP网络模型的第2层)欺骗中间人和网桥过滤(TCP/IP网络模型的第1层)中间人攻击。本文还基于网桥过滤方法开发了104规约攻击程序,并进行了实验。
(1)攻击方法一:ARP欺骗[5],在前置交换机上接入一个攻击设备,向前置机及其下一跳(或网关)发送非法ARP通知报文,使得前置机误认为攻击设备是网关,而网关误认为攻击设备是前置机,从而使得报文流经攻击设备进行遥控篡改攻击。该方法通过修改前置机和网关的ARP表实现欺骗目的,但ARP表存在生命周期,导致频繁地发送非法ARP报文,容易被管理员发现并市场已有防御方法。因而,本文认为ARP欺骗并不是一个完美的104规约攻击方法。
(2)攻击方法二:透明代理攻击,在前置机与交换机之前串接一个攻击设备,该设备配置为双向透明代理,类似于防火墙的透明模式。将前置机与厂站的TCP连接中止于攻击设备,攻击设备再以前置机的名义向厂站发起TCP连接。攻击设备将数据在两个TCP会话之间“转发”并篡改遥控报文。
相比于ARP欺骗,这种攻击方法不容易被发现,但在实现上相对有难度。由于需要与前置机和厂站分别建立TCP连接,一方面需要确保两个TCP连接的Client端端口号保持一致才不容易被发现,另一方面需要维护好两个TCP连接状态,避免TCP状态长时间差异过大。
此外,由于透明代理将中断了前置机与厂站的TCP连接并进行数据“转发”,其中绝大多数的数据包并不是攻击者关心的对象,但为了确保不被发现,需要一字不漏地实时“转发”,对攻击设备的处理性能提出了极大的挑战。
因此,透明代理攻击方法虽然理论上有效,但攻击实践中将遇到攻击设备性能要求高、成本高、体积大不易部署且攻击程序不易开发等问题。
ARP欺骗和透明代理两种攻击方法还存在攻击配置参数的问题,即攻击者需要非常清楚系统的IP划分情况,并将IP配置到攻击装置上。本文提出的第三种攻击方法相对简单,不需要针对性的参数配置。
(3)攻击方法三:网桥过滤,其原理与攻击方法二类似,区别是不在应用层将TCP中断并代理,而是将攻击设备配置为一个网桥转发设备,这样等同于前置机到网关之间经过一个网桥设备,最后在攻击设备的两个网卡转发报文的过程中对遥控报文进行篡改攻击。
该方法可以实现透明代理攻击不易被察觉的效果,而且还能解决透明代理攻击方法存在的处理性能要求高、攻击程序开发繁琐、使用参数配置复杂等问题。因为两个网卡转发数据,不需要维护TCP连接状态,只是在目标报文上进行替换即可,这样攻击设备可以做到成本低,体积小,同时攻击程序开发简单。
不过,这种攻击方式存在一个小缺陷,即篡改大数据包报文较难。由于前置机与厂站之间报文通过TCP进行承载,在TCP之下的IP层将对于大数据包进行分片,然后再重组。网桥过滤攻击方法不对数据包进行重组,因而对于前置机与厂站之间的大包数据攻击能力存在不足。但实际上,由于104规约的APDU长度只有一个字节,最大只支持256,即每个104报文都只是小包,故该攻击方法并不会影响对104规约攻击的效果。
本文设计实现的攻击方法原理如图4所示。在前置网串接一个小巧(具有隐蔽性)的双网口装置,或者改造并替换交换机的固件(如OpenWrt)。
图4 网桥攻击
该攻击装置工作在物理层,攻击装置不断监测流出的数据包是否为104的遥控报文(主要检测数据包的应用层是否包括104规约I帧格式的ASDU特定的类别标识字段)。对于104报文只要满足触发条件(如时间、IP、点号、次数或异常等)则篡改,并记录该遥控报文厂站IP、前置机TCP会话端口、104报文序列号、公共地址和遥控操作等参数。监控该次篡改报文后的厂站返回报文是否为遥控返校报文,如果是,则将返校报文里的遥控操作字段再次修改,从而让主站和厂站分别没有察觉。
同理实现遥控执行和执行确认报文的篡改,将整个遥控过程来回四个报文的篡改程序固化到任何具有两个以上网口的硬件上,如支持开源OpenWrt项目的产品,这样就具有足够的隐蔽性。
为方便验证攻击方法的有效性,本文创建三个虚拟机:模拟主站虚拟机、模拟厂站虚拟机和攻击虚拟机,攻击虚拟机配置两个网卡并分别与主站虚拟机和厂站虚拟机互联。主站虚拟机与厂站虚拟机使用PMA软件模拟104规约过程,攻击虚拟机里运行一个本文提出的网桥攻击方法实现的攻击程序。模拟主站与模拟厂站的报文记录分别如图5和图6所示。
图5 模拟主站侧的报文记录
模拟主站的记录显示,在发送遥控“合”之后,收到厂站端的遥控“合”返校;随后发送遥控执行“合”,最后厂站端返回执行“合”确认。
相反,在模拟厂站的记录却显示,在接收主站遥控“分”之后,发送遥控返校“分”;随后接收到主站遥控执行“分”命令,最后厂站将执行“分”确认发送出去。
图6 模拟厂站的报文记录
本文提出的网桥攻击方法在主站和厂站使用tracert/traceroute等工具进行网络调试都不会发现异常,甚至IP地址与MAC地址绑定等手段也都无法防御,具有足够的隐蔽性,适合检查时间/使用时间(TOC/TOU)异步攻击。
本文提出的中间人攻击方式可以从以下几方面进行防护:
(1)应用层设计优化,放弃没有安全机制的104规约。
(2)应用层实现改造,放弃使用普通socket进行TCP连接,使用SSL等安全socket进行TCP连接。
(3)将纵向加密装置的加密认证功能往后移一步,嵌入前置机,消灭防护盲区。
(4)各运行单位在机房、系统、布线、跳线等物理设施、人员以及设备购置等方面加强安全管理。
本文深入探讨了104规约的安全性,提出针对104规约遥控业务的有效攻击方法并进行了模拟实验,最后给出相应的防护对策。一方面,本文提出的攻击路径方法只适用于研究,不能在生产环境使用;另一方面,系统管理员如果严格按照电力监控系统安全防护方案进行防护[6],则可以降低本文所提出的安全风险。