掌桥专利:专业的专利平台
掌桥专利
首页

物联网固件动态检测方法、装置、电子设备以及存储介质

文献发布时间:2023-06-19 09:41:38


物联网固件动态检测方法、装置、电子设备以及存储介质

技术领域

本申请涉及计算机软件安全检测领域,尤其涉及一种物联网固件动态检测方法、装置、电子设备以及存储介质。

背景技术

随着物联网的快速发展以及物联网安全相关法规和标准的落地,物联网终端作为安全的最薄弱环节已引起高度重视。固件是物联网设备体系结构中的重要组件,具体是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。

目前,固件安全检测分为静态检测和动态检测两类,静态检测不需要对固件进行仿真或者执行固件中的程序,主要通过大规模静态分析技术,识别固件中的已知的漏洞和后门;动态检测通常需要对固件进行系统层面或者用户层面的仿真。

但是现有的固件静态检测方法只能识别已知的漏洞和后门,其误报、漏报率高,并且无法进行开放端口扫描。而现有的动态检测方法存在以下问题:(1)严重依赖实体设备,自动化程度很低;(2)需要对设备进行全系统仿真,仿真难度很大,并且仅支持其预编译内核的架构,如MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器),ARM(Asynchronous Response Mode,异步响应方式)。

发明内容

本申请提供一种物联网固件动态检测方法、装置、电子设备以及存储介质,以解决现有技术中固件安全检测严重依赖实体设备,自动化程度低,需要对设备进行全系统仿真,仿真难度很大且仿真架构支持有限的技术问题。

第一个方面,本申请提供一种物联网固件动态检测方法,包括:

利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件;

利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,所述跨架构仿真固定用于在多种编译架构中模拟所述硬件设备;

利用漏洞检测工具对所述跨架构仿真固件进行漏洞扫描,以确定所述物联网固件的漏洞数据。

在一种可能的设计中,所述利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,包括:

利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,所述初始化文件用于对所述硬件设备进行初始化设定,所述可执行文件用于调用所述硬件设备;

利用所述跨架构仿真模型,根据所述初始化文件以及所述可执行文件,确定所述跨架构仿真固件。

在一种可能的设计中,所述利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,包括:

根据所述固件拆解文件的初始化特征,筛选出所述初始化文件,所述初始化特征包括文件存储路径、文件类型、文件名以及初始化进程字段;

根据所述固件拆解文件的初始字节,确定待选文件,所述初始字节用于标识所述固件拆解文件的编码方式;

从所述待选文件中按所述可执行文件的预设数据类型信息筛选出所述可执行文件。

可选的,在所述利用拆解工具对固件的系统文件进行拆解,以确定固件拆解文件之前,还包括:

利用端口扫描工具扫描仿真系统的第一IP开放端口;

对应的,在所述利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件之后,还包括:

利用所述端口扫描工具扫描所述跨架构仿真固件的第二IP开放端口,所述第二IP开放端口的端口数大于或等于所述第一IP开放端口的端口数;

根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口。

在一种可能的设计中,所述根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口,包括:

对比所述第一IP开放端口与所述第二IP开放端口,根据对比结果确定第三IP开放端口,所述第三IP开放端口为所述第二IP开放端口中与所述第一IP开放端口不同的IP开放端口;

根据所述第三IP开放端口以及漏洞端口库,确定所述漏洞端口。

可选的,所述漏洞端口包括:22端口、23端口、80端口、443端口、5280端口以及5555端口。

在一种可能的设计中,所述利用跨架构仿真模型,根据所述固件拆解文件,确定跨架构仿真固件,包括:

根据所述跨架构仿真模型中的虚拟机监视程序VMM,根据所述初始化文件以及所述可执行文件,确定跨平台编译文件;

根据所述跨平台编译文件以及当前操作系统,确定所述宿主编码文件,所述宿主编码文件,用于调用所述当前操作系统的服务来获取资源,以实现所述固件对应的硬件设备虚拟化,所述跨架构仿真固件为所述宿主编码文件。

可选的,所述固件拆解文件包括:二进制文件以及文本文件;

对应的,所述初始化文件以及所述可执行文件为二进制文件。

第二个方面,本申请提供一种物联网固件动态检测装置,包括:

拆解模块,用于利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件;

仿真模块,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,所述跨架构仿真固定用于在多种编译架构中模拟所述硬件设备;

漏洞检测模块,用于利用漏洞检测工具对所述跨架构仿真固件进行漏洞扫描,以确定所述物联网固件的漏洞数据。

在一种可能的设计中,所述仿真模块,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,包括:

所述仿真模块,用于利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,所述初始化文件用于对所述硬件设备进行初始化设定,所述可执行文件用于调用所述硬件设备;

所述仿真模块,还用于利用所述跨架构仿真模型,根据所述初始化文件以及所述可执行文件,确定所述跨架构仿真固件。

在一种可能的设计中,所述仿真模块,用于利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,包括:

所述仿真模块,用于根据所述固件拆解文件的初始化特征,筛选出所述初始化文件,所述初始化特征包括文件存储路径、文件类型、文件名以及初始化进程字段;

所述仿真模块,还用于根据所述固件拆解文件的初始字节,确定待选文件,所述初始字节用于标识所述固件拆解文件的编码方式;

所述仿真模块,还用于从所述待选文件中按所述可执行文件的预设数据类型信息筛选出所述可执行文件。

可选的,在所述拆解模块,用于利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件之前,还包括:

端口扫描模块,用于利用端口扫描工具扫描仿真系统的第一IP开放端口;

对应的,在所述仿真模块,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件之后,还包括:

所述端口扫描模块,还用于利用所述端口扫描工具扫描所述跨架构仿真固件的第二IP开放端口,所述第二IP开放端口的端口数大于或等于所述第一IP开放端口的端口数;

所述漏洞检测模块,还用于根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口。

在一种可能的设计中,所述漏洞检测模块,还用于根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口,包括:

所述漏洞检测模块,还用于对比所述第一IP开放端口与所述第二IP开放端口,根据对比结果确定第三IP开放端口,所述第三IP开放端口为所述第二IP开放端口中与所述第一IP开放端口不同的IP开放端口;

所述漏洞检测模块,还用于根据所述第三IP开放端口以及漏洞端口库,确定所述漏洞端口。

可选的,所述漏洞端口包括:22端口、23端口、80端口、443端口、5280端口以及5555端口。

在一种可能的设计中,所述仿真模块,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,包括:

所述仿真模块,用于根据所述跨架构仿真模型中的虚拟机监视程序VMM,根据所述初始化文件以及所述可执行文件,确定跨平台编译文件;

所述仿真模块,还用于根据所述跨平台编译文件以及当前操作系统,确定所述宿主编码文件,所述宿主编码文件,用于调用所述当前操作系统的服务来获取资源,以实现所述固件对应的硬件设备虚拟化,所述跨架构仿真固件为所述宿主编码文件。

可选的,所述固件拆解文件包括:二进制文件以及文本文件;

对应的,所述初始化文件以及所述可执行文件为二进制文件。

第三个方面,本申请提供一种电子设备,包括:

存储器,用于存储程序指令;

处理器,用于调用并执行所述存储器中的程序指令,执行第一方面所提供的任意一种可能的物联网固件动态检测方法。

第四个方面,本申请提供一种存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行第一方面所提供的任意一种可能的物联网固件动态检测方法。

本申请提供了一种物联网固件动态检测方法、装置、电子设备以及存储介质,通过向利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件,然后利用跨架构仿真模型,将物联网固件中的硬件设备转换为跨架构仿真固件,最后利用漏洞检测工具对跨架构仿真固件进行漏洞扫描,以确定物联网固件的漏洞数据。解决了现有技术中固件安全检测严重依赖实体设备,自动化程度低,需要对设备进行全系统仿真,仿真难度很大且仿真架构支持有限的技术问题,实现了通过跨架构对物联网固件进行动态检测,达到了更高效更准确地发现物联网固件漏洞的技术效果。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的物联网系统组成的结构原理示意图;

图2为本申请提供的一种物联网固件动态检测方法的流程示意图;

图3为本申请提供的另一种物联网固件动态检测方法的流程示意图;

图4为本申请提供的一种物联网固件动态检测装置的结构示意图;

图5为本申请提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,包括但不限于对多个实施例的组合,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面对本申请实施例所涉及到的专业术语进行解释介绍。

固件是物联网设备体系结构中的重要组件,具体是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作。固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

目前,固件安全检测分为静态检测和动态检测两类,静态检测不需要对固件进行仿真或者执行固件中的程序,以LAVA(Linaro Automated Validation Architecture,Linaro自动检测框架)为代表,主要通过大规模静态分析技术,识别固件中的已知的漏洞和后门;动态检测通常需要对固件进行系统层面或者用户层面的仿真,以Avatar和Firmadyne为代表,Avatar为协调仿真器和物理设备之间通信的框架,Firmadyne利用Qemu的系统模式对固件进行全系统模拟。

但是现有的固件静态检测方法只能识别已知的漏洞和后门,其误报、漏报率高,并且无法进行开放端口扫描。而现有的动态检测方法存在以下问题:Avatar严重依赖实体设备,自动化程度很低;Firmadyne需要对设备进行全系统仿真,仿真难度很大,并且仅支持其预编译内核的架构,如MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)或ARM(Asynchronous Response Mode,异步响应方式),目前仅对MIPS架构的路由器能给予较好的支持。

另外,动态检测还包括通过模糊测试来挖掘新漏洞,使用模糊测试的方法进行测试主要通过监视程序是否产生崩溃来判断是否存在漏洞,经调研后发现,物联网设备漏洞多为逻辑漏洞,如XSS、身份验证绕过,该类漏洞并不会造成系统崩溃,因此使用模糊测试技术难以发现该类问题,除此之外,模糊测试产生的崩溃需要专业人士进行分析,难以进行自动化。

为此,本申请的发明目的是要解决以下问题:

(1)静态检测误报率、漏报率高的问题;

(2)对设备难以全系统仿真的问题;

(3)动态检测系统架构支持不全面的问题;

(4)模糊测试生成崩溃需专业分析,难以达到自动化的问题;

(5)用户模式仿真方式无法获得固件IP,因此无法进行端口扫描及漏洞扫描的问题。

图1为本申请提供的物联网系统组成的结构原理示意图。如图1所示,物联网系统一般包括:操作系统110、驱动软件111、硬件设备120、固件121。操作系统110不能够直接控制硬件设备,需要通过底层驱动软件111来进行数据交互,而硬件设备为了能够更好地被操作系统所利用,就需要以固件121为中间媒介与驱动软件111实现握手,以实现物联网的操作系统110调用硬件设备120来完成各项物联网任务。可以理解的是,一个固件121可能对应着多个硬件设备,由于固件必须提供开放IP端口给驱动程序,以使得操作系统能够调用硬件设备,而且固件内部也需要有对硬件设备的资源配置逻辑,这两个方面就是安全隐患漏洞的重点排查方向。

由于任何固件都是以某种组织形式即架构建立起来的,而不同的架构其IP端口开放逻辑和资源调配逻辑都是不同的,这就给固件安全检测带来了天然的屏蔽障碍。由于开源架构容易被针对攻击,因此绝大多数架构都是在开源架构的基础上添加了各自的独立要素,这就使得同一个开源架构形成了多种分支体系,现有的固件安全检测就必须要预先配置架构信息,才能够去支持该架构下的固件漏洞检测需求。

本申请的发明构思就是从另外的角度来看待固件,根据IP端口开放和资源调配的总逻辑思路,将固件文件进行底层拆解重组,就像拆解出人的神经系统,将神经细胞进行提取重组,将原本处于被重重包裹保护的内在逻辑完全显现出来,这样更容易暴露出固件的安全漏洞。而重组的关键点又在于能够从拆解的程序分块中筛选提取出起“神经元”作用的有效逻辑块。

图2为本申请提供的一种物联网固件动态检测方法的流程示意图。如图2所示,本申请实施例提供的物联网固件动态检测方法,具体步骤包括:

S201、利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件。

在本实施例中,本步骤具体的,包括:

运用架构检测工具对待处理的物联网固件进行逆向逻辑链路测试,所述架构检测工具包括预设的测试进程数据以及检测模拟数据;

根据测试结果判定所涉及的架构类型;

根据所述架构类型选择对应的拆解算法;

利用所述拆解算法对所述物联网固件进行拆解,以确定固件拆解文件。

例如,对于一个待处理的物联网固件,运用ARM架构测试进程和对应的测试数据输入到物联网固件中,检测其是否能够得到对应的预设检测结果,如对特定的IP开发端口的响应结果是否符合ARM架构预设的响应结果,如果不符合那么就再进行X86架构的测试,直到检测到满足要求的架构为止。

在一种可能的设计中,还可以通过测试来计算架构符合度,根据架构符合度是否满足对应架构的预设阈值来判定,或者是根据架构符合度的排序,选择符合度最高的或者是选择符合度排名在预设排名内的架构,确定为物联网固件的架构类型。

然后就可以利用拆解算法或者开源提取工具如Binwalk固件解压工具进行拆解解压,得到固件拆解文件。需要说明的是,固件拆解文件可以包括多种文件类型,如二进制文件、16进制文件、汇编文件、文本文件、dos文件等,或者是预设的与拆解算法或者拆解工具对应的特殊格式文件。

S202、利用跨架构仿真模型,将物联网固件中的硬件设备转换为跨架构仿真固件。

在本步骤中,跨架构仿真固定用于在多种编译架构中模拟所述硬件设备。

具体的,包括:

利用预设筛选算法,根据固件拆解文件,确定初始化文件以及可执行文件,所述初始化文件用于对硬件设备进行初始化设定,所述可执行文件用于调用硬件设备;

利用跨架构仿真模型,根据初始化文件以及可执行文件,确定跨架构仿真固件。

例如,初始化文件一般都有固定的存储路径或者命名格式如init,因此只需要对于特定的路径或者命名寻找对应的代码段,再将这些代码段按照与架构对应的组织形式进行筛选,就可以筛选出初始化文件。可执行文件的类型包括x-executable类型,因此只需要在固件拆解文件中找到对应的x-executable类型的文件对应的起始编码段或者是具备特定特征的代码,就可以筛选出可执行文件。

需要说明的是,可执行文件是整个固件中的最基本的逻辑结构,因为固件中还会有调用其它库函数的文件,这些文件对于安全检测时并不能起到决定性作用,并且还会给后续的跨平台仿真造成阻碍,因此只需要筛选出来可执行文件即可,而初始化文件用于对固件的初始化状态进行定义,也是固件不可或缺的文件,因此也需要筛选出来。

跨架构仿真模型的作用就是使得初始化文件和可执行文件能够在仿真系统所在的操作系统环境下,执行待处理固件的资源调配逻辑和IP端口开放逻辑。相当于把固件执行逻辑文件进行了重组,这样就不再受原始架构的限定,从而实现了跨架构的作用。所谓仿真就是在相同的逻辑算法下,在另一个不受固件架构约束的平台上重现待处理固件原有的功能,建立了一个虚拟的固件模型。

S203、利用漏洞检测工具对跨架构仿真固件进行漏洞扫描,以确定物联网固件的漏洞数据。

在本实施例中,对于固件中常见漏洞类型,分为逻辑漏洞(XSS,身份验证绕过)和内存漏洞(缓冲区溢出),利用漏洞检测工具如metasploit工具的漏洞利用模块查询相应的漏洞利用,生成漏洞利用列表。然后利用跨架构方正固件执行漏洞利用列表里面的漏洞利用程序,就能够检测到对应的漏洞数据,即可判断出对应的物联网固件是否存在对应的漏洞。

本实施例提供了一种物联网固件动态检测方法,通过向利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件,然后利用跨架构仿真模型,将物联网固件中的硬件设备转换为跨架构仿真固件,最后利用漏洞检测工具对跨架构仿真固件进行漏洞扫描,以确定物联网固件的漏洞数据。解决了现有技术中固件安全检测严重依赖实体设备,自动化程度低,需要对设备进行全系统仿真,仿真难度很大且仿真架构支持有限的技术问题,实现了通过跨架构对物联网固件进行动态检测,达到了更高效更准确地发现物联网固件漏洞的技术效果。

图3为本申请提供的另一种物联网固件动态检测方法的流程示意图。如图3所示,该物联网固件动态检测方法的具体步骤包括:

S301、利用端口扫描工具扫描仿真系统的第一IP开放端口。

在本实施例中,为了能够在用户层仿真模式下识别出物联网固件的IP开放端口,就需要在执行仿真程序的系统中执行两次IP开放端口的扫描,以排除执行仿真程序的系统自身的IP开放端口即第一IP开放端口。

S302、利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件。

本步骤与S201类似,详细原理及名词解释介绍参见S201,在此不再赘述。

需要说明的是,在本实施例中,固件拆解文件包括:二进制文件以及文本文件。

S303、根据固件拆解文件的初始化特征,筛选出初始化文件。

在本步骤中,所述初始化特征包括文件存储路径、文件类型、文件名以及初始化进程字段。

例如,初始化二进制文件通常存在于进程“/sbin/init”中,则可以去寻找对应的“/sbin/init”进程相关的特征,如代码段,特定调用文件等,根据相关的初始化特征就能够筛选出对应的初始化二进制文件。

S304、根据固件拆解文件的初始字节,确定待选文件。

在本步骤中,所述初始字节用于标识所述固件拆解文件的编码方式,所述待选文件包含有可执行文件。

在本实施例中,待选文件为二进制文件。由于本实施例中的固件拆解文件分为两类二进制文件和文本文件,而可执行文件为二进制文件,因此需要剔除所有的文本文件。

具体的,文本文件的初始字节包含BOM头,用以标识文件使用哪种方式编码,而二进制文件是不包含BOM头的,因此首先排除文件初始字节包含BOM,如UTF-32BE,UTF-32LE,UTF-16BE,UTF-16LE,UTF-8的文件。

需要说明的是,虽然有UTF-8类型的BOM,但是BOM主要是为UTF-16和UTF-18准备的,标准的UTF-8编码文件多数是没有BOM头的,因此只排除BOM头的文件可能会遗漏UTF-8编码的文本文件;基于此,需要进一步查询文件初始字节是否包含’\0’,由UTF-8的编码方式可知,其不包含零字节,因此只要在文件中扫描到零字节则能够判定其为二进制文件。

需要说明的是,BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。

S305、从待选文件中按可执行文件的预设数据类型信息筛选出可执行文件。

在本实施例中,待选文件主要包括x-executable可执行文件、x-sharedlib链接库、octet-stream动态流、x-object对象,其中系统功能库函数均为链接库的格式,为了提高仿真效率,且排除对架构和实体设备的依赖不对库函数进行动态仿真,仅考虑可执行文件的仿真,即只过滤x-executable可执行文件。

S306、利用跨架构仿真模型,根据固件拆解文件,确定跨架构仿真固件。

在本实施例中,具体包括:

根据跨架构仿真模型中的虚拟机监视程序VMM,初始化文件以及可执行文件,确定跨平台编译文件。

根据所述跨平台编译文件以及当前操作系统,确定宿主编码文件,所述宿主编码文件,用于调用当前操作系统的服务来获取资源,以实现固件对应的硬件设备虚拟化,所述跨架构仿真固件为所述宿主编码文件。

具体的,使用开源的跨架构二进制仿真工具如Qiling framework、unicorn对筛选出来的初始化二进制文件和可执行二进制文件进行仿真。所述跨架构二进制仿真工具的架构均通过纯软件实现,通过虚拟化VMM的形式令某种架构编译的物联网固件在仿真系统的架构上得以运行,VMM充当中间媒介的角色,调用仿真系统的操作系统的服务进程来获得资源,实现CPU、内存和I/O设备的虚拟化,虚拟化的实现方式主要为,将初始化二进制文件和可执行二进制文件重组翻译为中间代码即跨平台编译文件,然后将中间代码根据仿真系统即当前操作系统进行编译,即编译为仿真系统能够识别和运行的代码即宿主代码。

S307、利用端口扫描工具扫描跨架构仿真固件的第二IP开放端口。

在本步骤中,所述第二IP开放端口的端口数大于或等于所述第一IP开放端口的端口数。

具体的,在得到跨架构仿真固件后,就在仿真系统中运行跨架构仿真固件进行仿真,然后用端口扫描工具扫描,就能得到第二IP开放端口,此时扫描出来的第二IP开放端口包含仿真系统自带的第一IP开放端口,以及跨架构仿真固件所包括的IP开发端口即第三IP开放端口。

S308、根据第一IP开放端口与第二IP开放端口确定漏洞端口。

在本步骤中,具体包括:

对比所述第一IP开放端口与所述第二IP开放端口,根据对比结果确定第三IP开放端口,所述第三IP开放端口为所述第二IP开放端口中与所述第一IP开放端口不同的IP开放端口;

根据所述第三IP开放端口以及漏洞端口库,确定所述漏洞端口。

需要说明的是,所述漏洞端口包括:22端口、23端口、80端口、443端口、5280端口以及5555端口。

还需要说明的是,漏洞端口库可以独立维护,并且进行定期的更新,这样就能够使得漏洞端口的类型不断丰富,能够更加精准地检测出物联网固件的漏洞。

具体的,使用端口扫描工具(比如nmap)扫仿真系统的IP开放端口,在使用二进制仿真工具仿真执行初始化文件后,再次使用端口扫描工具扫仿真系统的IP开放端口。对比两次端口扫描结果,多出来的开放端口则被认为是该固件启动服务后的开放端口。判断扫描出的开放端口中是否存在22端口、23端口、80端口、443端口、5280端口、5555端口这些最为常见的漏洞端口类型。

S309、利用漏洞检测工具对跨架构仿真固件进行漏洞扫描,以确定物联网固件的漏洞数据。

在本实施例中,对于固件中常见漏洞类型,分为逻辑漏洞(XSS,身份验证绕过)和内存漏洞(缓冲区溢出),利用漏洞检测工具如metasploit工具的漏洞利用模块查询相应的漏洞利用,生成漏洞利用列表。然后利用跨架构方正固件执行漏洞利用列表里面的漏洞利用程序,就能够检测到对应的漏洞数据,即可判断出对应的物联网固件是否存在对应的漏洞。

需要说明的是,本实施例的固件动态检测方法,支持包括X86,X86_64,Arm,Arm64,MIPS等CPU架构。

本实施例提供了一种物联网固件动态检测方法,通过向利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件,然后利用跨架构仿真模型,将物联网固件中的硬件设备转换为跨架构仿真固件,最后利用漏洞检测工具对跨架构仿真固件进行漏洞扫描,以确定物联网固件的漏洞数据。解决了现有技术中固件安全检测严重依赖实体设备,自动化程度低,需要对设备进行全系统仿真,仿真难度很大且仿真架构支持有限的技术问题,实现了通过跨架构对物联网固件进行动态检测,达到了更高效更准确地发现物联网固件漏洞的技术效果。

本实施例无需全系统仿真固件,通过固件文件系统的二进制文件即可分析和检测整个固件。对于可执行二进制文件的筛选,直接匹配x-executable文件类型,可直接排除系统库。而为解决仅运行二进制文件无法获得固件IP的问题,本专利采用两次扫描宿主机IP再进行端口对比的方式检测开放端口,并且使用开源的漏洞利用库,漏洞利用成功后判定存在该漏洞,以此对已知漏洞进行扫描,解决通过模糊测试获得崩溃需专业人士进行分析难以自动化以及逻辑漏洞难以通过捕捉崩溃来发现的问题。

图4为本申请提供的一种物联网固件动态检测装置的结构示意图。该物联网固件动态检测装置400可以通过软件、硬件或者两者的结合实现。

如图4所示,该物联网固件动态检测装置400包括:

拆解模块401,用于利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件;

仿真模块402,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,所述跨架构仿真固定用于在多种编译架构中模拟所述硬件设备;

漏洞检测模块403,用于利用漏洞检测工具对所述跨架构仿真固件进行漏洞扫描,以确定所述物联网固件的漏洞数据。

在一种可能的设计中,所述仿真模块402,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,包括:

所述仿真模块402,用于利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,所述初始化文件用于对所述硬件设备进行初始化设定,所述可执行文件用于调用所述硬件设备;

所述仿真模块402,还用于利用所述跨架构仿真模型,根据所述初始化文件以及所述可执行文件,确定所述跨架构仿真固件。

在一种可能的设计中,所述仿真模块402,用于利用预设筛选算法,根据所述固件拆解文件,确定初始化文件以及可执行文件,包括:

所述仿真模块402,用于根据所述固件拆解文件的初始化特征,筛选出所述初始化文件,所述初始化特征包括文件存储路径、文件类型、文件名以及初始化进程字段;

所述仿真模块402,还用于根据所述固件拆解文件的初始字节,确定待选文件,所述初始字节用于标识所述固件拆解文件的编码方式;

所述仿真模块402,还用于从所述待选文件中按所述可执行文件的预设数据类型信息筛选出所述可执行文件。

可选的,在所述拆解模块401,用于利用拆解工具对物联网固件的系统文件进行拆解,以确定固件拆解文件之前,还包括:

端口扫描模块404,用于利用端口扫描工具扫描仿真系统的第一IP开放端口;

对应的,在所述仿真模块402,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件之后,还包括:

所述端口扫描模块404,还用于利用所述端口扫描工具扫描所述跨架构仿真固件的第二IP开放端口,所述第二IP开放端口的端口数大于或等于所述第一IP开放端口的端口数;

所述漏洞检测模块403,还用于根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口。

在一种可能的设计中,所述漏洞检测模块403,还用于根据所述第一IP开放端口与所述第二IP开放端口确定漏洞端口,包括:

所述漏洞检测模块403,还用于对比所述第一IP开放端口与所述第二IP开放端口,根据对比结果确定第三IP开放端口,所述第三IP开放端口为所述第二IP开放端口中与所述第一IP开放端口不同的IP开放端口;

所述漏洞检测模块403,还用于根据所述第三IP开放端口以及漏洞端口库,确定所述漏洞端口。

可选的,所述漏洞端口包括:22端口、23端口、80端口、443端口、5280端口以及5555端口。

在一种可能的设计中,所述仿真模块402,用于利用跨架构仿真模型,将所述物联网固件中的硬件设备转换为跨架构仿真固件,包括:

所述仿真模块402,用于根据所述跨架构仿真模型中的虚拟机监视程序VMM,根据所述初始化文件以及所述可执行文件,确定跨平台编译文件;

所述仿真模块402,还用于根据所述跨平台编译文件以及当前操作系统,确定所述宿主编码文件,所述宿主编码文件,用于调用所述当前操作系统的服务来获取资源,以实现所述固件对应的硬件设备虚拟化,所述跨架构仿真固件为所述宿主编码文件。

可选的,所述固件拆解文件包括:二进制文件以及文本文件;

对应的,所述初始化文件以及所述可执行文件为二进制文件。

值得说明的是,图4所示实施例提供的物联网固件动态检测装置,可以执行上述任一方法实施例所提供的方法,其具体实现原理、技术特征、专业名词解释以及技术效果类似,在此不再赘述。

图5为本申请提供的一种电子设备的结构示意图。如图5所示,该电子设备500可以包括:至少一个处理器501和存储器502。图5示出的是以一个处理器为例的电子设备。

存储器502,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。

存储器502可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

处理器501用于执行存储器502存储的计算机执行指令,以实现以上各方法实施例所述的方法。

其中,处理器501可能是一个中央处理器(central processing unit,简称为CPU),或者是特定集成电路(application specific integrated circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。

可选地,存储器502既可以是独立的,也可以跟处理器501集成在一起。当所述存储器502是独立于处理器501之外的器件时,所述电子设备500,还可以包括:

总线503,用于连接所述处理器501以及所述存储器502。总线可以是工业标准体系结构(industry standard architecture,简称为ISA)总线、外部设备互连(peripheralcomponent,PCI)总线或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器502和处理器501集成在一块芯片上实现,则存储器502和处理器501可以通过内部接口完成通信。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述各方法实施例中的方法。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 物联网固件动态检测方法、装置、电子设备以及存储介质
  • 一种固件文件的检测方法、装置、电子设备及存储介质
技术分类

06120112268322