文章目录
一、摘要
在工业控制系统中,PLC已经成为了主要的网络攻击对象。对PLC进行内存分析,有助于了解攻击手段。但是,仅仅为了内存取证去逆向PLC的固件是不明智的,因为逆向是一个耗时耗力的过程,且针对某一款PLC的逆向过程往往只能适用于该PLC。为此,本文从PLC的功能层入手,以Allen-Bradley ControlLogix 1756-L61为例,分析了该PLC内存中有用的取证条目(forensic artifacts)。作者使用Differential Analysis(差异分析法),通过观察PLC运行不同的测试用例时内存的变化,确定了各forensic artifact的内存位置、结构和解析规则。
二、介绍
PLC内存取证的主要难点在于PLC的硬件、固件以及工程软件是专有的。目前,现有的PLC取证技术集中在PLC固件的解析与逆向,没有哪种取证方法能够全面覆盖PLC的内存。在本文中,作者使用差异分析法去解析、分析Allen-Bradley ControlLogix 1756-L61的内存,成功解析出了固件、控制逻辑程序、I/O数据、配置数据以及日志数据。通过使用一系列精心设计的测试用例和分析相应的内存,作者生成了一个profile,该profile包含一系列规则,可以用于解析forensic artifact。
三、实验部署
实验装置如下图所示,主要由Allen-Bradley ControlLogix 1756-L61 PLC、工程软件、基于JTAG的内存获取装置以及内存分析软件组成。
四、PLC内存分析方法
下图是指作者提出的PLC内存分析方法。
(一)研究工程软件
研究工程软件的目的:(1)从工程软件的project组织以及配置中可以获得有用的forensic artifact。以Allen-Bradley为例,该PLC的project由tasks、programs以及routines组成,说明内存中也有相应的组织。(2)由于需要构建、配置不同的project作为测试用例研究PLC的内存,因此研究工程软件必不可少。
(二)获取内存
生成不同的测试用例,并使用JTAG等内存获取工具,获取PLC的内存。
(三)确定forensic artifact的数据结构
确定forensic artifact的数据结构有两种途径:一是通过查阅厂商的用户手册来获取相关的forensic artifact的数据结构。二是通过不同的测试用例结合差异分析法分析内存,从而确定数据的结构。
(四)确定forensic artifact的实例
根据确定的forensic artifact的数据结构,从获得的内存之中解析出forensic artifact的实例。
(五)形成规则
根据之前对不同测试用例下内存的分析步骤和分析结果,为各forensic artifact生成解析规则,便于重复使用。
五、Digital artifacts in ControlLogix 1756-L61
作者在这一节展示了获得的数据结构以及可以从内存中解析得到的forensic artifacts,主要有固件的基地址、project的备份、控制逻辑程序、I/O数据、配置参数以及日志。