freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

工业互联网安全研究:西门子 S7-300 PLC 注入攻击分析
2023-12-26 13:59:20

一、前言

可编程逻辑控制器简称PLC,被广泛运用在各行业的工业控制系统上,如钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等行业,我国早期PLC均为进口PLC,德国西门子PLC以其高性价比、高可靠性在我国拥有较高市场占有率。近年工业网络安全事件频发,PLC成为主要受害对象,其中又以西门子PLC受到攻击占比最高。

1703561372_658a489c764a42db266e9.png!small?1703561374249

人们逐渐意识到保护工业控制器PLC的重要性。其中,最基本的防护措施就是给PLC设置访问控制权限。但黑客攻击手段层出不穷,本文要分析的“注入攻击”就是一种攻克加密PLC的攻击方式,攻击过程包括获取PLC明文密码、修改PLC访问控制权限、感染PLC逻辑控制程序并重新注入到PLC控制器中,最终致使生产过程中控制点位地址发生变化,局面失控,轻则停产,重则设备损坏,甚至威胁工作人员生命安全,乃至重大民生安全。

本文针对西门子S7-300系列PLC注入攻击的关键部分进行分析。其工业控制系统的网络架构如下图所示,主要控制设备处于工业网中,我们常说的“工控内网”主要指过程监控层和现场控制层两个网络层。

1703560453_658a4505445b5fc20fb54.png!small?1703560453960

本文假定攻击者已进入工控内网,故省略前置渗透过程。

二、环境搭建

一、设备与工具清单

1、西门子S7-300 PLC(VM1)

2、工程师站(VM2),运行工控编程软件Step7,对PLC编程组态

3、黑客渗透PC机(VM3)

4、其他主要工具包括:snap7(PLC连接)、Hex Workshop Hex Editor (64 bit)(修改十六进制文件)

二、 环境搭建简述

1、控制设备S7-300 PLC使用软件形态的PLC(WinAC)

2、使用Step7对PLC编程组态并设置PLC访问控制权限(假定密码为“1”)

1703560630_658a45b6bea96c2bd1617.png!small?1703560631363


三、注入攻击主要环节分析

一、 PLC 密码获取

获取PLC的加密密码是我们攻击成功的第一步。获取方式可通过分析含有密码传输的数据包或者密码存储文件来进行。

方法1:分析通讯中的 PLC 加密算法

S7-300 PLC密文为8位,经研究pcap数据包得到传输密文的加密方法:

1703560722_658a46124805e05ad48b6.png!small?1703560722953

其中:p是明文密码位数,0x20为“空格”的十六进制。

方法2:分析存储时 PLC 加密算法

1、初探 PLC 防护等级

使用snap7尝试上、下载,wireshark抓包发现PLC可能已禁止Download。

1703561831_658a4a677c6cac1514c6c.png!small?1703561832019

向PLC下载时wireshark抓取的错误报文

2、分析 MC7 文件得知防护等级和密文

PLC是一个结构化的组成,内部包括多个不同的模块,每个模块完成不同功能(用“块名称+编号”命名),譬如OB1块存储主程序,负责调用子程序块FC中的子程序;系统数据块SDB块保存用户组态数据,PLC密码加密后就存储于SDB0块中,SDB1、SDB4、SDB7块存储与SDB0相关的组态数据,所有模块都是MC7字节码形式的十六进制文件。

根据PLC存储特点可知,要获得PLC的存储密码必须使用snap7上载SDB0块,“0C 0F 00”标识PLC为加密状态,防护级别“02”代表“只读”,其后8字节即为密文(未加密无“0C 0F 00”)。

1703560753_658a4631522fa3d13826b.png!small?1703560754001

SDB0块的MC7字节码(含密文)

3、 经研究分析SDB0块可得PLC密码存储时加密算法:

1703560778_658a464aa7f17a2835085.png!small?1703560779151

SDB0块中密文的加密算法(可逆)

二、 PLC 密码清除,修改控制权限为“可读可写”

步骤1:使用snap7查看PLC当前防护情况:

1703560823_658a467740327f7dbddc7.png!small?1703560823830

PLC当前防护情况

步骤2:使用snap7查看PLC当前块列表:

1703560845_658a468d576092a0ac3f9.png!small?1703560846204

PLC当前块列表(删除SDB0前)

步骤3:删除PLC中SDB0块

经研究编写删除PLC中SDB0块的脚本delete.py,运行脚本。

1703560865_658a46a1970f49bdf8486.png!small?1703560866235

delete.py脚本中主要片段

步骤4:使用snap7查看PLC当前块列表,SDB0已经不见。

1703560887_658a46b7a56c1ea454fd7.png!small?1703560888200

PLC当前块列表(删除SDB0后)

步骤5:替换SDB0块(无密码)、SDB1块、SDB4块、SDB7块并启动PLC。

1703560910_658a46ce1f258ec98fa97.png!small?1703560910898

依次加载SDB块并下载到PLC中

SDB0块出现,重启step7下载,没有出现输入密码框,SDB0替换成功。

三、 PLC 程序的 MC7 字节码分析与注入

使用snap7上载PLC运行程序(程序存储于OB1块),图13中LAD(梯形图)和图14中STL(语句表)是PLC的两种编程语言,可以相互转化,OB1块的MC7字节码文件中控制语句与STL语言相对应:

1703560957_658a46fde01cfa5067c5f.png!small?1703560958386

图13  PLC中运行程序(修改前LAD)

1703560986_658a471a15ff107325dd1.png!small?1703560986533

图14 PLC中运行程序(修改前STL)

1703561001_658a47298c5006b6c3c36.png!small?1703561002242

图15 OB1块的MC7字节码(修改前)

第37-38字节:80 00,代表AM0.0;第39-40字节:D8 80,代表=Q0.0;第41-42字节:65 00,代表语句BE,中止在当前块中程序扫描;第43-44字节:01 00,执行代码区结束标志。

修改OB1块字节码下载到PLC(这里将“80 00”修改为“81 00”、“D8 80”修改为“D9 80”)。

对比图1314和图1617,发现此时PLC控制程序已发生改变,按钮地址M0.0变成M0.1,输出地址Q0.0变成Q0.1,地址变化将导致生产失控

1703561026_658a4742396cc81bd8bee.png!small?1703561026572

图16  PLC中运行程序(修改后的LAD)

1703561042_658a47523fdf979decdbb.png!small?1703561042644

图17 PLC中运行程序(修改后的STL)

在实际攻击中可结合中间人方式绕过工控防护设备即隐藏注入攻击。

四、实验结论及防护建议

一、 注入攻击的影响与危害

按照攻击目的,PLC注入攻击可分为PLC控制逻辑和PLC固件破坏两种:

1、控制逻辑

本文分析的注入攻击类型即为控制逻辑攻击,此类攻击主要感染PLC控制逻辑代码(PLC程序),破坏控制逻辑。譬如工控蠕虫病毒攻击(唯一一种真正的工控病毒)就使用了PLC密码破解模块,密码自动化破解是工控蠕虫能主动感染PLC的关键。

2、固件攻击

主要以破坏固件导致PLC宕机为主。PLC无条件信任其内在的固件验证机制成为了其原生缺陷,导致异常固件无法被检查。被攻击后PLC会彻底瘫痪无法正常工作。

二、 防护建议浅谈

从上述分析可知密码防护是工控设备第一道防线,防护等级越高自身安全性越高。另外,在工业内网部署工控安全设备,将工控系统正常运行时禁止的操作(非异常行为,属于正常行为出现在非正常时间,如Run、Stop、Write、Upload、Download等)加入安全设备规则库中,配置好防护规则,从网络层面可做好有效的安全防护。

三、 部分防御规则参考

可以在工控防火墙/IDS和审计设备上搭载相应规则,对如下高危动作进行及时识别和处置。

1703561158_658a47c6b0cc8bd899cb4.png!small?1703561159386

本文仅用于工控安全研究学习,利用此文所提供的信息造成的任何直接或间接后果,均由使用者本人负责,本文作者及本公号不为此承担任何责任。

# 企业安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录