前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何入侵已关机的电脑?

如何入侵已关机的电脑?

作者头像
HACK学习
发布2019-08-07 15:53:02
1.2K0
发布2019-08-07 15:53:02
举报
文章被收录于专栏:HACK学习HACK学习

在近期举行的Black Hat Europe会议上,研究人员提到了英特尔管理引擎11(Intel Management Engine 11)中的漏洞,攻击者一旦利用该漏洞绕过传统的基于软件的防护措施,即便计算机关机!也能够进行攻击。

简介

1、Intel ME简介

Intel ME作为一项专利技术,由集成在平台控制器中心(PCH)芯片中的微控制器和一组内置外设组成。

2015年开始,x86指令集的LMT处理器内核已经集成到PCH中。

图1. ME核心的LMT2 IdCode

ME也是英特尔Boot Guard信任的基础,它可以防止攻击者将其代码注入到UEFI中。ME的目的是初始化平台并启动主处理器,它可以全面访问USB设备,同时还可以拦截和修改网络数据包以及图形卡上的图像。

2、Intel ME中的漏洞简介

最早被熟知的漏洞是Ring-3 Rootkit

攻击者将代码注入到UMA内存的一个特殊区域,Intel ME卸载当前未使用的内存页面。在英特尔推出了UMA保护之后,现在这个区域用AES加密,ME存储每个页面的校验和,当页面返回到ME的主存储器时进行检查。

2010年,Vassilios Ververis在GM45中也提出了针对ME执行的攻击方法,通过使用“零接触”配置模式(ZTC)绕过AMT授权。

攻击媒介

ME使用的大部分数据都是由英特尔授权的,当然,ME与用户之间仍然有一些交互:

  • 本地通讯接口(HECI)
  • 网络(仅限vPro)
  • 主机内存(UMA)
  • 固件SPI布局
  • 内部文件系统

1、HECI

HECI是一个独立的PCI设备,作为在主系统和ME之间交换消息的循环缓冲区。 由于ME内部的应用程序可以注册他们的HECI处理程序,这就增加了潜在的安全威胁(CVE-2017-5711)。不过,苹果电脑默认禁用HECI。

2、网络(仅限vPro)

AMT是一个大型的模块,它集成了众多不同层次的网络协议。这个模块包含大量的遗留代码,但只能在业务系统中找到。

3、硬件攻击SPI接口

在研究ME的时候,我们尝试在SPI闪存仿真器的帮助下绕过签名验证。

这个专用的设备看起来像普通的SPI闪存,但是每次访问时都可以发送不同的数据。这意味着如果在开始时数据签名被检查并且重新读取数据,则可以将代码注入到ME中实现攻击。

我们在固件中没有发现这样的错误,即首先读取数据,然后验证签名。当再次访问时,检查数据以确保它与第一次读取的数据相同。

4、内部文件系统

ME使用SPI闪存作为主文件存储系统。

文件系统有一个相当复杂的结构,许多特权进程将其配置文件存储在其中。因此,文件系统似乎是一个潜在的受害区域。

5、潜在的二进制模块攻击媒介

(1)选择一个模块进行分析。

МЕ操作系统实现了类似Unix的访问控制模型,区别在于控制是基于每个进程的。用户ID、群组ID、可访问硬件列表和允许的系统调用都是为每个进程静态设置的。

图2.进程的静态规则示例

结果是只有一些系统进程能够加载和运行模块。父进程负责验证其子进程的完整性和设置特权。当然,一个风险是,一个父进程可以给子进程设置很高的特权,以绕过限制。 一个能够产生子进程的进程是BUP(BringUP)。在对BUP模块进行逆向工程的过程中,我们在Trace Hub设备初始化函数中发现了堆栈缓冲区溢出漏洞。

文件/home/bup/ct是未签名的,使我们可以借助Flash Image Tool将修改后的版本转移到ME固件中。

现在我们可以在一个大的BUP初始化文件的帮助下,在BUP过程中引起缓冲区溢出。但是利用这个需要绕过防止堆栈缓冲区溢出的机制。

图3.堆栈缓冲区溢出漏洞

(2)绕过堆栈缓冲区溢出保护。

ME实现了一个经典的方法来防止堆栈中的缓冲区溢出堆栈cookie。实施情况如下:

  • 创建进程时,硬件随机生成器将32位值复制到特殊区域(只读进程)。
  • 在函数prologue中,该值被复制到堆栈中的返回地址之上,用于对其的保护。
  • 在函数epilogue中,保存的值与已知的随机生成值进行比较。如果它们不匹配,软件中断(int 81h)终止进程。

因此,需要在开发预测cookie值或在检查cookie完整性之前进行控制。进一步的研究表明,随机生成器中的任何错误都是致命的。

查看溢出之后和完整性检查之前调用的函数,我们发现名为bup_dfs_read_file的函数间接调用memcpy,它反过来从命名为Tread Local Storage(TLS)的结构中获取目标地址。

值得注意的是,BUP函数使用系统库服务来访问共享内存。换句话说,读写功能通过共享内存机制获取并记录数据。但是这个数据除了BUP之外没有其他用处,所以使用这个机制可能会引起人们的注意。

内存是共享的,因为负责MFS交互的BUP代码的一部分是从另一个模块(文件系统驱动程序)复制的,在这里使用共享内存是合理的。

图4.调用memcpy函数

图5.从TLS获取地址

在缓冲区溢出的情况下,TLS的这个区域可以被文件读取功能覆盖,这可以用来绕过缓冲区溢出保护。

(3)Tread Local Storage。

访问TLS由gs段注册表调解,结构如下所示:

图6. TLS结构

图7.获取TLS字段

gs指向的段不可写入,但TLS结构本身位于堆栈的底部,在存在限制的情况下仍可以对其进行修改。

所以在缓冲区溢出的情况下,我们可以覆盖TLS中SYSLIB_CTX的指针并生成新的这样的结构。由于bup_dfs_read_file函数的功能,我们可以得到任意的写入能力。

(4)使用read函数来获得任意的写入原语。

bup_dfs_read_file函数以64字节块的形式从SPI-flash中读取数据,因此可以在一次迭代中覆盖指向SYSLIB_CTX的指针,在下一次迭代期间,sys_write_shared_mem函数将提取我们创建的地址并将其传递给memcpy作为目的地址。这样做,我们可以得到一个任意的写入原语。

图8.迭代读取bup_dfs_read_file中的文件

ASLR的缺失使我们能够使用任意写入原语覆盖返回地址,并劫持程序控制流程。需要说明的是,堆栈不可执行。

但是,BUP可以产生新的进程并负责检查模块签名。所以需要使用面向返回的编程(ROP),我们可以创建一个拥有所需权限的新进程。

(5)可能的攻击向量。

要成功利用此漏洞,我们需要对MFS或整个Intel ME区域进行写入访问。供应商应该阻止对ME地区的访问,但大多数都没有这样做,这种配置错误使得系统易受攻击。 通过设计,Intel ME允许通过HECI从BIOS发送的特殊HMR-FPO消息写入ME区域。攻击者可以通过利用BIOS漏洞发送这样的消息,如果ME处于制造模式,或者通过DMA攻击,则可以直接从OS发送消息。 具有物理访问权的攻击者总是可以用自己的映像(通过SPI编程器或安全描述符跳过跳线)覆盖,导致平台完全受损。 最常见的问题之一就是能否进行远程开发。如果符合以下条件,则可以进行远程开发:

  • 目标平台已经激活了AMT
  • 攻击者知道AMT管理员密码或可以使用漏洞绕过授权
  • BIOS不受密码保护(或攻击者知道密码)
  • BIOS可以配置为打开对ME区域的写访问权限

另外请注意,在启动过程中,ROM不会检查固件的版本,从而使攻击者以最新的系统为目标,恶意地将ME降级到易受攻击的版本。

结论

该漏洞的编号分别为INTEL-SA-00086(CVE-2017-5705,CVE-2017-5706,CVE-2017-5707),漏洞描述包含以下信息: CVSSv3评分:

8.2 High AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H

受影响的产品:

  • 6th, 7th & 8th Generation Intel® Core™ Processor Family
  • Intel® Xeon® Processor E3-1200 v5 & v6 Product Family
  • Intel® Xeon® Processor Scalable Family
  • Intel® Xeon® Processor W Family
  • Intel® Atom® C3000 Processor Family
  • Apollo Lake Intel® Atom Processor E3900 series
  • Apollo Lake Intel® Pentium™
  • Celeron™ N and J series Processors

研究中最重要的发现是在Intel ME中运行任意代码的漏洞。这种漏洞有可能危及包括英特尔保护音频视频路径(PAVP)、英特尔平台信任技术(PTT / fTPM)、英特尔Boot Guard和英特尔软件防护扩展(SGX)在内的多种技术。 利用在bup模块中发现的漏洞,我们可以打开PCH红色解锁机制,通过DFx链打开对所有PCH设备的使用权。

换句话说,就是使用JTAG。我们可以获得对其内部JTAG接口的访问,通过这样的访问,可以调试在ME上执行的代码,读取所有进程和内核的内存,并管理PCH内的所有设备。

我们最终发现了大约50个内部相关设备,在这些设备中,只有ME有完全的访问权限,而主处理器只能访问其中一小部分。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HACK学习呀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档