一种基于状态关系图的PLC漏洞挖掘方法与流程

文档序号:11153360阅读:1696来源:国知局
一种基于状态关系图的PLC漏洞挖掘方法与制造工艺

本发明涉及漏洞自动挖掘领域,尤其涉及一种基于状态关系图的PLC漏洞挖掘方法。



背景技术:

PLC漏洞挖掘是当前工业控制系统安全的一个非常重要的关键技术,PLC作为工业控制系统的重要组成部分之一,其安全性也是如今关注的焦点。在近几年对工控系统的评估研究中,发现PLC系统存在着不少安全隐患,如西门子PLC及监控软件APOGEE Insight存在“劫持漏洞”;施耐德电气公司所发布的莫迪康(Modicon)M340可编程逻辑控制器(PLC)存在高严重性缓冲区溢出漏洞;三菱FX3G PLC存在拒绝服务漏洞,允许攻击者利用该漏洞通过发送特殊数据包使PLC重启等。所以对PLC系统的漏洞挖掘是当下研究的重点。

PLC(可编程逻辑控制器)是一种采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。其工作原理是通过反复执行用户程序来实现控制功能,采用循环扫描的工作方式,系统周而复始的以一定的顺序完成一系列的具体工作,这些工作包括内部处理、通信处理、输入处理、程序执行、输出处理这五个阶段。PLC每进行一次扫描循环所用的时间为扫描周期。PLC分为运行(RUN)和停止(STOP)两种工作状态,当处于运行状态时,上述扫描周期不断循环;当处于停止状态时,只完成内部处理和通信服务工作。

当前对工控系统的漏洞挖掘主要基于模糊测试技术,模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。其主要是利用SPIKE、Peach、Sulley、Dfuz和Bunny等工具进行模糊测试。当前对PLC漏洞挖掘技术有基于软硬件编程数据的工业控制系统的漏洞挖掘方法,但是当前PLC挖掘的模糊测试效率还比较低,产生的畸形数据导致PLC异常的漏洞挖掘方法不适用于运行状态下PLC漏洞监测。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种基于状态关系图的PLC漏洞挖掘方法。该方法的基本原理是根据PLC的运行过程,首先在正常状态下生产输入状态图和输出状态图,然后在对数据输入、程序处理、数据输出过程注入攻击数据,通过对比状态图的差异,判断PLC是否存在安全漏洞。

本发明为克服现有技术的不足采取以下技术方案实现:

本发明公布了一种基于状态关系图的PLC漏洞挖掘方法,该方法主要利用采集某时刻输入映像区和输出锁存区的数据,生成状态,研究输入状态与输出状态之间的逻辑关系,以此得出逻辑状态关系图,由此图来判断PLC中是否存在坏数据注入攻击,以及是在PLC工作过程中的哪一部分区域存在何种坏数据注入攻击。

这种方法可以分为三个模块:状态关系图生成模块、坏数据注入攻击模块和PLC漏洞判断模块。

状态关系图生成模块:读取输入映像区的数据,就可以生成某时刻输入映像区的状态。与此同时,读取输出锁存区的数据,就可以生成某时刻输出锁存区的状态。然后,通过输入映像区的状态以及输出锁存区的状态之间的逻辑关系,产生出逻辑状态关系图。

坏数据注入攻击模块:在某个时钟周期内,在PLC正常运行过程中,对PLC的输入映像区和输出锁存区注入坏数据。PLC的所有输入端子的数据按顺序存入输入映像区。然后在程序处理区中,PLC根据读入的输入数据,依次执行指令中的内容,并写入映像区。当所有指令执行结束后,将输入映像区中的状态传输至输出锁存区中做最后的输出处理。在坏数据注入攻击后,会导致输入映像区、程序处理区和输出锁存区的数据产生差异,通过数据之间的逻辑关系,引发数据之间的关联故障。

PLC漏洞判断模块:通过对比正常时候产生的输入状态、输出状态的逻辑关系来判断PLC工作过程中的各区域是否存在坏数据注入攻击,其步骤如下:

步骤1:采集输入数据,采集所有输入端子的数据;

步骤2:根据所采集的输入数据,生成某时刻的输入状态图;

步骤3:采集输出数据,采集所有输出端子的数据;

步骤4:根据所采集的输出数据,生成某时刻的输出状态图;

步骤5:根据输入和输出的逻辑状态关系图判断此时刻的输入状态和输出状态是否符合逻辑关系,若符合则回到步骤1,因为PLC的工作流程是周而复始地进行,所以开始新一轮的数据采集,若不符合则继续进行PLC漏洞判断;

步骤6:输入映像区攻击判断,因为输入映像区的数据和状态是PLC直接由输入端子顺序存入,若输入端子的状态和输入映像区的状态不一致,则可以判定存在输入映像区攻击,若一致则进行步骤7,输出锁存区攻击判断;

步骤7:输出锁存区攻击判断,因为输出端子的数据和状态是由输出锁存区直接输出处理,若输出端子的状态和输出锁存区的状态不一致,则可以判定存在输出锁存区攻击,若一致则判定攻击存在于程序处理区。

本发明与现有技术相比的优点和积极效果是:

(1)本发明采用的是PLC运行正常环境下的状态图,通过数据注入攻击,触发PLC状态异常,这样的异常不一定导致PLC停机的严重事故,但是轻微的状态变化就可以发现PLC存在可疑漏洞,在方法上优于基于的畸形数据包的测试;

(2)本发明的测试方法可以在PLC正常运行状态下进行漏洞测试,从真实的工业控制系统中发现疑似漏洞,在实用性上优于离线的PLC漏洞测试方法。

附图说明

图1为系统结构图;PLC漏洞挖掘方法结构图;

图2为状态关系图生成模块;

图3为坏数据注入攻击模块;

图4为PLC漏洞判断流程图模块。

图1为系统结构图,本发明主要包括状态关系图生成模块、坏数据注入攻击模块、PLC漏洞判断模块。通过输入输出状态的逻辑关系判断是否存在坏数据注入攻击。

图2为状态关系图生成模块,读取输入映像区数据和输出锁存区数据,分别生成某时刻的状态,通过输入状态以及输出状态之间的逻辑关系,产生逻辑状态关系图。

图3为坏数据注入攻击模块,在某个时钟周期内,在PLC正常运行过程中,对PLC的输入映像区和输出锁存区注入坏数据。PLC的所有输入端子的数据按顺序存入输入映像区。然后在程序处理区中,PLC根据读入的输入数据,依次执行指令中的内容,并写入映像区。当所有指令执行结束后,将输入映像区中的状态传输至输出锁存区中做最后的输出处理。在坏数据注入攻击后,会导致输入映像区、程序处理区和输出锁存区的数据产生差异,通过数据之间的逻辑关系,引发数据之间的关联故障。

图4为PLC漏洞判断流程图,包括以下步骤,

步骤1:采集输入数据,采集所有输入端子的数据;

步骤2:根据所采集的输入数据,生成某时刻的输入状态图;

步骤3:采集输出数据,采集所有输出端子的数据;

步骤4:根据所采集的输出数据,生成某时刻的输出状态图;

步骤5:根据输入和输出的逻辑状态关系图判断此时刻的输入状态和输出状态是否符合逻辑关系,若符合则回到步骤1,因为PLC的工作流程是周而复始地进行,所以开始新一轮的数据采集,若不符合则继续进行PLC漏洞判断;

步骤6:输入映像区攻击判断,因为输入映像区的数据和状态是PLC直接由输入端子顺序存入,若输入端子的状态和输入映像区的状态不一致,则可以判定存在输入映像区攻击,若一致则进行步骤7,输出锁存区攻击判断;

步骤7:输出锁存区攻击判断,因为输出端子的数据和状态是由输出锁存区直接输出处理,若输出端子的状态和输出锁存区的状态不一致,则可以判定存在输出锁存区攻击,若一致则判定攻击存在于程序处理区。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1