关键词不能为空

当前您在: 主页 > 英语 >

深入SMRAM

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-13 11:59
tags:

-

2021年2月13日发(作者:heavy是什么意思)
























深入


< /p>


SMRAM



SMM

重载



作者:


Loic Duflot, Olivier Levillain, Benjamin Morin



Olivier Grumelard


译者:


riusksk(


泉哥


)



原文出处:


CanSecWest 2009



概要




·前言



·SMM


简介



·利用


SMM


执行攻击




·潜在用途:提权方案,


rootkit



·局限性



·绕过


D_LCK bit



·内存缓冲(


Memory caching





·缓冲中毒(


Cache poisoning





·应用与演示



·影响



·对策与结论




·前言




System Management Mode(SMM)



x86



x86-64



CPU


操作模式


,



CanSecWest 2006


大会


上已有人演示了如何利用


SMM


来提升权限的 ,其它更为详细的资料可参考


Phrack


杂志上


Ivanlef0u



Branco


(BSDDeamon)


等人发表的文章。在


Bla ck


Hat


briefings


2008


(Sparks,


Emb leton)


大会上,有人展示了首个


SMM


rootkit


,从这些


presentations /papers


可以得出


一个结论:如果可以修改


SMRAM


的内容,那么攻击者可以做各种有趣的事情(至

< br>


少对他们


而言),但


SMRA M


在常规情况下都是受限制的。本文的目的就是演示如何绕过这些限制。




·SMM


简介




PC


架构





什么是


System Management Mode?



SMM


属于


16


位模式,用于主板控制和电源管理,比如:




·热管理(


Thermal management





·笔记本电脑的电源管理(有时由高级配置和电源管理接口


AC PI


调用)



只有当

< br>CPU


收到硬件系统管理中断


SMI


System Management Interrupt

)时,才进入系统


管理模式。


SMI


均由蕊片组



chipset



产生,


它通过向


Advanced


Power


Management


Control


Register (AMPC)


写入数据来产生


SMI (outl(something, 0xb2))


,这只需要具备输入


/


输出


权限即可做到。




System Management Mode entry



关于入口,所有的单一


CPU


寄存器都将其保存在“memory


saved


state


map”,而它自己又


保 存在一个称做


SMRAM


的内存区域中。


SMRAM


位于


RAM


中,每一个< /p>


SMI handler


均由


SMRAM


执行。当


SMI handler


执行“rsm”汇编指令时,


CPU stat e


将恢复到保存在


SMRAM


中的操< /p>


作模式,


即返回前一个操作模式,


接着把 控制权归还给中断程序。


当运行在


SMM


的管理软件


被中断时,操作系统甚至



未能获知。




SMRAM


地址




SMRAM


地址由


CPU


中的


SMBASE


寄存 器指定,


该寄存器无法被访问到,


它的内容被复制到

< p>
SMRAM


saved state map


,并且只有当


CPU state


重储时才改变,它也可用于多


CPU


系统。

< br>



实际上,


SMBASE


地址通常为:




·0xa0000:legacy SMRAM location




·0xfeda0000 (+/


- 0x8000):high SMRAM location



·其它:顶段内存


TSEG (Extended SMRAM)


SMI handler


基址位于


SMBASE + 0x8000 (


固定偏移量


)



SMRAM


安全模式




System Management Mode


下的代码拥有相应操作平台下的充分权限(甚至超过操作系统内


核的权限 )



当系统未处于


SMM


时,


应当防止


SMRAM


被 访问,


以防止


SMI


handler


修改


SMRAM


中存储的内容。因此只 有当


CPU


处于


SMM


下时,


legacy SMRAM, high SMRAM and TSE G


才能


被访问,


chipset


中的


D_OPEN bit


被设置的情况除外。



(译注:


pcitweak


用于读写


PCI


配置空间信息,格式如下:



pcitweak -r



PCI- ID


[


-b


|


-h


]


offset




pcitweak -w



PCI-ID


[


-b


|


-h


]


offset value





SMRAM


保护机制




防止


SMI

handler


被修改的主要机制就是设置


D_LCK


位,当


D_LCK


位被设置时,

< p>
chipset



SMRAM


configuration bits


将变成只读


(


包含


D_OPEN bit)





·利用


SMM


执行攻击




*


权限提升方案:




·可参考


CanSecWest 2006 presentation



·实用的提权 方法(受限的内核


root


权限,限制某些服务程序进入内


核)



*Rookits:



·可参考


Sparks,Embleton Black Hat 2008 presentation



·Rootkits


可在


SMI ha ndler


中隐藏功能(例如


keylogger




*


绕过基于< /p>


D-RTM


(动态测量根)可信任平台的限制:

< br>



·可参考


Rutkowska



Wojtczuk Black Hat Federal 2009 presentation


*


从这个角度看,我们认为攻击者可在


SMRAM


中隐藏一个


rootkit





·局限性




SMM rootkits


存在的局限性:




·它们无法存在一个平台中的


reboot




·很难设计一个通用的


SMM rootkit



SMM


代码特定于每个平台),



·很强的局限性(个人观点):大部 分操作平台在启动时均设置


D_LCK


位,以防



SMM


被修改,



目前,还没有什么可行的方法可以绕过


D_LCK bit





·绕过


D_LCK bit:


芯片组转换机制




芯片组转换机制可以修改物理内存映射,完成各种转换机制:




·可参考


Blackhat 2008


大会上


Wojtczuk


与< /p>


Rutkowska


关于


Q35 chipset



presentations





·也可参考


Duflot



Absil



PacSec


2007

< p>
大会上的关于


graphics


aperture


(GART)


functionality



presentation




但一 些芯片组转换机制已经过时了,


它的转换表可被锁定


(使用与< /p>


D_LCK


相同的


lock

< p>
bits)



另外,我们还可采用其它更好的方法 来绕过


D_LCK bit:


缓冲中毒(


Cache poisoning





缓冲体系



缓冲体系通过缓冲我们所需 的内容来加速内存访问。


下面是针对一个


x86


处理程序的缓冲体


系的描述(例子):






·内存缓冲



CPU

< br>内存缓冲需要同步执行,它可以指定不同的内存缓冲策略(内存类型),比如:



* WB: write back.


* WT: write through .


* UC: not cacheable.


它主要负责指定哪块内存区域需要被缓冲,


以及哪块内存未被

< br>CPU


中的内存管理单元


(负责


逻辑,


虚拟和物理地址间的转换)所指定的。


两种指定不同内存 缓冲策略的方法:


页目录和


页表(困难的方法),还有


MTRR


(容易的方法)。




·被缓冲的内存类型





·MTRRs


的使用



MTRRs (Memory Type Range Registers)


属于


Model Specific Registers (MSR)


,它有两种


不同类型:


fixed



variable


。“Fixed MTRRs”可用于指定被


BIOS


使用的传统内存区域



legacy memory areas


)的缓冲策略,“Variable MTRRs”可用于指定其它物理内存 区域


的缓冲策略。


fixed MTRR (


例如


MTRR_FIX16K_A0000)


结构:




variable MTRR


结构


(


例如


MTRR_PHYS_BASE0)





因此,


访问控制点存在于芯片组中,


而芯片组并未“看到”缓冲器里面发生了什么。


运行在


CPU


上的代码可以决定缓冲策略。另外,芯片组甚至不知道什么是真正 的


SMRAM



CPU


只识



SMBASE


)。




·SMRAM


与缓存




不缓存


SMRAM



这是种明智的做法,


特别是当


SMRAM


地址空间与其它地址空间



legacy


SMRAM



发生冲 突时


,


除了


chipset documentation


中清楚说明的:


high SMR AM(0xfeda0000)


才可被


缓存。假设


SMRAM


内存区域是由


CPU


WB


的形式缓存的,那么当


SM I handler


执行时,它


将会被“复制”到


CPU


指令和数据缓冲存储器中。如果


SMM ha ndler


没有刷新缓冲存储器,


那么它将把控制权返还给操作 系统,


这时


SMI


handler< /p>


有可能会在


CPU


的数据缓冲器中逗留< /p>


(很短的时间)。




缓冲器中的


SMI handler




篡改


SMRAM

< br>当


CPU


并未处于


SMM


时,


CPU


并不能对


SMRAM


执行写操作。


但如果


SMR AM



Write


Back


方式被缓存时,


CPU


只能对缓存内容执行写操 作,而不对内存执行写操作。


-


-


-


-


-


-


-


-



本文更新与2021-02-13 11:59,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/650022.html

深入SMRAM的相关文章