BIOS Rootkit的实现技术

2013-04-18 03:55宗俊珺
计算机与现代化 2013年11期
关键词:驱动程序调用芯片

糜 旗,宗俊珺,徐 超

(1.北京交通大学,北京 100044;2.中国航天科技集团第八研究院上海航天动力技术研究所,上海 201109)

0 引言

近年来,针对计算机基本输入输出系统(Basic Input Output System,BIOS)的攻击不断增加。2011年9月,第一个正式的BIOS Rootkit病毒被发现。据分析,该病毒能够感染电脑主板的芯片和硬盘主引导区(Main Boot Record,MBR),再控制 Windows系统文件,加载恶意代码,使感染用户无论重装系统、格式化硬盘,甚至换掉硬盘都无法彻底清除病毒。于是针对BIOS的攻击也开始逐渐引起人们的关注。

为了减少和阻止这类攻击,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)制定了新的安全指导方针来更新BIOS,同时NIST还要求美国高科技制造业提高BIOS的安全规范。

1 BIOS Rootkit的基本概念

1.1 BIOS 概念

BIOS是计算机基本输入输出系统Basic Input-Output System的缩写,这类程序都会刷写到计算机主板上ROM芯片中,包含基本输入输出程序、通电自检程序、启动自举程序和配置信息内容。因此通常也可以把BIOS看成是一个软件与硬件的结合体,它为主板和主要外围设备服务[1-2]。

当计算机开始通电启动,中央处理器(Central Processing Unit,CPU)从主板 BIOS芯片中获取程序代码和配置信息,得到控制权并且发挥作用。工作流程大致为:先自检CPU内外部的设置,激活DRAM;然后对芯片组与外围设备进行初始化设置;接着驱动系统存储介质,最后加载操作系统。此时BIOS引导工作暂告一个段落,转为后台支持和协调。

1.2 Rootkit概念

Rootkit最早出现于20世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了Rootkit这个名词。这篇安全资讯就是CERT-CC的CA-1994-01,题目是 Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。

Rootkit能够持久可靠地存在于计算机中,大部分使用了未公开的系统服务函数,它最大的特点就是具有自我隐藏功能,无论是作为文件,处于未激活状态,还是作为进程,处于已激活状态,使用普通方法都无法检测出。

最早Rootkit程序是出于善意用途,但后来Rootkit也被黑客用在入侵和攻击他人的计算机。电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的安全防护软件归类为具有危害性和攻击性的恶意软件[3]。

1.3 BIOS Rootkit概念

现在BIOS芯片大多采用可擦写寄存器(Flash ROM)或可擦除可编程只读寄存器(Erasable Programmable Read Only Memory,EPROM),因此可以将特定编写的Rootkit程序作为模块刷写到BIOS芯片中以实现特殊功能。

BIOS Rootkit将BIOS攻击与 Rootkit技术相结合,同时拥有了程序最先启动并固化于硬件和深层次控制操作系统2个优点。由于BIOS芯片中Rootkit程序在计算机启动的第一时间运行,因此BIOS Rootkit能在各类安全防护软件工作之前,就已取得硬件设备和操作系统的控制权[4]。

迄今为止,能够被公开搜索到的BIOS Rootkit文献资料,除了2007年IceLord发布过的一篇技术文章外,其他的文字材料几乎为空白。这也使得BIOS Rootkit技术充满着各种神秘色彩。

2 BIOS Rootkit组成模块

通常一个BIOS Rootkit可以划分成4个功能模块,包括权限获取、权限保持、自身隐藏和有效负载(PayLoad)。

2.1 权限获取模块

该模块主要作用是完成BIOS代码嵌入,实现对BIOS的劫持。一般有3种实现方法:拦截和修改Boot Block;将BIOS Rootkit作为BIOS的整体或部分功能模块嵌入到BIOS中;设置硬件中断,同时修改中断处理程序的入口地址为Rootkit地址,当断点触发时Rootkit就被触发。

2.2 权限保持模块

该模块主要作用是实现BIOS Rootkit接管权限传递实现系统正常启动。实现方法:通过对读入内存的操作系统内核打补丁或者对关键函数做HOOK。

2.3 自身隐藏模块

该模块主要作用是在BIOS与引导程序、操作系统内核之间传递控制权时穿透操作系统内核实现自身隐藏。实现方法大致与权限保持模块相同。

2.4 有效负载模块

该模块主要作用是实现任何运行在被感染环境中的程序所能做的事情,并且能够执行动作,包括破坏删除文件、发送敏感信息以及提供后门等。该模块实现方法比较多,既可以通过调用系统的API函数直接实现,也可以通过加载驱动程序或者释放文件的方式间接实现。

3 BIOS Rootkit的技术特性

BIOS Rootkit的最显著特性就是优点与缺点共存。主要表现在BIOS Rootkit前期设计实施极为困难,但成功嵌入后破坏力又是极为惊人。主要表现以下几个方面。

3.1 BIOS Rootkit的优点

(1)在操作系统启动之前就已获得控制权。因为BIOS Rootkit已经被刷写至BIOS芯片,而BIOS芯片中的程序是在计算机启动之前首先被执行。

(2)不保存在存储介质中。BIOS Rootkit主要存在于BIOS芯片中,而不会保存在硬盘等传统的存储介质中。

(3)能够反复感染操作系统。简单的分区、格式化和重装操作系统对BIOS Rootkit都毫无作用,能够再次被感染。

(4)可以对抗几乎所有安全防护软件。现有的主动防御软件和杀毒软件几乎都基于操作系统,对存在于芯片中的BIOS Rootkit毫无检测和查杀能力。

(5)检查分析困难。BIOS Rootkit一般都会伪装成BIOS设计规范中的标准模块,因此检查分析相应模块是否为BIOS Rootkit极为困难。

(6)清除困难。即使经过检查分析后,判断芯片中存在BIOS Rootkit,一般也只能通过重新刷写硬件的方式才能清除[5-6]。

3.2 BIOS Rootkit的缺点

(1)代码编写困难。BIOS Rootkit主要使用汇编语言编写,并且只能调用特定的BIOS中断调用,要求具备较高的汇编语言编程能力。

(2)BIOS Rootkit很难同时兼容所有的主板产品。因为不同类型BIOS对硬件调用标准接口不相同,而不同类型主板也有可能采用不同的BIOS芯片,这就对BIOS Rootkit的编写产生困难,甚至不同的主板生产批次都会对BIOS Rootkit有较大限制[7]。

(3)缺少BIOS技术资料。BIOS相关技术资料一直是国外各大厂商的商业机密,因此许多产品特性、调用参数等资料无法被查阅到[8]。

(4)必须熟悉操作系统中模式转换、系统引导等问题。尤其针对未开源的Windows操作系统,在保护模式下编写BIOS Rootkit,实现控制操作系统流程较为困难[5,9]。

(5)BIOS空间有限。BIOS芯片空间通常非常有限,一般容量不大于512k[10]。仅够厂家初始写入正常程序,剩余的可用空间往往无法再刷写BIOS Rootkit[4-5]。

4 实现功能与技术分析

IceLord.EXE是已经被证实可以实现的 BIOS Rootkit,其中含有很多先进的BIOS Rootkit实现技术,以IceLord.EXE为例,对BIOS Rootkit进行技术分析,了解BIOS Rootkit实现的功能。

2007年4月26日,IceLord(网名)在CSDN网站的博客发表了一篇名为《BIOS RootKit:Welcome Home,MyLord!》的文章。作者详细描述BIOS Rootkit的设计理念,并提供DEMO文件下载,DEMO文件名为 IceLord.EXE。

DEMO文件IceLord.EXE是Windows环境中PE可执行文件[11],它由IceLord.EXE主文件和IO_HLPER.SYS、LEAVING.BIN两个附加资源组成。当使用CMD命令行,运行 IceLord.EXE/Install时,2个附加资源会从主文件中释放出来,然后主文件利用IO_HLPER.SYS,将LEAVING.BIN刷写至BIOS芯片中,完成了 BIOS Rootkit的植入[6]。

4.1 IceLord.EXE 可执行文件

IceLord.EXE为 Windows环境中 PE可执行文件,主要作用是读取和刷写BIOS芯片。文件运行后会释放附加资源,同时对BIOS芯片进行读取检测,当判断BIOS芯片属于可刷写类型后,则利用驱动程序文件 IO_HLPER.SYS,将 LEAVING.BIN 刷写至BIOS芯片中。

4.2 IO_HLPER.SYS 驱动程序文件

Windows操作系统通常都是在保护模式下运行,如果要对I/O操作则必须拥有Ring0权限或者修改I/O允许位图设置,因此想要成功刷写BIOS芯片必须利用驱动程序文件才能完成。IO_HLPER.SYS主要作用就是协助IceLord.EXE对BIOS芯片进行刷写。IO_HLPER.SYS驱动程序文件通过修改I/O允许位图设置,读取特定的I/O端口,使IceLord.EXE在Ring3级权限下按照I/O允许位图位置,不受限制地访问I/O端口。

4.3 LEAVING.BIN 模块文件

模块文件是DEMO文件IceLord.EXE中最核心的部分,也是需要被植入到BIOS芯片中的文件,使用标准ISA模块的头部,大小是十六进制40h,也就是64×512=32k,里面自带了一个Protector.SYS文件。

它通过HOOK中断向量表来实现BIOS Rootkit功能。当模块文件被植入到BIOS芯片中后,工作前先保存原始INT 19H的调用地址,然后进行HOOK操作,将自定义函数地址嵌入,使其中断向量指向自定义程序所在地址97C000A2[12],即物理内存地址0x00097ca2处。如果系统调用INT 19H中断,则自动忽略INT 19H,执行New_int19h函数,对INT 13H再进行HOOK操作。

Int 13H是BIOS中断类型中处理磁盘的中断调用。通过对Int 13H中断调用,对磁盘中特定Rootkit程序进行查找,如果不存在,则使用默认BIN模块文件中的Protector.SYS,然后修改Windows相关启动链表的方式,完成内核Rootkit程序的写入操作[5]。

5 结束语

BIOS Rootkit作为Rootkit中的特殊类型,具有极强隐蔽性和较大破坏力,几乎可以躲过现有的任何计算机安全检测软件的检测。随着BIOS Rootkit技术不断被突破,计算机的安全隐患也将越来越多[13-14]。

在2011年4月,NIST已经针对台式机和笔记本电脑发布了BIOS安全标准,并且美国国土安全局要求联邦政府使用该安全标准作为购买笔记本和台式机的基准。从NIST的文件中显示,在未来美国政府对计算机和服务器的购买(无论是基本服务器、管理服务器还是刀片服务器)都会检查其购买的设备是否能够“身份验证BIOS更新机制”、“安全本地更新机制”,以及是否存在“固件完整性保护”和“非绕过功能”。而中国也应尽快发布相关的安全标准,同时研制可产品化的检查防范技术。

[1]陈文钦.BIOS研发技术剖析[M].北京:清华大学出版社,2001.

[2]彭毅.BIOS Rootkit及其检测技术的研究[D].重庆:重庆大学,2008.

[3]崔甲.Rootkit的分类方法和检测技术研究[D].成都:电子科技大学,2007.

[4]王静,吴伟民,赖天武,等.BIOS后门分析[J].计算机应用,2006,26(S2):96-99.

[5]韩宇.基于AWARD主板的BIOS Rootkit检测技术研究[D].兰州:兰州大学,2011.

[6]IceLord.BIOS RootKit:Welcome Home,My Lord![EB/OL].http:∥blog.csdn.net/icelord/2007,2008-05-06.

[7]ACPI.ACPI Specification[EB/OL].http://www.acpi.info,2013-05-20.

[8]Award.Award BIOS Editor 1.0[EB/OL].http://awdbedit.sourceforge.net/,2008-05-06.

[9]Heasman J.Implementing and Detecting a PCI Rootkit[M].Blackhat Federal,2006.

[10]郭斌.基于I386EX和IPSec的安全的实时嵌入式网络系统的设计[D].成都:西南交通大学,2013.

[11]李月锋.基于行为监测的Anti-R/Bootkit的研究与实现[D].合肥:中国科学技术大学,2009.

[12]王文宇.基于Rootkit技术的终端安全防护研究[J].计算机安全,2011(11):32-36.

[13]周振柳,刘宝旭,池亚平,等.计算机BIOS安全风险分析与检测系统研究[J].计算机工程,2007,33(16):114-116.

[14]Emmerik van M.Static Assignment for Decompilation:Formal Abstraction of Semantics for Detecting[D].Brisbane,Australia:University of Queensland,2007.

猜你喜欢
驱动程序调用芯片
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
计算机硬件设备驱动程序分析
基于系统调用的恶意软件检测技术研究
芯片测试
多通道采样芯片ADS8556在光伏并网中的应用
74HC164芯片的应用
基于MPC8280的CPU单元与内部总线驱动程序设计
利用RFC技术实现SAP系统接口通信
妙用鼠标驱动