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

写在前面的话

调试机制是帮助跟踪几乎所有平台上的故障源的标准组件。一般主要在平台生产之前使用,但也经常用于翻新和修复返回的平台。安全研究人员可以多次使用调试特性测试攻击,包括定位和使用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后,您可以使用以下命令行单独运行此模块:

我们已经观察到一些系统出现故障,但很难知道还有多少系统受到影响。英特尔发布了一份安全公告(CVE-2018-3652),内容涉及一些未安全设置调试策略的系统。如果您的系统受到影响,我们建议您运行检查并亲自查看。

缓解措施

理论上,对固件保护机制是个不错的想法,但现实中,攻击者通过对固件保护机制的修改,可以获取对敏感系统的完全物理控制。如果一个系统未能通过固件保护机制的检查,则即使在非常有限的时间段内,任何人都可以获得系统的物理访问。只需插入USB端口并运行公开的脚本代码,攻击者就可以绕过几乎所有的安全技术。例如,攻击者可能会使用自己开发的恶意软件或rootkit感染固件,而且他们可以在不打开软件的情况下进行操作。

某些系统可能在BIOS或固件设置菜单中具有启用或禁用调试功能的设置。禁用该设置后,安全管理员可以检查该配置是否通过上文提到的chipsec测试模块。在这种情况下,使用强密码或其他机制保护这些设置非常重要。

在其他情况下,你可能需要联系系统开发商并询问是否有安全禁用调试访问的版本。

结论

在本文中,Eclypsium的研究人员研究了使用USB调试来绕过安全措施并安装固件rootkit的攻击。虽然应该在系统运行中禁用调试机制,但是目前它仍是进行快速安全检查来确定你的系统是否受到影响的好办法。研究人员希望用他们的研究,帮助组织理解和防御“邪恶女仆”攻击。随着实时嵌入式系统的复杂程度不断提高,低效率的调试方法的成本日益增加。鉴于当前嵌入式应用的复杂性还有继续上升的趋势,对这些系统的调试将成为开发商考虑的关键因素。

*本文作者:eclypsium,由周大涛编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

某云用户网站入侵应急响应

1、情况概述 该案例是前期应急处置的一起因安全问题导致的内网不稳定的情况。写下来,和大家一起讨论应急响应的一些思路及其中间遇到的一些坑,欢迎大牛指点、讨论。 情...

32370
来自专栏域名资讯

如何判断你买的域名有没有被K过?

不知道大家有没有遇到过这种情况,Google不收录你的外贸网站。这个问题困扰了我很久,从SEO的角度来说,这个外贸网站基本是废了,一直想知道为什么...

50270
来自专栏云基础安全

Web风险评估:腾讯云Web漏洞扫描

Web 漏洞扫描是用于监测网站漏洞的安全服务,为企业提供 7*24 小时准确、全面的漏洞监测服务,并为企业提供专业的修复建议, 从而避免漏洞被黑客利用,影响网站...

53900
来自专栏吴伟祥

设计模式之生产者消费者模式的使用分析 转

生产者消费者模式并不是GOF提出的23种设计模式之一,23种设计模式都是建立在面向对象的基础之上的,但其实面向过程的编程中也有很多高效的编程模式,生产者消费者模...

12450
来自专栏FreeBuf

一次通过漏洞挖掘成功渗透某网站的过程

起因 我们的一个客户希望我们对其网站进行渗透测试,以发现其脆弱点并协助改进安全性。在拿到对方渗透测试授权之后,我们开始了对其网站的分析。 寻找突破口 对方...

541100
来自专栏魏艾斯博客www.vpsss.net

使用 DNSPOD 和腾讯云 CDN 加快网站访问速度的教程

随着国外 VPS 越来越便宜,很多站长为了性价比都把网站转移到了大陆以外的地区,比如使用美国 VPS、日本 VPS、韩国 VPS、台湾 VPS。不过考虑到网站主...

1.1K40
来自专栏轮子工厂

Linux不同版本的区别以及使用建议

官网地址:https://www.redhat.com/zh/global/china

18220
来自专栏FreeBuf

对一次网络钓鱼攻击的逆向分析

作为最近的一项研究,我们首先发现了两个钓鱼攻击域名,而在这两个域名之后是更多的域名,这些域名已经成功地攻击了超过1000多名用户,这项钓鱼攻击主要针对的是AOL...

28950
来自专栏林德熙的博客

使用 IncrediBuild 提升 VisualStudio 编译速度 安装获得许可使用

我现在有一个 100M 的代码,需要快速去编译他,我寻找了很多方法,本文记录我找到的 IncrediBuild 用于提交编译速度。

20710
来自专栏程序你好

微服务:API网关在API安全中的作用

当从单体应用程序切换到微服务时,来自客户端的行为不能与以前一样,单体架构客户端只有一个入口点到应用程序。

45440

扫码关注云+社区

领取腾讯云代金券