研究人员遇到了几个可疑的UEFI固件映像,经过进一步分析,能够确定它们是基于HackingTeam的VectorEDK引导程序泄漏的源代码。
UEFI的全称为统一可扩展固件接口(Unified Extensible Firmware Interface),已嵌入到现代设备系统的指定芯片中,它可以替代旧版BIOS,通常用于简化设备的启动顺序并加载操作系统,同时使用功能丰富的环境来完成此操作。同时,它已成为攻击者进行异常持久攻击的目标。
研究人员在其中发现了包含恶意植入的受感染UEFI固件映像,这种植入是在受害设备上部署其他恶意软件的一种手段,到目前为止,研究人员还没有遇到过这种恶意软件。据研究人员所知,这是第二个已知的公开案例,其中普遍发现了攻击者正在使用的恶意UEFI固件。
在本文中,研究人员将详细说明以下主要发现:
1.研究人员发现恶意UEFI固件映像已从其良性副本进行了修改,以合并几个恶意模块;
2.这些模块用于将恶意软件传播到受害者设备上。该恶意软件是研究人员称为MosaicRegressor的更广泛的恶意框架的一部分;
3.该框架的组成部分是在针对非洲、亚洲和欧洲的外交官和一个非政府组织成员的一系列针对性攻击中发现的,这些攻击者与朝鲜的活动均显示出联系。
4.攻击活动中使用的某些框架组件中的代码伪造以及C&C基础结构中的重叠部分表明,这些攻击可能与使用Winnti后门的组织有联系;
此次攻击是在固件扫描器的帮助下发现的,该扫描器自2019年初以来已集成到卡巴斯基的产品中。这项技术是专门用来检测隐藏在ROM BIOS中的攻击的,包括UEFI固件镜像。
UEFI是构成低级平台固件的结构和操作的规范,以便允许操作系统在其活动的各个阶段与其进行交互。
这种交互在引导阶段最为明显,在这个阶段UEFI固件促进了操作系统本身的加载。也就是说,它也可能发生在操作系统已经启动并运行时,例如为了通过定义明确的软件接口更新固件。
综上所述,UEFI固件为恶意软件的持久存储提供了一个完善的机制。老练的攻击者可以修改固件,使其部署恶意代码,在操作系统加载后运行。此外,由于通常是将SPI闪存存储在焊接到设备主板的SPI闪存中,因此植入的恶意软件将无法重新安装系统或更换硬盘驱动器。
在过去的几年中,这种攻击已经发生了好几次。一个突出的例子是研究人员的朋友在ESET于2018年发现的LowJax植入,其中LoJack防盗软件(也称为Computrace)的修补UEFI模块被用于在多个Sofacy Fancy中部署恶意用户模式代理。另一个示例是一个名为VectorEDK的UEFI引导工具的源代码,该代码在2015年的黑客团队泄漏中被发现。该代码由一组UEFI模块组成,可以将这些模块合并到平台固件中,以便将后门部署到系统中它将在操作系统加载时运行,或在被删除后重新部署。尽管VectorEDK的代码已公开并可以在如今的Github中找到,但在研究人员最新发现之前,研究人员还没有亲眼目睹它的真实证据。
漏洞发现过程
在调查过程中,研究人员遇到了几个可疑的UEFI固件映像。更深入的检查显示,它们包含四个组件,这些组件在其分配的GUID值中异常接近,分别是两个DXE驱动程序和两个UEFI应用程序。经过进一步分析,研究人员能够确定它们是基于HackingTeam的VectorEDK引导程序泄漏的源代码。
受攻击的UEFI固件中包含恶意组件
这些添加的模块的目的是调用一系列事件,这些事件将导致将名为“IntelUpdate.exe”的恶意可执行文件写入受害者的Startup文件夹。因此,当Windows启动时,编写的恶意软件也会被调用。除此之外,模块将确保如果恶意软件文件被从磁盘上删除,它将被重写。由于该逻辑是从SPI闪存执行的,因此除了删除恶意固件之外,没有其他方法可以避免此过程。
以下是研究人员揭示的组件的概述:
SmmInterfaceBase:一个DXE驱动程序,基于黑客团队的“rkloader”组件,旨在部署bootkit的其他组件以供以后执行。这是通过注册一个回调来实现的,该回调将在EFI_EVENT_GROUP_READY_TO_BOOT类型的事件上调用。事件发生在可以将控制权传递给操作系统的引导加载程序时,有效地允许回调在它之前生效。回调将依次加载并调用“SmmAccessSub”组件。
Ntfs:由黑客团队编写的驱动程序,用于检测和解析NTFS文件系统,以便允许在磁盘上执行文件和目录操作。
SmmReset:将固件映像标记为感染的UEFI应用程序,这是通过将名为“fTA”的变量的值设置为硬编码的GUID来实现的。该应用程序基于名为“ReSetfTA”的原始Vector-EDK代码库中的组件。
使用预定义的GUID设置fTA变量以标记bootkit的执行
SmmAccessSub:主要的一个bootkit组件,可作为用户模式恶意软件的永久dropper。它由在“SmmInterfaceBase”执行期间注册的回调执行,并负责将嵌入其中的二进制文件作为名为“IntelUpdate.exe”的文件写入磁盘上的启动目录。这允许二进制文件在Windows启动并运行时执行。
这是研究人员所检查的组件中唯一的专有组件,该组件主要是从头开始编写的,只使用了Vector-EDK应用程序名为“fsbg”的代码。它执行以下操作以将所需文件拖放到磁盘:
1.用于SystemTable、BootServices和RuntimeServices全局结构的引导指针。
2.尝试通过使用EFI_LOADED_IMAGE_PROTOCOL_GUID参数调用HandleProtocol方法来获取当前加载的图像的句柄。
3.如果获得了当前映像的句柄,则模块将枚举所有驱动器并检查其中是否存在“ Windows System32”目录,以尝试找到安装Windows的根驱动器。此时将创建一个与驱动器相对应的全局EFI_FILE_PROTOCOL对象,并将其引用以打开该驱动器中的所有其他目录或文件。
4.如果在上一阶段找到了根驱动器,则该模块会在Windows目录下查找名为“setupinf.log”的标记文件,并且仅在不存在时继续运行。在没有此文件的情况下,将创建它。
5.如果成功创建“setupinf.log”,则该模块将继续检查“用户”目录是否在同一驱动器下。
6.如果“用户”目录存在,它将在根驱动器的“ProgramDataMicrosoftWindowsStart MenuProgramsStartup”目录下写入“IntelUpdate.exe”文件(嵌入在UEFI应用程序的二进制文件中)。
来自“SmmAccessSub”的代码用于将嵌入式“IntelUpdate.exe”二进制文件写入Windows启动目录
不幸的是,研究人员无法确定允许攻击者覆盖原始UEFI固件的确切感染媒介,研究人员的检测日志表明,固件本身被发现是恶意的,但之前没有可疑事件。因此,研究人员只能推测感染发生的大致过程。
一种选择是通过对受害者设备的物理访问,这可能部分基于黑客团队泄漏的资料,根据该资料,安装感染VectorEDK的固件需要从USB密钥启动目标设备。这样的USB将包含一个特殊的更新实用程序,该实用程序可以由公司提供的指定生成器生成。研究人员在检查的固件中找到了Q-flash更新实用程序,也可以将其用于此目的。
此外,泄漏表明UEFI感染功能(被黑客小组称为“持久安装”)已在ASUS X550C笔记本电脑上进行了测试。它们使用AMI的UEFI固件,与研究人员检查的固件非常相似。因此,研究人员可以假设黑客团队的固件修补方法也适用于研究人员的情况。
用于部署受感染的UEFI固件,也称为“永久安装”
当然,研究人员不能排除通过恶意更新机制远程流氓固件的其他可能性。这种情况通常需要利用BIOS更新身份验证过程中的漏洞。虽然可能是这种情况,但研究人员没有任何证据支持。
了解MosaicRegressor框架
虽然使用了黑客团队的原始bootkit将公司的后门之一(称为“Soldier”,“ Scout”或“ Elite”)写入磁盘,但研究人员调查的UEFI植入部署了迄今为止尚未见过的新恶意软件。研究人员决定寻找与删除的二进制文件共享字符串和实现特征的类似示例。因此,研究人员发现的样本表明,被删除的恶意软件只是源自研究人员称为MosaicRegressor的更广泛框架的一种变种。
MosaicRegressor是一个多阶段的模块化框架,旨在进行间谍活动和数据收集。它由下载器组成,偶尔还包括多个中间加载器,它们旨在在受害设备上获取并执行有效载荷。框架由多个模块组成的事实可帮助攻击者隐藏更广泛的框架以进行分析,并仅根据需要将组件部署到目标设备。确实,研究人员在调查期间只能获得少量的有效载荷组件。
MosaicRegressor的下载器组件由常见的业务逻辑组成,由此植入程序与C&C联系,从中下载其他DLL,然后从中加载并调用特定的导出功能。下载模块的执行通常会产生输出,这些输出可以返回给C&C。
话虽如此,研究人员观察到的各种下载器在联系其C&C时使用了不同的通信机制:
· CURL库(HTTP / HTTPS)
· BITS传输接口
· WinHTTP API
· POP3S / SMTPS / IMAPS,有效载荷通过电子邮件传输
列表中的最后一个变种不同于它使用电子邮件箱来承载请求的有效载荷,由该植入程序运行的有效载荷也可以在调用时生成输出,随后可以将其转发到一个“反馈”邮件地址,在那里攻击者很可能会收集该输出。
用于此目的的邮箱位于“mail.ru”域中,并使用在恶意软件二进制文件中硬编码的凭据进行访问。要从目标收件箱中获取请求的文件,MailReg进入一个无限循环,在该循环中,它尝试每20分钟连接到“pop.mail.ru”服务器,并利用允许成功连接的第一对凭据。登录时使用的电子邮件(不含密码)及相应的反馈邮件如下表所示:
下载器也可以分为两种不同的类型:“普通”类型仅用于提取有效载荷,“扩展”版本也用于收集系统信息:
由BitsRegEx编写的日志文件的结构,红色标记的字符串是该文件中显示的原始字段
研究人员只能获得后续阶段的一个变种,该变种安装在自动运行的注册表值中,并充当应该由初始下载器获取的组件的另一个加载器。这些组件也只是下一阶段DLL的中间加载程序。最终,持久性组件中没有具体的业务逻辑,因为C&C服务器以DLL文件的形式提供了持久性组件,其中大多数是临时文件。
研究人员观察到了一个这样的库“load.rem”,它是一个基本的文件窃取程序,它从“最近的文件”目录中获取文件并使用密码进行归档,这可能是在将结果由另一个文件泄露给C&C之前的第一步。
下图描述了研究人员所了解的组件之间的完整流程和连接,有颜色的是研究人员获得的组件,灰色的是研究人员没有获得的组件:
从BitsRegEx到执行中间加载程序和最终有效载荷的流程
攻击目标
根据研究人员的分析,在2017年至2019年之间,有数十名受害者从MosaicRegressor框架中获得了资助。这些受害者包括非洲、亚洲和欧洲的外交对象和非政府组织。在BitsReg组件部署之前,他们中只有两个在2019年还感染了UEFI bootkit。
根据发现的受害者的隶属关系,研究人员可以确定所有人都与朝鲜有某种联系,无论是与该国有关的非营利活动还是在该国的实际存在。可以通过一种用于将恶意软件传播给某些受害者的感染媒介来加强这一共同主题,即SFX文件伪装成讨论与朝鲜有关的各个主题的文件。这些文件与实际文档和MosaicRegressor变量捆绑在一起,在打开存档时都已执行。诱饵文件的示例如下所示。
将诱饵文档捆绑到发送给MosaicRegressor受害者的恶意SFX存档中的示例
谁是幕后黑手?
在分析MosaicRegressor的变种时,研究人员注意到了一些有趣的伪装的图像,这些伪装的图像为研究人员提供了有关框架背后角色身份的线索。据研究人员所知,攻击是由华语地区的攻击者进行的,他可能以前曾使用过Winnti后门。研究人员发现了BitsRegEx变种生成的系统信息日志中使用的许多字符串,其中包含字符序列“0xA3,0xBA”。这是UTF8字符串的无效序列,并且LATIN1编码将这些符号转换为井号,后跟阳性序数记号(MASCULINE ORDINAL INDICATOR) (“£º”)。尝试遍历所有可用的iconv符号表,尝试将序列转换为UTF-8,会产生可能的候选项,从而给出更有意义的解释。给定符号前后的字符串上下文和其后的换行符号,最佳匹配是从中文或韩文代码页(即CP936和CP949)转换的“FULL-WIDTH COLON” Unicode字符。
根据代码页CP936和CP949,使用字符序列0xA3、0xBA的BitsRegEx系统信息日志,很可能用来表示全角冒号。
研究人员发现的另一个伪装的图像是在CurlReg样本中找到的文件资源,其中包含设置为2052(“ zh-CN”)的语言标识符。
研究人员检测到从带有CVE-2018-0802漏洞的文档中取出的OLE2对象,该漏洞由所谓的 ‘Royal Road’ / ‘8.t’ 文档生成器生成,并用于删除CurlReg变种。据研究人员所知,这种生成器通常是华语地区攻击者使用的。
根据公开报告,在“MosaicRegressor”变种之一(MD5:3B58E122D9E17121416B146DAAB4DB9D)中发现了一个C&C地址(103.82.52[.]18)。由于这是研究人员的发现与使用Winnti后门的任何小组之间的唯一链接,因此研究人员不太有把握地估计攻发生击的原因。
原文及参考:https://securelist.com/mosaicregressor/98849/