0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

常见的可编程逻辑器件攻击

jf_78858299 来源:计算机与网络安全 作者:徐震 周晓军 2023-03-24 14:11 次阅读

PLC(Programmable Logic Controller,可编程逻辑器件)是关键基础设施中的基础控制设备,其安全性涉及到整个控制系统的稳定运行。但是,随着两化融合的不断加深以及工业4.0的推进,工业控制系统在提高信息化水平的同时,其信息安全问题也日益突出。PLC遭受黑客攻击的途径也日益翻新,各种木马和病毒变体数量不断攀升,威胁工业控制系统的安全稳定运行和人员生命财产安全。本文通过介绍常见的几种PCL遭受攻击的途径,为工业控制系统安全敲响警钟。

随着技术的不断进步,PLC在向着智能化的方向发展,接口数量和类型越来越多,功能也日益丰富。目前的PLC一般都是基于裁剪后的嵌入式系统,同时将原来位于串行链路上的通信协议转移到TCP/IP之上,为黑客实施攻击提供了便捷的途径。

一、通过嵌入式系统漏洞实施攻击

PLC采用的大多是经过裁剪的实时操作系统RTOS),比如Linux RT、QNX、Lynx、VxWorks等。这些操作系统广泛的应用于通信、军事、航空、航天等高精尖技术及实时性要求较高的领域中。但是其安全问题不容忽视。常见的PLC使用的操作系统如表1所示。

图片

表1 常用PLC的操作系统

Beresford等指出,Simatic PLC运行在x86 Linux系统之上,那就意味着如果插入一段载荷,就可以对shell进行爆破并连接到该设备。尤其需要注意的是PLC上运行的所有程序都是以root权限运行的,一旦被攻击者攻入,后果非常严重。如图1所示:

图片

图1 对shell系统的爆破

西门子、施耐德的多款PLC设备软件搭载在VxWorks系统上运行,wdbrpc是VxWorks的远程调试端口,以UDP方式进行通信,端口号为17185。该协议基于sun-rpc,提供的服务主要用于支持系统远程通过集成开发环境Tornado交互(如图2)。根据灯塔实验室公布的资料,黑客可以通过wdbrpc协议dump全部内存空间数据,找到内存中的所有ftp、telnet登录密码,进一步可以实现的攻击有:篡改bootline绕过登录验证、Dump内存数据从中抓取登录密码等。通过攻击嵌入式实时操作系统进而控制PLC的正常运行。

图片

图2 Tornado开发环境与VxWorks系统图

二、通过PLC通信协议漏洞实施攻击

一般常见工控协议中包含了大量的命令字,如读取、写入数据等,然而其中一部分高级或协议约定的自定义功能往往会给用户安全带来更多的威胁,如Modbus协议的从机诊断命令将会造成从机设备切换到侦听模式、CIP协议某些命令字还能导致设备直接重启、S7协议的STOP CPU功能将会导致PLC程序运行停止,在大多数的情况下用户在上位机进行组态时仅会使用协议的某些读取数据功能和固定范围、固定地址的写数据功能,而协议栈上更多的功能则不会应用于系统集成中。

Langner等指出不需要控制系统内部知识,不需要编程技巧就可以实现一次攻击。利用S7协议漏洞,注入代码到组态OB1(相当于main函数)之前,这样PLC在每次扫描之前都会首先执行恶意代码,并可以通过调用BEC(block end condition)指令,随时终止合法代码的运行。就Stuxnet而言,终止条件是基于时间和工业过程。

Meixell等指出,简单的串口协议(比如Modbus 和DNP3)已经被包含在IP数据报内,攻击者仅仅构造一个基于IP的控制数据包并发送给PLC就可以造成严重的后果。以Modbus协议为例,其常用主要功能码如下表2所示:利用功能码0x05就可以将所有的寄存器置1,打开所有的阀门。

图片

表2 Modbus数据包结构及主要功能码

Tzokatziou等指出,由于PLC通信协议是明文传输,而且对于通信对象没有认证过程。因此攻击者可以利用CoDeSys 系统,直接和PLC进行连接,捕获两者之间的通信的数据包,然后直接给PLC发送篡改后的控制指令,达到任意启停PLC的操作。

三、通过PLC软件漏洞实施攻击

PLC的软件系统包括系统监控软件和用户组态软件,前者用于监视控制器本身的运行,后者用于编写用户程序。以西门子(Siemens)PLC为例,STEP 7 编程软件用于PLC的编程、参数设置和在线调试,而WinCC则主要用于过程监视。

典型的攻击案例是2010年的“震网”病毒攻击伊朗核电站事件。“震网”病毒除了利用windows操作系统的4个0-day漏洞,还利用了西门子WinCC中的两个漏洞:

(1)WinCC系统中存在一个硬编码漏洞,保存了对访问数据的默认账户名和密码,Stuxnet利用这一漏洞尝试访问该系统的SQL数据库;

(2)在WinCC需要使用的Step7工程中,打开工程文件时,存在DLL加载策略上的缺陷,从而导致一种类似于“DLL预加载攻击”的利用方式。然后Stuxnet通过使用自身的s7otbxsx.dll替换Step7软件中的s7otbxsx.dll,实现对一些查询、读取函数的额Hook。

其他的攻击途径包括攻击人机交互界面(HMI),使得操作员失去视图。典型的攻击案例是2015年的乌克兰电网攻击事件。攻击者取得工作站节点的控制权,获取与操作员一致的操作界面和操作权限,通过远程控制对PLC进行开关控制或改变运行参数,从而引起电网故障或者断点。灯塔实验室指出[8],Unity Pro是施耐德系列PLC的编程软件,Unity Pro 附带的OSLoader软件可以完成PLC的操作系统固件升级。OSLoader登录设备后会尝试远程读取文件系统,这样即可实现远程上传下载,攻击者可以通过替换固件的方式轻松让PLC宕机。

四、通过PLC互连实施攻击

当前的工业控制网络朝着“一网到底”的方向发展,工业控制系统横向和纵向连接更加紧密:业务层可以直接访问控制层的数据,甚至对设备进行控制;同一层次内的设备由于相互间的协作工作而联结在一起。对于PLC而言,由于PLC主要用于过程控制,而生产流程往往由诸多控制过程组成,因此需要多个PLC协同工作,共同完成某项生产任务。

图片

图3 利用人机交互界面攻击PLC过程

Radvanovsky等指出,美国启动的SHINE(SHodan Intelligence Extraction)项目是为了提取关于可以从互联网访问的SCADA和ICS设备的信息(尤其是PLC和RTU)。SHODAN搜索引擎是通过搜索常用的TCP/UDP端口来工作的,如表3:

图片

表3 常用协议及端口对照表

Newman指出,监狱中控制室值班通过在线浏览图片和电影引入病毒和蠕虫。一些监狱为犯人提供上网服务,虽然不和监狱控制和监视系统直接连接,但是也是一个可攻入的脆弱点。还要监狱的巡逻车,使用的是无线信号,需要连接监狱网络上传数据,也是一个攻击入口。

Klick在2015 USABlackHat上指出,PLC缺乏安全机制,通常可以上传代码到这些面向互联网的PLC,利用这些PLC作为网关,渗透生产网络,甚至是公司IT网络。Kclik利用PLC编程语言STL编写端口扫描器和SOCKS代理,然后利用感染的PLC去扫描本地网络,并将其作为网关,从而连接与其相连的其他PLC甚至渗透到公司业务网络,如图4所示:

图片

图4 公司内系统层级图

McLaughlin设计了一款针对PLC的恶意软件,能够生成动态数据包载荷,攻击者使用这个工具,可以不用提前对控制系统有先验知识就可以实施攻击,极大的降低了攻击PLC的门槛。首先利用生成的载荷感染一个到多个主机,然后进行工业过程分析,接着对二进制文件进行解码,最后对生成的载荷进行裁剪,上传到PLC并运行,具体过程如图5所示:

图片

图5 动态生成恶意载荷过程

McLaughlin在另一篇文章中开发了一种自动生成PLC载荷的工具—Sabot,自动识别PLC逻辑控制,并生成恶意的PLC代码,具体过程如图6所示:

图片

图6 Sabot攻击过程示意图

Spenneberg等在2016 Asia BlackHat上西门子SIMATICA S7-1200为例,展示了一款专门在PLC上存活的蠕虫。此蠕虫不需要依赖于PC电脑去扩散,仅仅活跃并运行于PLC中,通过网络扫描来发现新的目标(PLC),然后攻击这些目标并将复制自身到新的PLC中,而且受感染的PLC主程序不会发生任何改变。从而可以做到目标发现,携带恶意载荷等攻击手段。而且,清除这些蠕虫非常困难,目前只能通过恢复出厂设置或者复写蠕虫所在的功能块(Function Block)。感染过程如图7所示:

图片

图7 蠕虫感染PLC过程

代码的执行过程如图8所示:

图片

图8 蠕虫恶意代码执行过程

综上所述,PLC的安全态势不容乐观,针对PLC的攻击路径比较多,而且攻击层次在逐渐深入,要做好PLC的安全防护任重道远。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    4975

    文章

    12261

    浏览量

    454966
  • 可编程逻辑器件

    关注

    5

    文章

    136

    浏览量

    30163
  • 工业4.0
    +关注

    关注

    48

    文章

    1938

    浏览量

    117629
收藏 人收藏

    评论

    相关推荐

    可编程逻辑器件

    可编程逻辑器件到底是干什么用的呢,简单的说,就是通过重新写程序,重新注入到这个器件中达到实现其它的功能。最常见的当属电脑了。电脑本身除了加法,减法和简单的逻辑运算四种。比如要是想实现一
    发表于 04-15 10:02

    可编程逻辑器件是如何发展的?

    可编程逻辑器件是如何发展的?
    发表于 04-29 06:23

    PLD可编程逻辑器件

    PLD可编程逻辑器件 英文全称为:programmable logic device 即 PLD。PLD是做为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定。一般的PLD
    发表于 07-22 09:05

    可编程逻辑器件设计

    可编程逻辑器件设计 (264页,nlc格式)
    发表于 03-25 16:41 66次下载

    可编程逻辑器件基础及应用实验指导书

    可编程逻辑器件基础及应用实验指导书 《可编程逻辑器件基础及应用》是一门侧重掌握可编程逻辑器件的基本结构和原理的课程。重点是使学生掌握基于可编程
    发表于 03-24 14:22 29次下载

    第三十二讲 可编程逻辑器件及应用

    第三十二讲 可编程逻辑器件及应用第10章 可编程逻辑器件及应用10.1 概述10.1.1 PLD器件的基本结构10.1.2 PLD器件的分类10.1.3 PLD
    发表于 03-30 16:37 1351次阅读
    第三十二讲 <b class='flag-5'>可编程逻辑器件</b>及应用

    什么是PLD(可编程逻辑器件)

    什么是PLD(可编程逻辑器件) PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)
    发表于 06-20 10:32 1.6w次阅读
    什么是PLD(<b class='flag-5'>可编程逻辑器件</b>)

    EDA技术与应用(可编程逻辑器件)

    7.1 可编程逻辑器件的基本原理 7.2 可编程逻辑器件的设计技术 7.3 可编程逻辑器件编程与配置
    发表于 05-23 10:46 142次下载
    EDA技术与应用(<b class='flag-5'>可编程逻辑器件</b>)

    可编程逻辑器件(书皮)

    可编程逻辑器件(书皮)
    发表于 07-10 14:34 0次下载

    可编程逻辑器件原理、开发与应用

    可编程逻辑器件原理、开发与应用
    发表于 09-19 16:04 19次下载
    <b class='flag-5'>可编程逻辑器件</b>原理、开发与应用

    可编程逻辑器件的分类有哪些

    可编程逻辑器件(PLD)是20世纪70年代发展起来的一种新型逻辑器件,是目前数字系统设计的主要硬件基础。根据可编程逻辑器件结构、集成度以及编程
    发表于 06-10 17:52 2.7w次阅读

    可编程逻辑器件PLD课件下载

    可编程逻辑器件PLD课件下载
    发表于 08-13 10:58 31次下载

    可编程逻辑器件EPLD是如何设计的

    可编程逻辑器件(Electrically Programmable Logic Device,EPLD)是指采用电信号的可擦可编程逻辑器件
    发表于 08-22 18:12 993次阅读

    可编程逻辑器件的结构

    常见可编程逻辑器件分为FPGA、EPLD(CPLD)。下面简单介绍两类器件的结构和区别。
    的头像 发表于 03-24 14:18 845次阅读
    <b class='flag-5'>可编程逻辑器件</b>的结构

    可编程逻辑器件测试

    可编程逻辑器件 (Programmable Loeie Device,PLD)是一种用户编程实现某种逻辑功能的逻辑器件,主要由
    发表于 06-06 15:37 445次阅读
    <b class='flag-5'>可编程逻辑器件</b>测试