一、摘要
获取PLC易失性存储空间的内容对于调查针对PLC的网络攻击是至关重要的。但是,现有的内存获取技术,如基于硬件调试接口或网络传输协议的方法,是难以用于实际取证场景的。因为这些方法往往需要逆向PLC、重启PLC且只能获得部分内存。本文提出了一种新的内存获取框架——PEM,利用该框架可以远程获得PLC的易失性内存的内容而不打断PLC现有的控制流程。其主要思想是向PLC的控制逻辑程序之中注入一个无害的内存复制器,然后PLC运行复制器,将内存之中的内容复制到协议映射的地址空间中,取证人员可以从远程通过协议读取该地址空间的内容,从而获取内存的内容。此外,本文探讨了一种新的攻击方式,该攻击以内存中的固件为目标,可以篡改PLC的内置系统函数。由于PEM可以获取PLC的全部内存,通过内存取证可以发现该攻击。最后,作者通过天然气管道实验台证实了该攻击的有效性以及PEM的取证效果。
二、引言
内存取证可以提供系统的运行时状态。恶意软件也正朝着不在非易失性存储留下痕迹的方向发展,这也突出了易失性存储获取和分析的重要性。现有的PLC易失性存储获取方法大多基于ICS协议去通过网络读取内存。这些方法的缺点在于读取的内存的有限,因为不是所有的内存地址都映射到ICS协议的地址空间。另一类方法是使用调试端口(如JTAG)获取内存,但是这种方法需要能够物理访问到PLC,而且会打断PLC的正常运行。
本文提出的PEM内存获取框架,是一种非打断式的、远程的、完整的内存获取框架。
三、PEM
(一)主要思想
主要思想:在PLC的控制逻辑程序后面注入一个复制器,复制器在每个扫描周期运行,将通过ICS协议无法访问的内存的内容复制到和协议的地址空间具有映射关系的内存之中,这样,通过ICS可以获得整个内存的内容且不会打断PLC原有的控制逻辑。
(二)设计
下图展示了PEM框架的整体设计。总的来看,分为两个阶段,一是准备阶段,二是获取阶段。
准备阶段:人为地确定内存映射关系、协议地址空间映射关系以及编写复制器。
获取阶段主要包括四步:第一步,Initial Read,这一步直接读取地址空间,从而获取部分内存;第二步,Free Space Determination,这一步确定free space,该地址空间与内存具有映射关系,但是该部分内存没有被PLC使用;第三步,注入复制器;第四步,读取内存。
四、Control-Logic Attack
原理:仅修改内存中地内置函数地址表的内容,将地址表的条目修改为payload的地址,从而劫持控制流程,干扰正常的控制逻辑。
危害:由于payload所在的内存无法通过协议访问,因此,基于协议的内存取证技术无法发现该攻击;由于修改的是内存中的地址表,因此,重启之后,地址表恢复正常,因此,基于硬件调试接口的内存取证技术无法发现该攻击。
五、案例研究
本节,作者在天然气管道实验台上进行了攻击实验以及取证。通过攻击,作者成功干扰了PLC的控制逻辑。通过PEM取证,作者得到了内存中被篡改的地址表,证明了PEM的有效性。