欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

通过USB调试攻击固件安装后门以实现“邪恶女佣”攻击

来源:本站整理 作者:佚名 时间:2018-08-06 TAG: 我要投稿


写在前面的话
调试机制是帮助跟踪几乎所有平台上的故障源的标准组件。一般主要在平台生产之前使用,但也经常用于翻新和修复返回的平台。安全研究人员可以多次使用调试特性测试攻击,包括定位和使用JTAG,使用USB调试以及使用debug查找系统管理模式(SMM)中的漏洞。我们进行安全研究,用于计算基础设施的硬件基础创建实用的防御。我们确认,通过USB进行的调试可以访问在UEFI固件和运行时SMM固件中安装持久的rootkit,而这些系统不能安全地设置调试策略( CVE-2018-3652)。这种漏洞将允许具有设备物理访问权限的攻击者可以执行“Evil Maid”攻击。正如其他人所报道的,防范这种类型的攻击是相当困难的。为了提供对这种威胁的可见性,我们为开源的CHIPSEC框架发布了一个模块,以检测脆弱的系统。
保护固件
每次计算机启动时,固件保护机制都必须执行固件以初始化可用配置中的固件,这为软件执行创建了预期的安全环境。如果恶意软件能够更改某些配置,则可以通过在特权模式下执行或重新配置系统,以违反软件正常运行的预期安全环境以及违反安全属性,并将其权限提升到高于其它软件的权限,其中最直接的方法是修改固件。
当然,具有物理访问权限的攻击者可以简单的连接固件编程器就可以修改固件,从理论上来说,这确实需要详细的设备信息,但实际上在大多数情况下这些信息都很容易获取。其根本原因就在于大多数固件存储在串行可编程接口(SPI)闪存芯片上,这就为读取和写入存储芯片创建了物理标准,SPI闪存编程器相对容易购买或创建。为了在不破坏系统的情况下获得访问权限,攻击者还需要弄清楚要改变的内容。然而,有一位研究人员(Dmytro Oleksiuk)却开发了一种通用的概念验证后门,根据这个样本,攻击者可以轻松的将这个后门安装到大多数固件模块中。这意味着,这些工具和技术的易用性和可用性,可使得非专业的攻击者甚至是“脚本小子(script kiddie)”很容易的就可以访问固件rootkit。Eclypsium的安全专家做了一个测试,他们能就在不到4分钟的时间里就在企业所用的笔记本电脑上安装此rootkit,并且实现物理访问,你可以看此视频了解整个过程。
修改固件的另一种方法是通过特权软件,为了防御此类攻击,固件应在引导期间尽早配置与固件存储相关的保护位。完成此操作后,正常的软件(甚至包括提升内核权限的恶意软件)将无法执行固件存储写入,直到重新启动时,固件再次执行保护自身的过程。但是,即便这样,固件仍会以某种方式写入存储器并进行代码和配置更新。这虽然可以通过重新启动来完成,但并不是在所有情况下都可以实现。另外,在运行时期间的SMM中执行的可信代码可用于绕过保护并写入固件存储。据此来看,SMM是攻击者尝试安装持久性固件rootkit的主要目标。
使用SMM固件调试
如上所述,研究人员已经证明通过调试功能可用于查找固件漏洞并直接绕过基于软件的保护。实际上,通过调试功能发现漏洞一直是攻击者最喜欢的方法。研究人员的分析表明,在启用调试机制的系统上,物理攻击会比没有启用调试机制的时候更容易。因为这种情况下攻击者是不需要特殊的固件编程器,也不需要打开程序。通过使用可用的公开工具,他们只需通过插入一个外部USB即可安装持久rootkit,绕过安全启动和许多其他安全功能。
研究人员已经证明可以在SMM中暂停系统并从系统上下文中对内存进行任意更改,这样攻击者就可以获得SMM执行的高级权限。另外,就是通过编写代码来修改固件存储,此类攻击者可以利用现有的固件rootkit来安装持久性恶意软件。虽然这具有重大的安全隐患,但对于调试机制来说,这也是其一个预期的调试目的。不幸的是,有些系统无法在运行中关闭这些调试功能。
调试访问
对于安全人员来说,为了了解系统的风险,重要的是要知道运行系统上是否启用了调试机制。不幸的是,这个了解过程并不容易,对技术的要求很高。为此,Eclypsium的安全专家开发了一个开源CHIPSEC模块来提供帮助,该模块主要检查运行系统上的两个主要组件:
1.CPU调试功能
2.直接连接接口让我们深入到这些检查中,并将其分解为组件。首先,CPU调试功能的状态位于IA32_DEBUG_INTERFACE模型特定寄存器(MSR)中。在英特尔软件开发人员手册中,我们可以看到此MSR的细分:

如果我们忽略保留位,我们可以看到3个有趣的东西:
1.启用位。
2.一个锁定位。
3.发生调试位。
如果根据此规范,默认情况下,调试是禁用和解锁的。利用发布的chipsec模块,研究人员检查了调试是否被禁用和锁定,而这些调试则是固件在运行中设置的安全配置。通过执行这些模块,检查将通过。另外,研究人员还检查了调试发生位,但根CHIPSEC维护人员的说法,这个检查会发生误报的情况,因此Eclypsium的安全专家决定不依赖于这个检查结果得出检查是否通过或失败的决定。
但是,CPU调试只是调试机制问题的一部分,下一步是检查直接连接接口(DCI)的状态。此功能在之前曾在被研究者利用过,DCI会被记录在每个计算机平台的芯片组数据表中,例如“Intel 100系列和Intel C230系列芯片组系列平台控制器集线器(PCH)数据表第2卷”,名称为“DCI控制寄存器”。

尽管该寄存器似乎存在于由intel制造的芯片组中,但它仅在此特定数据表中记录。在该寄存器内部,在过多的保留位之间,我们找到“Host DCI Enable”位或HDCIEN。如果启用,芯片组将通过USB提供调试功能。因此,检查非常简单; 安全配置会禁用DCI,该位应为0。只有当上述两项检查都表明没有启用调试功能时,我们才会考虑安全地配置系统并从我们的chipsec模块返回PASSED。至于CPU调试功能MSR中的“Debug Ocured”位,我们决定遵循CHIPSEC维护者的建议,只有在设置了该位时才显示警告。理论上,它表示在引导期间的某个时刻启用了调试。可以在上的github上找到CHIPSEC我们的模块是debugenabled.py安装chipsec后,您可以使用以下命令行单独运行此模块:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载