主题 : 无所不能的恶意代码(入侵电脑硬件)!!
级别: 二分秋色
UID: 6882
精华: 0
发帖: 7
威望: 350 点
无痕币: 3497 WHB
贡献值: 0 点
在线时间: 7(时)
注册时间: 2007-12-29
最后登录: 2018-05-16

0 无所不能的恶意代码(入侵电脑硬件)!!


2009年7月30日,英特尔日前表示其大量台式机和服务器主板出现基本输入输出系统(Bios)安全问题. 英特尔于本周三发布了Bios的更新内容,并于公告中表示它主板的特定型号含有提权(一种被黑客用来获得对一个系统或网络控制的方法)漏洞.这个漏洞可能使已获得管理级权限的攻击者改变正运行在系统管理模式的代码,系统管理模式是一种运行于操作系统控制外的特权模式.
英特尔在公告中还表示:“在这个模式下运行的恶意软件可能造成许多破坏.”

英特尔表示其之前未意识到漏洞的出现,建议系统管理员立即申请Bios的更新内容.

被感染的台式机主板包括5400XS, DX58SO, DX48BT2, DX38BT, DP45SG, DQ45CB, DQ45EK, DQ43AP, DB43LD, DG41MJ, DG41RQ, DG41TY, DG45ID, DG45FC, DG43NB, DP43TF, DQ35JO, DQ35MP, DG33BU, DG33FB, DG33TL, DP35DP, D945GSEJT, D945GCLF 和D945GCLF2.

被感染的服务器主板包括:S3000, S3200, S5000, S5400和S5500系列.

Invisible Things Lab研究员亚历山大-特里史金(Alexander Tereshkin)、拉法尔-沃茨祖克(Rafal Wojtczuk)和乔安娜-鲁特克斯卡(Joanna Rutkowska)发现了这个漏洞.去年,鲁特克斯卡在Xen hypervisor揭示了一个具有高权限的内核级木马(rootkit)问题,曾使英特尔发布过一次Bios更新内容.

此外,英特尔首个34nm制程SSD硬盘在上周发布后不久便遭到一个Bios漏洞的攻击.


2009年3月13日,波兰著名女黑客Joanna Rutkowska公布了一条震惊安全界的消息,她声称利用Intel CPU的Cache机制漏洞,利用这个漏洞,可以将CPU的运行特权级由Ring 0提升到SMM(系统管理模式),这种攻击方法在新近的主板和Intel CPU上都有效。

为什么要Rootkits CPU?

在这名美女黑客这则公布消息最初,在IT界引起了一场巨大的轰动,国内外许多IT网站纷纷转载此消息,一时间“x86系统都得死”、“Intel遭遇CPU Rootkits,目前无药可医”等恐慌性言论纷纷出现在各大IT网站上。

甚至有人认为这条消息间接的证明了美国政府在Intel CPU中故意留的后门。不过也有某些著名IT网站出来辟谣,发表“Intel CPU重大安全漏洞真相揭秘”、“杯弓蛇影”等文章,或是自行分析,或是引用Intel公司专家的话,竭力证明这个漏洞“没有什么大不了”、“早已被Intel公司修补”、“没有太大实用价值”。

在黑客的词典中,Rootkits一词最早出现在Unix系统上。系统入侵者为了取得系统管理员级的root权限,或者为了清除被系统记录的入侵痕迹,会重新组译一些软件工具(术语称为kit),例如ps、netstat、w、passwd等等,这些软件即称作Rootkits。其后类似的入侵技术或概念在其他的操作系统上也被发展出来,主要是档案、进程、系统记录的隐藏技术,以及网络封包、键盘输入的拦截窃听技术等,许多木马程式都使用了这些技术,因此木马程式也可视为Rootkits的一种。

那么CPU的Rootkits究竟有能够达到什么目的呢?这首先要从认识SMM开始,SMM是一种特殊用途的操作模式,它主要是为了处理系统级别的控制活动而设计的。例如电源管理就属于系统控制活动之一。它主要存在于BIOS(主板固件)和专门的底层设备驱动程序,而不是用于操作系统。

实际上SMM是独立于实模式、保护模式和虚拟8086模式之外的一种特殊模式,从任何模式都可以进入SMM。SMM和保护模式下的最高特权级Ring 0一样,可以访问全部内存和外设硬件,SMM采用类似实模式的方式进行内存寻址,在Ring 0—Ring 3中使用的分段分页等寻址方式、地址映射和内存保护对于SMM是无效的,SMM下直接访问SMRAM内存物理地址,而且有能力访问4GB的物理内存。

小百科:SMM是System Management Mode(系统管理模式)的缩写,对于Intel IA-32体系结构CPU早已不是什么新东西,从Intel 80386SL CPU开始就引入了这种模式,486以上的CPU就更是毫无疑问地支持SMM了。根据Intel官方的描述:SMM提供了一种预留的操作环境,可为有效的电源管理、控制系统硬件或者运行特殊的私有代码提供监控和管理各种各样的系统资源(硬件)的能力。

因此假如黑客将SMM作为Ring 0来使用,进入SMM这种独立模式之后,任何保护模式下的保护方式都会失效,黑客在通过注入SMRAM的Rootkits代码,可以任意访问外设硬件,任意篡改物理内存添加攻击代码、恶意代码甚至病毒,而工作于保护模式Ring 0上的操作系统内核和安全软件(例如反病毒软件)根本不可能发现这种篡改,基于SMM的Rootkits显然比基于Ring 0的Rootkits更具有隐蔽性。

这也就意味着黑客就可利用CPU漏洞获得对电脑近乎至高无上的控制权,并且不受任何操作系统控制、关闭或禁用。黑客的攻击范围,可能覆盖Vista、XP、Windows Server、Linux或BSD等任何一个装有英特尔CPU的操作系统,而且中了这种利用CPU Rootkits的病毒之后,无论用户是格式化硬盘还是重装操作系统,都于事无补。

突破Rootkits的阻碍

不过,想要实现Rootkits CPU并不这样简单,因为进入SMM的唯一方式是通过SMI中断,而SMI中断是一个特殊的硬件中断,无法像软件中断一样通过INT指令引发,也无法像普通的外设硬件中断一样通过PIC引发,只能通过主板上的特殊硬件电路引发,例如改变CPU SMI#引脚的电平,也就是说黑客没有简单的软件方法能进入SMM。

其次,进入SMM后,CPU特地提供了一个SMIACT#引脚以在硬件电路电平上标识CPU进入了SMM,于是可以将这个引脚设法作为片选信号,在CPU进入SMM后片选非主内存的其它RAM作为SMRAM,也就是说,在硬件上已经提供了一种机制,可以在主板上将SMRAM和主内存分开设计,而共享同一地址空间,这也是Intel所推荐的主板设计方式。换而言之,SMM下访问的物理内存——SMRAM可能根本就不是主内存,在操作系统正常工作时无法访问,也无法注入代码,就是在SMM下篡改了对操作系统也没什么影响。

但是,完全没有漏洞的系统是很难存在的,软件如此,硬件同样如此,况且功夫不负有心人(攻击者),2008年,国外攻击者公布了一种实现SMM Rootkits的方法,就是沿着解决这两个核心问题的思路实现的。

首先,通过某些主板芯片组对PCI协议处理的漏洞,可以通过软件访问PCI相关寄存器,使得主板芯片相关电路引发SMI中断。如果在主板硬件设计上,将SMRAM和主内存分开设计,那么需要提供一种机制,在系统启动时将SMM下所需的处理代码(例如电源管理)写入SMRAM,某些内存控制器——北桥芯片。

通过修改SMRAM控制寄存器设置可以直接访问SMRAM,但这种访问应该仅在系统启动时一次有效,操作系统正常工作时必须阻止这种访问,问题是某些早期BIOS中存在漏洞,北桥芯片的SMRAM控制寄存器在非SMM模式下可以多次修改,使得在操作系统正常工作时对SMRAM注入Rootkits代码成为可能。

从这种方法公布的内容来看,可以做到在某些主板芯片组和早期BIOS上,将Rootkits代码注入到SMRAM,并进入SMM执行这些Rootkits代码,但还不清楚能否有效地做到在SMM下篡改除SMRAM之外的主内存,这一点还要取决于主板上主内存和SMRAM的电路设计。这种方法对于较新的BIOS是无效的,公布的内容中已经明确说明这种情况下需要修改BIOS。这种方法实际上是利用主板和BIOS(主板固件)的漏洞,称为“主板Rootkits”比较合适。

那么Joanna Rutkowska公布的消息中提到利用Intel CPU的Cache机制漏洞可以将CPU的运行特权级由Ring 0提升到SMM又是怎么回事呢?上世纪90年代末曾经有个“Cache病毒”故事,说是某种病毒隐藏在了CPU的Cache中,需要将CPU从主板插座上拔下来凉10分钟,才能清除病毒,这个故事当然是假的,谁能直接访问Cache中的任意地址呢?但是对Cache进行一定的控制却是完全可能的,Pentium以上CPU都可以进行,Intel官方的《IA-32 Intel体系结构软件开发者手册第3卷:系统程序员指南》中的第10章专门讲述了这个问题,例如可以控制特定地址范围的某块物理内存的Cache策略。从Pentium Pro(P6)CPU开始,L1 Cache和L2 Cache都集成在CPU内部,如果控制Cache时出现了未知的漏洞,使得CPU能够在内部进入SMM,这是一种漏洞的可能,但这种可能并不一定能解决上述SMRAM注入代码和主内存篡改问题。

另一种与SMM相关的Cache漏洞可能性是:无论是Intel还是AMD,都明确地在CPU手册中说明了无论在进入或退出SMM时,不会自动将原Cache内容写入内存并使Cache无效,这样简化了SMM的进入和退出,并使得SMM代码执行更快,CPU内部在出现混淆情况时做出“适当处理”,如果这里存在漏洞,则存在通过Cache在相同地址主内存和SMRAM之间不知不觉地交换代码的可能性,这样在进入SMM时有可能完成对SMRAM注入Rootkits代码,退出SMM时又有可能完成主内存的篡改。

无论出现哪一种漏洞可能性,这种漏洞都是CPU设计造成的漏洞,基于这种漏洞设计的Rootkits,可以称得上是CPU Rootkits。

入侵CPU距离我们远吗?

通过上述分析,可以得出一个初步结论:无论是前面提到的主板Rootkits,还是这种CPU Rootkits,目前价值并不是很大,对现有基于x86 CPU的PC系统安全性还造不成致命威胁,也绝非无法防范。因为无论是通过主板/BIOS漏洞还是通过Cache漏洞解决实现基于SMM的Rootkits中的两个核心问题,都必须先进入Ring 0进行特定操作,而SMM的实际权限并不比Ring 0高,SMRAM的限制甚至使得SMM下访问主内存比Ring 0还要困难,基于SMM的Rootkits相对传统的Ring 0 Rootkits,在功能上并没有很大优势,设法进入Ring 0以及在Ring 0进行特定操作以进入SMM的过程,甚至要借助传统的Ring 0 Rootkits才能实现,也完全可以被安全软件监控和拦截,因此,更新的安全软件对防范这种攻击和Rootkits,应该具有一定的能力。

但Joanna Rutkowska公布的这条消息,却又一次为我们敲响了防范硬件Rootkits的警钟!虽然目前基于SMM的Rootkits或许只是能在运行时动态将Rootkits代码注入SMRAM并进入SMM执行之,但谁也不知道,主板和主板固件中的漏洞有无可能将非易失性存储器,例如BIOS Flash,映射到SMRAM地址空间中?随着主板固件的复杂化,EFI逐步取代传统的BIOS,主板上的非易失性存储器容量将会越来越大,访问也越来越复杂,部分主板固件代码甚至本来就是在SMM下运行的。一旦在操作系统下将Rootkits代码写入了非易失性存储器(1997年的CIH病毒事件早已证明在操作系统下写入BIOS Flash是完全可能的),然后通过主板或者主板固件漏洞完成SMRAM地址空间映射等工作,Rootkits代码将可能永久驻留在主板上的非易失性存储器中,并随时可以通过进入SMM激活执行,甚至正常的电源管理需要进入SMM,也会激活Rootkits,而工作于Ring 0上的安全软件除非自身设法进入SMM,无法检测这种Rootkits代码,更无法监控进入SMM以后执行的Rootkits代码,就是将硬盘重新分区格式化,也无法清除隐藏在主板非易失性存储器中的Rootkits,Rootkits的超级隐藏和超级反清除将会成为可怕的现实!

由于并行总线自身的缺点(主要是干扰问题)限制了并行总线速度的进一步提高,PC高速总线串行化已经成为必然趋势。USB和IEEE1394取代并口,SATA取代ATA,PCI Express逐步取代PCI,甚至Intel Core i7 CPU的前端总线都已串行化——QPI总线等,都是这一趋势的体现,但串行总线协议通常都比并行总线协议复杂。越是复杂的总线协议,可能出现的漏洞就越多,通过这些协议漏洞进入本来只有通过特殊硬件电路才能进入的某些特权模式,例如SMM,就越有可能。

目前主板芯片组被某些公司垄断,主板设计技术,除非是专门的主板设计硬件工程师,了解甚少,而硬件工程师更多地关心硬件电路设计,往往对系统安全又缺乏了解,认为反病毒防黑客是软件工程师的事情,与自己无关,这样一来在设计主板硬件电路时更多地是考虑硬件成本、可靠性、兼容性等,并不考虑可能对软件安全性造成什么影响。既然错误的单片机电路设计能让某些单片机的软件加密失效,那么错误的主板电路设计同样完全可能让PC软件的安全性化为乌有,在恶意代码的狂涛巨浪中,主板硬件电路(还有BIOS/主板固件)绝不是安全岛和避风港。

Ring 0早已不是能够监控一切的最高特权级,SMM、VMM(用于虚拟机技术)等模式的出现,会让基于Ring 0的监控完全失效。软件漏洞会导致恶意代码,硬件漏洞也是一样,必须尽早注意到这种恶意代码越来越靠近底层硬件的趋势,加强与主板厂商以及其它硬件厂商的合作,在软件和硬件两方面阻止恶意代码的侵入。

CPU Rootkits的故事是一个神话,但这个神话离我们并不遥远,甚至可以说已经变成了真实的故事。尽管CPU Rootkits现在只是一个未完全长成的小妖怪,但它完全有成为恶魔的潜质,而且成长速度很快。没有绝对安全的系统,软件和硬件都是一样,防患于未然,未雨绸缪方为上策!
Total 0.049658(s) query 3, Time now is:05-27 15:43, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛