Field classification-based novel fuzzing case generation for ICS protocols
中文题目:基于字段分类的ICS协议模糊用例生成
来源期刊:The Journal of Supercomputing(CCF C类)
论文作者:Sung Jin Kim、aeshik Shon
发表年份:2017
1 摘要
目前,向工业控制系统网络应急响应小组汇报的ICS(工业控制系统)网络攻击事件数量不断上升。研究学者提出多种的安全测试技术,以完善ICS的安全。但是,针对ICS协议的脆弱性分析的研究仍然不足, 文章提出了基于字段分类的测试用例生成技术,用于ICS协议的模糊测试。
2 相关的研究技术
2.1 模糊测试
模糊测试是一种利用无效输入发现被测软件弱点的软件测试技术。一般的模糊测试过程如图1。
图1 模糊测试的过程
通过上述过程,模糊测试对软件进行了脆弱性分析。其中,“生成测试用例”这一步是为了创建无效输入,测试用例的好坏将会影响测试结果,很多相关研究都是围绕如何生成有效的测试用例。
模糊测试用例构造有两种方法:基于变异构造和基于生成构造,基于变异构造是通过对真实数据包中的每个字段进行变异来生成模糊测试用例,基于变异的模糊测试技术通过捕获和分析输入信息生成模糊测试。使用真实的数据包很容易测试各种协议。然而,存在一个缺点:需要捕获的大量数据包。基于生成构造是自动生成输入。基于生成的模糊技术在不需要捕获包的情况下自动生成测试输入。此外,该技术在生成测试用例时具有很大的自由度优势。然而,该技术需要对目标输入有更深层次的分析。
2.2 生成模糊测试用例的原理
模糊测试是“使用无效输入的漏洞分析技术”,测试的关键是“无效输入”。输入有两种方式:违反协议格式和使用目标软件状态。
第一个概念是违反协议格式。每个协议字段在协议规范中都有一个固定值,基于此功能,可以通过将每个字段的固定值更改为非固定值,生成异常值。第二个概念是使用目标软件状态。在这种方法中,测试人员构造一个有限状态机(FSM)来说明目标的状态,并通过考虑状态来创建无效的输入。
3 ICS协议分析
ICS协议主要用于获取测量值、状态值和控制其他设备。对ICS协议进行模糊测试时,需要考虑协议的三个方面:协议数据类型、协议栈、协议字段格式。
3.1 数据类型
ICS协议中数据分为三种类型。第一种类型是布尔值,用于表示设备的状态。第二种类型是数字,表示测量值。第三种是字符串,用于名称数据。ICS协议的网络数据类型分为三类如表1。
表1 ICS协议的网络数据类型
类型 | 描述 |
---|---|
TC1 | 用于报告和轮询; |
TC2 | 简单的数据类型,即状态、测量、设备名称; |
TC3 | 协议规范中定义,但是协议还未实现使用的正常值; |
3.2 协议栈
每个协议都有不同的底层,底层的漏洞可以由上层协议继承。因此,必须同时对协议栈中的所有协议进行测试。
3.3 协议字段格式
ICS协议字段格式在分类时,需要注意的三个事项,如表2。
表2 ICS协议字段格式分类事项
注意类型 | 描述 |
---|---|
PFC1 | 协议字段按三种类型分类:长度、内容、规则。必须考虑到每种情况的特点; |
PFC2 | 表示长度大小的字段之间存在包含关系; |
PTC3 | 具有关联性、嵌套结构的字段; |
4 ICS协议的模糊测试设计
作者设计模糊测试有如下六个步骤,如图2。
图2 ICS协议模糊测试步骤
4.1 分析协议规范
分析目标协议规范,确定其协议格式、语法等特征。
4.2 协议字段的分类
文章作者将协议字段分为三类,如表3。
表3 协议字段分类
类型 | 分类依据 | 字段 |
---|---|---|
Case 0 | 长度 | 表示长度的字段; |
Case 1 | 内容 | 该字段与前一个字段无关联性; |
Case 2 | 规则 | 该字段与前一个字段存在关联性; |
4.3 执行基本测试
根据不同的字段分类,需要考虑不同的因素,然后进行基本的模糊测试。
针对协议字段的Case 0的基本测试如表4。
表4 Case 0的基本测试
测试类型 | 测试描述 | 考虑因素 |
---|---|---|
边界测试 | 尝试字段的最大值和最小值 | PFC1 |
移位测试 | 交换目标字段 | PFC1、PFC2 |
随机测试 | 使用随机生成的输入 | PFC1、PTC2 |
针对协议字段的Case 1的基本测试如表5。
表5 Case 1的基本测试
测试类型 | 测试描述 | 考虑因素 |
---|---|---|
边界测试 | 尝试字段的最大值和最小值 | PFC1 |
插入测试 | 使用定义但未使用的值 | PFC1、TC2、TC3 |
随机测试 | 使用随机生成的输入 | PFC1,TC2 |
针对协议字段的Case 2的基本测试如表6。
表6 Case 2的基本测试
测试类型 | 测试描述 | 考虑因素 |
---|---|---|
边界测试 | 尝试字段的最大值和最小值 | PFC1 |
移位测试 | 使用随机生成的输入 | PFC1,TC2 |
4.4 分析基础测试结果
分析前面的测试结果,选择下一步使用的跨字段模糊测试的目标。对于Case 1,字段之间没有关系,Case 1只需执行基础的模糊测试。对于Case 2,字段之间存在关联性,不进行跨字段模糊测试。对Case 0,在基本测试中执行跨字段模糊测试。
4.5 跨字段模糊测试目标的选择
在这一步中,作者选择用于跨字段模糊测试的目标并生成测试用例。并对典型工业协议--MMS协议,进行模糊测试,检验协议脆弱性。
4.6 对MMS协议测试
对MMS协议进行模糊测试的结果,如表7。
表7 MMS协议模糊测试的结果
5 总结
文章作者提出了一种基于ICS协议字段分类的协议脆弱性模糊测试方法。接着,利用MMS协议验证了该方法的有效性。
文章作者计划使用机器学习技术自动生成一个模糊测试用例来识别协议字段。如果协议机器学习成功,使用该技术将很容易生成模糊测试用例。
关于 天 方 夜 “谈”
天方夜谈原意讲不切实际的东西,而这里想要 “脚踏实地”真正弄懂并感受一篇文章的思想。
方班人有自己的浪漫,
我们探讨知识,谈论理想,
采摘科研的繁星,
脚下是星辰大海。
天:代表我们的理想犹如天空般浩荡
方:代表方班
夜:代表代码人的冷静与静谧
谈:代表方班愿与您,就领域内的经典思想和前沿成果“秉烛夜谈”