物联网设备漏洞挖掘技术
目前物联网设备的使用越来越普遍,而对应的漏洞攻击现象也越来越频繁,究其原因主要有两点: ① 物联网设备开发过程中, 在设计上忽略了安全性的考虑; ② 由于设备硬件资源受限, 难以在设备上部署安全防护策略。 因此本篇文章想要探讨一下目前通用的漏洞挖掘技术以及物联网设备漏洞挖掘技术的整体情况,并记录当前主流的技术使用,同广大CSDN技术人员一起交流。
一、现有的通用漏洞挖掘技术手段
现有手段大多针对通用系统(Windows、Linux、Mac、Android)及其软件。主要分为基于源代码与基于二进制两类。
1、基于源代码的漏洞挖掘
是一种静态分析方法:针对特定漏洞建立检测规则;采用数据流分析、污点分析、符号执行等技术完成相应规则进行漏洞挖掘。
2、基于二进制的漏洞挖掘
根据实现方式分为静态分析、动态分析以及动静结合方式; 1.静态分析: 将二进制转为汇编代码或中间语言; 通过基于模式的漏洞分析或二进制代码比对技术实现静态的漏洞挖掘。 2.动态分析: 采用模糊测试技术; 根据输入制导的方式可分为白盒、灰盒以及黑盒测试。(制导——发现目标的位置、速度等信息,并根据自己的位置、速度以及内部性能和外部环境的约束条件,获得抵达目标所需的位置或速度等指令) 3.动静结合: 将静态分析的结果用于辅助动态测试。
二、物联网设备漏洞挖掘
由于不同厂商硬软件差异大、部分源代码文档不公开;导致通用平台的漏洞挖掘技术和工具不能完全适用于物联网设备,; 但大部分程序分析技术、安全测试思路和方案仍可用于物联网设备。
1、挑战
1.硬件资源受限: 无法部署相关的分析模块,导致动态分析技术无法适用。同时硬件 CPU 的计算能力有限,会造成动态分析性能下降。 2.硬件的复杂异构: 通用软件的指令架构通常是 X86 或X86_64。而物联网程序通常采用 ARM、MIPS、PowerPC 等嵌入式架构。使直接基于通用 CPU 指令汇编的静态分析方案不再适用。 3.代码文档不公开: 大多数物联网设备程序为定制的商业化程序, 通常只能将设备固件作为分析对象。因此,大量源代码分析技术不再适用于物联网设备漏洞挖掘,基于二进制的静态分析技术也不能直接使用。(固件——是物联网设备中的软件系统, 实现对设备特定硬件底层的控制,可能本身就是个可执行文件)
2、机遇
1.硬软交互: 对于动态二进制分析方案,可以充分利用 外部交互系统 信息,对新的攻击面的进行测试分析。 2.组件复用: 物联网设备程序在开发时会大量使用开源的第三方库, 使出现第三方组件的漏洞。所以可以用基于二进制比对的静态分析技术通过不同层次信息的相似性(原先通过差异性)来挖掘同源漏洞。 3.类型趋同: 对于含有操作系统的物联网设备固件来说, 同样存在存破坏类、输入验证类、配置错误类等类型的漏洞。因此,无论是静态二进制还是动态二进制分析技术、通用的漏洞检测规则仍然适用于物联网设备固件和程序。
三、挖掘技术(通用+物联网设备)三大技术
将现有的通用软件挖掘技术方案与思路与物联网设备进行结合,目前的研究内容主要包括同源性分析技术、静态分析技术、动态模糊测试这三大技术。
1、同源性分析技术
同源性简单来讲就是将物联网设备固件取出后,通过代码、文件等方式和现有存在漏洞的代码、文件等进行比较,挖掘相关漏洞。 现有的同源性分析手段主要有如下几个: ① 粗粒度文件相似性比对 ② 细粒度的代码块(函数)相似性比对 ③代码块语义特征(输入输出对)提取比对 ④ 轻量级语法、结构特征提取比对 ⑤ 基于控制流图结构的匹配 ⑥ 基于控制流图嵌入特征的匹配
2、静态分析技术
静态分析技术从物联网设备固件开始,通过逆向设备固件,建立漏洞模型,并利用程序分析技术完成漏洞挖掘。主要包括了目标程序提取与信息恢复、基于程序分析的漏洞发现两个阶段。
1.目标程序提取与信息恢复
程序主要是通过搜寻特定文件名提取,将代码以中间语言或汇编的形式表示,最后进行恢复。
不足之处:目前, 目标程序提取与信息恢复技术能够有效解决包含操作系统的物联网设备固件的分析。 对于无操作系统的设备固件分析, 整个固件就是特殊的可执行程序, 对该类固件的分析仍处于起步阶段。
2.基于程序分析的漏洞发现
通过建立漏洞分析规则, 并结合静态程序分析技术, 实现漏洞的挖掘。此外,物联网设备漏洞挖掘更关注特定漏洞类型和模块, 如: ① 硬编码漏洞类型——提出基于静态数据分析的漏洞挖掘方法; ② 认证绕过漏洞类型——提出基于程序分析的物联网设备认证绕过漏洞的挖掘方法; ③ 通用污点类漏洞类型——提出物联网设备固件污点类漏洞的检测方法; ④ 协议解析模块——提出基于协议解析模块识别的物联网设备漏洞挖掘方法。
不足之处:研究工作的分析对象仍是用户程序。在针对物联网设备特定实时操作系统方面,仍缺少相应的漏洞挖掘工作。
3、模糊测试技术
通过向被测试对象发送随机输入,并观察其行为(通常是程序崩溃) ,发现潜在漏洞。目前主要包括白盒测试、黑盒测试、灰盒测试三种方法。
- 白盒测试:
① 深度获取程序执行信息来生成测试样例; ② 通常会对程序源代码进行动态污点分析以获取精确的程序执行和状态信息; - 黑盒测试:
① 将测试对象当作黑盒子,不获取任何程序执行信息生成测试样例; ② 仅按照指定的规约随机生成输入样例; - 灰盒测试:
① 通过轻量级的监控技术,以获得程序的特定执行信息来制导输入的生成。 ② 轻量级的程序监控方法使吞吐率更高。
1.系统总体框架
系统总体框架包括了必要组件与可选组件,上图红框内的三个部分为必要组件。 可选组件包括了新型攻击面测试、设备仿真技术、 外围系统分析这三个部分,用来进一步提高模糊测试性能。
- 新型攻击面测试:
① 针对物联网设备系统内核特有机制以及内核与外围的新型交互方式; ② 实时监控目标程序的执行状态,将信息反馈给测试样例生成器,制导其输入的生成。 - 设备仿真技术:
① 为物联网设备提供监控的支持; ② 由于物联网设备程序对系统和硬件资源都有较强的依赖性, 多种设备仿真技术被提出。 - 外围系统分析:
① 通过分析外部交互系统,提取协议交互的语法信息,制导测试样例生成器产生针对目标程序语法结构的合法输入; ② 防止测试样例生成器在程序解析初期随机产生的输入丢弃,以实现目标程序的深度测试。
四、总结
① 当前,物联网设备的漏洞挖掘技术虽然在同源性分析技术、静态分析技术、动态模糊测试上都有一定的进展,但对于无操作系统和包含特定嵌入式操作系统的固件, 仍然缺少系统性的分析和研究。 ② 总体来说,物联网设备漏洞挖掘技术仍然处于起步阶段,未来仍将从这三大类技术入手,一方面提出通用性的方法和技术,另一方面也将针对特定类型的设备、漏洞,研究相应的挖掘技术。
参考文献
郑尧文,文辉,程凯,等. 物联网设备漏洞挖掘技术研究综述[J]. 信息安全学报,2019,4(5):61-75.
|