CN110457907B - 一种固件程序检测方法和装置 - Google Patents

一种固件程序检测方法和装置 Download PDF

Info

Publication number
CN110457907B
CN110457907B CN201910679097.6A CN201910679097A CN110457907B CN 110457907 B CN110457907 B CN 110457907B CN 201910679097 A CN201910679097 A CN 201910679097A CN 110457907 B CN110457907 B CN 110457907B
Authority
CN
China
Prior art keywords
reading
image file
firmware
firmware image
firmware program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910679097.6A
Other languages
English (en)
Other versions
CN110457907A (zh
Inventor
杨韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910679097.6A priority Critical patent/CN110457907B/zh
Publication of CN110457907A publication Critical patent/CN110457907A/zh
Application granted granted Critical
Publication of CN110457907B publication Critical patent/CN110457907B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本申请属于计算机技术领域,公开了一种固件程序检测方法和装置,本申请公开的一种固件程序检测方法包括,获得读取待检测固件程序的固件镜像文件过程中的读取速率变化信息;确定读取速率变化信息与基准读取速率变化信息之间的偏离度,基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;当偏离度达到设定条件时,确定待检测固件程序异常,这样,仅通过读取速率变化信息检测固件程序,降低了固件程序检测的难度,提高了固件程序检测的检出率。

Description

一种固件程序检测方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种固件程序检测方法和装置。
背景技术
固件程序用于为设备提供最底层的、最直接的硬件设置和控制,是设备的核心部分。若固件程序中存在恶意程序,将会极大的威胁设备的安全。因此,为保证设备的安全,通常需要对固件程序进行检测。
以基本输入输出系统(Basic Input Output System,BIOS)为例,BIOS是计算机主板芯片上的一个固件程序,通常为计算机启动后运行的第一个程序,是计算机运转的起点,具备访问所有设备、修改所有配置的最高权限。现有技术下,通常通过BIOS固件程序中的恶意程序样本特征,对BIOS固件程序进行特征匹配,获得检测结果。
但是,采用这种方式,需要在断电情况下通过外部硬件读取BIOS固件程序的固件镜像文件,检测成本高,检测步骤繁琐,以及仅能检测出已知的BIOS固件异常问题,检出率较低。
因此,如何提高固件程序检测的检出率,降低固件程序的检测难度,是亟待解决的问题。
发明内容
本申请实施例提供一种固件程序检测方法和装置,用以在对固件程序进行检测时,降低固件程序的检测难度,以及提高固件程序检测的检出率。
一方面,提供一种固件程序检测方法,包括:
获得读取待检测固件程序的固件镜像文件过程中的读取速率变化信息;
确定读取速率变化信息与基准读取速率变化信息之间的偏离度,基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;
当偏离度达到设定条件时,确定待检测固件程序异常。
一方面,提供一种固件程序检测装置,包括:
获得单元,用于获得读取待检测固件程序的固件镜像文件过程中的读取速率变化信息;
第一确定单元,用于确定读取速率变化信息与基准读取速率变化信息之间的偏离度,基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;
第二确定单元,用于当偏离度达到设定条件时,确定待检测固件程序异常。
较佳的,获得单元用于:
按照指定的文件读取次数,读取固件镜像文件,并将读取的固件镜像文件并写入指定内存空间;
获取固件镜像文件在各次文件读取过程中的监控数据;
对监控数据进行线性回归处理,获得读取速率变化信息。
较佳的,获得单元用于:
每一次读取固件镜像文件时,采用以下方式中的任意一种:
按照该固件镜像文件的存储地址的地址顺序依次读取该固件镜像文件的相应内容;或者,按照在该固件镜像文件对应的各存储地址中随机选择的序列地址读取固件镜像文件的相应内容。
较佳的,获得单元还用于:
获取监控数据中还包含的各文件散列值,文件散列值为每一次读取固件镜像文件时确定的固件镜像文件的哈希值;
当各文件散列值不一致时,调整文件读取次数;
按照调整后的文件读取次数,执行按照指定的文件读取次数读取固件镜像文件的步骤。
较佳的,监控数据中包含读取时间和相应的读取速率;
读取时间包括本地读取时间和远程读取时间;
本地读取时间是根据本地授时确定的时间;
远程读取时间是根据远程服务器授时确定的时间;
读取速率变化信息为用于表示读取时间和读取速率之间的映射关系的速率变化曲线,基准读取速率变化信息为用于表示读取时间和基准读取速率之间的映射关系的基准速率变化曲线。
较佳的,获得单元还用于:
对监控数据中包含的本地读取时间和相应的读取速率,进行线性回归处理,获得第一速率变化曲线;
对监控数据中包含的远程读取时间和相应的读取速率,进行线性回归处理,获得第二速率变化曲线;
当第一速率变化曲线和第二速率变化曲线不一致时,获得时钟检测结果。
较佳的,获得单元还用于:
将申请的指定空间大小的内存空间,确定为指定内存空间;
将固件镜像文件读取进程与无任务负载的中央处理器CPU绑定;
将固件镜像文件读取进程的CPU调度优先级设置为最高优先级。
较佳的,各正样本固件程序的固件镜像文件对应的正样本设备以及待检测的控制设备的闪存硬件信息相同。
较佳的,第二确定单元用于:
当控制设备的硬件存在变更时,对控制设备进行区域隔离复测,若复测获得的监控数据符合预设变更条件,则判定待检测固件程序正常,并根据获得的监控数据对基准读取速率变化信息进行更新;
当控制设备的硬件不存在变更时,则通过物理方式导出固件镜像文件,并根据导出的固件镜像文件,再次判断待检测固件程序是否异常。
一方面,提供一种控制设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时执行上述任一种固件程序检测方法的步骤。
一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一种固件程序检测方法的步骤。
本申请实施例提供的一种固件程序检测方法和装置中,通过读取待检测固件程序的固件镜像文件过程中的读取速率变化信息与基准读取速率变化信息之间的偏离度,判断待检测固件程序是否异常。这样,仅需要在软件层面进行固件程序检测,不需要关闭计算机,简化了检测的繁琐步骤,减低了检测成本,极大地扩展了固件程序检测的可行性,在不干扰控制设备承载业务的同时,极大的提升了的固件程序的安全性,保证了控制设备系统的底层安全性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施方式中一种固件程序检测的流程示意图;
图2为本申请实施方式中一种固件程序检测方法的实施流程图;
图3为本申请实施方式中一种速率变化曲线示意图;
图4为本申请实施方式中一种耗时变化曲线示意图;
图5为本申请实施方式中一种地址示意图;
图6为本申请实施方式中一种固件程序检测装置的结构示意图;
图7为本申请实施方式中一种控制设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先,对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
控制设备:可以安装各类应用,并且能够将已安装的应用中提供的对象进行显示的设备,该电子设备可以是移动的,也可以是固定的。本申请实施例中,控制设备主要为计算机、网络设备以及自动取款机等。
固件程序为用于为设备提供最底层的、最直接的硬件设置和控制的程序,是设备的核心部分。
固件后门:固件程序中的恶意程序,用以入侵固件程序。
BIOS是计算机主板芯片上的一个固件程序,通常为计算机启动后运行的第一个程序,是计算机运转的起点,具备访问所有设备、修改所有配置的最高权限。
闪存硬件信息:为闪存控制器以及闪存芯片的相关信息,可以包括以下参数中的任意一种或任意组合:主板串行外设接口(Serial Peripheral Interface,SPI)闪存控制器供应商标识(Identification,ID)、设备ID、详细型号文本、闪存芯片厂商ID以及闪存芯片容量。
本地读取时间:是根据本地授时确定的时间。
远程读取时间:是根据远程服务器授时确定的时间。
读取速率变化信息:用于表示读取时间和读取速率之间的映射关系的速率变化曲线,或者用于表示读取地址和基准读取耗时之间的映射关系的耗时变化曲线。
基准读取速率变化信息:是根据读取正样本固件程序的固件镜像文件确定的,用于表示读取时间和基准读取速率之间的映射关系的基准速率变化曲线,或者用于表示读取地址和基准读取耗时之间的映射关系的基准耗时变化曲线。
文件散列值:对文件进行哈希计算获得的哈希值。本申请实施例中,文件散列值为每一次读取固件镜像文件时确定的固件镜像文件的哈希值。
下面介绍本申请实施例的设计思想。
本申请中以BIOS为例对固件程序检测进行说明。BIOS是计算机主板芯片上的一个固件程序。BIOS固件程序中的固件后门具备全面的技术能力,可以运用最高权限监控运行时的程序与硬件动作,伪造计算机运行时内的信息,从而对抗固件程序检测。被病毒感染的BIOS会极大的威胁计算机的安全,导致计算机的重要信息被窃取或者计算机无法开机等问题。
为保证设备的安全,通常采用以下几种方式对BIOS固件程序进行检测:
第一种方式为:根据已知的恶意程序样本,获取相应的特征码。并将上述特征码,对解码后的BIOS固件程序的固件镜像文件进行特征匹配,从而根据匹配结果确认BIOS固件程序中是否存在固件后门。
其中,所谓固件后门为固件程序中的恶意程序,用以入侵固件程序。
但是,采用这种方式,需要获取可信的BIOS固件程序的固件镜像文件。由于固件后门具备计算机最高权限,可以伪造计算机运行时的所有数据,因此,只有在断电情况下,通过外部硬件才能获取可信的BIOS固件程序的固件镜像文件,检测成本较高,校测步骤繁琐。再者,仅能发现已知的固件后门,检出率较低。
第二种方式为:由于BIOS固件程序中的固件后门会延长BIOS固件程序的运行时长,因此,获取计算机启动过程中BIOS固件程序的运行时长,并判断该运行时长是否低于设定的最小运行时长,获得固件后门检测结果。
但是,采用这种方式,需要在计算机启动时进行检测,并且需要一个专用的可信计算模块用于时序度量,以及无法获得精确的最小运行时长,固件程序版本更新或者硬件变更均需要重新测量最小运行时长,检测步骤复杂,检测难度较高,并且增加了额外的硬件模块成本。
申请人对传统技术进行分析后发现,传统技术中并没有提供一种检出率高并且检测难度低的固件程序检测的技术方案。因此,亟待需要一种固件程序检测的技术方案,以提高固件程序检测的检出率,降低固件程序的检测难度。
鉴于此,考虑到BIOS中的恶意程序为隐藏自身的存在,针对BIOS的固件镜像文件,至少需要伪造2处连续地址段,1、文件区块CRC校验和地址段,需要伪造不存在恶意程序时的原始值;2、恶意程序自身存在地址段,需要伪造为空白,一般为FF或00。在读取固件镜像文件时,由于固件程序被篡改,局部地址范围内的读取速率或全部地址范围内的读取速率会降低,将产生更多的时间消耗,因此,根据固件镜像文件的读取过程中的读取速率变化,判断固件程序是否存在异常。
鉴于以上分析和考虑,本申请实施例中提供了一种固件程序检测方案,该方案中,获得读取待检测固件程序的固件镜像文件过程中的读取速率变化信息,并确定读取速率变化信息与基准读取速率变化信息之间的偏离度,当偏离度达到设定条件时,确定待检测固件程序异常。
本申请实施例的应用场景可以为计算机的固件程序检测、网络运营过程中的网络设备的后门植入检测,以及自动取款机的定期安检等。
本申请实施例应用的控制设备可以为计算机、网络设备以及自动取款机等设备。网络设备可以为路由器以及交换机等。网络设备通过对数据存储设备(Compact Flash,CF)卡中的固件程序进行检测,获得检测结果。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
参阅图1所示,为一种固件程序检测的流程示意图。在各控制设备中安装用于固件程序检测的检测应用,如,检测应用可以为洋葱代理(agent)。检测应用采集各控制设备的固件相关的闪存硬件信息,并将闪存硬件信息相同的已经投入业务使用的各控制设备组成待检测控制设备集合,以及将闪存硬件信息相同的未上线的控制设备组成基准控制设备集合。
其中,待检测控制设备集合中各控制设备的闪存硬件信息与基准控制设备集合中各控制设备的闪存硬件信息相同。闪存硬件信息可以包括以下参数中的任意一种或任意组合:主板SPI闪存控制器供应商ID、设备ID、详细型号文本、闪存芯片厂商ID以及闪存芯片容量。
本申请实施例中,检测应用预先根据基准控制设备集合中各控制设备在读取固件镜像文件的过程中的基准监控数据,确定基准读取速率变化信息。在对待检测的控制设备进行固件程序检测时,获得读取待检测固件程序的固件镜像文件的过程中的读取速率变化信息,并确定读取速率变化信息与基准读取速率变化信息之间的偏离度,当该偏离度达到设定条件时,确定待检测固件程序异常。进一步地,在确定待检测固件程序异常之后,发出告警,提醒检测人员采取进一步的检测操作。
实际应用中,设定条件可以根据实际应用场景进行相应设置,在此不再赘述。
一种实施方式中,读取速率变化信息为表示读取速率和读取时间之间的映射关系的读取速率变化曲线,基准读取速率变化信息为表示基准读取速率和读取时间之间的映射关系的基准读取速率变化曲线。
这样,就可以通过基准控制设备集合中的大量控制设备,确定基准读取速率变化信息,进而根据基准读取速率变化信息,判断任一控制设备的读取速率是否降低,从而获得该控制设备的固件程序检测结果。
参阅图2所示,为本申请提供的一种固件程序检测方法的实施流程图,该方法的具体流程如下:
步骤200:获得指定内存空间,以及设置固件镜像文件读取进程的CPU调度优先级。
具体的,执行步骤200时,可以执行以下步骤:
S2001:申请指定空间大小的内存空间,并将该内存空间确定为用于存储读取的固件镜像文件的指定内存空间。
其中,指定空间大小可以根据实际应用场景进行相应的设置,如,指定空间大小可以为512兆(M),在此不再赘述。
可选的,指定内存空间可以通过ramfs(一种文件系统)进行内存读写。ramfs是在内存上建立的文件系统。ramfs的内存读写速度远大于磁盘存储器的读写速度。例如,DDR3(一种内存规格)的内存数据带宽约12.8GB/S,而固态硬盘(Solid State Drives,SSD)的数据带宽约500MB/S,可提升约262倍度量分辨率。显然,这可以极大地提高检测的分辨率,即时序度量的信噪比。
S2002:将固件镜像文件读取进程与无任务负载的中央处理器绑定。
具体的,创建固件镜像文件读取进程,并将该固件镜像文件读取进程与一个无任务负载的中央处理器(Central Processing Unit/Processor,CPU)进行绑定。
S2003:将上述固件镜像文件读取进程的CPU调度优先级设置为最高优先级。
这样,就可以在后续固件镜像文件读取时避免由于其他进程抢占设备资源导致的读取速率降低的情况。
步骤201:按照指定的文件读取次数,读取固件镜像文件,并写入指定内存空间。
具体的,每一次读取固件镜像文件时,可以采用以下方式中的任意一种:
第一种方式为:按照该固件镜像文件的存储地址的地址顺序依次读取固件镜像文件的相应内容。
也就是说,获取存储固件镜像文件的地址范围,从该地址范围的初始地址依次读取,直至该地址范围的末尾地址,获得固件镜像文件的所有文件内容。
一种实施方式中,固件镜像文件存储于SPI闪存控制器中的闪存芯片中,即SPI闪存控制器的内存中,按照顺序地址读取的方式进行芯片读取。
第二种方式为:按照在该固件镜像文件对应的各存储地址中随机选择的序列地址读取固件镜像文件的相应内容。
也就是说,获取存储固件镜像文件的地址范围,依次通过该地址范围内随机选择的每一序列地址读取固件镜像文件的相应内容,直至获得固件镜像文件的所有文件内容。
这样,就可以采用随机序列读取的方式进行读取,获得固件镜像文件。
实际应用中,文件读取次数可以根据实际应用场景进行相应的设置,如,5次顺序地址读取以及5次随机序列地址读取。
这样,就可以采用不同的读取方式对固件镜像文件进行多次读取,从而提高后续读取速率变化信息的精确度。
本申请实施例中,采用内存读写的方式,将固件镜像文件多次读出并存储至指定内存空间,进而提高了固件程序检测的分辨率。
步骤202:获取固件镜像文件在各次文件读取过程中的监控数据。
其中,监控数据可以为固件镜像文件在各次读取过程中的每一读取时间的读取速率,也可以为在各次读取过程中的每一读取地址的读取耗时。
这样,就可以获取固件镜像文件在读取过程中的读取速率变化或者读取耗时变化。
步骤203:判断监控数据中包含的各文件散列值是否一致,若是,则执行步骤204,否则,执行步骤210。
具体的,为提高固件程序检测的准确性,监控数据中还包含每一次读取固件镜像文件时的文件散列值。也就是说,在每一次读取固件镜像文件时,还会计算该固件镜像文件的文件散列值。
其中,文件散列值为每一次读取固件镜像文件时确定的固件镜像文件的哈希值。
当各文件散列值不一致时,说明固件镜像文件由于未知因素的影响发生了变化,则为提高固件程序检测的精确性,增加文件读取次数,还可以将不一致的文件散列值对应读取过程的监控的数据删除,筛选出文件散列值一致时的读取过程中的监控数据。
这样,就可以通过文件散列值判断固件镜像文件是否由于未知因素的影响发生了变化。
可选的,步骤203也可以不执行。
步骤204:根据监控数据中包含的本地读取时间和相应的读取速率,以及远程读取时间和读取速率,判断是否存在时钟异常,若是,则执行步骤205,否则,执行步骤206。
具体的,为提高固件程序检测的准确性,分别采用本地授时以及远程服务器授时进行计时,获得本地读取时间和远程读取时间。
其中,本地读取时间为在文件读取过程中,通过本地授时的方式获取的读取时间。远程读取时间为在文件读取过程中,通过远程服务器授时的方式获取的读取时间。
一种实施方式中,对监控数据中包含的本地读取时间和相应的读取速率,进行线性回归处理,获得第一速率变化曲线;并对监控数据中包含的远程读取时间和相应的读取速率,进行线性回归处理,获得第二速率变化曲线。
当第一速率变化曲线和第二速率变化曲线不一致时,获得表示时钟异常的时钟检测结果。当第一速率变化曲线和第二速率变化曲线一致时,获得表示时钟正常的时钟检测结果。
进一步地,还可以采用以下方式:
确定第一速率变化曲线和第二速率变化曲线之间的偏离度低于预设时钟门限值时,确定时钟正常;确定第一速率变化曲线和第二速率变化曲线之间的偏离度不低于预设时钟门限值时,确定时钟异常。
其中,预设时钟门限值可以根据实际应用场景进行设置,如,预设时钟门限值可以为5s,在此不再赘述。
步骤205:执行时钟机制异常分析操作。
当第一速率变化曲线和第二速率变化曲线不一致或偏离度不低于预设时钟门限值时,说明控制设备的时钟机制被篡改了,可能存在硬件故障或固件后门,则停止固件程序检测流程,执行进一步地具体分析。
步骤206:对监控数据进行线性回归处理,获得读取速率变化信息。
具体的,采用线性回归算法对各次读取过程中的监控数据进行数据处理,获得速率变化信息。
一种实施方式中,监控数据中包含的信息为读取时间和相应的读取速率,读取速率变化信息为用于表示读取时间和读取速率之间的映射关系的速率变化曲线。
一种实施方式中,监控数据中包含的信息为读取地址和相应的读取耗时,读取速率变化信息为用于表示读取地址和基准读取耗时之间的映射关系的耗时变化曲线。
需要说明的是,速率变化信息中的每一读取时间对应的读取速率,还可以采用各次读取过程的该读取时间对应的读取速率平均值或方差值等方式确定。同理,速率变化信息中的每一读取地址对应的读取耗时,也可以采用各次读取过程的该读取地址对应的读取耗时平均值或方差值等方式确定,在此不再赘述。
步骤207:确定读取速率变化信息与基准读取速率变化信息之间的偏离度。
具体的,一种实施方式中,读取速率变化信息为用于表示读取时间和读取速率之间的映射关系的速率变化曲线。基准读取速率变化信息为用于表示读取时间和基准读取速率之间的映射关系的基准速率变化曲线。则读取速率变化信息与基准读取速率变化信息之间的偏离度为速率变化曲线与基准速率变化曲线之间的偏离度。
参阅图3所示,为一种速率变化曲线示意图。通过图3中包含的速率变化曲线与基准速率变化曲线可知,待检测固件程序的固件镜像文件在第一时间区间和第二时间区间内的读取速率低于基准读取速率。
也就是说,在第一时间区间和第二时间区间,固件镜像文件的读取速率降低了。
其中,偏离度可以为速率变化曲线与基准速率变化曲线之间的速率差值。
一种实施方式中,读取速率变化信息为用于表示读取地址和基准读取耗时之间的映射关系的耗时变化曲线。基准读取速率变化信息为用于表示读取地址和基准读取耗时之间的映射关系的基准耗时变化曲线。则读取速率变化信息与基准读取速率变化信息之间的偏离度为耗时变化曲线与基准耗时变化曲线之间的偏离度。
参阅图4所示,为一种耗时变化曲线示意图。通过图4中包含的耗时变化曲线与基准耗时变化曲线可知,待检测固件程序的固件镜像文件在第一地址范围和第二地址范围对应的读取耗时高于基准读取耗时。
也就是说,在第一地址范围和第二地址范围内,固件镜像文件的读取耗时增加了。
其中,偏离度可以为耗时变化曲线与基准耗时变化曲线之间的耗时差值。
其中,基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的。本申请实施例中,正样本固件程序为未投入业务使用的空白的正样本设备的固件程序。由于控制设备只有在投入业务使用后才会有可能被入侵,因此,为保证正样本固件程序未被入侵,将未投入业务使用的空白的控制设备作为正样本设备。
在执行步骤207之前,获取与待检测控制设备的闪存硬件信息相同的各正样本设备组成基准控制设备集合,并根据各正样本设备中的正样本固件程序的固件镜像文件的读取过程,确定基准读取速率变化信息。
其中,确定基准读取速率变化信息时,可以采用以下步骤:
首先,分别针对基准控制设备集合中的每一正样本设备,执行以下步骤:
S2071:获得指定内存空间,以及设置固件镜像文件读取进程的CPU调度优先级。
S2072:按照指定的文件读取次数,读取固件镜像文件并写入指定内存空间。
S2073:获取固件镜像文件在各次文件读取过程中的基准监控数据。
具体的,执行S2071-S2073时,详细步骤参见上述步骤200-步骤202。
需要说明的是,一种实施方式中,在每一次文件读取时,计算固件镜像文件的文件散列值,当该次文件读取时的文件散列值与其它文件散列值不一致时,丢弃该次文件读取时监控的数据。
在获取基准监控数据之后,对各正样本设备的基准监控数据进行线性回归处理,获得基准读取速率变化信息。
其中,确定基准读取速率变化信息时,具体步骤参见上述步骤206。
这样,就可以根据各正样本固件程序的镜像文件读取过程的基准监控数据,确定基准读取速率变化信息。
步骤208:当偏离度达到设定条件时,确定待检测固件程序异常。
具体的,执行步骤208时,可以采用以下方式中的任意一种或组合:
第一种方式为:偏离度为速率差值,则确定最大速率差值高于预设速率异常门限值时,确定待检测固件程序异常。
第二种方式为:偏离度为耗时差值,则确定最大耗时差值高于预设耗时异常门限值时,确定待检测固件程序异常。
进一步地,还可以根据速率变化曲线与基准速率变化曲线不一致的时间长度,和/或耗时变化曲线与基准耗时变化曲线不一致的地址范围,判断待检测固件程序是否异常。
实际应用中,预设速率异常门限值和预设耗时异常门限值,均可以根据实际应用场景进行设置,在此不再赘述。
例如,通过图4中包含的耗时变化曲线与基准耗时变化曲线可知,待检测固件程序的固件镜像文件在第一地址范围和第二地址范围对应的读取耗时差值均高于预设耗时异常门限值,则判定待检测固件程序异常。参阅图5所示,为一种地址示意图。图5中的第一地址区间为固件镜像文件对应的地址,第二地址区间即上述图4中的第一地址范围,为文件分段校验和对应的地址即文件区块CRC校验和地址段,第三地址区间即上述图4中的第二地址范围,为恶意程序的实际存储地址。
这样,当偏离度达到设定条件时,初步确定固件程序存在恶意程序。
步骤209:发出工单报警并执行应急取证操作。
具体的,一方面,将包含异常检测结果的工单直接呈现给管理人员,或者,将工单发送至移动终端或计算机,通过移动终端或计算机将工单报告呈现给管理人员,以向管理人员发出报警。
其中,工单可以包含以下参数中的任意一种或任意组合:事件时间、业务信息、异常详情以及建议操作。
其中,事件时间可以为异常检测结果呈现时间。业务信息可以为控制设备负责人,所属区域以及对应的网络地址信息等。异常详情可以为固件程序的检测时间,偏离度以及异常检测结果等。建议操作可以为:建议将业务迁出该控制设备。
另一方面,获取控制设备当前的设备信息和历史设备信息,根据当前的设备信息和历史设备信息,判断控制设备的硬件是否存在变更。其中,设备信息不包含闪存硬件信息。
当控制设备的硬件不存在变更时,则执行应急取证操作,具体的,应急取证操作可以采用以下步骤:通过物理方式导出固件镜像文件,并根据导出的固件镜像文件,再次判断所述待检测固件程序是否异常。
一种实施方式中,将控制设备脱离业务网络,并通过物理接触或基板管理控制器(Baseboard Management Controller,BMC)的方式导出固件镜像文件,根据导出的固件镜像文件进一步确认固件程序中是否存在固件后门。若确定固件程序中不存在固件后门,则判定出现主板硬件故障或被插入硬件级别后门,建议直接将控制设备退役或进行司法取证。
进一步地,当控制设备的硬件存在变更时,对控制设备进行区域隔离复测,若复测获得的监控数据符合预设变更条件,则判定待检测固件程序正常,并根据获得的监控数据对基准读取速率变化信息进行更新。
一种实施方式中,将控制设备在隔离区域内进行复测。若确定复测的监控数据的变化范围低于预设变化范围门限值,并且重刷不同固件程序版本时获得的监控数据的变化范围低于预设变化范围门限值,则将控制设备脱离隔离区域,判定待检测固件程序正常,并将该控制设备的所有监控数据添加到基准监控数据中,并根据更新后的基准监控数据对基准读取速率变化信息进行更新。
其中,预设变更条件和预设变化范围门限值可以根据实际应用场景进行具体设置,如,预设变更条件可以为监控数据的变化范围低于预设变化范围门限值,在此不再赘述。
步骤210:调整文件读取次数,执行步骤201。
本申请实施例中,针对固件程序中的恶意程序隐藏自身时需要额外的时序开销的应用场景,通过读取待检测固件程序的固件镜像文件过程中的读取速率变化信息与基准读取速率变化信息之间的偏离度,判断待检测固件程序是否异常。这样,不需要通过额外的物理设备获取固件镜像文件,以对固件镜像文件进行解码以及特征匹配,也不需要获取设备启动时固件程序的精确的最小运行时间,仅需要在纯软件层面进行固件程序检测,可以在控制设备运行时检测,不需要关闭计算机,不需要录入已知的恶意程序的样本特征,也不需要对固件程序的代码进行改造,固件程序版本以及硬件配置变更不影响检测结果,简化了检测的繁琐步骤,减低了检测成本,极大地扩展了固件程序检测的可行性,在不干扰控制设备承载业务的同时,极大的提升了的固件程序的安全性,保证了控制设备系统的底层安全性。
基于同一发明构思,本申请实施例中还提供了一种固件程序检测装置,由于上述装置及设备解决问题的原理与一种固件程序检测方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图6示,其为本申请实施例提供的一种固件程序检测装置的结构示意图。一种固件程序检测装置包括:
获得单元601,用于获得读取待检测固件程序的固件镜像文件过程中的读取速率变化信息;
第一确定单元602,用于确定读取速率变化信息与基准读取速率变化信息之间的偏离度,基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;
第二确定单元603,用于当偏离度达到设定条件时,确定待检测固件程序异常。
较佳的,获得单元601用于:
按照指定的文件读取次数,读取固件镜像文件,并将读取的固件镜像文件并写入指定内存空间;
获取固件镜像文件在各次文件读取过程中的监控数据;
对监控数据进行线性回归处理,获得读取速率变化信息。
较佳的,获得单元601用于:
每一次读取固件镜像文件时,采用以下方式中的任意一种:
按照该固件镜像文件的存储地址的地址顺序依次读取该固件镜像文件的相应内容;或者,按照在该固件镜像文件对应的各存储地址中随机选择的序列地址读取固件镜像文件的相应内容。
较佳的,获得单元601还用于:
获取监控数据中还包含的各文件散列值,文件散列值为每一次读取固件镜像文件时确定的固件镜像文件的哈希值;
当各文件散列值不一致时,调整文件读取次数;
按照调整后的文件读取次数,执行按照指定的文件读取次数读取固件镜像文件的步骤。
较佳的,监控数据中包含读取时间和相应的读取速率;
读取时间包括本地读取时间和远程读取时间;
本地读取时间是根据本地授时确定的时间;
远程读取时间是根据远程服务器授时确定的时间;
读取速率变化信息为用于表示读取时间和读取速率之间的映射关系的速率变化曲线,基准读取速率变化信息为用于表示读取时间和基准读取速率之间的映射关系的基准速率变化曲线。
较佳的,获得单元601还用于:
对监控数据中包含的本地读取时间和相应的读取速率,进行线性回归处理,获得第一速率变化曲线;
对监控数据中包含的远程读取时间和相应的读取速率,进行线性回归处理,获得第二速率变化曲线;
当第一速率变化曲线和第二速率变化曲线不一致时,获得时钟检测结果。
较佳的,获得单元601还用于:
将申请的指定空间大小的内存空间,确定为指定内存空间;
将固件镜像文件读取进程与无任务负载的中央处理器CPU绑定;
将固件镜像文件读取进程的CPU调度优先级设置为最高优先级。
较佳的,各正样本固件程序的固件镜像文件对应的正样本设备以及待检测的控制设备的闪存硬件信息相同。
较佳的,第二确定单元603用于:
当控制设备的硬件存在变更时,对控制设备进行区域隔离复测,若复测获得的监控数据符合预设变更条件,则判定待检测固件程序正常,并根据获得的监控数据对基准读取速率变化信息进行更新;
当控制设备的硬件不存在变更时,则通过物理方式导出固件镜像文件,并根据导出的固件镜像文件,再次判断待检测固件程序是否异常。
本申请实施例提供的一种固件程序检测方法和装置中,通过读取待检测固件程序的固件镜像文件过程中的读取速率变化信息与基准读取速率变化信息之间的偏离度,判断待检测固件程序是否异常。这样,仅需要在软件层面进行固件程序检测,不需要关闭计算机,简化了检测的繁琐步骤,减低了检测成本,极大地扩展了固件程序检测的可行性,在不干扰控制设备承载业务的同时,极大的提升了的固件程序的安全性,保证了控制设备系统的底层安全性。
参阅图7所示,为一种控制设备的结构示意图。基于同一技术构思,本申请实施例还提供了一种控制设备,可以包括存储器701和处理器702。
存储器701,用于存储处理器702执行的计算机程序。存储器701可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。处理器702,可以是一个中央处理单元(central processing unit,CPU),或者为数字处理单元等。本申请实施例中不限定上述存储器701和处理器702之间的具体连接介质。本申请实施例在图7中以存储器701和处理器702之间通过总线703连接,总线703在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线703可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器701可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器701也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器701是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器701可以是上述存储器的组合。
处理器702,用于调用存储器701中存储的计算机程序时执行如图2中所示的实施例提供的固件程序检测方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意方法实施例中的固件程序检测方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台控制设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种固件程序检测方法,其特征在于,包括:
采用以下方式中的任意一种读取待检测固件程序的固件镜像文件:按照所述固件镜像文件的存储地址的地址顺序依次读取所述固件镜像文件的相应内容;或者,按照在所述固件镜像文件对应的各存储地址中随机选择的序列地址读取所述固件镜像文件的相应内容;
获得读取所述固件镜像文件过程中的读取速率变化信息;
确定所述读取速率变化信息与基准读取速率变化信息之间的偏离度,所述基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;
当所述偏离度达到设定条件时,确定所述待检测固件程序异常。
2.如权利要求1所述的方法,其特征在于,获得读取所述固件镜像文件过程中的读取速率变化信息,包括:
按照指定的文件读取次数,读取所述固件镜像文件,并将读取的固件镜像文件并写入指定内存空间;
获取所述固件镜像文件在各次文件读取过程中的监控数据;
对所述监控数据进行线性回归处理,获得读取速率变化信息。
3.如权利要求2所述的方法,其特征在于,进一步包括:
获取所述监控数据中还包含的各文件散列值,所述文件散列值为每一次读取所述固件镜像文件时确定的所述固件镜像文件的哈希值;
当各文件散列值不一致时,调整所述文件读取次数;
按照调整后的文件读取次数,执行所述按照指定的文件读取次数读取所述固件镜像文件的步骤。
4.如权利要求2所述的方法,其特征在于,所述监控数据中包含读取时间和相应的读取速率;
所述读取时间包括本地读取时间和远程读取时间;
所述本地读取时间是根据本地授时确定的时间;
所述远程读取时间是根据远程服务器授时确定的时间;
所述读取速率变化信息为用于表示读取时间和读取速率之间的映射关系的速率变化曲线,所述基准读取速率变化信息为用于表示读取时间和基准读取速率之间的映射关系的基准速率变化曲线。
5.如权利要求4所述的方法,其特征在于,进一步包括:
对所述监控数据中包含的本地读取时间和相应的读取速率,进行线性回归处理,获得第一速率变化曲线;
对所述监控数据中包含的远程读取时间和相应的读取速率,进行线性回归处理,获得第二速率变化曲线;
当所述第一速率变化曲线和第二速率变化曲线不一致时,获得时钟检测结果。
6.如权利要求2所述的方法,其特征在于,在按照指定的文件读取次数,读取所述固件镜像文件之前,进一步包括:
将申请的指定空间大小的内存空间,确定为指定内存空间;
将固件镜像文件读取进程与无任务负载的中央处理器CPU绑定;
将所述固件镜像文件读取进程的CPU调度优先级设置为最高优先级。
7.如权利要求1-5任一项所述的方法,其特征在于,各正样本固件程序的固件镜像文件对应的正样本设备以及待检测的控制设备的闪存硬件信息相同。
8.如权利要求1-5任一项所述的方法,其特征在于,在当所述偏离度达到设定条件时,确定所述待检测固件程序异常之后,进一步包括:
当控制设备的硬件存在变更时,对所述控制设备进行区域隔离复测,若复测获得的监控数据符合预设变更条件,则判定所述待检测固件程序正常,并根据获得的监控数据对基准读取速率变化信息进行更新;
当所述控制设备的硬件不存在变更时,则通过物理方式导出所述固件镜像文件,并根据所述导出的固件镜像文件,再次判断所述待检测固件程序是否异常。
9.一种固件程序检测装置,其特征在于,包括:
获得单元,用于采用以下方式中的任意一种读取待检测固件程序的固件镜像文件:按照所述固件镜像文件的存储地址的地址顺序依次读取所述固件镜像文件的相应内容;或者,按照在所述固件镜像文件对应的各存储地址中随机选择的序列地址读取所述固件镜像文件的相应内容;获得读取所述固件镜像文件过程中的读取速率变化信息;
第一确定单元,用于确定所述读取速率变化信息与基准读取速率变化信息之间的偏离度,所述基准读取速率变化信息是根据读取正样本固件程序的固件镜像文件确定的;
第二确定单元,用于当所述偏离度达到设定条件时,确定所述待检测固件程序异常。
CN201910679097.6A 2019-07-25 2019-07-25 一种固件程序检测方法和装置 Active CN110457907B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910679097.6A CN110457907B (zh) 2019-07-25 2019-07-25 一种固件程序检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910679097.6A CN110457907B (zh) 2019-07-25 2019-07-25 一种固件程序检测方法和装置

Publications (2)

Publication Number Publication Date
CN110457907A CN110457907A (zh) 2019-11-15
CN110457907B true CN110457907B (zh) 2021-04-20

Family

ID=68483511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910679097.6A Active CN110457907B (zh) 2019-07-25 2019-07-25 一种固件程序检测方法和装置

Country Status (1)

Country Link
CN (1) CN110457907B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008379B (zh) * 2019-11-22 2023-02-28 腾讯科技(深圳)有限公司 电子设备的固件安全检测方法及相关设备
CN112379834B (zh) * 2020-11-11 2022-12-02 深圳市豪恩汽车电子装备股份有限公司 存储卡管理装置及方法
CN114996226B (zh) * 2021-11-05 2023-03-31 荣耀终端有限公司 图标检测方法、电子设备、可读存储介质和程序产品
CN115422555B (zh) * 2022-11-04 2023-02-28 北京华云安信息技术有限公司 后门程序检测方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965989B1 (en) * 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
CN104268049A (zh) * 2014-09-30 2015-01-07 北京金山安全软件有限公司 判断存储设备异常的方法、装置及终端
CN105512562A (zh) * 2015-12-01 2016-04-20 珠海市君天电子科技有限公司 一种漏洞挖掘方法、装置及电子设备
CN107944279A (zh) * 2017-12-19 2018-04-20 郑州云海信息技术有限公司 基于uefi的bios漏洞扫描装置及扫描方法
CN108920326A (zh) * 2018-06-14 2018-11-30 阿里巴巴集团控股有限公司 确定系统耗时异常的方法、装置及电子设备
CN109558329A (zh) * 2018-12-10 2019-04-02 广东浪潮大数据研究有限公司 一种程序检测方法、装置、设备及可读存储介质
CN109726058A (zh) * 2018-12-30 2019-05-07 联想(北京)有限公司 检测方法、装置及计算机设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073805A (zh) * 2016-11-15 2018-05-25 华为技术有限公司 一种数据读取方法和存储器
CN108121776A (zh) * 2017-12-13 2018-06-05 深圳市智物联网络有限公司 一种数据读取方法及装置
CN109582245A (zh) * 2018-12-06 2019-04-05 联想(北京)有限公司 数据处理方法、装置及设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6965989B1 (en) * 2001-08-14 2005-11-15 Network Appliance, Inc. System and method for fast reboot of a file server
CN104268049A (zh) * 2014-09-30 2015-01-07 北京金山安全软件有限公司 判断存储设备异常的方法、装置及终端
CN105512562A (zh) * 2015-12-01 2016-04-20 珠海市君天电子科技有限公司 一种漏洞挖掘方法、装置及电子设备
CN107944279A (zh) * 2017-12-19 2018-04-20 郑州云海信息技术有限公司 基于uefi的bios漏洞扫描装置及扫描方法
CN108920326A (zh) * 2018-06-14 2018-11-30 阿里巴巴集团控股有限公司 确定系统耗时异常的方法、装置及电子设备
CN109558329A (zh) * 2018-12-10 2019-04-02 广东浪潮大数据研究有限公司 一种程序检测方法、装置、设备及可读存储介质
CN109726058A (zh) * 2018-12-30 2019-05-07 联想(北京)有限公司 检测方法、装置及计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
如何检测固件是否存在后门;佚名;《https://zhidao.baidu.com/question/1371699348165375979.html》;20170822;全文 *

Also Published As

Publication number Publication date
CN110457907A (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
CN110457907B (zh) 一种固件程序检测方法和装置
KR101036702B1 (ko) 프로그램 실행 불안정성의 상태들에 기초하여 소프트웨어프로그램에 대한 커스텀 제품 지원을 제공하기 위한 방법,시스템 및 장치
US9146839B2 (en) Method for pre-testing software compatibility and system thereof
US9747182B2 (en) System and method for in-service diagnostics based on health signatures
US20080028264A1 (en) Detection and mitigation of disk failures
US10802847B1 (en) System and method for reproducing and resolving application errors
US7818625B2 (en) Techniques for performing memory diagnostics
CN111638936B (zh) 一种基于内置安全体系结构的虚拟机静态度量方法和装置
JP2007323193A (ja) 性能負荷異常検出システム、性能負荷異常検出方法、及びプログラム
CN112818307A (zh) 用户操作处理方法、系统、设备及计算机可读存储介质
CN111158945B (zh) 内核故障处理方法、装置、网络安全设备和可读存储介质
CN108090352B (zh) 检测系统及检测方法
CN109086162B (zh) 一种内存诊断方法和装置
CN111198832A (zh) 一种处理方法和电子设备
US8312433B2 (en) Operating system aided code coverage
US20120272103A1 (en) Software operability service
CN114153503A (zh) 一种bios控制方法、装置、介质
CN106354602A (zh) 一种服务监控方法和设备
CN112650610A (zh) 一种Linux系统崩溃控制方法、系统及介质
CN115134164B (zh) 一种上传行为检测方法、系统、设备及计算机存储介质
US20060230196A1 (en) Monitoring system and method using system management interrupt
US20240095351A1 (en) Hypervisor-assisted data backup and recovery for next generation anti-virus (ngav) systems
CN108415788B (zh) 用于对无响应处理电路作出响应的数据处理设备和方法
CN113901443A (zh) 守护进程故障检测方法及装置、存储介质及电子设备
CN115118464A (zh) 一种失陷主机检测方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40016254

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant