西门子PLC蠕虫病毒研究
目 录
1.PLC概述
2.PLC蠕虫研究
2.1 研究背景
2.2 PLC脆弱性攻击模型
2.3研究内容
2.4 下一步研究思路
1.PLC概述
可编程逻辑模块,英文名为“Programmable Logic Controller”,简称“PLC”,是一种专门为工业环境下应用而设计的数字运算操作电子系统。
PLC设备从本质上来说是一台工业计算机。其基本架构包含用于运算的中央处理器(CPU),用于存储系统程序、用户程序和数据的存储器,以及用于实现对输入和输出设备的自动控制的编程器。PLC与冯诺依曼体系结构定义一致,即“一台计算机必须有一个存储器、一个控制器,一个运算器,并且程序和数据统一存储并在程序控制下自动工作”。如图1所示。
图1 PLC体系架构
PLC是工业网络现场层的最为基础的控制器件。其具有光电隔离和电器隔离特性,可靠性高;产品实现系列化和模块化,通用性强;支持梯形图(LAD)和SCL语言等编程语言,部署灵活,对工艺要求适应性强。由于以上特点,PLC广泛应用于电力、石油和轨道交通等行业。
在工业环境中,PLC用途包括“运动控制”、“生产过程控制”、“数据处理”和“通信”。PLC作为现场控制层的下位机设备,可采集、记录和少量存储现场过程层的工艺数据,发送到过程监控层;另一方面,过程监控层的上位机设备可将工艺逻辑下装到PLC设备,从而实现对生产工艺的运动控制、过程控制、数据处理和通信等功能。如图2所示。
图2 PLC功能和用途
为了实现上位机与下位机、下位机之间的通信功能,需要通信协议支持。如图3所示,目前常见的应用通信协议分为公开协议和私有协议。公开协议包括施耐德的Modbus和罗克韦尔的Ethernet/IP等;私有协议包括西门子的S7等。
图3 PLC通信协议
2.PLC蠕虫研究2.1研究背景
2.1.1工控安全趋势发展
表1 年新增漏洞统计和年安全事件数量统计对比
从2010年到2015年的权威统计数据看,工控网络安全漏洞逐年递减,但年安全事件数量却逐年递增。
2010年,“网络超级武器”Stuxnet病毒针对性地侵入工业控制系统,严重威胁到伊朗布什尔核电站核反应堆的安全运营;
2012年,伊朗石油部和国家石油公司内部计算机网络遭受病毒攻击,为安全起见,伊朗方面暂时切断了海湾附近哈尔克岛石油设施的网络连接;
2014年出现的Havex是一种专门感染SCADA工控系统中的控制软件的恶意软件,它先后攻击了欧、美地区的一千多家能源企业。除此之外,黑客们可通过Havex成功访问到能源行业的工控系统。
2015年12月23日,乌克兰电力网络遭受BlackEnergy攻击,这是首个针对电网的成功攻击案例,导致数十万用户断电数小时。
2017年,WannaCry病毒席卷全球,波及150多个国家和30多万台电脑,涉及能源、电力和交通等重点行业领域。其后又相继出现了多种专门针对工业网络的勒索病毒。
2.1.2 PLC安全研究跟踪
如表2 所示,自2010年震网事件后,PLC安全研究的几个重要方向包括:恶意功能,固件篡改,重放攻击,后门程序,PLC病毒和逻辑炸弹。
年份 | 研究成果 |
2011 | Stephen McLaughlin等对PLC恶意Payloads动态生成进行研究。 |
2013 | Zachry Basnight等人首先对PLC固件进行了分析,然后通过逆向工程揭秘校验算法,首次实现对固件进行修改攻击。 |
2015 | Grigoris Tzokatziou等人开发出Teensy装置,实现了在PLC与HMI之间的重放攻击。 |
2015 | 在blackhat-US会议上Johannes Klick等人在s7-300中注入了一种新型的后门程序。 |
2016 | 在blackhat亚洲会议上Ralf Spenneberg等人在s7-1200上开发了一种新型的PLC Blaster病毒 |
2017 | 印度海德拉巴和新加坡的学者,给出了PLC的逻辑炸弹的演示 |
表2 PLC安全研究成果
2.2 PLC脆弱性攻击模型
从国际上安全事件和相关安全研究成果看,PLC的脆弱性明显,主要体现在以下几个方面:
一是PLC是工业网络的基础控制环节,对其实施攻击,可直接影响现场设备工艺逻辑,造成物理损伤。二是PLC是一台工业计算机,其可编程性为攻击代码提供了程序运行环境。
三是PLC的协议缺陷问题,通信协议弱认证,内存读写弱保护,造成恶意程序轻易获取操作权限。
经前期研究,对PLC的脆弱性攻击可遵循以下模型。如图4所示。
图4 PLC攻击模型
2.2.1情报收集
情报收集的主要目的是获取PLC设备信息,包括设备类型、订单号,版本号、程序段和数据块信息等。可使用含有工控协议模拟功能和知识库(包括设备库和协议库)扫描器实现。如图5所示,namp的s7协议插件扫描结果。
图5 nmap对SIMATIC 300设备扫描结果
2.2.2 漏洞关联
漏洞关联的目的是根据设备信息精确发现其缺陷和漏洞。缺陷和漏洞可以在CVE等漏洞库查询,也可以通过FUZZ测试和逆向分析等手段挖掘。
图6 漏洞库查询系统
2.2.3 漏洞利用
发现PLC漏洞后,搭建仿真环境,并开发漏洞利用工具,构建恶意程序代码。仿真环境可包含受攻击设备,状态指示设备(如灯泡,继电器),网络设备,传输介质(如双绞线,RS485线),监测设备(如协议分析仪,示波器)和攻击机环境。
图7 一种PLC蠕虫仿真手提箱环境设计图
2.2.4 内网渗透
内网渗透分为横向渗透和纵向渗透。横向渗透是指以现场控制层的已沦陷PLC设备作为攻击源,向该层其它设备实施攻击;纵向渗透是上位机与下位之间实施攻击。如图8所示。
图8 内网渗透示意图
2.2.5 持续控制
持续控制是指在恶意程序获取了PLC控制权限并植入恶意功能后,与命令与控制服务器(C&C服务器)实现数据流与控制流的传输。如logicbit勒索软件,在用户支付赎金后,恶意程序可接受C&C服务器指令,解锁受控PLC设备。如图9所示。
图9 持续控制示意图
2.2.6 潜伏
潜伏是指恶意程序进入休眠状态,等待唤醒触发条件发生,执行恶意操作。恶意程序包含了休眠、唤醒的触发条件,并在休眠状态下有效隐蔽,防止被发现并查杀。
图10 PLC恶意程序潜伏示意图
2.3研究内容
PLC蠕虫病毒的概念,是在2016年的BlackHat 大会上由Ralf Spenneberg, Maik Brüggemann, Hendrik Schwartke的报告提出。该报告阐述了TIA与PLC之间基于S7CommPlus协议通信机制,针对西门子1200 (固件版本3.0)协议认证缺陷,通过重放攻击方式(Replay),实现了在PLC设备之间的蠕虫感染原理。该蠕虫原理中对PLC远程操作和网络通信等相关问题是基于先前2011年和2015年的两份BlackHat大会报告中的相关阐述。PLC蠕虫病毒的具体实现细节并未在该报告中体现。
经研究分析,PLC蠕虫病毒应具备以下几个特征:自动运行、自我复制、传播、恶意性和隐蔽性。下文首先简要介绍研究实验环境和PLC蠕虫病毒的运行逻辑,再从上述的几个特征阐述对PLC蠕虫病毒的分析。
2.3.1 仿真模拟环境
仿真模拟环境是利用3台西门子PLC(2台SIMATIC 1200设备和1台SIMATIC 300设备),1台HMI上位机、1台工业交换机、三组状态指示灯(红灯代表故障,绿灯代表正常)、攻击机(攻击源和C&C服务器)和其它工控网络元器件构建而成。如图11所示。
图11 PLC蠕虫仿真环境
2.3.2 PLC蠕虫病毒的运行逻辑
PLC蠕虫病毒实现在PLC设备之间的传播感染,以被感染PLC作为攻击源,首先扫描网络中的其它PLC设备,尝试建立连接。若连接多次失败,则继续扫描;若成功建立连接,首先判断从站PLC是否被感染,若被感染,则断开连接,继续扫描。若未被感染,则停止从站PLC,下装蠕虫代码和数据,启动从站PLC,最后断开连接。如图12所示。
图12 PLC蠕虫病毒运行逻辑
2.3.3 自动运行
图13 PLC蠕虫病毒自动运行原理
西门子PLC设备用户程序主要包括“主循环程序执行”、“定期程序执行”和“事件驱动程序执行”。后两类属于中断程序。主循环程序执行中的OB1为入口函数(相当于Main函数),而后依次执行OB2,OB3…OB9999。PLC蠕虫病毒代码可被下装到较大编号的OB块中。如图13所示,蠕虫病毒被下装到OB9999代码段,当执行到该代码段时,蠕虫自动运行。
关键发现方面,一是写入OB代码段位置问题。由于
2.3.4 自我复制
图14 PLC蠕虫病毒自我复制原理
如图14所示,PLC蠕虫传播原理是,被感染PLC将自身的代码和数据下载到未被感染PLC的代码段和数据段。由于PLC的存储空间有限,尽量减少代码和数据的体积。
关键发现方面,经验证,可将启停代码精简到500个字节以内,下装代码精简到30K以内。此外,精心构造的下装程序应能实现“差异下装”而非“全部覆盖下装”,不会覆盖或清空未被感染PLC的已有代码和和数据。
2.3.5 传播
图15 西门子PLC支持的通信协议
如图15所示,西门子PLC通信协议包括TCP,UDP,ISOonTCP,S7Comm,S7CommPlus等。S7类协议是西门子PLC的预置标准协议,且从站PLC不依赖通信代码编程,蠕虫病毒利用该类协议适应性更强。
如图16所示。以S7CommPlus协议为例,PLC蠕虫传播过程分为六步,包括COTP协议握手,S7会话认证,读取感染标志位,停止PLC,下装蠕虫代码和启动PLC。目前,针对西门子1200会话认证已实现完全破解。
图16 PLC蠕虫传播协议交互过程
2.3.6 蠕虫控制
PLC蠕虫传播完成后,基于TCP、UDP、S7等通信协议,自动与C&C服务器实现数据回传和命令执行。PLC设备无法直接与C&C服务器建立连接,会扫描网络中一台或者多台PLC的SOCK4代理服务,将其作为跳板,实现与C&C服务的通信。如图17所示。
图17 PLC蠕虫控制方式示意图
2.3.7 恶意功能
PLC蠕虫的恶意功能包括篡改“系统配置”和“用户程序”,从而达成对现场设备工艺逻辑的篡改。
如图18所示,TIA的设备组态界面显示的系统配置选项,蠕虫病毒篡改任意配置数据,均会影响用户程序的正常执行。此外,PLC蠕虫还能将用户程序读取并返回到C&C服务器,植入恶意代码,重新下载回PLC,从而实现用户程序的篡改。
图18 可篡改的系统配置和用户程序
对恶意功能代码的实现,主要依赖对S7类协议功能码。目前,S7Comm已经基本被破解;S7CommPlus协议功能码为被完全掌握。图19显示了目前对S7类协议功能码的整理。
图19 已整理的S7类协议功能码截图
2.3.8 PLC蠕虫病毒的检测与防护
PLC蠕虫病毒的有效检测办法包括, TIA的程序在线对比和诱捕性的工控检测平台。工程师站通过TIA在线功能,发现上、下位机代码存在差异,可以定位到被添加或者篡改的程序段和代码段,从而发现蠕虫代码;此外,还可使用具有诱捕性的工控检测平台,PLC蠕虫病毒在传播过程中,若不能检测出真假PLC设备,就会对蜜罐PLC实施攻击,从而实现有效检测。
对蠕虫病毒有效清除办法是对PLC恢复出厂设置并重新下装用户程序。值得注意的是,重启PLC不会清除蠕虫代码。
2.3.9 研究成果
目前,通过上述研究和实践,已成功复现了PLC蠕虫病毒的代码。设计并组装了仿真演示环境“工控PLC蠕虫病毒演示手提箱”。该手提箱是集研究和展示为一体的便携式设备。此外,还完成了三份文档性文件《工控PLC蠕虫病毒研究报告》《工控蠕虫病毒演示手提箱白皮书》《工控蠕虫病毒演示手提箱使用手册》。如图20所示。
图20 研究成果
2.4下一步研究思路
一是扩展横向研究。研究设备对象跨厂商、跨型号和跨版本。
二是深入纵向研究。开展对公开协议与私有协议漏洞分析;公开漏洞复现与漏洞分析工作;通过逆向分析、Fuzz等手段挖掘未知缺陷或漏洞。重点是紧跟研究和分析复现国内外工控威胁事件,如工控勒索病毒事件等,提高威胁事件场景的构建能力。
三是电气特性研究。研究工业4.0环境漏洞测试平台;增强手提箱的扩展性和款式多样性;对PLC设备开展电器特性研究(研制专用示波器、网络协议分析等演示器件)。
写在后边:本文为安全研究人员刘俨涛、孔东林、闫大伟、钟诚利用业余时间,基于下述paper的自发研究成果。从很大程度上,证实了“突破隔离网络后,驱动PLC等嵌入式关键设备恶意代码自传播”执行恶意破坏工作的可行性,值得有关部门重视。
· Black Hat 2011报告《Exploiting Siemens Simatic S7 PLCs》,演示了通过西门子S7Comm协议的权限缺失漏洞来远程操作PLC,对PLC进行启停控制、内存的读写;
· Black Hat 2015报告《Internet-facing PLCs – A New Back Orifice》,演示了如何通过PLC实现通信代理,通过PLC突破网络边界,来发现内网中更多的PLC设备;
· Black Hat 2016报告《PLC-Blaster: A Worm Living Solely in the PLC 》,提出了PLC蠕虫病毒的概念,提出了西门子1200 V3版本协议认证的缺陷,但没有具体的实现细节。
文/DustinW
声明:本文来自网信防务,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。