信息窃取程序和广告软件

为了与恶意扩展程序进行通信,开发者使用了命令和控制服务器(C2),这与之前用于安装扩展程序的安装服务器不同。该恶意软件使用各种扩展功能,使其在用户浏览器中占有一席之地。

恶意软件安装的警报示例

安装扩展程序时,它会添加两个Chrome警报,警报允许开发者安装一个回调/定时任务,将定期触发。当这些警报被触发时,会调用两个相应的函数:

当触发广告警报时,扩展程序会向C2请求广告并将其显示在新选项卡中。

hb回调触发与C2通信的函数,通知它当前的执行状态。

恶意软件在警报被触发时的反应

在下图显示的代码中可以看到另一个有趣的活动。扩展安装了一个侦听器,这允许它拦截每一个传出的请求,并使用它来检查请求是否被发送到搜索引擎,谷歌,雅虎或必应。如果是这样,扩展程序会将搜索详细信息发送到C2,泄露受害者的想法和兴趣。

浏览器劫持功能示例

此外,扩展使用不同的机制来验证它是否正确执行。例如:

每个发送到C2的数据包都有一个名为dd的硬编码标头。C2可以使用它来识别不同的分销渠道/附属公司。

添加的dd标头示例

取消搜索建议,可能是为了确保搜索查询是用户想要的。

从浏览器中卸载现有的Chrome扩展程序。它还将扩展名发送到C2并返回一个allowlistjson,以排除被删除的选定扩展。

禁用所有访问chrome://extensions并打开chrome://settings的尝试,以防止用户卸载此恶意扩展程序。

版本控制

大多数恶意扩展包含一个名为conf.js的文件以及存储在background.json中的主要Javascript代码。此conf.js(或manifest.json,或background.js文件,如果缺少conf.json)文件存储扩展的相关配置:C2的主机名(例如,krestinaful[.]com和tobepartou[.]com),验证标头的dd值、扩展名及其版本。似乎版本信息是准确的,研究人员看到的版本(2.0、3.0和4(.0,.3,.4))之间存在一些差异。

2.0版(2022年1月4日首次发布):

缺少的功能:

1.没有针对受害者的广告。

2.仅从谷歌收集搜索引擎查询。

3.不删除现有的浏览器扩展。

3.0版(2022年1月6日):

新增功能:

1.新增从Yahoo和Bing收集搜索引擎查询。

2.SetWithExpiry()和GetWithExpiry()函数分别添加并用于存储变量(即查询URL)和删除现有扩展。

3.现有的扩展删除机制。

4.0版本(2022年1月7日):

新增功能:

1.整个脚本中有更多混淆。

2.添加了Chrome广告机制。

3.更改了硬编码的C2URL。

4.Chrome警报机制。

MacOS变体

2022年3月,出现了一个针对MacOS用户的新变体。此变体仍然处于活动状态,并使用类似的技术来安装其有效负载并隐藏其操作。它使用相同的感染方法,引导受害者到付费下载网站安装dropper。

在本例中,dropper是一个磁盘映像(DMG)文件:ISO文件的MacOS实现——包含多个文件,包括一个bash脚本。bash脚本以多种方式类似于预定的PowerShell脚本:

下载有效负载——来自远程安装服务器的浏览器扩展。

将有效负载加载到目标的浏览器中——GoogleChrome和内置的Safari浏览器。

MacOS安装脚本的早期版本示例

在更高级的情况下,开发者不是在bash脚本中硬编码下载执行部分,而是将这些命令编码在一个单独的文件中,然后由bash脚本使用OpenSSL解码和执行。

稍后的MacOS安装脚本示例

下载的扩展功能与Windows操作系统版本中使用的类似。MacOS变体使用相同的混淆方法来执行相同的重要组件——收集搜索引擎查询并展示广告。此外,该版本还使用了新的C2地址。

根据该变体提供的恶意扩展的版本号,MacOS变体晚于Windows变体,这符合该活动的攻击时间线。在研究人员的研究中,使用该变体发现的扩展被标记为该恶意软件的6.0版本。

第二个Windows变体(变体2)

2022年3月,在最后一次已知的变体1攻击几周后,研究人员发现了一个与第一个有多个相似之处的新活动,这使研究人员相信研究人员实际上正面临本文中提到的相同ChromeLoader恶意软件的另一个变体作为变体2。

此变体2的攻击媒介与变体1相同。通过按安装付费网站和社交媒体上的恶意广告活动,诱使用户下载torrent或破解视频游戏。

用于变体2的ISO映像包含新的可执行文件。受害者只会看到一个Windows快捷方式,他们可以双击该快捷方式来安装所需的软件或观看电影。

恶意挂载ISO的示例

但是,ISO映像包含在受害者启动Windows快捷方式(.lnk文件)时执行的其他隐藏文件。.lnk文件只运行一个名为resources.bat的批处理脚本。反过来,该脚本将app.zip的内容提取到%APPDATA%中。zip压缩文件包含一个名为Tone.exe的可执行文件,该可执行文件最终由批处理脚本存储到注册表运行密钥中,从而使攻击持续存在。

LNK文件配置示例

resources.bat内容示例

与变体1一样,变体2安装了相同类型的Chrome扩展程序。该恶意软件启动了一个cmd.exe进程,该进程又执行了powershell.exe。PowerShell进程执行WMI查询,用于安装名为chrome*的新计划任务,启动另一个编码的PowerShell命令。

恶意软件安装计划任务时的因果关系链示例

在分析上述混淆的PowerShell脚本时,研究人员遇到了一个用作dropper的脚本。该脚本不直接安装新的Chrome扩展,因此它与变体1的PowerShell脚本模式不完全匹配。但是,变量的结构和使用类似于变体1的行为。

解码后安装的计划任务脚本内容示例

使用XQL查询,当安装服务器可用时,PowerShell脚本会创建并加载熟悉的恶意Chrome扩展程序(6.0版本,用于最新的MacOS变体)。

编码PowerShell下载的文件示例

2021年12月出现第一个真正的Windows变体(变体0)

由于其多次攻击事件,该恶意软件家族在网络安全界引起了全世界的关注。

如前所述,研究人员在调查期间检测到此恶意软件的不同版本。每个版本不仅被研究人员贴上了标签,还被恶意软件开发者自己贴上了标签。研究人员检测到的最早的标记版本是2.0。因此,研究人员相信这不是这些攻击者的第一次攻击,研究人员决心揭露这个恶意软件的第一个版本。

由于攻击者频繁更新有效载荷的历史,研究人员确信第一例发生在相对接近于2022年1月目前报告的感染病例。

通过对Variant 1 PowerShell dropper使用的安装服务器域进行分析,发现另一个恶意软件在2021年12月使用了其中一些域作为其安装服务器。

这个恶意软件是一个使用AutoHotKey(AHK)编写的可执行文件——一个用于脚本自动化的框架。

使用此工具,程序员可以使用AHK语法编写简短、易于理解的脚本。然后,根据程序员的定义,框架会创建匹配的钩子来执行这些脚本。

将AHK脚本转换为Windows可执行文件时,原始脚本源代码被粘贴到可执行文件的末尾,与使用重度混淆的其他变体相比,研究人员的调查过程更加轻松。在这种情况下,硬编码脚本包含以下源代码,看起来与研究人员已经分析过的PowerShell释放程序非常相似:

AutoHotKey脚本内容的示例

简而言之,这个dropper从它的安装服务器下载一个有效负载。研究人员可以通过用于下载的有效负载(Extension_Name)的变量名称假设此有效负载是另一个浏览器扩展。

经过更彻底的调查,研究人员找到了下载的扩展程序。不出所料,它还包含与ChromeLoader恶意软件家族相关的功能,但更重要的是,它被标记为1.0版(!)

这些扩展与与该家族相关的其他扩展非常相似,但有一个主要区别,这一次,扩展没有被混淆。它甚至包含开发者对不同代码部分的一些评论。

此变体下载的扩展示例,研究人员这边没有任何更改

总结

本文详细解释了使用恶意广告传播的新恶意软件家族——ChromeLoader的不同版本。在短时间内,ChromeLoader的开发者发布了多个不同的代码版本,使用了多个编程框架、增强功能、高级混淆器、修复了问题,甚至添加了跨操作系统支持目标Windows和MacOS。

该恶意软件用于劫持受害者的浏览器搜索和展示广告,虽然这两种行为不会造成严重损害或泄露高度敏感的数据,然而,基于攻击者在如此短的时间内的广泛传播,研究人员认为他们能够造成比Chrome扩展程序的两个主要功能更大的损害。

此外,开发者的开发过程非常有条理,标记了他们不同的恶意软件版本,并在整个攻击例程中使用了类似的技术。这可能使他们在开发攻击框架和维护攻击链时更轻松,但无意中,这也使调查过程变得更加容易。最后,开发者使用了ISO(DMG)文件和浏览器扩展,这点值得警惕。

参考及来源:https://unit42.paloaltonetworks.com/chromeloader-malware/