基于UEFI的BIOS漏洞扫描装置及扫描方法与流程

文档序号:14217506阅读:421来源:国知局
本发明涉及计算机
技术领域
:,具体的说是一种基于uefi的bios漏洞扫描装置及扫描方法。
背景技术
::随着计算机技术和网络信息化的高速发展,计算机病毒爆发的次数以及新型计算机病毒出现的速度都呈现出逐年迅速上升的趋势,如何在第一时间发现、清除病毒成为业界非常关心的问题。为了解决传统bios的不足,intel公司提出了新一代固件技术efi,后来发展成为uefi(统一可扩展固件接口)。该技术通过在硬件和操作系统之间增加一层抽象,屏蔽底层硬件特性。通过通用的方式对系统进行环境引导,同时uefi还提供了一个调试环境,能够让用户在操作系统启动之前运行某些应用程序。固件层存在的安全漏洞已成为信息安全业界重要的威胁因素之一,利用其实施的攻击具有不易清除、难以检测、破坏性强等固有特点。因此研究基于固件层的攻击,从底层为计算机安全提供了有力的保障,具有重要的应用价值和研究意义。bios作为固件层必不可少的固件程序,是计算机启动后首先执行的程序,为计算机提供最底层、最直接的硬件控制。uefi是新一代的bios标准,定义了操作系统与硬件平台固件之间的接口规范。它的出现不仅仅改变了传统bios的启动方式,解决了传统bios难以扩展等问题,并给用户提供了便利的底层开发环境,但同时也不可避免地带来了一些安全隐患。目前,现有技术缺乏对于bios漏洞的检测手段。技术实现要素:为了解决上述问题,提供了一种基于uefi的bios漏洞扫描装置及扫描方法,可以用于各种需要扫描基于uefi的bios漏洞的场景,从而保证bios系统的安全可靠。本发明实施例提供了一种基于uefi的bios漏洞扫描装置,所述的装置包括:漏洞库,用于存储漏洞的特征码,在漏洞扫描过程中作为特征码匹配匹配对象,以验证待测bios是否存在漏洞;uefi固件启动信息扫描单元,实现对启动项信息的获取、处理和分析,以验证启动项的合法性;bios配置信息扫描单元,实现对bios的基本配置信息的获取、分析,以判断是否符合正常启动的要求;驱动健康状况扫描单元,对uefibios加载的各种设备的驱动以及控制器的状态进行扫描,检测各驱动是否处于正常工作状态或者是否被恶意修改。本发明实施例还提供了一种基于uefi的bios漏洞扫描方法,所述的方法包括:s1:加载用于运行uefi应用程序的uefi运行环境;s2:bios配置信息扫描单元从smbios数据表中获取bios配置信息;s3:bios漏洞扫描装置调用函数从全局变量中获取uefi固件启动信息;s4:驱动健康状况扫描单元与efidriverhealthprotocol对接,获取驱动健康状况。进一步的,步骤s1的具体实现过程为:首先,加电后,将平台初始化,之后依次加载uefi映像和uefi启动管理器,成功进入系统;然后,终止启动服务返回启动菜单,在启动菜单中选择进入uefi应用程序,载入临时操作系统,并建立临时操作系统环境。进一步的,步骤s2的具体实现过程为:利用协议efi_smbios_protocol定义的查询smbios记录的接口来获取相应的bios信息。进一步的,步骤s3的具体实现过程为:s31:调用efi_get_variable()函数可以获取bootorder中的值;s32:将步骤s31中获取的启动项变量中的描述符分离为各字段,并将各字段注册到bdscommonoptionlist结构中;s33:通过系统中的属性信息表获取启动性的状态信息。进一步的,步骤s4的具体实现过程为:s41:使用uefi引导服务中提供的locatehandlebuffer函数来检索平台中安装了efidriverhealthprotocol的驱动;s42:循环每一个检索到的驱动句柄,使用uefi引导服务中提供的handleprotocol函数来获得一个driverhealthprotocol实例;s43:使用driverhealthprotocol中的gethealthstatus方法来获取该驱动以及驱动所管理的控制器的健康状态;s44:对返回的状态进行处理,通过component_name_protocol获取该驱动或者控制器的名称。进一步的,所述的步骤s4还包括:s45:如果有处于非健康状态下的驱动,则将驱动名称以及驱动状态输出,提示用户需要修改。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:1、本装置通过bios配置信息扫描、启动项信息扫描以及驱动健康状态扫描,实现对bios漏洞的扫描,从而保证bios系统的安全可靠。同时,本装置与操作系统完全隔离,通过转换控制权的方式实现与固件层的信息交互。2、通过建立运行环境,并调用函数对接以实现bios配置信息、启动项信息以及驱动健康状态信息的获取,可以快速实现对bios漏洞的全面扫描,增强硬件架构的安全性。附图说明图1是本发明装置实施例的原理图;图2是本发明装置的实现原理图;图3是本发明方法实施例的流程图;图4是本发明运行环境加载的原理图;图5是本发明属性表的参考图。具体实施方式为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。实施例如图1所示,本发明实施例提供了一种基于uefi的bios漏洞扫描装置,所述的装置包括漏洞库、uefi固件启动信息扫描单元、bios配置信息扫描单元、驱动健康状况扫描单元。所述的漏洞库用于存储漏洞的特征码,在漏洞扫描过程中作为特征码匹配匹配对象,以验证待测bios是否存在漏洞。uefi固件启动信息扫描单元,实现对启动项信息的获取、处理和分析,以验证启动项的合法性。bios配置信息扫描单元,实现对bios的基本配置信息的获取、分析,以判断是否符合正常启动的要求。驱动健康状况扫描单元,对uefibios加载的各种设备的驱动以及控制器的状态进行扫描,检测各驱动是否处于正常工作状态或者是否被恶意修改。如图2所示,本装置与操作系统完全隔离,通过转换控制权的方式实现与固件层的信息交互。如图3所示,本发明实施例还提供了一种基于uefi的bios漏洞扫描方法,所述的方法包括:s1:加载用于运行uefi应用程序的uefi运行环境。uefi允许通过装载uefi应用程序和uefi驱动来扩展架构固件。当加载uefi驱动和uefi应用程序的时候,驱动和应用程序有权使用uefi所定义的所有的引导服务和运行时服务。图4显示了uefi启动流程图:加电后,第一步是平台初始化,之后uefi映像将被加载(包括加载uefi驱动程序和应用程序)之后是加载uefi启动管理器,如果成功进入系统,将终止启动服务返回启动菜单。而如果在启动菜单中选择进入uefi应用程序,临时操作系统将被载入,并建立临时操作系统环境。而如果临时操作系统被成功加载,相应的uefi运行环境即被成功建立。uefishell实现了这种临时操作系统环境,它是一种特殊的uefi应用程序。uefishell提供控制台界面,用于启动应用程序、加载uefi协议和设备驱动程序以及执行简单的脚本文件。该界面也提供命令界面执行相应命令或uefi应用程序。事实上,uefishell是一个操作环境,作为一个外壳程序负责接收用户交互。它接受用户输入,传递用户输入至内核执行,将执行结果显示给用户。它类似于windows环境下的cmd或者linux环境下的shell界面。s2:bios配置信息扫描单元从smbios数据表中获取bios配置信息。uefi中efi_smbios_protocol定义了一个增加、删除或者查询smbios记录的接口。uefi启动时,安装该协议的uefi驱动程序将负责创建smbios数据表,并将指向该数据表的指针放在efi系统配置表中。在基于uefi的病毒扫描引擎的bios配置信息扫描中,使用该协议中定义的查询smbios记录的接口来获取相应的bios信息。efi_smbios_protocol的定义如下所示:typedefstruct_efi_smbios_protocol{efi_smbios_addadd;efi_smbios_update_stringupdatestring;efi_smbios_removeremove;efi_smbios_get_nextgetnext;uint8majorversion;uint8minorversion;}efi_smbios_protocol;getnext函数用于查询所有或者部分smbios记录,其函数声明如下:typedefefi_status(efiapi*efi_smbios_get_next)(inconstefi_smbios_protocol*this,inoutefi_smbios_handle*smbioshandle,inefi_smbios_type*type,optionaloutefi_smbios_table_header**record,outefi_handle*producerhandle,optional)其中,type参数表示要查询的smbios记录的类型,uefi中定义了40余种smbios记录,这里只扫描了其中比较关键的几项,包括bios版本、cpu型号、cpu主频、系统内存信息。如果bios版本过低将建议用户更新至最新版本的bios,以防低版本的bios被发现的漏洞容易遭受恶意的攻击。或者其他的信息不正确,例如cpu主频、系统内存等如果与正常情况不符,也有可能是由于遭到了恶意的篡改,应该提高警惕。s3:bios漏洞扫描装置调用函数从全局变量中获取uefi固件启动信息。uefi内核中提供的运行时服务在引导和操作系统运行的时候都能调用。运行时服务的这种特性,为底层资源和上层操作系统之间的交互带来便利,但是也从底层为整个计算机系统带来安全隐患。启动项加载器可以在uefibios中随意添加或更改启动项。启动项加载可以加载带有运行时服务的agent入侵程序。该入侵程序通过调用运行时服务把自身的入侵性服务推入操作系统,即可实现uefibios级的操作系统控制。另外可通过该入侵服务开启的后门访问这台机器的资源。为此,基于uefi的扫描引擎对uefi的启动项进行了扫描,并推测启动项的合法性。具体的实现方法主要分为以下三个步骤:第一步,获取启动项信息。启动管理器负责启动uefi应用程序(包括osloader)、uefi驱动程序等。启动项信息存放在全局变量bootorder中。bootorder包含一个uint16类型的向量,这个向量是由boot####选项构成的有序列表。向量中的第一个元素是第一个逻辑启动项的值,第二个元素是第二个逻辑启动项的值,以此类推。这些启动项的启动顺序就是启动管理器的默认启动顺序。uefi运时服务表中定义了获取全局变量的函数接口,efi_get_variable()函数可以获取bootorder中的值。第二步,处理启动项信息。每一个启动项变量都包含一个efi_load_option描述符。该描述符是一个以字节为单位的可变长度的字段缓存区。缓存区中各字段按以下顺序出现:uint16attributes;//加载项属性uint16filepathlistlength;//filepathlist的长度char16description[];//用户可读的描述符efi_device_path_protocolfilepathlist[];//uefi设备路径的打包数组uint8optionaldata[];//二进制数据缓冲区为了方便调用及分析efi_load_option描述符中各个字段的信息。通常需要分离各字段,并将各字段注册到bdscommonoptionlist结构中。第三步,分析启动项信息。分析的主要内容是启动项的属性及所属设备类型等信息。通过各属性描述判断该启动项是否具有潜在威胁。图5的表中列出了启动项的各种属性。efi_device_path_protocol协议可以在任何设备句柄中使用,获取相关物理或逻辑设备的通用路径或位置信息。一个无效的句柄指其不能逻辑映射到一个物理设备,即该句柄不支持设备路径协议。设备路径指出该句柄相关的设备位置;而设备路径的大小由构成该设备的结构体决定。启动项的filepathlist字段存储了uefi设备路径信息,通过efi_device_path_protocol协议可识别出该启动项所属的设备类型。通过执行以上三个步骤,可以获取所有启动项的值、属性、设备类型等信息,以此判断该启动项是否是正常的启动设备和是否具有潜在的安全威胁,将这些信息作为选择启动方式的依据。以下是认为具有威胁的情况:1)将所获的启动项信息与启动管理器的启动菜单进行比较,两者不一致。2)可以识别出启动项的设备类型信息,但该启动项的属性不是load_option_active。3)启动项的属性为load_option_hidden,但出现在启动菜单中。s4:驱动健康状况扫描单元与efidriverhealthprotocol对接,获取驱动健康状况。步骤s4的具体实现过程为:s41:使用uefi引导服务中提供的locatehandlebuffer函数来检索平台中安装了efidriverhealthprotocol的驱动。driverhealthhandles是已经安装了efidriverhealthprotocol的驱动句柄,numhandles则是上述驱动的数量。s42:循环每一个检索到的驱动句柄,使用uefi引导服务中提供的handleprotocol函数来获得一个driverhealthprotocol实例;s43:使用driverhealthprotocol中的gethealthstatus方法来获取该驱动以及驱动所管理的控制器的健康状态;s44:对返回的状态进行处理,通过component_name_protocol获取该驱动或者控制器的名称。所述的步骤s4还包括:s45:如果有处于非健康状态下的驱动,则将驱动名称以及驱动状态输出,提示用户需要修改。尽管说明书及附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改或者等同替换;而一切不脱离本发明创造的精神和范围的技术方案及其改进,其均涵盖在本发明创造专利的保护范围当中。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1