Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

西门子PLC蠕虫病毒研究

0
0
西门子PLC蠕虫病毒研究

目 录

1.PLC概述

2.PLC蠕虫研究

2.1 研究背景

2.2 PLC脆弱性攻击模型

2.3研究内容

2.4 下一步研究思路


西门子PLC蠕虫病毒研究
1.PLC概述

可编程逻辑模块,英文名为“Programmable Logic Controller”,简称“PLC”,是一种专门为工业环境下应用而设计的数字运算操作电子系统。

PLC设备从本质上来说是一台工业计算机。其基本架构包含用于运算的中央处理器(CPU),用于存储系统程序、用户程序和数据的存储器,以及用于实现对输入和输出设备的自动控制的编程器。PLC与冯诺依曼体系结构定义一致,即“一台计算机必须有一个存储器、一个控制器,一个运算器,并且程序和数据统一存储并在程序控制下自动工作”。如图1所示。


西门子PLC蠕虫病毒研究

图1 PLC体系架构

PLC是工业网络现场层的最为基础的控制器件。其具有光电隔离和电器隔离特性,可靠性高;产品实现系列化和模块化,通用性强;支持梯形图(LAD)和SCL语言等编程语言,部署灵活,对工艺要求适应性强。由于以上特点,PLC广泛应用于电力、石油和轨道交通等行业。

在工业环境中,PLC用途包括“运动控制”、“生产过程控制”、“数据处理”和“通信”。PLC作为现场控制层的下位机设备,可采集、记录和少量存储现场过程层的工艺数据,发送到过程监控层;另一方面,过程监控层的上位机设备可将工艺逻辑下装到PLC设备,从而实现对生产工艺的运动控制、过程控制、数据处理和通信等功能。如图2所示。


西门子PLC蠕虫病毒研究

图2 PLC功能和用途

为了实现上位机与下位机、下位机之间的通信功能,需要通信协议支持。如图3所示,目前常见的应用通信协议分为公开协议和私有协议。公开协议包括施耐德的Modbus和罗克韦尔的Ethernet/IP等;私有协议包括西门子的S7等。


西门子PLC蠕虫病毒研究

图3 PLC通信协议

2.PLC蠕虫研究2.1研究背景 2.1.1工控安全趋势发展
西门子PLC蠕虫病毒研究

表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所示。


西门子PLC蠕虫病毒研究

图4 PLC攻击模型

2.2.1情报收集

情报收集的主要目的是获取PLC设备信息,包括设备类型、订单号,版本号、程序段和数据块信息等。可使用含有工控协议模拟功能和知识库(包括设备库和协议库)扫描器实现。如图5所示,namp的s7协议插件扫描结果。


西门子PLC蠕虫病毒研究

图5 nmap对SIMATIC 300设备扫描结果

2.2.2 漏洞关联

漏洞关联的目的是根据设备信息精确发现其缺陷和漏洞。缺陷和漏洞可以在CVE等漏洞库查询,也可以通过FUZZ测试和逆向分析等手段挖掘。


西门子PLC蠕虫病毒研究

图6 漏洞库查询系统

2.2.3 漏洞利用

发现PLC漏洞后,搭建仿真环境,并开发漏洞利用工具,构建恶意程序代码。仿真环境可包含受攻击设备,状态指示设备(如灯泡,继电器),网络设备,传输介质(如双绞线,RS485线),监测设备(如协议分析仪,示波器)和攻击机环境。


西门子PLC蠕虫病毒研究

图7 一种PLC蠕虫仿真手提箱环境设计图

2.2.4 内网渗透

内网渗透分为横向渗透和纵向渗透。横向渗透是指以现场控制层的已沦陷PLC设备作为攻击源,向该层其它设备实施攻击;纵向渗透是上位机与下位之间实施攻击。如图8所示。


西门子PLC蠕虫病毒研究

图8 内网渗透示意图

2.2.5 持续控制

持续控制是指在恶意程序获取了PLC控制权限并植入恶意功能后,与命令与控制服务器(C&C服务器)实现数据流与控制流的传输。如logicbit勒索软件,在用户支付赎金后,恶意程序可接受C&C服务器指令,解锁受控PLC设备。如图9所示。


西门子PLC蠕虫病毒研究

图9 持续控制示意图

2.2.6 潜伏

潜伏是指恶意程序进入休眠状态,等待唤醒触发条件发生,执行恶意操作。恶意程序包含了休眠、唤醒的触发条件,并在休眠状态下有效隐蔽,防止被发现并查杀。


西门子PLC蠕虫病毒研究

图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所示。


西门子PLC蠕虫病毒研究

图11 PLC蠕虫仿真环境

2.3.2 PLC蠕虫病毒的运行逻辑

PLC蠕虫病毒实现在PLC设备之间的传播感染,以被感染PLC作为攻击源,首先扫描网络中的其它PLC设备,尝试建立连接。若连接多次失败,则继续扫描;若成功建立连接,首先判断从站PLC是否被感染,若被感染,则断开连接,继续扫描。若未被感染,则停止从站PLC,下装蠕虫代码和数据,启动从站PLC,最后断开连接。如图12所示。


西门子PLC蠕虫病毒研究

图12 PLC蠕虫病毒运行逻辑

2.3.3 自动运行
西门子PLC蠕虫病毒研究

图13 PLC蠕虫病毒自动运行原理

西门子PLC设备用户程序主要包括“主循环程序执行”、“定期程序执行”和“事件驱动程序执行”。后两类属于中断程序。主循环程序执行中的OB1为入口函数(相当于Main函数),而后依次执行OB2,OB3…OB9999。PLC蠕虫病毒代码可被下装到较大编号的OB块中。如图13所示,蠕虫病毒被下装到OB9999代码段,当执行到该代码段时,蠕虫自动运行。

关键发现方面,一是写入OB代码段位置问题。由于

2.3.4 自我复制
西门子PLC蠕虫病毒研究

图14 PLC蠕虫病毒自我复制原理

如图14所示,PLC蠕虫传播原理是,被感染PLC将自身的代码和数据下载到未被感染PLC的代码段和数据段。由于PLC的存储空间有限,尽量减少代码和数据的体积。

关键发现方面,经验证,可将启停代码精简到500个字节以内,下装代码精简到30K以内。此外,精心构造的下装程序应能实现“差异下装”而非“全部覆盖下装”,不会覆盖或清空未被感染PLC的已有代码和和数据。

2.3.5 传播
西门子PLC蠕虫病毒研究

图15 西门子PLC支持的通信协议

如图15所示,西门子PLC通信协议包括TCP,UDP,ISOonTCP,S7Comm,S7CommPlus等。S7类协议是西门子PLC的预置标准协议,且从站PLC不依赖通信代码编程,蠕虫病毒利用该类协议适应性更强。

如图16所示。以S7CommPlus协议为例,PLC蠕虫传播过程分为六步,包括COTP协议握手,S7会话认证,读取感染标志位,停止PLC,下装蠕虫代码和启动PLC。目前,针对西门子1200会话认证已实现完全破解。


西门子PLC蠕虫病毒研究

图16 PLC蠕虫传播协议交互过程

2.3.6 蠕虫控制

PLC蠕虫传播完成后,基于TCP、UDP、S7等通信协议,自动与C&C服务器实现数据回传和命令执行。PLC设备无法直接与C&C服务器建立连接,会扫描网络中一台或者多台PLC的SOCK4代理服务,将其作为跳板,实现与C&C服务的通信。如图17所示。


西门子PLC蠕虫病毒研究

图17 PLC蠕虫控制方式示意图

2.3.7 恶意功能

PLC蠕虫的恶意功能包括篡改“系统配置”和“用户程序”,从而达成对现场设备工艺逻辑的篡改。

如图18所示,TIA的设备组态界面显示的系统配置选项,蠕虫病毒篡改任意配置数据,均会影响用户程序的正常执行。此外,PLC蠕虫还能将用户程序读取并返回到C&C服务器,植入恶意代码,重新下载回PLC,从而实现用户程序的篡改。


西门子PLC蠕虫病毒研究

图18 可篡改的系统配置和用户程序

对恶意功能代码的实现,主要依赖对S7类协议功能码。目前,S7Comm已经基本被破解;S7CommPlus协议功能码为被完全掌握。图19显示了目前对S7类协议功能码的整理。


西门子PLC蠕虫病毒研究

图19 已整理的S7类协议功能码截图

2.3.8 PLC蠕虫病毒的检测与防护

PLC蠕虫病毒的有效检测办法包括, TIA的程序在线对比和诱捕性的工控检测平台。工程师站通过TIA在线功能,发现上、下位机代码存在差异,可以定位到被添加或者篡改的程序段和代码段,从而发现蠕虫代码;此外,还可使用具有诱捕性的工控检测平台,PLC蠕虫病毒在传播过程中,若不能检测出真假PLC设备,就会对蜜罐PLC实施攻击,从而实现有效检测。

对蠕虫病毒有效清除办法是对PLC恢复出厂设置并重新下装用户程序。值得注意的是,重启PLC不会清除蠕虫代码。

2.3.9 研究成果

目前,通过上述研究和实践,已成功复现了PLC蠕虫病毒的代码。设计并组装了仿真演示环境“工控PLC蠕虫病毒演示手提箱”。该手提箱是集研究和展示为一体的便携式设备。此外,还完成了三份文档性文件《工控PLC蠕虫病毒研究报告》《工控蠕虫病毒演示手提箱白皮书》《工控蠕虫病毒演示手提箱使用手册》。如图20所示。


Viewing all articles
Browse latest Browse all 12749