PLC武器化探秘-邪恶PLC攻击技术的六个关键步骤
时间:2022-08-25 作者:安帝科技
引言
以色列工业网络安全公司Claroty旗下的Team82研究团队开发了一种称为Evil PLC攻击的新技术,其中PLC被武器化并用于突破并控制工程师站。在工程师站上立足的攻击者可以访问连接该机器的OT网络上的任何其他设备,包括其它PLC。攻击的目标是从事工业网络运维、PLC配置和故障排除的工程师,他们的工作是确保公用事业、电力、水和废水、重工业、制造和汽车等关键行业的流程的安全性和可靠性。Team82团队的研究成果在7家自动化公司(罗克韦尔自动化、施耐德电气、通用电气、贝加莱、信捷、OVARRO和艾默生)的相应设备上进行了有效的概念验证利用。
PLC在工业领域的重要作用不言而喻,典型的工业网络可能有几十台PLC执行不同的操作,因之它也成为极其具有吸引力的攻击目标。但通常我们所能理解的大多数涉及PLC的攻击场景都是围绕PLC本身的访问、控制和利用。
Team82研究团队另辟蹊径,他们试图寻找一种不同的方法,将PLC作为工具而不是目标。基于此,研究人员希望利用PLC来访问它的维护者,工程师站。攻击者引诱工程师连接到受感染的PLC的最快方法是使PLC发生故障或异常。这将迫使工程师使用工程师站软件连接作为故障排除工具。一旦控制工程师站,它将是获取相关信息的最佳来源,并将通过它访问网络上的所有其他PLC。通过这些访问和信息,攻击者可以很容易地改变任何PLC上的逻辑。
通过Team82的研究,他们试图对多个领先的ICS平台执行这种新的攻击向量。研究人员在七家自动化厂商的平台上发现了各种漏洞,这些漏洞使他们能够将PLC武器化,当执行上传程序时,研究人员专门制作的辅助数据片段会导致工师站执行预制的恶意代码。
一、基础知识
对于每个目标供应商平台,需要研究的完整生态系统包括:
- 工程师站软件
– 工程师站项目文件
– 专有协议(PLC和工程师站)
– PLC固件
– 逻辑代码(字节码,文本代码)
1、项目文件
通常情况下,项目文件是简单的基于存档的文件,具有相对容易理解的结构;大多数情况下,研究工作都是从那里开始的。例如,GE MarkVIe项目文件包含具有易于理解的命名约定的文本XML文件。它帮助研究人员了解工程师站生成并传输给PLC的全部数据类型范围。如下图是一个GE ToolBoxST的项目文件。
当然,也一些项目文件是以研究人员需要分析和逆向工程的专有格式存储的。例如,艾默生工程师站PAC机器版使用的是一种专有的.swxcf项目文件格式,它是基于二进制的MFC序列化数据。这个项目文件存储了一个完整的操作项目所需的数百个序列化的c++对象。为了完成研究工作,研究人员为所有文件格式编写了解析器,并提取了项目的源代码逻辑、元数据和配置数据。下图就是一个艾默生工程师站PAC机器版使用的是一种专有的.swxcf项目文件示例。
2、通信协议
另一个需要考察的重要方面,每个供应商开发和实现的专有协议。通过该协议,工程师站软件可以与兼容的PLC进行通信,执行获取其状态、进行监控和数据采集(SCADA)操作、进行固件升级等操作,对研究人员来说最重要的是执行上传/下载程序,修改或获取当前运行的逻辑。有些协议很容易分析,而有些则很复杂。最终,研究人员为这个研究项目范围内的所有专有协议开发了解析器和客户端。
例如,信捷XD工程师站PLC Program Tool就是使用基于UDP modbus协议与PLC进行通信的。大部分功能是通过Modbus读取/写入文件记录和/或多寄存器Modbus功能代码实现的。下图是上传过程中对信捷协议网络流量的Wireshark截图。
3、文本代码和字节码
除了项目文件和专有协议之外,还研究了文本代码(源代码)和字节码(编译代码)。这是研究工作的一个重要方面,因为它允许研究人员执行全面的下载/上传程序,并帮助研究人员实现自动化和获得对PLC逻辑的控制。
虽然在研究中这不是必要的,但在某些情况下,为专有的PLC字节码开发了部分/完全工作的编译器和反编译器。
4、恶意代码或攻击载荷
最后,为了实现有效载荷和演示目的,研究人员准备了一个假的WannaCry勒索软件,它只是向用户显示一个看起来很吓人的弹出的勒索通知。在实际的攻击场景下,这个恶意代码很可能是敏感信息窃取、隐蔽后门、内网渗透等等不同用途的木马,加密文件的勒索软件,甚至是破坏性的文件擦除器。
通过Team82全面的研究,能够找到7个以前未报告的漏洞,这些漏洞使Team82能够将受影响的PLC武器化,并在每次上传过程发生时攻击工程师站。所有的发现都按照Team82的协调披露政策报告给受影响的供应商。
二、攻击场景想定
当观察Team82的邪恶PLC攻击向量时,研究人员得出的结论是,它可以用于进攻和防御两种方式。考虑到这一点,Team82设计了三种不同的攻击场景,可以使用这种新的攻击向量。
1、将PLC武器化以实现初始访问
攻击者可以使用武器化的PLC来在内部网络上获得初步立足点,甚至是横向移动。目前,利用Shodan和Censys在内的大多数公共互联网扫描服务,可以确定有数十万台ICS设备暴露在互联网上。这些面向互联网的设备通常缺乏安全性,允许任何人访问它们,修改参数,甚至通过下载程序改变它们的行为和逻辑。Team82的研究表明,攻击者可以利用面向互联网的PLC作为支点,渗透整个OT网络。攻击者不是简单地连接到暴露的PLC并修改逻辑,而是可以武器化这些PLC并故意造成错误,从而引诱工程师使用它们。作为一种诊断方法,工程师将执行一个上载程序,这将危及他们工作站。攻击者进一步控制工作站,在OT网络上站稳了脚跟。
2、攻击系统集成商
攻击者可以针对系统集成商和承包商,作为进入世界各地许多不同组织和站点的手段。攻陷设备集成商:因为OT网络管理中,第三方工程师和承包商管理OT网络,它需要与许多不同的OT网络设备和PLC交互。这给这个新的攻击向量提供了另外另一个应用场景。即攻击者可以攻陷并利用这些系统集成商作为支点,以大幅扩大他们的控制和影响范围。
实际步骤将会是:攻击者在一个远程的、不太安全的设施中定位了PLC,已知该设施由系统集成商或承包商管理。然后攻击者将PLC武器化,故意使PLC出现故障。这样,统集成商或承包商的工程师就会被引诱到可编程控制器前进行诊断。通过诊断过程,集成商将做一个上传程序,从而使他们的机器被控制。在进入集成商的机器后,通过设计可以访问许多其他PLC,攻击者可以反过来攻击甚至武器化其他组织内的更多可访问的PLC,进一步扩大他们的控制范围。
3、将PLC武器化为蜜罐
防御者可以使用蜜罐PLC来吸引和攻击可能的攻击者,从而威慑和挫败潜在的攻击者。从防御的角度来看,这种新的攻击向量可以用来为可能的攻击者设置陷阱,即蜜罐。通过利用攻击者也使用与工程师相同的商业工具这一事实,防御者可以故意设置公开可访问的可武器化的PLC,并允许攻击者与它们交互。这些PLC将充当一个蜜罐,吸引攻击者与它们交互。但是,如果攻击者落入陷阱,并从诱饵PLC尝试执行上载过程,我们的武器化代码将在攻击者的机器上执行。这种方法可以用于早期阶段的攻击检测,也可能阻止攻击者以面向互联网的PLC为目标,因为他们需要保护自己不会成为有计划攻击的目标。
三、攻击步骤
对于每个目标/平台,研究人员试图通过对固件和工程师站软件进行逆向工程来剖析整个下载/上传机制。研究人员的目标是找出PLC和工程师站之间的差异。如果发现了这种不一致,就可以通过恶意下载程序将PLC武器化,存储一段专门制作的数据,这段数据不会影响PLC本身,但当工程平台解析它时,它会触发并利用一个漏洞。
1、研究验证的步骤
Team82的研究过程和方法有如下十个关键的步骤。
1) 环境设置:使用目标PLC、兼容的工程师站和I/O现场设备建立测试平台环境。
2) 建立“Hello World”:阅读PLC手册,观看教学视频,建立一个无恶意/良性的程序来控制简单的过程。
3) 分析项目文件:分析项目文件中存储的内容(元数据、配置、文本代码)以及数据是如何序列化的。事实上,PLC存储了工程软件使用的其他类型的数据,而不是PLC本身使用的数据,这让修改存储在PLC上的未使用数据以操纵工程软件成为可能。
4) 逆向工程:除了工程师站软件之外,探索PLC硬件和固件。这是围绕PLC的软件、硬件和固件开展漏洞挖掘的前奏。
5) 上传/下载过程:了解上传/下载过程的机制,以及通过专有协议传输哪些数据。往PLC上传输数据和将数据存储于PLC上,称为下载过程。获取当前PLC逻辑的工作副本,工程师将从PLC中读取存储的数据,这称为上传过程。
6) 协议分析:分析私有协议及其功能,并构建一个功能齐全的客户端。
7) 找出差异:了解在PLC中传输和存储的信息之间的差异,这些信息没有被解析或使用。
8) 寻找漏洞:研究工程师站传输到PLC的所有信息片段的所有解析代码流,这些信息在PLC上没有被使用/修改。主要是针对运行在工程师站上的PLC连接软件进行漏洞挖掘。在Team82的研究中,他们发现了罗克韦尔CCW中的多个漏洞,其中一个是不安全的.net反序列化漏洞。
9) 武器化:使用客户端实现一个恶意下载过程,将专门制作的数据存储在PLC上。这里的专门制作的数据,应该是相应的漏洞利用程序、勒索软件、木马等的组合进行的编码。
10) 漏洞利用:工程师连接PLC,执行上传程序。工程师站解析研究人员专门制作的数据。解析流触发漏洞并执行预先编制的代码。
2、关键步骤
仔细分析Team82团队的研究验证步骤,不难发现,其中前半部分的主要是类似侦察准备的阶段,真正可称为攻击动作的应当在后半部分。也就是说,抛开研究的成分,从攻击的角度看,关键的攻击步骤可梳理如下:
1)找到可以公开访问PLC,并且能够现连接软件建立连接,即对PLC可管理。
2)PLC连接软件的漏洞挖掘。也就是对工程师站软件的逆向分析,找出其存在的各种可利用漏洞。
3)恶意代码的编码。使其以PLC工程文件形式储存于PLC。
4)PLC的武器化,即利用下载过程将预制的工程文件下载至PLC。
5)制造PLC异常或故障,引诱工程师来连接排障。
6)漏洞利用。工程师上传预制工程文件到工程师站,解析时触发漏洞。
从网络攻击的角度看,参照工业控制系统的ATT@CK威胁框架,在初始突破(Initial Access)、命令执行(Execution)、持久潜伏(Persistence)、权限提升(Privilege Escalation)、防御规避(Evasion)、内部侦察(Discovery)、横向移动(Lateral Movement)、信息收集(collection)、命令和控制(C&C)、抑制响应功能(Inhibit Response Function)、损害过程控制(Impair Process Control)、后果影响(Impact)这十二个步骤中,Team82的研究成果实际上已完成了关键的初始突破、命令执行、持久潜伏等任务,在OT网络构筑了关键的支点,后续的系列侦察活动和影响行动,几乎就没有了难度。
四、小结
Team82认为邪恶PLC攻击是一种新的攻击技术。这项技术使PLC武器化,使数据不再是普通静态/离线项目文件的一部分,并使代码能够在工程连接/上传过程中执行。通过这种攻击方式,攻击目标并不是PLC,即有别于臭名昭著的Stuxnet恶意软件,它偷偷改变PLC的逻辑,造成物理破坏。相反,Team82希望利用PLC作为一个支点/跳板,攻击编程和诊断它的工程师站,以此获得对更多PLC的控制,并获得对OT网络的更深入访问。
值得注意的是,Team82发现的所有漏洞都是在工程师站软件端,而不是在PLC固件中。在大多数情况下,漏洞的存在是因为软件完全信任来自PLC的数据,而没有进行广泛的安全检查。
从防御者的视角看,邪恶PLC攻击技术中,PLC的武器化是第一步。毫无疑问,这些设备不应该从外部访问或暴露在网络上,即使内部访问也应限于授权的工程师和操作员。如何阻断这一源头非常关键,因此应严格限制对PLC的物理和网络访问。其次才是OT网络的隔离分段、基本网络卫生的落实、用户客户端的鉴别认证、PKI体系的引入、网络流量监测、软件和固件的持续更新等等防护措施。