- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入SMRAM:SMM重载
深入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)等人发表的文章。在Black Hat briefings 2008 (Sparks, Embleton)大会上,有人展示了首个SMM rootkit,从这些presentations/papers可以得出一个结论:如果可以修改SMRAM的内容,那么攻击者可以做各种有趣的事情(至 少对他们而言),但SMRAM在常规情况下都是受限制的。本文的目的就是演示如何绕过这些限制。
?
·SMM简介
?
PC架构
?
什么是System Management Mode?
?
SMM属于16位模式,用于主板控制和电源管理,比如:
? ? ? ? ? ·热管理(Thermal management)
? ? ? ? ? ·笔记本电脑的电源管理(有时由高级配置和电源管理接口ACPI调用)
只有当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中,每一个SMI handler均由SMRAM执行。当SMI handler执行“rsm”汇编指令时,CPU state将恢复到保存在SMRAM中的操作模式,即返回前一个操作模式,接着把控制权归还给中断程序。当运行在SMM的管理软件被中断时,操作系统甚至 未能获知。
?
SMRAM地址
?
SMRAM地址由CPU中的SMBASE寄存器指定,该寄存器无法被访问到,它的内容被复制到SMRAM saved state map,并且只有当CPU state重储时才改变,它也可用于多CPU系统。
实际上,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 TSEG才能被访问,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位被设置时,chipset中SMRAM的configuration bits将变成只读(包含D_OPEN bit)。
·利用SMM执行攻击
? ? ?
?*权限提升方案:
?? ? ? ? ·可参
文档评论(0)