论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf

所需积分/C币:16 2019-08-16 12:29:06 1.08MB .PDF
收藏 收藏
举报

基于动态污点分析的工控软件模糊测试技术研究,王凯,郭燕慧,近年来工业控制系统安全形势日益严峻,工控软件安全问题尤为突出。解决工控软件安全问题的根本在于发现安全漏洞并修复。本文以工
山国武技记文在线 效率要高于前者。但要求目标文件必须是格式已知的,所以对于工控软件来说实现困难。 比较分析两种模糊测试方法,分析各自的优缺点归纳如表。 表模糊测试比较 检测方法 优点 缺点 基于变异模糊测试 简单、快速、成本低 效率低 基于生成模糊测试 在了解文件格式情况下测试效率较高 需要了解文件格式 综合上述分析,两种模糊测试技术均存在缺陷:基于变异模糊测试变异位置选择随机, 寻致效率低下;基于生成模糊测试需要了解文件结构,对于工控软件来说难以实现。考虑到 上述两点缺陷,文献中 等提岀了采用动态污点分析技术辅助完成软件测试 的方法,该方法主要使用动态污点分析辅助模糊测试找到样木文件中的危险字节信息,但是 采用的污点信息标记策略过」简单,且并未真止实岘,无有效数据支持。木文借鉴文献 中思想,引入动态污点分析技术,用于辅助模糊测试完成测试用例生成过程中的关键变异字 节的选取,进而实现工控软件的安全检测。 动态污点分析研究 动态污点分析是指在程序执行过程中,追踪特定数据片段的传播过程,收集目标程序 对这些数据的详细使用信息、。传统动态污点分析分为确定污点源、污点传播和点检查 个步骤。污点源指的是污点的溟数据;污点传播则是指在程序执行过程中,标记被污点 源污染的数据,记录污点的传播过程;点检查是指检测安全策略下设定的特定函数的污 点情况。 传统动态污点分析的污点数据标记采取影子内存的方式,在动态污点分析前一次性分配 足够大的内存地址空间用于存放污点数据,这种策略在实际应用中会对内存空间造成相当大 的浪费,同时点检查与结果集分析并不完全适合工控软件。而文献中提出的方法中, 点信息标记策略过于简单,没有涉及污点存储结构相关设计,且并未实现对工控软件的测 试,缺乏有效数据支持。 因此,在上述研究基础上,本文提出了基于动态污点分析的工控软件模糊测试技术,并 结合工控软件特性,对动态污点分析过程中污点源的确定、污点标记、污点传播和污点结果 集分析等做出了相应改进。 基于动态污点分析的工控软件模糊测试方法 本文方法的人致思想是:以工控软件配置文件作为污点源以及模糊测试的样本文件,首 先通过动态污点分析技术跟踪污点源在程序执行过程中的传播情况,通过动态方式管理污点 信息,并将涉及到污点的函数及其污点参数在内的污点信息存入污点结果集文件,接卜来根 据污点标记结果集分析岀样木文件中的关键变异字节,这样可以明确了解需变异的数据位 置,最后基于样木文件对其关键字节进行变异测试。 工控软件模糊测试方法模型 综合上述分析,本文所设计的基于动态污点分析的工控软件模糊测试方法模型主要包括 三大模块:动态污氐分析模块、污点结果集分析模块和模糊测试模块。架构如下图所示: 山团武技论文在线 基于动态污点分析的工控软件模糊测试方法模犁 污点结果集分 1模糊测试模块 工控软件 分析模块 析模块 配置文件 污点源 用户级函数 1||变异簧略选 确定 或 字节分析 取 变异宁节集合 测试用 /经软件 1工控软件配文 日标工控软什 1内核级函数 字节分析 图基于动态污点分析的工控软件模糊测试方法模型图 木方法模型相关模块描述如下: 动态污点分析模块。本模块以工控软件配置文件作为污点源,主要完成工作为跟踪 污点源的传播过程并记录污点传播过程中污染的用户级和内核级污点函数及其参数,在目标 程序执行完成后,获得包含函数地址及其参数的污点结果集。 污点结果集分析模块。本模块以动态污点分析的结果集作为分析重点,由于结果集 中区别用户级和内核级函数及其参数,因此本模块采取一定的策略分析并输出关键变异宁节 集合,指出了变异字节在污点源文件中的偏移位置。 模糊测试模块。本模垬以配置文件作为样本文件,以污点结果集分析模块输岀的变 异字节集合作为关键变异点,结合宇节数据类型釆取相应变异策略完成畸形数据的生成,最 后使用生成的畸形数据完成工控软件的模糊测试。 方法模块功能及算法设计 动态污点分析模块 本模块主要基于动态二进制插装平台设计,平台能够实现基于指令级的分析, 因此本模块主要针对工控软件完成指令级的分析工作。根据实际需求,本模块对污点标记和 传播规则进行了相应改进,模块架构如下图所示: 动态污点分析模块 污点源配污点传播 置文件规则库 污点标记图 工控软件 配置文件 内存污点标 指令分析器△ 记图 (平台) 工控软件 寄存器污点 标记图 污点结果集 图动态污点分析模块架构图 山国武技记文在线 本模块包括三个重要组成部分:指令分析器、污点标记图以及污点规则库, 指令分析器 指令分析器是动态污点分析模块最基础的鄙分,主要依靠平台完成指令分析工作 工控软件作为进制文件,平台可以对其实现指令级跟踪,在指令跟踪过程中,指令分 析器负责对每条汇编指令进行分析,识别指令操作码及其操作数,通过将操作码与污点传潘 规则库进行匹配实现对不同的操作码采取不同的污点传播策略。这里需要注意的是,一般汇 编级指令均涉及到两个操作数:源操作数和目的操作数,操作数又可分为三种类型:寄存器、 内存和立即数,在从污点传播规则库中获取分析策略后,指令分析器将识别的操作数与对应 旳污点标记图进行匹配査找,以此判断操作数是否被污染,最终结合操作码的传播策略来完 成污点跟踪与分析,并与污点标记图的交互实现污点标记或清除。对于特殊字节信息,指令 分析器通过操作将其存入污点结果集,用于后续分析。 污点标记图 污点标记图为夲模块动态维护和管理的污点信息存储结构,根据指令操作数的不同,细 分为内存污点标记图 和寄存器污点标记图 。两种标记图结构均采用内存 映射技术实现,其中 中内存地址作为键,而其对应的污点集合作为值; 则以寄存器名称作为键,对应的污点集合作为值。两种污点标记图结构均提供读取、添加和 删除等操作,用以实现在污点传播过稈中动态管理污点信息。本模块采取内存映射技术具有 以下优点 动态管理,相比传统的污点标记减少内存资源浪费 以內存映射方式实现査找等操作,运算速度快,减少时间浪费。 污点规则斥 污点规则斥为预定义文件,包含污点溟配置文件和污点传播规则库。 污点源配置文件中设置了污点源信息,可使用户实现自定义污点源。它以方式存 储,部分格式信息如下 其中最关键的字段 字段用于存放污染源文件的名称。在污点源标 记时主要依靠与 字段对应文件名称匹配来实现。 污点传播规则库内枚举了常见汇编指令并规定了不同指令的操作规则,如 等,并根据其语义将常见指令分为四种类型:数据移动类、算数运算类、清除 类和标志寄存器设置类。特別地,根据实际需求,系统动态污点分析模块主要作用是获取污 点传播过程中被污染函数及其污染字节信息,并且进制程序中函数分为用户级和内核级两 种,而平台对两种函数的跟踪深度有所不同,具体来说它能够识别用户级函数调用指 令 并可跳转进函数体内部进行分析,而无法实现跟踪内核级函数,但是能够辅助提 取函数参数信息,因此规则库中还实现了对用户级函数调用指令 和内核级函数调用 指令 的不同传规则的定义 这里笔者对四种类型指令以及函数调用指令 和 的分析簽略进行简要 山国武技记文在线 描述。描述之前首先定义两种污点判断函数,方便后续指令规则分析。通过上述描述知道本 模块动态管理内存污点标记图和寄存器污点标记图两种数据结枃,当指令操作数为内存或寄 存器时系统需要通过在对应的标记图内匹配査找米判断其是否被污染,因此这里分别定义 和 函数作为内存及寄存器污点标记图内污点判断函数,实现污点 标记图的访问和判断,其返回值为布尔型,表示是否被污染。 数据移动类指令(,源操作数不为立即数) 为例,其中为源操作数,为目的操作数, 语义为将源操作数中 的值转移到口的操作数中。其传播策眳为如果源操作数为污点数据,则日的操作数被 污染,这里的污点数据判断即根据操作数类型依靠上述函数完成,下同。 算数运算类指令(、 其中两个操作数必须不同) 以 为例,其语义为操作数中的值减去操作数中的值并将结果存入操作数 中。其传播策略为操作数和内仼一操作数为污点数据则被污染,特别地,若与均为 污点数据,则最终结果同时被内原污点数据和内污点数据影响,这在标记时需要注意 清除类指令(、 这类指令较为特殊,其中 与指令的特点是源操作数与目的操作数相同,而 指令的特点是源操作数为立即数。针对这些指令,需要判断目的操作数是否为污点数 据,若为污点数据则需要将其从对应的标记图内删除。 标志寄存器设置指令() 这类指令也比较特殊,因为其运算结果直接对寄存器进行操作。以 为例, 与算数运算类策略类似,若操作效和內仼一操作数为污点数据则被污染,特别地,若 与均为污点数据,则最终结果同吋被内原污点数据和内污点数据影响,最后将污点信 息存入寄存器标记图。 指令 令表示用户级函数的调用。被污染函数及其涉及的污点信息是本模块所收集的 关键数据,因此在分析函数调用时若涉及到污点信息,模块则将函数地址信息及其涉及的污 点数据通过方式存入污点结果集。 指令的分析策略有两种:根据函数调用特性可 以知道在函数调用前会先将函数参数存入寄存器或压栈,以便后续使用。根据这个特点,第 种策略为在识别 指令后,对其上文中涉及的寄存器或压栈操作进行分析进而识别 其参数。这种策略的缺点是当对 之前指令分析时,需要在识别指令前存储并 维护其上文指令,由于不知道调用函数的参数个数,也就无法得知需要存储多少指令,因此 实现较歴难;第二种策略与第·种策略相反,即在识别 指令后,继续跟踪并跟进函 数体内部,当函数体内部起始出现弹栈或读取奇存器操作时则认为其是对函数的参数进行操 作,进而可以获取参数数据并分析函数参数是否为污点数据。在本模块的实现中采用的是第 二种分析策略。 指令 指令的分析较特殊,因为平台无法实现内核级函数的跟踪,但是提供 了接口函数来帮助获取这类函数的参数信息,因此无法分析内核级函数内部污点数据传播, 但是可以获取其参数内污点信息。钊对 指令本模块米取的策略是首先预定义内 核级函数对应的参数格式信息,这是接口调用需要,接下来当识别出 指令时 则通过相应接口并结合内核函数对应的参数袼式信息完成其参数的提取,最后根据参数对应 的内存地址及长度完成污点数据的识别。 山国武技记文在线 上面介绍了动态污点分析模块的架构设计,卜面主要介绍本模块所完成的工作。本模块 主要亢成两部分工作:污点源确定和污点传播跟踪。 污点源确定 污点源确定依靠污点源配置文件亢成。在污点分析起始阶段,指令分析器检测 等文件操作类函数,通过对其参数信息提取与配置文件字段进行比 对来判断稈序是否打开了指定的污染源文件,若打开的是指定文件,则获取函数中关于文件 数据的地址信息并初始化内存污点标记图,将地址及对应数据存入标记图内;若打开的是非 指定文件,则继续检测。值得注意的是,为了节省内存资源,同时提高污点分析的准确度, 本系统将污氐标记粒度设置为字节级别,即假改污染源数据为,则可理解为多个字节组 成的污点数据集合,可以表示为[ ]·集合中每一项代表一个字节的距离 数据首位偏移量。 污点传播跟踪 确定污点源后,接卜来依靠指令分析器完成工控软件的污点传播跟踪及标记工作ε在对 程序指令进行分析时,对于首次涉及寄存器的污点数据存储,模块需要初始化笱存器污点标 记图并存储相关信息。动态污点分析模块的目的是为了获取被污染的用户级和内核级函数及 其污点参数信息,因此当指令分析器识别 指令并获取其参数后,需要判断其参数是 否被污染,并将函数内存地址及其对应的参数污点信息存入污点标记图和污点结果集;为了 进一步提高准确性,本系统増加了内核级常见隐患函数的检测如 等,通过 对 指令识别并获取其参数后,判断其参数是否被污染,也需要将函数内存地址 及其对应的参数污点信息存入污点标记图和污点结果集。 污点结果集分析模块 污点结果集分析模块是本文改进的又一重点,具体分析流程如下图所示: 点结果集 用户级函数污 内核级函数污 点字节统计 点字节统计 现频率最高 出现频率最高 宇节集合A 字节集合B 楚否有共同数 据 并集输出 优先级1:交集 优先级2:并集 图污点结果集分析算法流稈图 首先,经过动态污点分析模块处理后,输出的数据为一系列的用户级和内核级函数的内 山国武技记文在线 存地址及其污点字节信恳;其次,本文的目标是通过污点结果集分析,获取最有可能存在隐 患的某些字节集合。明确这两点后,本模块采取的策略是分别对用户级函数污点字节信息和 内核级污点字节信息进行统计分析,将用户级污点字节信息集合中出现频率最高的某几个字 节组成为集合,将内核级污点字节信息集合中岀现频率最高的某几个字节组成为集合, 本文认为在污点集合中出现的频率越高,代表在传播过程中被关键函数或常见隐患函数使用 地越多,这样就越有可能形成隐患。接下来,通过优先级方式将集合和集合中同时存 在的关键字节组成优先级最高的集 在后续模糊测试中着重对其进行变异测试,然后 再将集合内其他字节组成优先级较低的集合:若集合 内无相同数据,则对集合 和集合内所有数据进行变异测试。 模糊测试模块 在获取污点结果集分析模块输岀的变异字节集合后,通过模糊测试模块依椐其优先级对 工控软件完成模糊测试。本模块主要基于 完成, 是一个开源模糊测试框 架,依 的 配冒文件完成畸形数据生成规则的制定。本模块架构如下图 所示: 模糊测试模块 变异字节集合 变异字节数 测试用例控 据类型分析 构建 软 工控软件配置 件 文件 图模糊测试模块架构图 本模块的工作流程为: 第一步,将动态污点分析的污点源文件,即工控软件配文件作为样本文件模板 第二步,获取污点结果集分析模块输岀的变异字节集合,按优先级对集合中数据进行分 析。集合中数据表示的是字节相对」文件的徧移位置,通过此信息可定位样木文件中字节数 据,分析宇节数据类型 第三步,根据字节位置及其数据类型,结合样本文件模板,构造 配置文件, 文件主要描述针对样本文件何种位置采取何和变异策略; 第四步,使用构造好的 配置文件生成畸形数据并对工控软件进行模糊测试 记录异常信息、 工控软件模糊测试实例 基于上·章节所设计的方法模型,结合现有实验环境,本文选取了某国产品牌软 件作为测试对象,成功发现拒绝服务漏泂一例。接下来,笔者对模糊测试过程进行详细阐述 工控软件配置 本文实验环境配置如下表所小 山团武技论文在线 表待测试工控软件配置表 名称 配置项目 工控系统类型 系统 系统平台 软件名称 某国产工控软件 版木型号 动态污点分析结果 本文以此软件的配置文件为样本文件,通过对动态污点分析,获得污点数据,污点数据 样式如下图所示: 2[1411:c69c63c6c6:4)][691:7111[179s:35951[7615「1:c711][171525:359][76222 3【14141:c69c63fc6aec54)】[6s1:c11!【179s:3se95!【76151:c7111【171525:3:e9516222 414141:c691c69c6ec5)1691:c111「179fs:35e95l「7615f1:7111「171525:3Ee951「76222 5[b1a5:(35d=c35dd1)]11c1b5:35e34][d1c5:3Ee3][1e1d5:35号7][2015:(35cd35c0]1221f5:3 6[19195:37][566:!7997fd][61b4tc12a6:(46ad46b146b4)][6104697f6:(4660066074663 6:9「gyra} 9s6656:99101135141326:(9604614611361459806:(46466615169508 1。[7百56:〔995日9E2) l3工k44c3a6:(年区46日2144]13日日490(44674乐a]13E14912 11te7666:(995=9952)】1351L4c136;(4e6ad唾66u1÷66l4!】1351日4695136:(E6悉346637唾66日!11351r469615 12[e7666:【995=9952 13「7666:〔9959952}1135k44c1±56;(9乇6ad4146411351日469:1b6:(4663467466日a!11351f4691 14【7666:(9966995a)1351h44c14:(唾∈6d46621466k41】I361日46981f6:(6346637466日a 351王6s22 1[7G6:〔996)]111414看:(46a466-1±64]l314690236:(4634667166]1351王46502 L和和:[日hh )」13144e!(4A4门1斗hh4」114和M和!(4了4和∵4和hHA7」1314hiHA 17【7666:(366395)1351k41∞1556:(1∈6ad1661166!}】1351a1652b6:(1∈6831667166日a}】1351f162c 18[4↑676:〔AB6门ABP)】13元144的5A析:〔4析A4门14h4]1而1月4987「6:(48474析A]351↑4983 19[b725:(35d-c35dd-)]Ic735:35e34][d745:3e3b][1e755:35ea7][2075:(5ecd35ac0 121775:35e 20[19715:35b7][75891::c6I4c6I6]I6cb4697s1:1c999 d6d459831:(19ce1c9ds)]ld?58±7Eb6 2(75892:(25425E6)11224595:(98222 [a75475如1:1429] 2「75c91:〔cf±c6f6)11c±6903c1.(1sce1悉9-)1「A75±7cbd1:1bf391 251/g91:C6cb上白)」 Abac±693c:(1a9ce1a9)」1a/s巳/hbh1:1上39 24[7381:c6a][75ε:=64c6f61]Ia6a469B3:(1a9ce1aa3)][aT5a7Ec1:1hfE] /,5Rh1:c64c乐f611=46981:1c1A91175475h61:1h551 图动态污点分析结果图 上述结果图显示了动态污点分析部分结果,结果集中每一行代表配置文件的一个字节, 行号对应为此字节在配置文件中的偏移位置,即行号为的数据代表配置文件中第个字 节的污点传播路径。根据结果集数据集合中第个数字,可以对比分析其对应的凶数类型, 即用户级或内核级 通过对污点结果集进行分析,本文获取数据如下表所示: 表动态污点分析结果 程序名称 污点文件 最高频率次数设定关键字节集合偏移量) 类型文件 工程文件 [12,3,4,5,6,7,8,,2309,23010. 上述最高频率次数主要根据文件大小进行设定,由于工程文件较大,因此改定值较 大。关键字节集合中, 比较特殊,用户级与内核级污点信息一样,均为前个 字节;其余个文件的字节集合中,前个文件中的前字节为交集字节,这里为了方便衣 示将数据写在了一起;文件中前个字节为父集字节。 山团武技论文在丝 模糊测试结果分析 根捱上述获得的关键数据信息,模糊测试模块对上述数据进行变异测试,同时笔者直接 使用 采用基于变异的策略对其进行模块测试,基于上述个样本对比分析两种 方法的测试结果如下表和表所示 表 样本模糊测试结果对比 基于变异模糊测试 本文方法 测试用例 测试时间 小时分 分 发现异常 表文件样本模糊测试结果对比 基于变异模糊测试 本文方法 测试用例 测试时间 小时分 分 发现异常 测试过程中,以 和类型文件三个文件为样本文件的模糊 测试,采用基于变异模糊测试和本文方法均为发现异常,笔者认为原因是测试软件处于离线 状态,上述三种文件作为在线运行使用。而以 和文件作为样木文件的测试 中,通过上長观察可以发现本文提岀的方法和现有方法相比,对于工控软件模糊测试数据变 异位置的选取更有针对性,生成的测试用例数更少,发现的异常数量更多。 对上述两个测试结果中多个异常进行分析,导致异常的原因可能是函数越界或者是对堆 栈产生影响,本文以后者作为安全隐患评判标准,得出结果如下表所示 表异常结果分析对比 基于变异模糊测试 木文方法 样本测试结果安全隐患数量 文件样本测试结果安全隐患数量 通过上述分析可以发现,采用本文方法进行检测的结果的有效性明显高于基于变异的模 糊测试方法,特别地,在以 作为样本的模糊测试中,两种方法均发现同一例 拒绝服务漏洞,如下图所示: 回 A私图组英 试图执行系统不点持的操。 图形界面组感 iLv遇到可题需要关闭。我们此引起的下更友示抱LM 2000 昊佫正处于进程当中,信息有可能丢失 统诊断 一错证的其他佰息 单击此处a 围区三 图漏洞触发图

...展开详情
试读 11P 论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img
    • 至尊王者

      成功上传501个资源即可获取

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf 16积分/C币 立即下载
    1/11
    论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf第1页
    论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf第2页
    论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf第3页
    论文研究-基于动态污点分析的工控软件模糊测试技术研究 .pdf第4页

    试读已结束,剩余7页未读...

    16积分/C币 立即下载 >