论文部分内容阅读
Windows系统已在各领域获得广泛应用,其安全性也越发引起关注。内核驱动的安全性直接关系到整个系统的安全,Windows内核驱动的漏洞检测与分析长期以来是相关领域的研究热点与难点。由于内核模块的响应可以由用户态DeviceIoControl触发,对驱动模块DeviceIoControl类漏洞的挖掘具有重要现实意义。目前对内核态进行漏洞挖掘主要依靠模糊测试技术,由于无法得知程序内部状态,因此无法针对性生成测试集。同时也缺乏对内核代码覆盖率进行量化分析的工具。目前利用污点分析、符号执行等程序分析技术对用户态程序分析的方法和工具较为完善,但很难直接应用于内核态。而在补丁分析中,经常需要构造合适的样本以使程序执行到特定指令块,但由于内核环境的复杂性,构造合适的样本需要花费大量时间。本文针对以上问题进行了研究,完成的主要工作和形成的主要成果如下:(1)对Windows设备驱动程序的漏洞挖掘现状进行总结,对模糊测试应用于内核漏洞的现状进行了讨论,对流行的符号求解工具Z3和中间语言REIL在程序分析中的应用进行了深入分析和总结;(2)对于设备驱动的设备名称、IO控制码及对应处理例程获取等静态信息获取提出了启发式算法,并将其应用到内核模糊测试工具中指导测试集的生成;还对内核模糊测试工具的设计要点进行了讨论,并实现了对内核代码覆盖率进行评估的原型工具;(3)设计并实现了基于符号执行的内核二进制分析原型工具,该工具利用符号执行技术,将驱动的汇编指令转化为中间语言表示,在中间语言基础上收集执行过程中的约束条件,实现了符号执行。该工具可用于构造可达指定代码块的数据输入。通过实验测试,本文的静态信息获取启发式算法可以准确地收集目标设备驱动的接口信息,在构造可达指定代码块的数据输入上达到预计目标,提高了内核设备驱动漏洞挖掘的效率,有着很好的应用价值。