logo好方法网

基于VEX中间语言的物联网设备组件版本信息提取方法


技术摘要:
本发明实施例提供一种基于VEX中间语言的物联网设备组件版本信息提取方法,包括:采集物联网设备固件,确定组件二进制字符串;再确定物联网设备的具有版本信息的二进制字符串;若具有版本信息的二进制字符串包括组件版本名和组件版本号,则直接提取组件版本名和组件版本  全部
背景技术:
随着网络通信技术的快速发展,物联网设备的数量正在逐年增加。同时,物联网设 备有关的漏洞数量与威胁事件也在逐年递增。 其中物联网设备固件作为运行在物联网设备上的系统软件,作为执行物联网设备 功能的软件,其安全性不可忽视。而物联网设备固件中的二进制组件,是执行实际功能的基 础软件。常用的物联网设备固件漏洞挖掘方法,都是通过针对设备中的某一功能或者某一 协议进行挖掘,而实现功能或协议的软件即为设备固件的组件。 而不同版本的组件具有不同的脆弱性,因此如何识别固件中的组件版本,对快速 的分析物联网设备的固件安全性有着重要意义。目前识别物联网设备固件中组件版本的方 法主要是通过模拟固件执行环境后,通过模拟运行组件使用命令手动获取,或者通过模拟 运行软件的banner来人为标识。这种方法依赖固件配置的环境,由于不同的设备具有不同 的环境依赖和架构依赖,例如,有MIPS架构、ARM架构和X86架构,而目前还没有一种统一的 方法能够跨架构的获取物联网设备的组件信息。因此,很难使用动态的方式获取固件中所 有组件的版本信息,同时这种方式只能通过手工获取,故获取固件组件的效率不高。 因此,如何避免现有的获取组件的方法效率低下的情况,且无法实现跨架构的组 件信息的统一提取,仍然是本领域技术人员亟待解决的问题。
技术实现要素:
本发明实施例提供一种基于VEX中间语言的物联网设备组件版本信息提取方法, 用以解决现有的获取组件的方法无法实现跨架构的组件信息的统一提取且效率低下的问 题。 第一方面,本发明实施例提供一种基于VEX中间语言的物联网设备组件版本信息 提取方法,包括: 采集物联网设备固件,基于所述固件确定所述物联网设备的组件二进制字符串; 基于所述组件二进制字符串确定所述物联网设备的具有版本信息的二进制字符 串,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二进制字符 串或者为同时包括组件版本名和格式化字符串的二进制字符串; 若所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本号的二 进制字符串,则直接提取具有版本信息的二进制字符串中的组件版本名和组件版本号作为 物联网设备的组件版本信息; 若所述具有版本信息的二进制字符串为同时包括组件版本名和格式化字符串的 二进制字符串,则对所述格式化字符串获取反汇编数据,并将反汇编数据转换成VEX中间语 4 CN 111580822 A 说 明 书 2/12 页 言代码,基于所述VEX中间语言代码确定组件版本号,确定所述组件版本名和所述组件版本 号为所述物联网设备的组件版本信息。 优选地,该方法中,所述采集物联网设备固件,基于所述固件确定所述物联网设备 的组件二进制字符串,具体包括: 爬取物联网设备的固件,对所述固件进行解压获取解压组件; 判断所述解压组件是否为二进制可执行文件,若是,则确定所述解压组件为所述 物联网设备的组件二进制字符串。 优选地,该方法中,所述基于所述组件二进制字符串确定所述物联网设备的具有 版本信息的二进制字符串,所述具有版本信息的二进制字符串为同时包括组件版本名和组 件版本号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串,具 体包括: 将所述组件二进制字符串与标准组件版本信息库中的标准组件版本信息进行匹 配; 若匹配成功,则筛选出同时包括组件版本名和组件版本号的二进制字符串; 若匹配不成功,则筛选出同时包括组件版本名和格式化字符串的二进制字符串。 优选地,该方法中,还包括: 将所述物联网设备的组件版本信息与预先存储的存在组件漏洞的组件版本信息 进行匹配,判断所述物联网设备的组件是否存在漏洞,若是,则产生告警。 优选地,该方法中,所述对所述格式化字符串获取反汇编数据,并将反汇编数据转 换成VEX中间语言代码,基于所述VEX中间语言代码确定组件版本号,确定所述组件版本名 和所述组件版本号为所述物联网设备的组件版本信息,具体包括: 获取所述格式化字符串的反汇编数据,所述反汇编数据包括数据段和代码段,确 定在所述代码段中引用该格式化字符串的汇编指令地址为第一地址; 对第一地址获取其所在函数的二进制代码数据,将所述二进制代码数据转换为 VEX中间语言代码基本块; 在所述VEX中间语言代码基本块中确定所述格式化字符串的传递地址; 基于所述格式化字符串的传递地址确定组件版本号。 优选地,该方法中,所述基于所述格式化字符串的传递地址确定组件版本号,具体 包括: 若所述格式化字符串的传递地址为堆栈地址,确定格式化版本号字符串的传递地 址为第一堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所述第一堆栈地 址在堆栈中的第一相对位置地址,确定所述第一相对位置地址的第一堆栈值,基于所述第 一堆栈值确定组件版本号; 若所述格式化字符串的传递地址为参数寄存器,基于版本号占位符在格式化字符 串中的位置顺序确定格式化版本号字符串的传递地址为第二地址,基于所述第二地址确定 组件版本号。 优选地,该方法中,所述基于所述第二地址确定组件版本号,具体包括: 若第二地址为堆栈地址,基于版本号占位符在格式化字符串中的位置顺序确定所 述堆栈地址在堆栈中的第二相对位置地址,确定所述第二相对位置地址的第二堆栈值,基 5 CN 111580822 A 说 明 书 3/12 页 于所述第二堆栈值确定组件版本号; 若第二地址为参数寄存器,确定所述参数寄存器中最终存储的数据段地址,基于 所述数据段地址获取组件版本号字符串的值,确定所述组件版本号字符串的值为组件版本 号。 第二方面,本发明实施例提供一种基于VEX中间语言的物联网设备组件版本信息 提取装置,包括: 采集单元,用于采集物联网设备固件,基于所述固件确定所述物联网设备的组件 二进制字符串; 二进制单元,用于基于所述组件二进制字符串确定所述物联网设备的具有版本信 息的二进制字符串,所述具有版本信息的二进制字符串为同时包括组件版本名和组件版本 号的二进制字符串或者为同时包括组件版本名和格式化字符串的二进制字符串; 确定单元,用于若所述具有版本信息的二进制字符串为同时包括组件版本名和组 件版本号的二进制字符串,则直接提取具有版本信息的二进制字符串中的组件版本名和组 件版本号作为物联网设备的组件版本信息;若所述具有版本信息的二进制字符串为同时包 括组件版本名和格式化字符串的二进制字符串,则对所述格式化字符串获取反汇编数据, 并将反汇编数据转换成VEX中间语言代码,基于所述VEX中间语言代码确定组件版本号,确 定所述组件版本名和所述组件版本号为所述物联网设备的组件版本信息。 第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器 上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供 的基于VEX中间语言的物联网设备组件版本信息提取方法的步骤。 第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算 机程序,该计算机程序被处理器执行时实现如第一方面所提供的基于VEX中间语言的物联 网设备组件版本信息提取方法的步骤。 本发明实施例提供的方法,通过确定采集的网络上的物联网设备的固件对应的组 件二进制字符串,从所述组件二进制字符串中筛选出具有版本信息的二进制字符串,如果 所述具有版本信息的二进制字符串包括组件版本名和组件版本号,则直接提取所述组件版 本号和组件版本名作为所述物联网设备的组件版本信息;如果所述具有版本信息的二进制 字符串包括组件版本名和格式化字符串,则对所述格式化字符串获取反汇编数据,并将反 汇编数据转换成VEX中间语言代码,基于所述VEX中间语言代码确定组件版本号,将所述组 件版本号和所述组件版本名作为物联网设备的组件版本信息。如此,当不同的物联网设备 存在不同的环境依赖和架构依赖,通过将不同的反汇编数据转换成统一的VEX中间语言进 行处理,实现了跨架构的物联网设备的组件版本信息的统一提取。因此,本发明实施例提供 的方法,不仅实现了物联网设备的组件版本信息的自动提取能够提高物联网设备的组件版 本信息提取的效率,还实现了跨架构的物联网设备的组件版本信息的统一提取。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根 6 CN 111580822 A 说 明 书 4/12 页 据这些附图获得其他的附图。 图1为本发明实施例提供的基于VEX中间语言的物联网设备组件版本信息提取方 法的流程示意图; 图2为本发明实施例提供的包括格式化字符串aVersionS的代码的示意图; 图3为本发明实施例提供的包括格式化字符串aGeneratedIptable的VEX代码的示 意图; 图4为本发明实施例提供的基于VEX中间语言的物联网设备组件版本信息提取具 体流程的示意图; 图5为本发明实施例提供的基于VEX中间语言的的物联网设备组件版本信息提取 装置的结构示意图; 图6为本发明实施例提供的电子设备的实体结构示意图。
下载此资料需消耗2积分,
分享到:
收藏