新的 CosmicStrand rootkit 针对技嘉和华硕主板
一个可能的中国 rootkit 会感染目标计算机并在重新安装系统时保持活动状态。
图片:土坯股票
恶意软件以不同的形式存在。大多数时候,恶意软件由存储在计算机操作系统中的恶意文件组成,就像任何其他文件一样,并且作为具有或不具有高权限的软件运行。找到后,它们通常可以很容易地从文件系统中删除或在重新安装操作系统时删除。但是,rootkit是不同的恶意软件。
什么是 rootkit?
Rootkit 旨在提供对计算机的访问权限,并可能掩盖在其上运行的其他恶意软件。一些 rootkit 也不驻留在操作系统的通常文件系统中,而是驻留在其他位置,例如固件。Rootkit 通常也运行在内核级别,而不是通常的软件级别。
与通常的恶意软件相比,这样的恶意软件需要付出更多的努力来开发,因为它面临着更多的技术和编程挑战。
卡巴斯基的新研究揭示了一个名为 CosmicStrand 的 rootkit,它静静地位于特定计算机的统一可扩展固件接口(UEFI) 中。
根据卡巴斯基的说法,rootkit 位于技嘉或华硕主板的固件映像中。受感染的固件映像与使用 H81 芯片组的设计有关,这表明可能存在一个常见漏洞,该漏洞允许攻击者将 rootkit 注入固件映像。
CosmicStrand 是如何工作的?
受影响的固件映像已被更改为在系统启动时运行恶意代码。触发长执行链以在受影响机器上的 Windows 操作系统内核中下载和部署恶意内容。固件的初始入口点已被修补以重定向到 .reloc 部分中添加的代码执行。
据研究人员称,固件正在使用自动修补程序进行修改,这意味着攻击者可以事先访问受害者的计算机以提取固件,注入恶意代码,然后覆盖主板的固件。
由于此 rootkit 的目标是允许在操作系统的内核级别运行恶意代码,因此感染链非常复杂,比任何常见的恶意软件感染都要复杂得多。UEFI 代码在 Windows 系统加载之前运行,这意味着攻击者必须设法在操作系统启动之前将恶意代码传递给操作系统,而 UEFI 代码将被终止。
攻击者通过连续设置多个钩子来实现这一点,允许在操作系统启动后执行恶意代码(图A)。
图A
图片:卡巴斯基。从 UEFI 启动到操作系统运行的感染链
在感染链中,rootkit 负责禁用内核补丁保护(KPP),也称为 PatchGuard,这是一种 64 位 Windows 安全机制,可防止修改内存中 Windows 内核的关键结构。
在操作系统启动结束时,CosmicStrand rootkit 在内核的地址空间中分配一个缓冲区,并在执行前映射一个 shellcode。
内核级恶意载荷
rootkit 运行的 shellcode 等待 winlogon.exe 中的新线程,然后在此上下文中执行回调,这是高权限的。然后它会在测试互联网连接之前休眠 10 分钟。该测试通过传输设备接口完成,而不是使用通常的高级 API 函数,并向 Google 的 DNS 服务器或位于中国的自定义服务器发送 DNS 请求。
如果互联网连接可用,shellcode 会在 C2 服务器 update.bokts[.]com 上检索最终有效负载。预计来自 CosmicStrand 的有效载荷将按照特定结构以 528 字节的块的形式接收,这可能会破坏自动分析工具。
卡巴斯基无法检索最后一个有效载荷,但研究人员在他们可以分析的一台受感染计算机的内存中发现了一个用户模式样本。该样本被认为与 CosmicStrand 相关联,它在目标计算机上创建了一个名为“aaaabbbb”的用户,并将该用户添加到本地管理员组中。
针对个人的长期威胁
卡巴斯基发现旧版本的 rootkit 会到达另一台 C2 服务器以获取额外的 shellcode。这些旧版本可能已在 2016 年底至 2017 年中使用,而最新版本在 2020 年活跃。奇虎 360 也在 2017 年分析了早期版本的 rootkit。
研究人员发现的与两台 C2 服务器相关的数据分析表明,这些域的生命周期很长,并且在有限的时间范围内解析为不同的 IP 地址,在此时间范围之外,rootkit 将无法运行。
关于 CosmicStrand 威胁的目标,卡巴斯基指出,遥测中的所有受害者似乎都是使用免费版产品的个人,位于中国、越南、伊朗和俄罗斯。
可能的中国威胁行为者
根据卡巴斯基的说法,一些数据导致人们相信“CosmicStrand 是由一个说中文的威胁行为者开发的,或者是通过利用说中文的威胁行为者之间共享的共同资源开发的。”
MyKings僵尸网络使用在 CosmicStrand 中也观察到的许多代码模式,据信这些代码模式是由讲中文的威胁行为者开发的。在内核模式下分配内存时,这两种威胁也共享相同的标签,并以相同的方式生成网络数据包。两者中使用的 API 哈希代码也是相同的,并且根据卡巴斯基、MoonBounce 和 xTalker仅在另外两个 rootkit 中发现,也与说中文的威胁参与者有关。
如何检测rootkit?
Rootkit 特别难以检测,尤其是当它们使用操作系统之外的硬件功能时,CosmicStrand rootkit 就是这种情况。
在最低级别扫描计算机活动的安全软件可能会检测到来自 rootkit 的异常活动并成功检测到它。
检测它的另一种方法是通过所有未被 rootkit 感染但连接到同一网络的系统:通过使用入侵检测系统/预防检测系统,可以像检测任何其他恶意软件一样检测恶意网络活动(入侵检测系统/IPS)。
如果怀疑计算机运行 UEFI rootkit,事件响应者可能会检查固件是否存在异常。显示与供应商提供的哈希值不同的固件可能已被盗用。
最后,需要了解的是,即使恶意文件从 Windows 操作系统中删除,它们也会在每次启动时被 rootkit 重新安装。需要安装干净且安全的固件版本来替换恶意版本。