iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击

一个以前未知的 rootkit 被发现将目光投向了 Hewlett-Packard Enterprise 的 Integrated Lights-Out ( iLO ) 服务器管理技术,以执行篡改固件模块并从受感染系统中完全擦除数据的野外攻击

伊朗网络安全公司 Amnpardaz 本周记录了这一发现,这是 iLO 固件中第一个真实世界恶意软件的实例。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击

“iLO 的许多方面使其成为恶意软件和 APT 组的理想乌托邦:极高的特权(高于操作系统中的任何访问级别)、对硬件的极低级别访问、完全不在视线范围内管理员和安全工具,普遍缺乏检查 iLO 和/或保护它的知识和工具,它为恶意软件提供的持久性即使在更改操作系统后仍然存在,特别是始终运行且永不关闭, ”研究人员

除了管理服务器之外,iLO 模块可以广泛访问服务器上安装的所有固件、硬件、软件和操作系统 (OS),这一事实使它们成为破坏使用 HP 服务器的组织的理想候选者,同时还使恶意软件能够重新启动后保持持久性并在重新安装操作系统后继续存在。然而,用于渗透网络基础设施和部署雨刷器的确切操作方法仍然未知。

被称为iLOBleed的 rootkit 自 2020 年以来一直被用于攻击,其目标是操纵许多原始固件模块,以隐蔽地阻止固件更新。具体来说,对固件例程所做的修改模拟了固件升级过程——据称通过显示正确的固件版本并添加相关日志——而实际上没有执行更新。

研究人员说:“仅此一项就表明,该恶意软件的目的是成为具有最大隐蔽性并躲避所有安全检查的 rootkit。” “一种恶意软件,通过隐藏在最强大的处理资源之一(始终开启)中,能够执行从攻击者那里收到的任何命令,而不会被检测到。”

尽管对手的身份仍未确定,但 Amnpardaz 将 rootkit 描述为可能是高级持续威胁 (APT) 的产物,APT 指的是一个民族国家或国家支持的团体,该团体使用持续、秘密和复杂的黑客技术来未经授权访问系统并长时间留在内部而不引起注意。

如果有的话,开发再次使固件安全成为焦点,需要及时应用制造商提供的固件更新以降低潜在风险,将 iLO 网络与运行网络分开,并定期监控固件以获取感染迹象.

研究人员指出:“另一个重要的一点是,有一些方法可以通过网络和主机操作系统访问和感染 iLO。” “这意味着即使 iLO 网线完全断开,仍然存在感染恶意软件的可能性。有趣的是,在不需要的情况下,没有办法完全关闭或禁用 iLO。

报告详情

1 技术摘要

惠普服务器提供了一个名为 iLO(又名 Integrated Lights-Out)的管理模块,一旦连接电源线,它就会打开,加载一个成熟的专有操作系统。该模块可以完全访问服务器上安装的所有固件、硬件、软件和操作系统。除了管理服务器硬件之外,它还允许管理员远程打开和关闭服务器、访问服务器的控制台,甚至在其上安装操作系统。

iLO 的许多方面使其成为恶意软件和 APT 组的理想乌托邦:极高的特权(高于操作系统中的任何访问级别)、对硬件的极低级别访问、完全不在管理员和安全工具,普遍缺乏检查 iLO 和/或保护它的知识和工具,它为恶意软件提供的持久性即使在更改操作系统后仍然存在,特别是始终运行且永不关闭……

在本报告中,我们分析了一个在野外发现的 rootkit,它隐藏在 iLO 中,无法通过固件升级删除,并且可以长时间隐藏。该恶意软件已被黑客使用一段时间,我们一直在监控其性能。据我们所知,这是全球首次在 iLO 固件中发现真实世界恶意软件的报告。

由于分析此恶意软件需要对 HP iLO 固件架构有一些了解,因此我们将首先概述 HP iLO 架构。然后,在下一节中,我们将分析发现的恶意软件及其各种模块。最后,在最后一部分,我们将讨论保护 iLO 的策略和解决方案。

除了这份报告之外,我们还开发了一些工具来转储 iLO 固件并检查感染。我们打算在不久的将来向公众提供这些内容。我们希望这份报告能够成为吸引更多公众关注固件安全性并创建保护它们的解决方案的转折点。

1.1 要点

  • HP 服务器的 iLO 管理面板是恶意软件的避风港,感染后无法通过常规方法检测或清除。
  • 不仅可以通过 iLO 网络端口访问和感染 iLO,还可以通过系统管理员或对主操作系统的 root 访问权限来访问和感染 iLO。这意味着,如果入侵者可以访问在服务器上安装的主操作系统上具有管理员/root 权限的用户,它可以(无需任何进一步身份验证)直接与 iLO 通信,并在它易受攻击时感染它。
  • 多年来的研究揭示了 HP iLO 中的多个漏洞,这些漏洞导致制造商对补丁和架构进行了更改。
  • 在用于 G9 及以下服务器的 iLO4 及其早期版本中,硬件中没有带有嵌入式可信根密钥的安全启动机制。因此,这些版本的固件更容易被恶意软件修改和感染。
  • 即使 iLO 已经更新到没有任何已知漏洞的最新版本,仍然可以将其降级到较低版本,这使得感染完全修补的固件成为可能。如果启用了非默认设置,您只能在 G10 系列中防止这种情况。在较早的服务器上,无法阻止降级机制。
  • 鉴于上述情况,完全断开 iLO 网络电缆或将固件升级到最新版本等简单的解决方案不足以防止恶意软件感染。
  • 2020年以来,Amnpardaz Software公司的恶意软件分析团队发现了一个rootkit,该rootkit在iLO固件中添加了一个名为Implant.ARM.iLOBleed.a的恶意模块,并修改了多个原始固件模块。rootkit 会在假装完成的同时默默地阻止固件更新。它还提供对服务器硬件的访问;其结果之一是完全擦除服务器磁盘
  • 用于验证 HP iLO 固件完整性的工具即将向公众发布.

1.2 侵害指标(IOC)

虽然习惯上将哈希值作为 IOC 提供,但我们认为这对这种恶意软件无效。主要是因为如果手头没有 iLO 转储工具,将无法读取固件并检查其哈希值。而且,真正的 iLO 固件集非常少,因此采用白名单方法是可能的,并且更适合。(即将固件的哈希值与已知良好的哈希值列表进行比较)。

但是,如果您担心您的服务器是否感染了此恶意软件,您可以使用以下简单方法:

如前所述,为了保持持久性并防止被清除,恶意软件会默默地阻止固件升级过程。该恶意软件努力模拟升级过程,并难以在 iLO 的 Web UI 和其他地方显示虚假的“升级”版本,但有一个问题:惠普对 iLO 的 UI 进行了相当大的更改。因此,您可以使用“裸眼”轻松检测恶意软件的存在。

在图 1 中,您可以看到 iLO-4 固件的两个屏幕截图,都声称是 2.55 版。但是正如您所看到的,其中一个使用了旧的 2.30 版 UI,它使用了一个完全不同的主题。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 1 – 伪造(受感染)和真实 iLO 登录页面的比较

当然,像任何其他 IOC 一样,我们希望骗子能找到绕过这种检测方法的方法。但与此同时,您可以使用它轻松“发现”恶意软件。我们希望他们付出一点——尽管很少——努力让一切“看起来”正确。

2 HP iLO 技术

HP 为系统管理员提供 iLO 技术作为管理服务器的手段。该技术允许系统管理员使用特殊的网络接口远程访问其服务器的各种功能,包括:

  • 打开和关闭服务器,
  • 配置各种硬件和固件设置,
  • 远程访问系统控制台,
  • 远程安装 CD/DVD 映像,
  • 远程监控和控制系统的多项软硬件指标

多年来,HP 为其不同代的服务器推出了各种版本的 iLO 固件。表 1 显示了这些版本。

表 1 – 不同代 HP 服务器的 iLO 固件版本

iLO 固件系列HP ProLiant 服务器最新版本
iLOG2、G3、G4、G6(300系列以下)1.96 – 2014 年 4 月
iLO 2G5和G6(300系列以上)2.33 – 2018 年 3 月
iLO 3G71.94 – 2020 年 12 月
iLO 4G8、G92.79 – 2021 年 11 月
iLO 5G102.60 – 2021 年 12 月

由于该固件接口在所有服务器系列中的关键权限和性能,可以想象攻击该接口的各种场景。这些攻击包括获取管理界面的密码、利用安全漏洞,以及刷入受感染的固件而不是服务器上的主固件。

近年来,已经进行了一系列研究来识别 HP iLO 固件管理界面中的安全漏洞 [1][2][3]。这些研究最终导致发现了许多具有严重到高度和中等风险的漏洞。不幸的是,近年来,这些漏洞和概念验证代码片段的广泛发布使得个人和黑客团体能够利用这些漏洞攻击在其企业网络中使用惠普服务器的组织的网络基础设施。

2.1 iLO 固件架构

从硬件的角度来看,iLO 与系统的主板集成在一起,包括以下内容[2]:

  • 采用 GLP/Sabine 架构的 ARM 处理器
  • 用于固件存储的闪存
  • 专用内存
  • 专用网络接口
  • 一组用于与其他控制单元通信的硬件端口
iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 2 – iLO 固件方案

图 2 显示了 iLO 硬件的示意图。从图中可以看出,ARM 处理器通过 PCI-Express 接口连接到南桥,并通过它连接到服务器的主处理器。iLO 还可以直接与 CMOS 通信。这种类型的连接用于设置变量,例如 iLO 管理界面将提供给用户的引导顺序。

2.1.1 iLO 处理器

在iLO硬件所使用的处理器是从7和8ARM处理器的世代。这些处理器提供了良好的处理能力,同时被认为是非常低的消耗。这有助于在服务器处于待机(断电)模式时为网络管理员提供管理界面,而不会消耗太多电力和电流。

2.1.2 持久化存储

iLO 处理器可以与不同的内存芯片进行通信。本节将特别讨论其中两种芯片。第一个是存储 iLO 固件的系统主芯片,在 iLO 引导序列期间用于加载固件。

第二个是称为 iLO NAND 闪存的芯片内存,iLO 固件可将其用作外部系统存储。加载后,iLO 固件使用此存储来保存系统事件日志和历史记录等文件。它也是由 iLO 操作系统运行的应用程序的存储空间。

2.1.3 与主服务器的连接

作为服务器管理和控制单元的 iLO 技术可以直接访问所有服务器硬件组件,例如内存、处理器、输入和输出端口以及硬盘。此外,服务器的主处理器将 iLO 检测为 PCI 模块并可以与其通信。

2.2 iLO 固件结构

iLO 固件作为二进制文件存储在 SPI 闪存驱动器中(通常大小为 16 MB)。从图 3 中可以看出,该固件由 3 个主要部分组成,包括引导加载程序、操作系统内核和用户模式模块。在这 3 个部分中,只有 Boot Loader 部分没有加密,其他两个部分是压缩的(使用 LZMA 算法)并包含签名。所有 iLO 固件可执行内容都是使用 ARM 架构编译的 C 代码。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 3 – iLO 固件的内部结构

从软件的角度来看,iLO 为服务器管理员提供了 Web Server 和 SSH Server 等多种服务。事实上,iLO 是一个完整的操作系统,一旦系统插入电网,即使托管服务器关闭,它也会启动并提供其服务

在 iLO 启动时,每个部分将在运行其任何部分之前检查下一部分的完整性。因此,Boot Loader 部分将负责验证签名、提取压缩和加载 Kernel 部分。内核部分还将负责验证签名、提取压缩和加载用户模式模块。

iLO 固件中使用的操作系统是由 Green Hills Software 开发的名为 Integrity 的实时操作系统,负责执行用户区中的任务。用户区实际上是HP开发打包的一个ARM架构的ELF二进制文件。这个文件有各种模块,每个模块都有一个特定的任务。每个任务都是一个进程,拥有专用的虚拟内存空间和一组运行在用户区的线程。在本文档的以下部分中,将介绍一些最重要的 iLO 模块。

2.3 iLO 模块

图 4 显示了 iLO 4 固件中的多个 UserLand 模块。一些最重要的模块将在接下来的部分中介绍。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 4 – iLO 4 固件中的多个 UserLand 模块

2.3.1 Web 服务器模块:iLO Web 管理界面

Web Server 模块负责以 Web 服务的形式提供 iLO 管理界面。该模块包含诸如 Web 界面、XML 编程界面、Redfish 编程界面和远程控制台等部分。

与 Web 服务器模块的连接可以是 HTTP 或 HTTPS。该模块有四个处理线程,每个线程负责管理和响应与模块建立的连接之一。每个连接请求都被逐行处理,分析其内容,如果认证和访问级别正确,则提供相应的响应。尽管访问几乎所有网页都需要用户身份验证,但某些数据以 XML 格式提供,无需经过身份验证过程。

2.3.2 CHIF 模块:与主机操作系统的连接

CHIF 模块是 iLO 中的模块之一,用于与 CPU 和服务器内存组件进行通信并在 iLO 和主机操作系统之间传输消息。简而言之,该模块的任务可以列举如下[3]:

  • 等待从服务器的主操作系统接收消息
  • 根据消息类型将接收到的消息发送给消息处理单元(Command Handler)
  • 将特定消息重定向到相关模块进行处理

默认情况下,发送到该模块的消息和命令不经过任何身份验证过程。

2.3.3 FUM 模块:固件更新

FUM 模块的主要任务是更新 iLO 固件。可以通过三种方式完成此任务:

  • 通过 HP Intelligent Provisioning 管理界面
  • 使用服务器上安装的主机操作系统并访问PCI-E接口
  • 通过 iLO Web 界面管理界面远程

FUM 模块分 5 个步骤执行固件更新操作[3]:

  • 通过主机服务器或 Web 服务器模块接收新固件文件。
  • 新固件文件被发送到 FUM 模块。
  • FUM 模块检查并验证新固件文件的数字签名。
  • FUM 模块要求内核也验证新固件文件的完整性。
  • 最后,FUM 模块将新固件发送到 SPI 模块以在 SPI 闪存上对其进行编程。
iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 5 – FUM 模块的 iLO 固件更新过程

在此过程中,通过检查固件的数字签名来验证固件的完整性,因此不会在 HP 提供的原始固件的基础上添加或更改模块。重要的一点是, 一般情况下,可以降级到较低版本的固件。

2.3.4 SPI 模块:访问闪存

该模块的主要功能是与包含 iLO 固件和服务器 BIOS 固件的 SPI 闪存进行通信。该模块为相关闪存芯片上的固件的读取、擦除和写入提供低级接口。如前所述,部分 iLO 固件更新操作是通过该模块执行的。

2.3.5 ConAppCli 模块:控制台(命令行)服务

该模块负责提供命令行用户界面服务,用于接收服务器管理员的命令。这些命令可以是用户管理、电源管理、查看系统事件等。

2.3.6 SSH 模块:远程命令行

除了 Web 界面之外,iLO 固件还使用 SSH 协议为用户提供加密的外壳服务。通过该模块,用户可以通过端口22与固件进行通信并执行一组命令。

2.3.7 Health Module:监控系统组件

该模块的任务是定期检查系统状态,并记录服务器事件。系统状态包括工作温度、风扇转速、电源状态、系统内存、网络、处理器状态等。

2.3.8 黑盒模块:黑盒系统

该模块充当服务器“黑匣子”。Health 模块记录的许多敏感和重要的系统信息和事件,然后每天都由该模块压缩和存储。

2.3.9 其他模块

除了前面部分提到的模块之外,iLO 固件还有各种其他模块,每个模块在 UserLand 部分都有一个特定的任务。SNMP、SNTP 和 SVCSiLO 等模块负责系统和网络管理任务,USB、GPIO 和 I2C 等模块提供对服务器硬件组件的 iLO 控制访问。

3 Implant.ARM.iLOBleed.a恶意软件分析

在本节中,我们将对 HP iLO 固件中发现的植入进行技术分析。

当我们的安全分析团队发现恶意软件时,攻击者决定擦除服务器的磁盘并完全隐藏他们的踪迹。有趣的是,攻击者并不满足于一次性销毁,而是将恶意软件设置为每隔一段时间重复执行数据销毁。可能他们认为这样如果系统管理员重装操作系统,过一会整个硬盘又会被毁掉。显然,他们认为他们的恶意软件不会被发现。

但与其他“wiper”恶意软件不同,这不是一次性恶意软件。它旨在长时间保持在雷达之下。此恶意软件的重要功能之一是操纵 iLO 固件升级例程,因此如果系统管理员尝试将 iLO 固件升级到新版本,恶意软件会在阻止升级例程的同时模拟版本更改。为此,恶意软件会假装升级成功,并提供所有正确的消息和日志。甚至固件版本的确切数量也被提取并显示在 Web 控制台和其他位置的适当位置,尽管实际上并未执行升级。

仅此一项就表明,该恶意软件的目的是成为具有最大隐蔽性并躲避所有安全检查的 rootkit。一种恶意软件,通过隐藏在最强大的处理资源之一(始终打开)中,能够执行从攻击者那里收到的任何命令,而不会被检测到。

自然地,执行此类攻击的成本使其属于 APT 类别。但是,使用如此强大且成本高昂的恶意软件来破坏数据,增加恶意软件被检测到的可能性的任务对于这些骗子来说似乎是一个明显的错误。

您可以在下一节中阅读有关此恶意软件的更多技术提示。

3.1 iLO 转储实用程序

检查固件感染的第一步是准备一份副本或检查所谓的固件转储。

遗憾的是,HP 没有提供测试和读取 iLO 固件的工具或方法。为此,编写了一个固件转储工具被提上了日程,最终演变成了Padvish iLO Scanner工具,演变为两个版本:

  1. 从主机操作系统内部扫描:如前所述,iLO 固件可通过安装在系统上的主处理器和操作系统作为 PCI-Express 卡使用。HP 为各种操作系统引入了一个名为 flash_ilo 的工具,以允许将固件更新到较新的版本。但是,此工具只允许您写入固件,而不允许您读取现有固件。为此,基于在 iLO 上获得的知识,我们能够开发一种工具来读取固件并从中创建转储。
  2. 通过 iLO 网口扫描由于通过主机操作系统进行扫描可能并不总是可行,并且网络管理员可能难以在生产服务器上执行或大量执行,因此考虑了另一种扫描固件的方法。此版本的扫描器允许转储固件,方法是使用先前 iLO 版本上的一些已知漏洞,使其能够在易受攻击的固件上远程执行代码。由于使用漏洞,该版本只能转储2.30到2.50范围内的HP iLO4固件。

3.2 感染固件分析

制作服务器固件副本后,应将其与原始固件版本进行比较。Implant.ARM.iLOBleed.a 恶意软件基于 iLO 固件 2.30 版。因此,该受感染版本与原始版本之间的差异如下图所示(图 6)。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 6 – 固件签名差异:(顶部)获得的受感染转储;
(下)惠普公司提供的原版

仔细观察,还比较了文件系统级固件和模块的组件,如表 2 所示。

表 2 – 比较受感染系统固件模块与原始版本的签名

差异(字节)MD5 (已经被感染)MD5(原版)模块名称
15.625MB4f8417af3a6f75780e09c5792397a05f98af47cb8cacb25abd333d8a1a752c6bhpimage.bin
08433650ef98fd8790877e6616c02b66c8433650ef98fd8790877e6616c02b66chpimage.hdr
0ae22d82a3e954ecf911b834463dbfbbeae22d82a3e954ecf911b834463dbfbbebootloader.hdr
5 B1fdb4270665177ecb1c9708039bab93420ff78c6604563c27b6f9c75775c9306bootloader.bin
2 B7df3b258ca3c12f0f8de77469456e25de1b1244fead44f73efb7b559e9d719c9kernel_main.hdr
12 B9ab97c5b03664da18ab1f775dc11c200bacc259ea63785607faf2dab6939a2dbkernel_main.bin
2 B7df3b258ca3c12f0f8de77469456e25de1b1244fead44f73efb7b559e9d719c9kernel_recovery.hdr
12 B9ab97c5b03664da18ab1f775dc11c200bacc259ea63785607faf2dab6939a2dbkernel_recovery.bin
2 B64d0143d638885745b241796268eb0b27db6ebd698fa4862cfde68a546e9a75bELF.hdr
15.625MBbdeeab3994ec5d0b93d961148a6b712dd16fee481f78ad0275dd29ed271582aaELF.bin

如该表所示,在构成 hpimage.bin 的所有模块中,只有 hpimage 头文件和引导加载程序头文件两部分是相同的。在其他部分中,签名的不同表明这两个文件这些部分之间存在差异。也可以看出,大部分变化都与ELF.bin模块有关,而其他模块只有2到12个字节的变化。

3.2.1 重启后持久化

任何类型的恶意软件的开发人员担心的一个问题是,在恶意软件最初进入系统后,系统必须“保持”受感染状态。

正如我们之前在“iLO 固件结构”一节中详述的,在 iLO 启动过程中,bootloader 模块负责验证操作系统内核的签名,而系统内核则负责验证用户的签名——模式模块。因此,如果攻击者想要在 iLO 固件上创建后门,除了插入后门(基本上在 ELF.bin 文件中完成)之外,还需要禁用操作系统内核中的验证机制,从而在引导程序。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 7 – 禁用操作系统内核和用户模式模块的验证过程

图 7 简要描述了绕过操作系统内核和用户模式模块验证过程的过程[2]:攻击者通过逆向工程提取 bootloader.bin、kernel.bin 和 ELF.bin 三个主要部分后,查找在引导加载程序和内核中执行签名验证和验证操作的函数的地址,并将它们替换为 NOP 命令。最后,将修改后的文件组合在一起形成一个完整的 HP Image 文件,并作为新固件写入 SPI 闪存。重启后,可以看到被感染的固件加载后门没有任何问题。

3.2.2 恶意软件模块分析

3.2.2.1 引导加载程序部分

如表 2 所示,Boot Loader 与原始固件相比更改了 5 个字节。对这些字节的详细分析表明,这种差异是由于负责验证操作系统内核的功能发生了变化,并且正在通过替换 NOP 命令禁用此过程。(图8)

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 8 – 禁用 Bootloader 中的签名验证功能

3.2.2.2 内核部分

如表 2 所示,内核从原始固件更改了 12 个字节。对这一变化的更详细分析表明,这种差异是由于负责验证 UserLand 签名并通过替换 3 个 NOP 命令禁用此过程的功能发生了变化(图 9)

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 9 – 禁用内核中的签名验证功能

3.2.2.3 UserLand 部分

提取受感染固件的 UserLand 部分并将其内容与原始版本进行比较,表明删除了一个文件(sectionInfo)并添加了一个新模块(称为 newELF,包含 17 个单独的部分)。请参见图 10。此外,除了添加新的恶意软件模块外,原始版本中的许多模块也发生了变化。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 10 – 受感染系统硬件中的修改文件

在本节中,对该恶意软件中原始版本的模块和修改后的模块进行了比较,结果如表 3 所示。

表 3 – 带有 NewELF 的 iLO 版本与原始版本的比较

New OpOld OpFunctionOffset文件名
BLMOVsub_100700x280Chif.ELF.text
BLADDsub_19BD00x9c28Chif.ELF.text
BLSUBsub_102100x218Webserver.ELF.text
BLBLsub_3AEC40x2af80Webserver.ELF.text
BLBLsub_3AEC40x2b024Webserver.ELF.text
BLMOVsub_152AC0x5840Health.ELF.text
BLMOVsub_47B1C0x37b30Health.ELF.text
BLBLNEsub_13B680x4324Fum.ELF.text
BLMOVsub_13B680x43b8Fum.ELF.text
BLBLsub_13B680x4400Fum.ELF.text
BLMOVsub_147200x4738Fum.ELF.text
BLSUBsub_109A40x9acJson_dsp.ELF.text
BLBLsub_19F480xa564Json_dsp.ELF.text
BLBLsub_731900x6324cJson_dsp.ELF.text
BLBLsub_731900x632f0Json_dsp.ELF.text
BLMOVsub_114EC0x1578SvcsiLO.ELF.text
BLBLsub_143000x4310SvcsiLO.ELF.text
BLMOVsub_1F3780xf388SvcsiLO.ELF.text

3.2.3 恶意软件工件

Implant.ARM.iLOBleed.a 恶意软件在 iLO(又名 NAND 闪存)的工作区存储中创建了 3 个文件。这些文件的路径甚至名称似乎都可以通过配置器模块进行配置。在我们获得的恶意软件样本中,这三个文件分别命名为 lifesignal.bin、schedule.bin 和 fakefwdata.bin(表 4)。

表 4 – 恶意软件使用的三个文件

文件名存储路径相关模块
lifesignal.bini:\vol0\logs\lifesignal.binChif.tool – NewELF.ELF
schedule.bini:\vol0\logs\schedule.binNewELF
fakefwdata.bini:\vol0\logs\fakefwdata.binFum.tool – NewELF.ELF

如果系统管理员尝试升级其服务器的固件版本,恶意软件会在阻止和模拟固件升级操作以欺骗系统管理员的同时,在 fakefwdata.bin 文件中输入此操作的信息。

schedule.bin 文件,顾名思义,用于调度磁盘擦除操作。在这个文件中,存储了两个 4 字节的整数:一个计数器和一个日期纪元。第一个 4 字节数字(计数器)被设置为初始值,并且每次执行磁盘擦除过程时都会减一。该操作按周期重复,直到计数器达到零。第二个数字(日期)表示磁盘擦除过程的开始日期(图 11)。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 11 – 文件 schedule.bin 的内容

3.2.4 “newELF”模块内部

这个模块是一个完整的ELF,添加到Boottable的末尾,增加一个单元的进程数。此 ELF 与此固件中的其他 ELF 一样,由几个基本组件组成。第一部分是 NewELF.ELF.Initial.text,与其他 ELF 不同,它不是空的,并且包含代码。仔细观察会发现,该部分与 ConAppCLI.ELF.text 非常相似,后者是 iLO 硬件的主要模块之一。表 5 显示了这两个模块之间的一般比较,显示了它们的差异。这些相似之处表明 Implant.ARM.iLOBleed.a 恶意软件的基本结构是基于 ConAppCLi 模块的功能。

表 5 – ConAppCLI.ELF.text 和 NewELF.ELF.Initial.text 之间的比较

NewELF.ELF.Initial.text OpcodeConAppCli.ELF.text OpodeFunctionOffset
STMFDSTMFDsub_100700x74
SUBSUBsub_100700x7c
LDMDBLDRsub_100700x80
Add Zero BufferEnd of Old File0x91c78

恶意软件的另一个基本部分是 NewELF.ELF.text。图 12 展示了恶意软件的主要功能。该函数的主要任务之一是设置一个确定恶意软件操作主要参数的数据结构,其中一部分已如图13所示。在该函数的开头,schedule.bin文件的地址为复制到一个变量,指向这个地址的指针复制到数据结构的0x0c地址。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 12 – 恶意软件的主要功能

接下来,在另一个名为 initOperationConfigFiles 的函数中,检查恶意软件所需文件的状态。在这个函数中,首先创建lifesignal.bin文件,然后考虑一些条件:

  • 如果 schedule.bin 文件存在并且具有有效的结构,则其内容将被复制到数据结构的地址 0 到 0x07,并且值 0x3 将写入 lifesignal.bin 文件。
  • 如果相关地址中不存在 schedule.bin 文件,则会创建并填充初始值。之后,数据结构就被完全填满了。
  • 如果 schedule.bin 文件的结构无效,则会在 lifesignal.bin 文件中写入 0x9。
iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 13 – 恶意软件操作参数的数据结构

如前所述,schedule.bin 文件由两个 4 字节的数字组成。在操作开始时,在 initOperationConfigFiles 函数中,计数器编号设置为 maxOperationCount(地址 0x24 数据结构),日期编号设置为所需的时间和命令执行的日期。在恶意软件的一个样本中,重复操作的最大值设置为 0x2,而在另一个样本中设置为 0x3e8(相当于 1000 次)。

在检查适合执行销毁操作的条件后,操作将在 startPeriodicOperation 函数中开始(图 14)。此函数在第一步中创建并填充具有最大操作长度的数据结构数组。这些数据结构中的每一个都使用不同的执行时间值进行评估。该设置使得恶意软件在初始等待时间(例如 36 小时)的基础上增加了各种操作周期(例如 12 小时)的倍数,并将该值记录在每个数据结构的 0x1C 地址处。在这种情况下,操作在从 schedule.bin 文件中记录的时间开始的等待时间(36 小时)之后开始,并在每个周期重复。最后调用 startWipeOperation 函数,执行磁盘销毁操作。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 14 – startPeriodicOperation 的函数体

startWipeOperation 函数在循环中执行销毁操作,如图 15 所示。在此循环开始时,名为 GetAndValidateOperationParameters 的函数检查操作参数的准确性并计算剩余的操作数。实际上,在名为SuccessfulOperationCount 的变量中执行的操作数被提取并检查,以便获得的数不超过计数器的最大值。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 15 – startWipeOperation 的函数体

下一个函数是 WaitForNextOperationTarget 函数,其内容如图 16 所示。该函数的职责是在主循环中创建中断,直到到达下一个操作时间。在指定时间,该函数退出循环,主操作循环继续运行。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 16 – WaitForNextOperationTarget 的函数体

在主循环的下一部分中,执行擦除磁盘操作并完全擦除服务器的硬盘。销毁操作完成后,schedule.bin 文件由 DecrementOperationCount 函数更新,并减少一个计数器。DecrementOperationCount 函数的主体如图 17 所示。

iLOBleed Rootkit针对HP企业服务器进行数据擦除攻击
图 17 – DecrementOperationCount 的函数体

3.2.5 修改模块分析

该恶意软件包含一些 iLO 模块的修改版本。其中一些模块被修改以防止原始功能或以其他方式更改它。恶意软件中有 6 个修改后的模块,如下所示:

表 6 – 恶意软件修改模块

模块名称描述
.chif.tools更改 iLO 和服务器之间的消息交换通道
.fum.tools绕过固件更新过程以维护受感染的固件
.webserver.tools更改管理 Web 界面以显示无效的 iLO 软件版本信息
.health.tools修改服务器事件日志模块以防止记录恶意软件的操作
.svcsiLO.tools修改 iLO 操作系统的多线程内核
.json_dsp.tools未指定

4.结论

固件安全近年来已经成为IT安全中的一个重要问题,但在实践中还没有得到足够的重视。由于 HP iLO 管理工具具有的功能和高级别的访问权限,它需要特殊的保护方法。不幸的是,由于缺乏工具和信息以及 iLO 技术的专有性质,许多安全研究人员无法研究这些系统。更糟糕的是,尽管安全研究人员过去发表的研究已经检查了假设恶意软件嵌入软件的可能性,但仍然没有公开可用的解决方案来“检测”感染并在感染发生时将其消除[2]。

另一个重点是,有一些方法可以通过网络和主机操作系统访问和感染 iLO。这意味着即使 iLO 网线完全断开,仍然存在感染恶意软件的可能。有趣的是,如果不需要 iLO,则无法完全关闭或禁用 iLO。

这些问题表明需要采取预防性安全措施来提高固件的安全性,例如更新到制造商提供的最新版本、更改管理员密码以及将 iLO 网络与操作网络隔离,最后定期监控固件在安全参数和潜在感染的条款。

4.1 iLO 固件保护建议

  • 请勿将 iLO 网络接口连接到操作网络并临时搭建一个完全独立的网络
  • 定期将 iLO 固件版本更新到 HP 的最新官方版本
  • 在 HP 服务器上执行 iLO 安全设置,并禁用 G10 服务器的降级
  • 使用纵深防御策略降低风险并在到达 iLO 之前检测入侵
  • 定期使用 iLO Scanner 工具检测当前版本的 iLO 服务器固件中的潜在漏洞、恶意软件和后门

5.参考

[1] F. Périgaud、A. Gazet 和 J. Czarny,“通过 BMC 颠覆您的服务器:HPE iLO4 案例”,Recon,2018 年。
[2] F. Périgaud、A. Gazet 和 J. Czarny, “通过 BMC 对您的服务器进行后门处理:HPE iLO4 案例”,SSTIC,2018 年。
[3] F. Périgaud、A. Gazet 和 J. Czarny,“将您的 BMC 变成旋转门”,ZeroNights,2018 年。

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注