工控安全攻防演练场景实现分享(轨道交通)

0x1、前言

因为一系列安全事件的发生,工控安全这个概念在近些年被炒得火热,仿真演示平台的搭建和攻击效果的实现,可以直观的来反映一些环境中存在的缺陷和现有问题。这种直观的方式也更为受众所接受,同时也为防护和检测实现了基础环境。

0x2、系统搭建简介

轨道交通演示的硬件平台组成主要由西门子S7-300PLC、轨道交通模型(高铁模型)和外围配件组成(光电开关传感器等)。

软件部分采用监控组态软件(HMI/SCADA软件)使用以太网方式与西门子300PLC完成通讯,从而实现远程监视和控制。

0x3、环境设计思路

系统完成对高铁模型的控制(启停、轨道变换、加速减速)主要使用西门子S7-300的I/O输出模块(数字量和模拟量点)。整体接入如下图

image001

运行轨迹的监控采用的是光电开关,当模型运行经过光电开关时开关量信号将会传送到PLC所关联的DI输入点上。

PLC程序运行点定义如图:

image002

因为场景控制逻辑相对简单,程序实现起来也比较简单核心梯形图如下:

image003

image004

最后使用组态软件通过以太网方式完成远程监控和控制组态:

image005

0x4、完成效果

视频:

实物图:

P_20140808_175229 P_20140808_175407

0x5、攻击效果实现(纯黑盒接入状态下的测试)

该场景西门子PLC使用了以太网TCP/IP方式与上位机组态软件通信(通信方式为TCP,PLC开放端口为102),通过对PLC协议和PLC与官方编程软件(西门子STEP7)通讯的分析可以快速实现多个攻击效果。

0x5.1、以太网远程操作PLC的运行状态

通过对关键操作的重放,例如强制切换PLC运行模式到STOP状态(此状态下程序不运行),该状态下,如果PLC正在轨道上运行,则可导致高铁模型停止运行。

image006

image007

Exp可以参照:http://www.exploit-db.com/exploits/19831/

0x5.2、基于通讯协议(S7)对PLC寄存器区数据的FUZZ

程序中定义的点是直接控制当前运行逻辑的,所以要远程接管控制该环境,可以直接远程篡改PLC内部点的数据,但因为是黑盒状态接入在不清楚各区点的定义的状态下,FUZZ就有必要了,加PLC对内部数据的寻址是通过区(输入I区、输出Q区、内存M区)和地址的方式,通过对协议掌握实现对PLC点的批量写入测试就变得非常简单了(有些PLC的点是通过标签名寻址,这样FUZZ会比较麻烦)。

image009

当然达到的效果可以直接影响控制当前运行停止、道岔切换等。

  1. 3、针对PLC程序的远程修改(类似Stuxnet震网攻击的实现)

可以通过远程下放西门子mc7(即西门子PLC运行程序)二进制文件,替换PLC中的程序直接接管PLC。

可以让上位机监控脱离控制,由下放的恶意程序直接接管控制。

具体流程就不讲了比较麻烦,如图

image008

0x6、攻击效果

替换程序远程强制切换道岔、加速出轨视频:

0x7、安全防御与检测

0x7.1、DPI基于深度包检测的实现

0x7.2、协议检测

0x7.3、深度功能防御实现

About Z-0ne

Leave a Reply

Your email address will not be published. Required fields are marked *