【安全资讯】惠普iLO固件中包含恶意rootkit
引言
惠普服务器包含一个名为 iLO(又名 Integrated Lights-Out)的管理模块,该模块一旦连接电源线,就会打开加载一个专有操作系统。iLO模块可以完全访问服务器上安装的所有固件、硬件、软件和操作系统。12月28日,研究人员分析了一个在野发现的恶意软件iLOBleed,据悉,这是全球首次在 iLO 固件中发现的恶意软件。该恶意软件隐藏在 iLO 中,无法通过固件升级删除,并且可以长时间隐藏。
简况
由于分析此恶意软件需要对 HP iLO 固件架构有一些了解,因此首先介绍 HP iLO 架构。
HP iLO 架构
惠普服务器的iLO模块除了管理服务器硬件之外,还允许管理员远程打开和关闭服务器、访问服务器的控制台,甚至在其上安装操作系统。iLO具有极高的特权(高于操作系统中的任何访问级别)、对硬件的极低级别访问、完全不在管理员和安全工具的可视范围内、缺乏检查 iLO 和保护它的知识和工具,它为恶意软件提供的持久性即使在更改操作系统后仍然存在,且可以始终运行且永不关闭,因此易成为被恶意软件和APT组织利用的管理模块。
iLO 与系统的主板集成在一起,包括采用 GLP/Sabine 架构的 ARM 处理器、用于固件存储的闪存、专用内存、专用网络接口以及一组用于与其他控制单元通信的硬件端口。iLO 固件作为二进制文件存储在 SPI 闪存驱动器中,该固件由 3 个主要部分组成,包括引导加载程序、操作系统内核和用户模式模块。iLO 固件的内部结构如下图:
从软件的角度来看,iLO 为服务器管理员提供了 Web Server 和 SSH Server 等多种服务。事实上,iLO 是一个完整的操作系统,一旦系统插入电网,即使托管服务器关闭,它也会启动并提供其服务。
iLO 4 固件中有多个 UserLand 模块,具体包括:
- Web 服务器模块:iLO Web 管理界面
- CHIF 模块:与主机操作系统的连接
- FUM 模块:固件更新
- SPI 模块:访问闪存
- ConAppCli 模块:控制台(命令行)服务
- SSH 模块:远程命令行
- Health Module:监控系统组件
- 黑盒模块:黑盒系统
- 其他模块:SNMP、SNTP 和 SVCSiLO 等模块负责系统和网络管理任务,USB、GPIO 和 I2C 等模块提供对服务器硬件组件的 iLO 控制访问。
Implant.ARM.iLOBleed.a恶意软件分析
恶意软件的重要功能之一是操纵 iLO 固件升级例程,因此如果系统管理员尝试将 iLO 固件升级到新版本,恶意软件会在阻止升级例程的同时模拟版本更改。为此,恶意软件会假装升级成功,并提供所有正确的消息和日志。甚至会在 Web 控制台或其他位置显示固件版本的确切数量,尽管实际上并未执行升级。
仅此一项就表明,该恶意软件的目的是成为具有极高的隐蔽性并躲避所有安全检查的 rootkit。由于执行此类攻击的成本高昂,因此研究人员判定其属于 APT组织使用的恶意软件。
Implant.ARM.iLOBleed.a 恶意软件基于 iLO 固件 2.30 版。因此,该受感染版本与原始版本之间的差异如下图,顶部为获得的受感染转储,底部为惠普公司提供的原始版本:
大部分变化都与ELF.bin模块有关,而其他模块只有2到12个字节的变化。如果攻击者想要在 iLO 固件上创建后门,除了插入后门(基本上在 ELF.bin 文件中完成)之外,还需要禁用操作系统内核中的验证机制,过程如下:
禁用操作系统内核和用户模式模块的验证过程
Boot Loader 与原始固件相比更改了 5 个字节,这种差异是由于负责验证操作系统内核的功能发生了变化,并且正在通过替换 NOP 命令禁用此过程。内核从原始固件更改了 12 个字节,这种差异是由于负责验证 UserLand 签名并通过替换 3 个 NOP 命令禁用此过程的功能发生了变化。受感染固件的 UserLand 部分删除了一个文件(sectionInfo)并添加了一个新模块(称为 newELF,包含 17 个单独的部分)。
Implant.ARM.iLOBleed.a 恶意软件在 iLO(又名 NAND 闪存)的工作区存储中创建了 3 个文件。这些文件的路径甚至名称似乎都可以通过配置器模块进行配置。这三个文件分别命名为 lifesignal.bin、schedule.bin 和 fakefwdata.bin。
该恶意软件包含一些 iLO 模块的修改版本,恶意软件中的 6 个修改后的模块如下所示:
模块名称 |
描述 |
.chif.tools |
更改 iLO 和服务器之间的消息交换通道 |
.fum.tools |
绕过固件更新过程以维护受感染的固件 |
.webserver.tools |
更改管理 Web 界面以显示无效的 iLO 软件版本信息 |
.health.tools |
修改服务器事件日志模块以防止记录恶意软件的操作 |
.svcsiLO.tools |
修改 iLO 操作系统的多线程内核 |
.json_dsp.tools |
具体信息不详 |
结论
由于 HP iLO 管理工具具有的功能和高级别的访问权限,因此需要特殊的保护方法,应采取预防性安全措施来提高固件的安全性,例如更新到制造商提供的最新版本、更改管理员密码以及将 iLO 网络与操作网络隔离、定期监控固件的安全参数和潜在感染。