工控安全

一、专业术语

SCADA:数据采集与监视控制系统 ICS:工业控制系统 DCS:分布式控制系统/集散控制系统 PCS:过程控制系统ESD:应急停车系统 PLC:可编程序控制器(Programmable Logic Controller) RTU:远程终端控制系统 IED:智能监测单元HMI:人机界面(Human Machine Interface) MIS:管理信息系统(Management Information System) SIS: 生产过程自动化监控和管理系统(Supervisory Information System) MES:制造执行管理系统 上位机:可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。 下位机:可以直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。

二、协议和术语科普

工业控制网络的协议分类

  • 传统控制网络:CCS(Coordinated Control System ,协调控制系统)、DCS(Distributed Control System,分布式控制系统)等。
  • 现场总线:CAN、DeviceNet、CCL-Link、Profibus-DP等。
  • 工业以太网:EtherNet/IP、EtherCAT、HSE、Pfofinet、EPA、PowerLink、Modbus、Tenet、Wnet等。
  • 工业无线网:IEEE 802.11(a/b/g/n)、Rfieldbus、ZigBee等。

基于控制精度划分为:实时网络协议、非实时网络协议。

1.Modbus通讯协议

Modbus(Modicon's BUS的简称)是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。是全球第一个真正用于工业现场的总线协议。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus是一种应用层消息传输协议,位于OSI模型的第7层。通过此协议,控制器之间、控制器经由网络(如以太网)和其他设备之间可以通信。

使用系统保留端口502访问Modbus,这也是TCP/IP协议唯一为工控系统协议保留的端口。

Modbus比其他通信协议使用的更广泛的主要原因有:

  • 公开发表并且无版权要求
  • 易于部署和维护
  • 对供应商来说,修改移动本地的比特或字节没有很多限制

Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。

Modbus协议

Modbus的协议栈仅仅是在传统ISO/OSI模型的基础上对数据链路层应用层做了定义。

modbus是一种主从协议,主设备的一方向从设备的一方下达指令,从设备的一方根据指令做出反应并回复主设备,主设备可以有多个从设备。

具体来说,工作人员的计算机可认为是master,而PLC之类的具体设备就是slave了。

每个设备有自己的“代号”,主设备通过“代号”来找到某一个对应的设备,当然也可以使用广播的方式,代号0即为广播。

modbus定义了自己的数据单元,功能码与具体的数据组成了PDU(协议数据单元 Protocol Data Unit),所谓的功能码也就是代表了主向从下达的指令是什么,这是很重要的一个知识,后面我们会具体讲功能码代指的功能,数据也就是这次指令要用到的“参数”。

只有PDU并不够,我们还需要知道从设备的“代号”才能知道数据往哪发,还要想办法保证数据的完整性、一致性和可靠性。所以在PDU的基础上我们还需要添加一个地址,和一个差错校验,这就构成了ADU(Application Data Unit)。

但要注意,由于三种Modbus在传输中存在差异,所以ADU,特别是校验部分会有不同。

ADU和PDU

功能码有效范围在1~255之间。其中大部分都是保留的,如128-255为异常响应保留。

Modbus TCP

1997年施耐德推出了基于TCP/IP的Modbus TCP。

可以通过wireshark对Modbus的流量包进行抓取进而观察Modbus TCP的数据格式

Transaction identifier : 事务标识符
Protocol identifier : 默认为0
Length : 数据的长度
Unit identifier : 从机地址,因为使用了TCP/IP所以用ip地址来标识从机,所以该位可忽视,或者做进一步分发
Function code : modbus的功能码
Data :具体的数据

Modbus 0x5a

DEF CON 25 - Ics Village - Arnaud Soullié - Fun With Modbus 0x5a Nothing New Still Relevant? 展示过的fun with 0x5a,这个0x5a的功能码是由施耐德自己实现的非标准的功能码,该功能码实现了Modbus标准未允许的功能。在defcon中大佬为我们展示了以下几项: - 获取项目和PLC信息 - 开启、停止PLC - 下载程序 - 更改程序

fun-with-modbus-0x5a video Fun with Modbus 0x5A

REF

2.Siemens S7协议

属于第7层(应用层)的协议,用于西门子设备之间进行交换数据,通过TSAP,可加载MPI,DP,以太网等不同物理结构总线或网络上,PLC一般可以通过封装好的通讯功能块实现。

S7以太网协议本身也是TCP/IP协议簇的一员,S7协议在OSI中的位置相当于将物理层和数据链路层之上的协议进行了定义,S7comm的协议栈修改程度更高,在应用层组织的数据经过COTP协议、TPKT协议的进一步处理后,最终通过TCP进行传输

更多关于S7协议详细介绍见这里 工控协议——S7通讯协议

2.1 S7comm协议

S7comm的结构主要分为三部分:

  • Header:主要是数据的描述性信息,包含长度信息,PDU参考和消息类型常量,最重要的是要表明PDU的类型
  • Parameter:参数,随着不同类型的PDU会有不同的参数
  • Data:数据,该数据是一个可选字段来携带数据,例如存储器值,块代码,固件数据等。

S7comm抓包

3.TPKT

Transport Service ontop of the TCP,简写:TPKT,通过TCP的传输服务。介于TCP和COTP之间。属于传输服务类的协议,它为上层的COTP和下层TCP进行了过渡。功能为在COTP和TCP之间建立桥梁,其内容包含了上层协议数据包的长度。一般与COTP一起发送,当作Header段。我们常用的RDP协议(remote desktop protocol,windows的远程桌面协议)也是基于TPKT的,TPKT的默认TCP端口为102(RDP为3389)

4.COTP

Connection-Oriented Transport Protocol,即面向连接的传输协议,它的传输必然是依赖于连接的,所以在传输数据前必然有类似TCP握手建立链接的操作。

其他工控协议

IEC 60870-5-104、EtherNet/IP、Tridium Niagara Fox、Crimson V3、OMRON FINS、PCWorx、ProConOs、MELSEC-Q。按需求自行查阅资料。

三、威胁建模

安全故障分析模型(物理侧)

现有的分析评价方法主要包括:故障树分析法、事件树分析法、可靠性框图法、马尔可夫分析法、GO-FLOW法、多层流模型、贝叶斯网络等。

故障树分析法(FAT)

Fault Tree Analysis

事件树分析法(ETA)

Event Tree Analysis

STAMP

System-Theoretic Accident Model and Process,系统理论模型和流程分析法

网络安全威胁模型(信息侧)

常见的威胁建模方法:

工控领域主流威胁模型:Kill Chain工控模型、ATT&CK工控模型。

1.Kill Chain工控模型

2.ATT&CK工控模型

四、威胁模式分析

主要分析要素:威胁目标对象、威胁向量、威胁影响。

五、安全防御

工业互联网安全实施框架

六、风险评估

七、工控安全漏洞案例分析

  • 震网攻击:通过改变PLC控制器运行命令,控制离心机异常运行,同时伪造离心机的运行数据,导致SCADA系统的故障诊断功能无法正常运行,最终损坏离心机。
  • BlackEnergy3:在通过控制断路器切断输电线路的同时,使用DoS攻击电力服务系统。

八、调查取证

九、攻击分析

因为工控圈信息相对封闭,所以目前公开信息最全的就是西门子(SIEMENS)公司的 PLC s7 - 300/400 启动攻击漏洞,自己实践学习这个工控协议漏洞算是相对容易的。

参考复现资料: - S7-300 启停实验 - 西门子S7通信过程及重放攻击分析 - 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能(path1) - 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能(path2) - 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能(path3) - 工控协议——S7通讯协议 - Industrial Exploitation Framework

机构工控安全事件分析报告

工控攻防演示设计

实际上目前公开的西门子PLC漏洞,最好用的还是s7-300的启停攻击。

Modbus的启动攻击/拒绝服务器也比较好复现。

REF