发生了什么?
2021 年底,我们通过 Firmware Scanner 的日志获悉了一起 UEFI 固件层面的入侵事件。该扫描器自 2019 年初起便已集成到卡巴斯基产品中。进一步分析表明,攻击者修改了被检查固件镜像中的一个组件,使其能够截获机器启动序列原有的执行流程,并引入一条复杂的感染链。
通过检查恶意固件的组件以及目标网络中的其他恶意制品,我们得出了以下结论:
- 被检查的 UEFI 固件遭到篡改,其中嵌入了我们称为 MoonBounce 的恶意代码;
- 由于该植入程序位于主板上的 SPI 闪存,而不是硬盘中,因此即使格式化或更换磁盘,它仍能在系统中保持驻留;
- 该植入程序的目的是协助部署用户态恶意软件,由后者为从互联网下载的后续载荷准备执行环境;
- 感染链本身不会在硬盘上留下任何痕迹,因为其组件仅在内存中运行,从而实现痕迹很少的无文件攻击;
- 我们在目标网络中检测到其他非 UEFI 植入程序,它们与托管暂存器载荷的同一基础设施通信;
- 综合上述发现、网络基础设施指纹以及攻击者展现的其他 TTP,据我们所知,该入侵集可归因于 APT41——一个被广泛报道为使用中文的威胁行为者;
本报告详细介绍 MoonBounce 植入程序的工作方式、它与 APT41 的联系,以及我们在受感染网络中观察到的、与使用中文的行为者有关的其他活动痕迹;这些痕迹可能表明其与该威胁行为者及相关攻击活动存在联系。
重新审视持久化攻击的当前技术现状
过去一年中,已有多份公开报告讨论 UEFI 威胁持续发展的趋势。值得注意的例子包括:我们曾报道的 FinSpy 监控工具集中使用的 UEFI bootkit;ESET 同行对 ESPectre bootkit 的研究;以及中东政府机构内发现的一起鲜为人知、使用自有 UEFI bootkit 的威胁活动(我们曾在 2021 年第三季度 APT 趋势报告中简要提及,并在交付给威胁情报门户客户的私有 APT 报告中作了更详细的介绍)。
这三个案例的共同点是:被感染的 UEFI 组件位于 ESP(EFI System Partition,EFI 系统分区)上。ESP 是为部分 UEFI 组件预留的存储空间,通常位于计算机的硬盘或 SSD 中。ESP 中最重要的组件是 Boot Manager 和 OS loader,两者都会在机器启动过程中被调用,也恰好都是上述 bootkit 篡改的对象。
尽管上述案例都由高级威胁行为者使用,但另一类 bootkit 更令人担忧。这一类植入程序存在于 SPI 闪存内的 UEFI 固件中,而 SPI 闪存是硬盘之外的非易失性存储。这类 bootkit 不仅更加隐蔽(部分原因是安全产品对这一硬件组件的可见性有限),也更难缓解:用干净的固件镜像刷写并替换恶意镜像,可能比格式化硬盘并重新安装操作系统更加困难,而后者通常足以清除 ESP 层面的威胁。
MoonBounce 的突出之处在于,它是公开披露的第三个此类固件 rootkit 植入案例。此前的案例包括 LoJax 和我们于 2020 年 10 月报道的 MosaicRegressor。从这个意义上说,MoonBounce 代表了这类威胁的一次明显演进:与前代相比,它展现出更复杂的攻击流程,也体现了作者更高的技术水平——他们对 UEFI 启动过程涉及的细节有着深入理解。
我们的发现:UEFI 固件中的复杂植入程序
该 UEFI 植入程序于 2021 年春季被发现。攻击者将其植入固件的 CORE_DXE 组件(也称 DXE Foundation)中;该组件会在 UEFI 启动序列的 DXE(Driver Execution Environment,驱动执行环境)阶段早期被调用。除其他职责外,该组件负责初始化关键数据结构和函数接口,其中之一是 EFI Boot Services Table——一组指向 CORE_DXE 镜像自身例程的指针,启动链中的其他 DXE 驱动可以调用这些例程。
感染的起点是一组 hook,它们截获 EFI Boot Services Table 中多个函数的执行,具体包括 AllocatePool、CreateEventEx 和 ExitBootServices。这些 hook 将上述函数的执行流程转向攻击者附加在 CORE_DXE 镜像中的恶意 shellcode,后者随后会在启动链的后续组件(即 Windows loader)中设置更多 hook。
这条多阶段 hook 链使恶意代码能够在系统启动期间从 CORE_DXE 镜像传播至其他启动组件,并将一个恶意驱动引入 Windows 内核的内存地址空间。该驱动在内核执行的早期阶段运行;操作系统启动并正常运行后,它通过向 svchost.exe 进程注入代码来部署用户态恶意软件。最后,用户态恶意软件会访问硬编码的 C&C URL(即 hxxp://mb.glbaitech[.]com/mboard.dll),尝试获取下一阶段载荷并在内存中运行,但我们未能取得该载荷。
下图概述了从被 hook 的 Boot Services 在 DXE Foundation 执行上下文中被调用开始,直至用户态恶意软件在操作系统运行期间被部署和执行的各个阶段。图中每一步的完整说明,以及对 MoonBounce 驱动和用户态恶意软件的分析,均可参见与本报告同时发布的技术文档。
*MoonBounce 从启动序列到在用户空间部署恶意软件的执行流程*
需要注意的是,截至撰写本文时,我们尚无充分证据追溯 UEFI 固件最初是如何被感染的。不过,我们推测感染本身是远程完成的。此前的 UEFI 固件入侵(即 LoJax 和 MosaicRegressor)表现为向 SPI 闪存上的整体固件镜像中添加 DXE 驱动,而本次案例采用了更加细微且隐蔽的技术:修改既有固件组件以改变其行为。具体而言,某些函数被 inline hook 修改,即用一条指令替换函数序言,将执行流转向攻击者选定的函数。这种二进制插桩通常要求攻击者取得原始镜像,随后解析并修改镜像以植入恶意逻辑。对于能够持续远程访问目标机器的攻击者而言,这是可以实现的。
视野中的其他恶意软件
除 MoonBounce 外,我们还发现同一网络中的多个节点感染了一种名为 ScrambleCross(又名 SideWalk)的已知用户态恶意软件。这是一种以内存驻留形式运行、采用位置无关代码实现的植入程序,可以与 C2 服务器通信以交换信息,并为在内存中执行其他插件做准备;目前尚未在野外发现这些插件。Trend Micro 和 ESET 的同行已分别对该恶意软件作了详尽介绍,读者可参阅他们出色的分析文章,以进一步了解其内部机制:Trend Micro、ESET。
构成 ScrambleCross 的位置无关代码可以通过两种方式之一加载。第一种方式使用名为 StealthVector 的 C++ DLL。它对加密数据块应用一种修改后的 ChaCha20 算法,以取得 ScrambleCross shellcode;该加密数据块可能以附加文件的形式存在于磁盘上,也可能嵌入 loader 自身。我们在相关网络中检测到了这两种 loader 变体。
StealthVector 通过一个被修改的良性系统 DLL 加载:攻击者修补其导入地址表,将恶意软件 DLL 追加为依赖项。在一个案例中,我们观察到一个被如此修改的 wbemcomn.dll(MD5:C3B153347AED27435A18E789D8B67E0A)文件。该文件原本用于支持 Windows 中的 WMI 功能,位于 %SYSTEM%\wbem 目录。因此,当 WMI 服务启动时,这个恶意版本的 DLL 会强制加载名为 wmiwk.dll 的 StealthVector 镜像。
*向恶意 wbemcomn.dll 文件追加 IAT 条目,使其在 WMI 服务启动时强制加载 StealthVector*
下表列出了我们在目标网络中检测到的所有 StealthVector 实例,以及可能指向其创建日期的时间戳制品。
| Loader 文件名 | Loader MD5 | Shellcode 文件名 | C&C 地址 | 编译时间戳 |
|---|---|---|---|---|
| wbwkem.dll | 4D5EB9F6F501B4F6EDF981A3C6C4D6FA | compwm.bin | dev.kinopoisksu[.]com | Friday, 12.06.2020 08:25:02 UTC |
| wkbem.dll | E7155C355C90DC113476DDCF765B187D | pcomnl.bin | Unknown | Tuesday, 24.03.2020 09:09:21 UTC |
| wmiwk.dll | 899608DE6B59C63B4AE219C3C13502F5 | wmipl.dll | ns.glbaitech[.]com | Saturday, 20.02.2021 06:45:18 UTC |
| c_20344.nls | 4EF90CEEF2CC9FF3121B34A9891BB28D | – | 217.69.10[.]104 | Tuesday, 24.03.2020 09:09:21 UTC |
| c_20334.nls | CFF2772C44F6F86661AB0A4FFBF86833 | – | st.kinopoisksu[.]com | Tuesday, 24.03.2020 09:09:21 UTC |
我们检测到的另一种常用于加载 ScrambleCross 的 loader 基于 .NET,被称为 StealthMutant。它使用 AES-256 解密一个 shellcode BLOB,并将其注入另一个进程的地址空间。在我们观察到的所有案例中,被注入的进程都是 msdt.exe(Microsoft Diagnostic Troubleshooting Wizard)。
StealthMutant 可以通过两种方式之一启动,其他报告也曾对这两种方式作过部分介绍。第一种方式是通过命令行,将文件名为 System.Mail.Service.dll(MD5:5F9020983A61446A77AF1976247C443D)的启动工具作为服务执行。以下是攻击者在一台受感染系统上输入的相关命令:
net start "iscsiwmi"
sc stop iscsiwmi
sc delete iscsiwmi
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost" /v "iscsiwmi" /t REG_MULTI_SZ /d "iscsiwmi" /f
sc create "iscsiwmi" binPath= "$system32\svchost.exe -k iscsiwmi" type= share start= auto error= ignore DisplayName= "iscsiwmi"
SC failure "iscsiwmi" reset= 86400 actions= restart/60000/restart/60000/restart/60000
sc description "iscsiwmi" ""iSCSI WMI Classes That Manage Initiators, Ports, Sessions and Connections""
reg add "HKLM\SYSTEM\CurrentControlSet\Services\iscsiwmi\Parameters" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Services\iscsiwmi\Parameters" /v "ServiceDll" /t REG_EXPAND_SZ /d "$windir\Microsoft.NET\Framework64\v4.0.30319\System.Mail.Service.dll" /f
net start "iscsiwmi"
该启动工具随后使用 .NET 应用程序 InstallUtil.exe 来执行名为 Microsoft.Service.Watch.targets 的 StealthMutant 镜像,并将 MstUtil.exe.config 文件中的加密 ScrambleCross shellcode 作为参数传入。该工具本身是一个基础的 C++ 程序,通过 WinExec API 发出以下命令行来实现上述目标:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /ConfigFile=MstUtil.exe.config /U C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Service.Watch.targets
第二种执行 StealthMutant 的方式,是通过名为 schtask.bat 的 Windows 批处理脚本创建计划任务,如下所示:
@echo off
cd /d "%~dp0"
copy /Y Microsoft.Service.Watch.targets "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Service.Watch.targets"
copy /Y MstUtil.exe.config "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MstUtil.exe.config"
schtasks /create /TN "\Microsoft\Windows\UNP\UNPRefreshListTask" /SC ONSTART /TR "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /ConfigFile=MstUtil.exe.config /U C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Service.Watch.targets" /F /DELAY 0000:02 /RU SYSTEM /RL HIGHEST
schtasks /run /TN "\Microsoft\Windows\UNP\UNPRefreshListTask"
下表列出了已知的 StealthMutant loader IOC,以及相应的 ScrambleCross shellcode 文件和所联系的 C2 地址。值得注意的是,大多数 ScrambleCross shellcode(由 StealthMutant 和 StealthVector 加载)都会连接同一台服务器(即 ns.glbaitech[.]com),而在本次活动中,StealthMutant 直到 2021 年 2 月才被观察到。
| Loader MD5 | C&C 地址 | 编译时间戳 |
|---|---|---|
| 0603C8AAECBDC523CBD3495E93AFB20C | 92.38.178[.]246 | Tuesday, 23.03.2021 08:00:44 UTC |
| ns.glbaitech[.]com | ||
| 8C7598061D1E8741B8389A80BFD8B8F5 | ns.glbaitech[.]com | Saturday, 20.02.2021 03:27:42 UTC |
| F9F9D6FB3CB94B1CDF9E437141B59E16 | ns.glbaitech[.]com | Wednesday, 08.12.2021 07:07:28 UTC |
除上述组件外,我们在研究期间还发现了其他暂存器和后渗透恶意植入程序,其中一部分被归因于已知的使用中文的威胁行为者,或曾被这些行为者使用:
-
Microcin: 一种通常由 SixLittleMonkeys 威胁行为者使用的后门,我们自 2016 年起便一直对其进行跟踪。值得注意的是,自成立以来,SixLittleMonkeys 组织一直使用 Microcin 攻击不同目标,其中一部分是俄罗斯和中亚地区的高价值实体。 我们在本次活动中观察到的植入程序以 DLL 形式交付,应在 exe 的上下文中运行,其主要目的是从 %WINDIR%\debug\netlogon.cfg 中保存的加密配置文件读取 C2 地址,并联系服务器获取后续载荷。有趣的是,该 Trojan 包含一个调度算法,会跳过每个星期六的所有工作;它每小时检查一次本地时间,以判断星期六是否已经结束。
-
Mimikat_ssp:一个公开提供的后渗透工具,用于从 exe 转储凭据和安全机密;它也被多个使用中文的行为者广泛使用,例如我们曾报道的 GhostEmperor。
-
Go 植入程序:
一个此前未知的后门,它使用 RESTful API 联系 C2 服务器,并结合硬编码 IP 地址和底层服务器上的超媒体目录路径来交换信息。IP 和服务器目录路径均使用 AES-128 加密,加密密钥经过 base64 编码并保存在后门镜像中。IP 与目录路径组成的二元组在执行期间用于:
- 初始化与服务器的通信;
- 发送受感染主机的信息;
- 请求包含待执行命令的特定服务器路径,并下载该命令;
- 将命令执行结果发回 C2 服务器。
从服务器获取的命令同样使用 AES-128 加密,密钥保存在命令文件自身之中。命令执行结果随后使用同一密钥加密。我们发现其支持以下命令:
- 获取驱动器列表;
- 获取指定目录的内容列表;
- 从 C2 服务器下载文件;
- 将文本写入指定的 *.bat 文件并执行;
- 运行 shell 命令。
需要特别指出的是,除 Microcin 外,我们无法将上述大多数其他恶意软件与 MoonBounce 相关的入侵集作出确定性关联。对于 Microcin,某些时间线制品与 ScrambleCross 相关的其他事件重合,如下图所示。这表明 Microcin 与 MoonBounce 之间可能存在低置信度关联,也可能意味着 SixLittleMonkeys 与 APT41 共用资源,或前者的操作者参与了 MoonBounce 活动。
*包含 MoonBounce 感染机器的网络中所发现制品相关事件的时间线*
目标是谁?
目前,我们的检测结果表明该攻击具有高度针对性——固件 rootkit 仅在一个案例中被检测到。其他相关恶意样本(例如 ScrambleCross 及其 loader)则出现在同一网段的多台其他机器上。此外,我们还发现了若干性质尚不明确的其他受害者,他们运行着相同版本的 ScrambleCross,并连接同一套命令与控制基础设施。其中一个特定目标是一家控制多家运输技术企业的组织。
攻击者试图实现什么目标?
我们追踪了攻击者在网络中建立立足点后执行的部分命令,这些命令指向横向移动以及从特定机器外泄信息。这种活动特征与 APT41 以往的一些行动一致:这些入侵通常旨在干预目标公司的供应链,或窃取敏感知识产权和个人身份信息。特别是 UEFI 植入程序的使用,表明该行为者希望在网络中建立长期立足点,这也符合持续间谍活动的预期。
以下命令行示例展现了本次威胁活动的操作者为实现目标而采用的部分方法和行动:
- 尝试枚举主机并收集网络信息:
cmd /C "C: & cd \ & whoami"
cmd /C "C: & cd \ & net view"
cmd /C "C: & cd \ & -setcp 866"
cmd /C "C: & cd \ & net view"
cmd /C "C: & cd \ & netstat -ano"
cmd /C "C: & cd \ & dir $temp\ /od"
cmd /C "C: & cd \ & arp -a"
cmd /C "C: & cd \ & tasklist"
cmd /C "C: & cd \ & tracert <redacted_internal_ip>"
cmd /C "C: & cd \ & net use \\<redacted_internal_ip> /u:<redacted_username> <redacted_password>"
cmd /C "C: & cd \ & net view \\<redacted_internal_ip>"
cmd /C "C: & cd \ & ping -n 1 -a <redacted_internal_ip>"
cmd /C "C: & cd \ & net use * /d /y"
cmd /C "C: & cd \ & systeminfo"
- 跨 SMB 共享复制文件,随后尝试转储 Active Directory 域数据库(tid):
cmd /C "C: & cd \ & echo ntdsutil \"ac i ntds\" \"ifm\" \"create full $temp\1\\\" q q >$temp\a.bat
cmd /C "C: & cd \ & type $temp\a.bat
cmd /C "C: & cd \ & move $temp\a.bat \\<redacted_internal_ip>\c$\windows\temp\\
- 使用 Sysinternals Psexec 工具在网络中远程执行命令(其重命名版本为 tmp):
$temp\TS_P61S.tmp -accepteula -d -s \\<redacted_internal_ip1>\ cmd /c "arp -a >$temp\TS_P34H.tmp"
$temp\TS_P61S.tmp -accepteula -d -s \\<redacted_internal_ip2>\ cmd /c "ping <redacted_internal_ip2> -a -n 2>$temp\TS_P34H.tmp"
$temp\TS_P61S.tmp -accepteula -d -s \\<redacted_internal_ip3>\ cmd /c "ping -n 2 -a <redacted_internal_ip2>>$temp\TS_P34H.tmp"
- 使用 WMI 远程执行命令:
wmic /node:<redacted_internal_ip1> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c ping -n 1 -a <redacted_internal_ip4> >$temp\a.tmp
wmic /node:<redacted_internal_ip2> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c netstat -ano >$temp\a.tmp
wmic /node:<redacted_internal_ip2> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c tracert <redacted_internal_ip4>>$temp\a.tmp
wmic /node:<redacted_internal_ip3> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c ipconfig /all >$temp\a.tmp
wmic /node:<redacted_internal_ip3> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c qwinsta >$temp\a.tmp
wmic /node:<redacted_internal_ip3> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c net user administrator >$temp\a.tmp
wmic /node:<redacted_internal_ip3> /user:<redacted_group>\<redacted_user> /password:<readcted_password> process call create "cmd /c net user admin >$temp\a.tmp
- 从系统中删除制品:
cmd /C "C: & cd \ & dir $temp\ /od"
cmd /C "C: & cd \ & dir $temp\*.hive"
cmd /C "C: & cd \ & del $temp\*.hive"
cmd /C "C: & cd \ & dir $temp\*.log"
cmd /C "C: & cd \ & type $temp\silconfig.log"
- 使用 exe 命令行工具归档远程收集的文件,其中部分文件包含 *.hive,可能用于转储 LSA 机密:
cmd /C "C: & cd \ & $temp\rar.exe a -r wef.rar \\<redacted_internal_ip1>\c$\windows\temp\1 -hp2wsxcde34rfv7788."
c:\windows\temp\rar.exe a -r c:\windows\temp\873.rar \\<redacted_internal_ip2>\c$\windows\temp\*.hive -hp5tgbnhy67ujm3256
网络基础设施
下表概述了为 UEFI 植入程序和 ScrambleCross 植入程序活动提供支持的主要基础设施集群。需要注意的是,攻击者至少从 2020 年 3 月起便一直维护该基础设施,其中一些服务器在 2021 年底似乎仍处于活动状态。在此期间,该行为者在多个托管服务提供商之间切换,使基础设施分散在多个 ASN 中。
| 域名 | IP | ASN |
|---|---|---|
| mb.glbaitech[.]com | 188.166.61[.]146 | AS14061 – DIGITALOCEAN-ASN |
| ns.glbaitech[.]com | 188.166.61[.]146 | AS14061 – DIGITALOCEAN-ASN |
| 172.107.231[.]236 | AS40676 | |
| dev.kinopoisksu[.]com | 172.107.231[.]236 | AS40676 |
| 193.29.57[.]161 | AS48314 – IP-PROJECTS | |
| st.kinopoisksu[.]com | 136.244.100[.]127 | AS20473 – AS-CHOOPA |
| – | 217.69.10[.]104 | AS20473 – AS-CHOOPA |
| – | 92.38.178[.]246 | AS202422 – GHOST |
仔细检查该基础设施可以发现服务器之间存在多重联系。显而易见,MoonBounce 的用户态暂存器和几个 ScrambleCross 实例都连接到同一个域名,而该域名在某一时刻解析到同一 IP。此外,如下图所示,这些域名解析到的 IP 还存在多处重叠,其中一个 IP 曾在不同时间停放两个域名。
*同一网络中发现的 MoonBounce 与 ScrambleCross 植入程序基础设施元素之间的联系*
另一个重要的共同点,是本次活动中的多台服务器使用了同一张独特的自签名 SSL 证书(野外仅另有几十台服务器呈现该证书),这构成了值得关注的攻击者网络活动指纹。
除上述集群外,我们还检测到同一网络中两台与 Microcin 活动相关的服务器:
| 域名 | IP | ASN |
|---|---|---|
| m.necemarket[.]com | 172.105.94[.]67 | AS63949 – LINODE |
| holdmem.dbhubspi[.]com | 5.188.93[.]132 | AS202422 – G-Core Labs |
MoonBounce 攻击的幕后是谁?
据我们所知,我们以中高置信度认为本报告描述的活动可归因于广为人知的 APT41 组织,或与其关系密切的行为者。我们的部分发现与此前一年关于 APT41 或其他威胁行为者的多份公开报告相符,具体包括 Earth Baku 和 SparklingGoblin;据信它们是 APT41 的别名,或与 APT41 共享大量资源和 TTP。
具体而言,我们的结论基于以下因素:
- ScrambleCross 的加载方案,包括在感染链中使用 StealthVector 和 StealthMutant,与 Earth Baku 和 SparklingGoblin 所采用的方案完全相同。除了 loader 本身之外,它们的启动程序似乎也完全相同。在我们观察到的所有案例中,攻击者都使用了通过 exe 启动 loader 执行这一独特 TTP。特别是 Earth Baku 使用、并在前述 Trend Micro 公开报告中描述的 Install.bat,与本案例中用于执行 InstallUtil 启动程序的命令序列高度相似。
- ScrambleCross 恶意软件本身曾被报道由 Earth Baku 和 SparklingGoblin 使用;它被认为是 CROSSWALK 的一个变体。CROSSWALK 最初由 Mandiant 描述为 APT41 的工具,据我们所知,它仍是该组织特有的恶意软件。
- 从本报告所述活动中的多台 ScrambleCross C2 服务器取得的一张独特证书,也由野外另外几十台服务器返回;其中几台服务器此前已被 FBI 报告为 APT41 所有基础设施的一部分。
此外,以下观察结果也值得说明:
-
UEFI 植入程序所部署的用户态恶意软件暂存器包含一套调度逻辑,与 Microcin 样本中的调度逻辑有一定相似之处(本次活动中,一些受感染主机上也发现了 Microcin 样本)。这表明这些组织可能通过共享资源或同一个主承包商而存在联系。
暂存器中的上述调度算法可以接收一个 672 位的 bitmask,以确定恶意软件何时应开始向 C2 服务器发送 beacon 并尝试获取载荷;计划工作时间可精确到 15 分钟的时段(即暂存器检查当前是否应在构成完整一周的 672 个时段中的某个特定时段运行,否则休眠 10 秒,然后再次检查是否到达指定工作时段)。Microcin 也采用类似的调度方法,但其 bitmask 仅表示恶意软件应在哪些星期日期间活动。
*MoonBounce 用户态暂存器使用的调度代码*
-
在目标网络的几台机器上发现的 Mimikat_ssp 工具,过去曾被多个使用中文的威胁行为者使用。最近的一个例子是 GhostEmperor 在攻击活动中使用该工具,我们此前的报告对此作了介绍。
-
MoonBounce 所用 shellcode 的一些元素,也出现在一个旧 rootkit 中;后者属于名为 xTalker 的恶意框架的一部分,至少自 2013 年起便已在野外出现,并伴随多个与已知行为者有关的恶意软件家族,例如 NetTraveler、Enfal 和 Microcin。它主要用于攻击使用俄语的目标,包括军事机构、政府实体和智库。
两个组件采用相似的名称哈希算法,如下所示,并具有独特且相互对应的函数名哈希值(例如 0x311B83F,即 ExAllocatePool 的名称哈希);这些哈希值未在野外其他地方出现。
MoonBounce 与 xTalker rootkit 以相同方式使用的名称哈希算法
此外,两段代码均采用这样一种技术:在运行期间,将 shellcode 缓冲区中的魔数标记替换为指针地址。MoonBounce 代码使用的标记是 0x1122334455667788,而 xTalker rootkit 代码使用的是 0x1234567812345678。
*xTalker rootkit 与 MoonBounce 的 shellcode 中在执行期间被替换的魔数标记*
在 xTalker 案例中,上述代码元素存在于计划通过 MBR bootkit 暂存的 shellcode 中,但目前尚不清楚它实际上在多大程度上被使用。这可能表明 MoonBounce 与 xTalker 的代码由同一名开发者或关系密切的开发者编写。
结论
2020 年 9 月,美国司法部对 APT41 组织的成员发布了一系列起诉书,指控他们针对私营部门和公共部门的众多目标实施大量计算机入侵,其中一部分涉及高价值供应链攻击。本报告以及我们引用的其他公开报告所描述的入侵集表明,尽管面临这些法律程序,该组织并未停止活动。
此外,显而易见的是,该组织在工具集开发方面仍保持很高的专业度和复杂度,并已在 UEFI 固件等新领域建立立足点。从这个意义上说,该组织为这一威胁领域引入了自己的创新——修补固件中既有的良性核心组件(而不是向固件添加新驱动),从而将 UEFI 固件变成系统中极为隐蔽且持久的恶意软件存储位置。
结合此前的预测,我们现在可以说,UEFI 威胁正在逐渐成为常态。考虑到这一点,供应商正采取更多预防措施来缓解 MoonBounce 之类的攻击,例如默认启用 Secure Boot。我们评估,在这场持续的攻防军备竞赛中,针对 UEFI 的攻击将继续增多,攻击者会不断演进,并寻找利用和绕过现有安全措施的方法。
作为防范本次攻击及类似攻击的安全措施,建议定期更新 UEFI 固件,并确认在适用情况下已启用 BootGuard。同样,如果机器支持相应硬件,也建议启用 Trust Platform Modules。除此之外,能够查看固件镜像的安全产品可增加一层额外防护,在潜在入侵发生时向用户发出警报。
MoonBounce 的失陷指标
EFI Rootkit——恶意 CORE_DXE D94962550B90DDB3F80F62BD96BD9858
被修改的 WMI DLL Loader C3B153347AED27435A18E789D8B67E0A
StealthVector 4D5EB9F6F501B4F6EDF981A3C6C4D6FA E7155C355C90DC113476DDCF765B187D 899608DE6B59C63B4AE219C3C13502F5 4EF90CEEF2CC9FF3121B34A9891BB28D CFF2772C44F6F86661AB0A4FFBF86833
InstallUtil Loader 5F9020983A61446A77AF1976247C443D
StealthMutant 0603C8AAECBDC523CBD3495E93AFB20C 8C7598061D1E8741B8389A80BFD8B8F5 F9F9D6FB3CB94B1CDF9E437141B59E16
Microcin 5FE6CE9C48D0AE98EC2CA1EC9759AAD9 50FF717A8E3106DDBF00FB42212879C5 D98614600775781673B6DF397CC4F476
Go 植入程序 C9B250099E2DD27BB4170836AC480FE0 97EF7B8FCDCB0C0D9FBB93D0F7E6E3B6
Mimikat_SSP 4E4388D7967E0433D400C60475974D50 5F1C7602688E67F299F5BD533FA07880
xTalker Rootkit 45E862964EF4EFDEA181F3927D20E96D 4BC82105403974AA24BF02CFB66B8F7C
域名和 IP mb.glbaitech[.]com – MoonBounce ns.glbaitech[.]com – ScrambleCross dev.kinopoisksu[.]com – ScrambleCross st.kinopoisksu[.]com – ScrambleCross 188.166.61[.]146 – ScrambleCross 172.107.231[.]236 – ScrambleCross 193.29.57[.]161 – ScrambleCross 136.244.100[.]127 – ScrambleCross 217.69.10[.]104 – ScrambleCross 92.38.178[.]246 – ScrambleCross m.necemarket[.]com – Microcin 172.105.94[.]67 – Microcin holdmem.dbhubspi[.]com – Microcin 5.188.93[.]132 – Go 恶意软件 5.189.222[.]33 – Go 恶意软件 5.183.103[.]122 – Go 恶意软件 5.188.108[.]228 – Go 恶意软件 45.128.132[.]6 – Go 恶意软件 92.223.105[.]246 – Go 恶意软件 5.183.101[.]21 – Go 恶意软件 5.183.101[.]114 – Go 恶意软件 45.128.135[.]15 – Go 恶意软件 5.188.108[.]22 – Go 恶意软件 70.34.201[.]16 – Go 恶意软件
文件名 wbwkem.dll – StealthVector wkbem.dll – StealthVector wmiwk.dll – StealthVector C_20344.nls – StealthVector C_20334.nls – StealthVector compwm.bin – ScrambleCross Shellcode pcomnl.bin – ScrambleCross Shellcode wmipl.dll – ScrambleCross 加密 shellcode Microsoft.Service.Watch.targets – StealthMutant MstUtil.exe.config – ScrambleCross 加密 shellcode System.Mail.Service.dll – StealthMutant 的 InstallUtil loader schtask.bat – StealthMutant 的批处理 loader CmluaApi.dll – Microcin
ScrambleCross Mutex Global\GouZUAkmtdpUmves Global\PtUojBxCOZGVmQQn Global\EGuUCpyYIJRTQJAV Global\YCtiqMgRrpLGbfDo






