简介
Unit 42 托管威胁狩猎团队(MTH)识别了一种通过搜索引擎优化(SEO)投毒和假冒 GlobalProtect VPN 软件来交付的 WikiLoader 加载器变种(又称 WailingCrab)。由 Advanced WildFire 逆向工程团队进行的分析揭示了 WikiLoader 的最新规避技术,为我们提供了对其演变的新见解。
我们提供了在野外发现的样本的哈希值,以及从假冒 GlobalProtect 的原始样本中提取的命令和控制(C2)URL。
假冒 GlobalProtect 的 WikiLoader 活动所使用的手法概览
WikiLoader 是一个多阶段恶意软件加载器,黑客开发它时考虑了规避。我们的行业合作伙伴已经很好地记录了这一威胁。因此,我们将重点关注我们观察到的与假冒 GlobalProtect 相关的活动、加载器采用的反分析技术以及黑客所使用的基础设施。
Proofpoint 报告称,WikiLoader 至少自 2022 年底以来一直活跃。他们还指出,钓鱼最初是主要的交付手段。其操作者使用被破坏的 WordPress 站点和公共 MQ 遥测传输(MQTT)代理进行 C2。
我们没有观察到完整的 WikiLoader 感染后的后续有效载荷。然而,Proofpoint 报告称,攻击者使用该威胁向位于意大利的组织交付了 Danabot 和 Ursnif/Gozi 等银行木马。
2024 年 6 月,我们观察到一场利用 GlobalProtect 主题的 SEO 投毒的 WikiLoader 活动,而不是使用先前记录的钓鱼策略。SEO 投毒是通过购买广告或提高页面排名,使攻击者控制的站点在合法产品的搜索引擎结果首页上显示的过程。
攻击者通常使用 SEO 投毒作为初始访问向量,诱使人们访问模仿合法搜索结果的页面,以交付恶意软件而不是搜索的产品。这场活动的交付基础设施利用了重新标记为 GlobalProtect 的克隆网站以及基于云的 Git 存储库。
Unit 42 主要观察到 WikiLoader 影响美国的高等教育和交通部门。然而,使用 SEO 投毒进行交付几乎肯定会扩大可能受害者的范围,与钓鱼相比。
WikiLoader 是一种出租的加载器,怀疑至少被两个初始访问代理(IAB)利用。归因于这一特定活动需要进一步研究。然而,我们确实提出了以下观察。
-
利用 WikiLoader 并假冒 GlobalProtect 的活动表现出对规避的合理关注 -
威胁操作者表现出对简单技术的了解,当这些技术执行得很好时,使得基于机器和签名的检测此类威胁变得困难
此类 OPSEC 考虑包括:
-
使用 MQTT 物联网(IoT)事件队列协议进行 C2 -
拼写错误和假冒下载页面,在整个活动生命周期中被修改为交付 WikiLoader -
使用运行易受攻击的第三方 WordPress 插件的合法站点作为 C2 基础设施 -
使用云托管的 Git 解决方案托管恶意内容 -
使用合法签名的二进制文件侧载 WikiLoader -
使用与安全工具相关的常见文件名,在安全产品中的允许列表会降低检测和响应的效率 -
将有效载荷嵌入看似无害的文件名和类型中 -
隐藏所有文件的属性,除了接收用户交互的文件 -
将存储在 WikiLoader 可执行文件之外的单独二进制文件中的 shellcode 加密 -
解密 C2 服务器上操作者存储的 shellcode 的密钥 -
执行多个反分析检查 -
显示执行时的假错误消息
图 1 提供了感染链的摘要(犯大病了,居然花时间把流程图也翻译了,花了几个小时还这么丑)
交付和执行
以下部分详细说明了通过基于 GlobalProtect 的 SEO 投毒交付的 WikiLoader 的执行情况。
我们观察到的广告链接到多个提供假冒 GlobalProtect 安装程序的虚假网站。图 2 显示了攻击者用来诱使受害者访问假冒 GlobalProtect 下载页面的恶意广告。
图 2. 链接到网站以下载假冒 GlobalProtect 的 Google 广告。
第一个网站是模仿合法业务的网站,下载时获取恶意有效载荷,如图 3 所示。当我们通知 Bitbucket 该网站的情况时,Bitbucket 将其下线。
图 3. 一个克隆网站,引导用户下载托管在 Bitbucket 上的假冒 GlobalProtect 安装程序。
第二个网站如图 4 所示,是一个模仿 GlobalProtect 客户端下载页面的网站。
图 4. 一个克隆的 GlobalProtect 页面,引导用户下载假冒 GlobalProtect 安装程序。
下载后,Cortex XDR 显示与 Chrome 相关的以下信息,其中样本被丰富了 Web 标记(MotW)数据,如图 5 所示。MotW 是 Windows 中的一个安全功能,它为从互联网下载的文件添加元数据,以指示潜在的不安全来源。分析师可以使用这些信息来帮助理解文件的来源,以及某人在下载文件之前可能在浏览的位置。
图 5. 写入和读取 GlobalProtect64.zip 文件,并在文件来源文本区域中丰富了 MotW 数据流,指示下载 URL 之一。
图 6 显示了样本对受害者的外观。文件夹中只显示一个文件。
图 6. 用户查看 GlobalProtect64.zip 解压缩后的内容。
图 7 显示,在查看所有隐藏文件和文件夹时,有 400 多个文件。
图 7. 解压缩后查看 GlobalProtect64.zip 的内容,显示隐藏项。
图 8 显示了我们查看所有文件时看到的内容,并检查了签名者。GlobalProtect64.exe 是一个合法的交易应用程序的副本,攻击者用来侧载第一个 WikiLoader 组件。
图 8. Cortex XDR 截图显示,将交易平台的副本重命名为 GlobalProtect64.exe 被滥用于执行时侧载第一个 WikiLoader 加载器组件(i4jinst.dll)。
图 9 显示,在执行 GlobalProtect64.exe 时,威胁会加载第一个 WikiLoader 组件 i4jinst.dll,位于 .install4j 目录中。
图 9. Cortex XDR 事件截图,与假冒 GlobalProtect64.exe 相关联。
i4jinst.dll 加载映像事件导致恶意模块被加载到假冒 GlobalProtect64.exe 的二进制文件中。加载后,i4jinst.dll 读取证书.pem 中的第一阶段加密 shellcode。然后它解密 shellcode 并将其注入到 explorer.exe 中。
这包括以下离散操作:
-
解密的证书.pem 包含威胁执行的第一阶段 shellcode -
shellcode 加载 C:WindowsSystem32BingMaps.dll -
然后覆盖 GetBingMapsFactory 函数,用证书.pem 中解密的另一个 shellcode 替换 -
被覆盖的 shellcode 然后执行线程注入到 explorer.exe 进程中
在感染链的这一点上,Cortex 的 shellcode 预防触发了警报,如图 10 所示。
图 10. Cortex shellcode 保护阻止了恶意进程注入到 explorer.exe 中。
如果未被阻止,注入到 explorer.exe 中的代码将联系作为 WikiLoader 后门的 C2 服务器。然后它将建立持久性并与 MQTT 代理进行通信。
注入的代码将加载 license_us_EN.html。在假冒 GlobalProtect 的活动中,license_us_EN.html 是 AdInsight.exe Microsoft Sysinternals 二进制文件的副本。License_us_EN.html 将从 C2 服务器下载并侧载 WikiLoader 后门。
建立持久性后,AdInsight.exe(重命名为 license_us_EN.html)将再次重命名为一个随机文件名。此文件将与一个随机命名的文件夹中的一个随机命名的 .pem 文件和 WikiLoader 后门一起写入 ProgramData,如图 11 所示。
图 11. 当 WikiLoader 将持久性组件写入磁盘时,包含在随机命名目录中的文件。
在禁用了 shellcode 保护的测试环境中,Cortex XDR 仍然为 explorer.exe 创建的不寻常的计划任务生成了分析行为指标的妥协(BIOC)检测。
总之,感染链如下:
-
当受害者启动 GlobalProtect64.exe 时,恶意行为开始,此文件然后加载位于 .install4j 中的 i4jinst.dll -
一旦加载,i4jinst.dll 将读取并解密文件 certificate.pem 的内容 -
解密的 certificate.pem 包含威胁执行的第一阶段 shellcode -
shellcode 加载 C:WindowsSystem32BingMaps.dll -
然后覆盖 GetBingMapsFactory 函数,用 certificate.pem 中解密的另一个 shellcode 替换 -
覆盖的 shellcode 然后执行线程注入到 explorer.exe 进程中 -
explorer.exe 进程中的注入代码将联系 C2 服务器以获取 WikiLoader 后门 -
如果持久化,威胁将把 license_us_EN.html 和另一个带有 .pem 扩展名的文件写入 ProgramData 中的随机命名文件夹中,以及作为 .dll 的 WikiLoader 后门 -
威胁将通过计划任务建立持久性,以执行重命名的 license_us_EN.html -
注入的代码将读取并执行 license_us_EN.html 中的隐藏 PE 文件 -
License_us_EN.html 将从 C2 服务器下载并侧载 WikiLoader 后门 -
后门将解密在随机命名的 .pem 文件中加密的 shellcode。解密密钥是后门所在的文件夹的名称。
我们在 Cortex 中添加了额外的保护措施,并在本文末尾分享了一系列 XQL 狩猎规则。
突出 WikiLoader 反分析和防御规避
以下是此 WikiLoader 样本使用的一些独特技巧。
假错误消息
由于假冒的 GlobalProtect 安装程序实际上并不是一个安装程序,WikiLoader 的作者需要另一种技巧来欺骗受害者。当它完成对受害者机器的感染时,威胁会显示一个假错误消息。这可以防止受害者怀疑为什么没有安装 GlobalProtect。
图 12 显示了样本生成的假错误消息。
图 12. 样本完成感染时显示的假错误消息
用于侧载后门的重命名合法软件
攻击者将 Microsoft Sysinternals 工具 ADInsight.exe 重命名为 license_us_EN.html,并将其隐藏在假冒的 GlobalProtect 安装程序中。ADInsight.exe 用于侧载 WikiLoader 后门。图 13 显示了 license_us_EN.html 的内容。
图 13. 显示它是 PE 文件的 license_us_EN.html 的十六进制转储。
检查分析环境
样本检查受害者机器上运行的进程,与恶意软件分析师常用的软件的哈希列表进行对比。由于大多数恶意软件分析师会使用虚拟化环境来分析恶意软件样本,如果发现与虚拟机软件相关的进程,WikiLoader 样本将终止。
为了隐藏 WikiLoader 正在寻找的进程列表,恶意软件使用了一个类似于 2021 年 Emotet 使用的 32 位哈希例程。图 14 显示了此 WikiLoader 样本使用的哈希例程。
图 14. 用于从上面混淆分析进程的哈希例程。
文件夹名称作为后门的解密密钥
后门使用 CryptUnprotectData API 加密。此 WikiLoader 样本使用文件夹名称(RamDQ)作为其后门的解密密钥。
图 15 显示了名为 RamDQ 的文件夹,其中包含加密的后门 1FoWZv.pem 和用于解密和执行后门的可执行文件(s2VT3.exe 和 version.dll)。图 15. 屏幕截图显示 CryptUnprotectData 传递了文件夹名称,最终用于解密 1FoWZv.pem 中的 shellcode。
结论
出于经济动机的威胁行为者将继续在需要一个健壮、隐蔽的 Windows 加载器的各种活动中使用 WikiLoader 作为出租加载器,这些加载器对 OPSEC 给予了合理的关注。
尚待观察的是,为什么威胁行为者从钓鱼转向 SEO 投毒来交付 WikiLoader。一个假设是,另一个初始访问代理(IAB)最近开始与 WikiLoader 合作,通过 SEO 投毒来运营化其交付。或者,公开追踪使用 WikiLoader 的团体可能在端点安全控制或行业报告中断了他们的运营后,从钓鱼转向了 SEO 投毒。
虽然 SEO 投毒不是一种新技术,但它仍然是将加载器交付到端点的有效方法。假冒可信的安全软件可能会帮助绕过依赖基于文件名的允许列表的组织的端点控制。
WikiLoader 活动利用的假冒、被破坏和合法基础设施的结合,加强了恶意软件作者对构建一个操作上安全和健壮的加载器的关注,具有多种 C2 配置。作者怀疑我们可能会在 2024 年及以后继续看到 WikiLoader 的使用。
不管 WikiLoader 采用了哪些反分析和 EDR 规避技术,这些程序可以利用许多常见的端点威胁狩猎方法来识别。我们在附录中分享了四个查询,组织可以使用这些查询在端点数据中以高保真度狩猎 WikiLoader。XQL 用户可以通过进行最小的更改来扩大查询的范围,或者缩小对组织环境可能更适用的威胁。
IoC
这些指标在整个 2024 年 6 月都有效。
恶意网址
网址: hxxps://globalprotect[.]securedownload[.]today/GlobalProtect64.zip 描述:冒充 GlobalProtect 提供档案的 URL。
网址: hxxps://globalprojectvpn[.]com 描述:虚假的 GlobalProtect 网站,提供虚假的GlobalProtect64.zip
网址: hxxps://globalprojectvpn[.]com 描述:虚假的 GlobalProtect 网站从 Bitbucket 项目中提取内容,以提供虚假的GlobalProtect64.zip
网址: hxxps://bitbucket[.]org/bitprotect/globalproject/src/main/ 描述:托管了假GlobalProtect64.zip的 Bitbucket 项目
WikiLoader C2 URL
hxxps://carniceriamartinezadria.com/wp-content/themes/twentytwentyfour/rleoec.php?id=1 hxxps://jlholgado.com/wp-content/themes/twentytwentyfour/zca2ck.php?id=1 hxxps://elpgtextil.com/wp-content/themes/twentytwentyfour/44snwx.php?id=1 hxxps://arbeitsschutz-mmk.de/plugins/search/contacts/chrndi.php?id=1 hxxps://www.estudioemm.com/wp-content/themes/twentytwelve/d4kih3.php?id=1 描述:C2 为 WikiLoader 样本的有效负载提供解密密钥
WikiLoader shellcode 加载器 DLL 的 SHA-256 哈希值
d4eb9a4ee389f03c402e553724015af8d5b85835828bd66b1b45131b6837802f
534c989d110ece8c429d2ded913933b961710726d8655b858474bc31dfed25c3
a001642046a6e99ab2b412d96020a243a221e3819eaac94ab3251fad7d20614b
c6c250e1cd6d5477b46871ffe17deac248d723ad45687fc54ae4fc5e3f45d91c
f1a49cea454bac3e78ac765b247b65d00c896d84de2028892b00d4310453c665
2ab449666cf006125075e3ded8053cdfd318e4772d4145f0fa861f1d42cb2b08
1d6f76acecff63fb373b5774a3cb34b87266a4a4bbb8e3a0757d107187d280ee
b412b2c190b8406392406d9a8e3abce91c9014950bcf835eb7d9b50d0f128cb0
66735d0178badf035be0e142f4fb8e23d860bfc9bbdc3e12ad1f2764de91ee9b
edec55f87e535f869119db44e4e7302081f53dbf33a27aaf905430cedc5a78b9
148b29123bb0c28614858460d7a10707469fecebd6a9ff1da98a0c76a89a9819
0de42118dd0cd861bea13de097457ccb407aae901b14e0bec59b0abe660cdf1f
5576ab87eb11ca4d2944bc1c2c6a8c349e18c7ded583c1ba9bd99eff9d8ac4d7
551da6814a01a280afe90aa6bb238f499d98ad496c0d8472a1705540a6f422da
4f573ab13882efa234a79483d305b3001cb09c0a166ff94c925844b860162415
4f2079cd2e228a2777df45ae00714c8679531fd8ad82a66b5c1b10e800771f18
2add886330db1480da7314ee38428ca79af04f8c461c3bbbd68e202bb5f4c415
76d1a876c90ec16f44685f795e64ab84bd2d3f5a91db659c9879b3461ee104f9
6aa4a830aa8d89b629fe87d3d3e986042215b5bcd670417933fca854b6dd58d9
1c1d739f0282bfd9367e29ca81c61ed4a731e5150a836d0371e5e9d0121c9dfd
69a94bbed366bfd917dfd8fb6e5fd7ba52e2dbf338edd0c259654981060943c8
9a48f32e00877a4335206c7da45a94ca8bd46648d3a0bc88e0789dabf8139024
c3280452e7c96253b215342f2fac14634591adf68f88bcf7dc920d5f28022cd6
0c44a46f1c8e46fe6b6f83ec249c95301aca1bc4765cee7bdadd021bbfd2ff66
2b8b3f5b692f716116a1468b8d7b273baf7a6cef0726e831cd307d2f2c7452ec
e07787caf52dd3e7dd0da600dbd1d909f3799dcebcdc60d101baf3ea17ef1e32
50810e4696dd075ca23349e3e1c3a87fc7b46ab89f4b1eb093a5cfb74f84cc51
912cc2a3592b3b7835205d275cbf92bb66effc99cbd5cc338a223888de1b0d35
f04715827e5453b33ba6fae8475b8c45150b27cc1361441648c46d13025283d2
e693652763141522621f9fcd80efb30cefa363f8bd9bdc65e5ffbf9fb8d76d3b
8d5e185d53e81e90646d684dff7cb399973e3cde6d833e6f7431074f4362139a
ec59616b1c80951d6597d4f25a9c031be0391151dc1073a5bece466473f0bdfe
e7e674218a7d93595e33a092f4f519a65499651a398ca350f5a50e135e64fa41
78f6f94aaa72e41d64e4dc309a3553399db2b4cd0edae5653ca4b6e7839e1215
abce298ebb4ac7bc1a5167179875afc88e7e99475bf681953e8b964237b7d7ed
82ec4e1a6ddf6eeb4030d6dd698f4576d0445d4d5722d5c60b0cc74ac501bb85
0d495a94e29faa4dfded29253322be1b2c534a56c078bea1ad8f1dc1fd23b742
WikiLoader 后门的 SHA-256 哈希值
4044a0d7a0ed7f66efc2bd13616ec63a5722fc7a73a28fe3bda513f60ef24dd9
c9eaaa6aee55704ce651c8b4cde7949cfa9711e05a136fa15f234d1bb2ea994c
原文始发于微信公众号(独眼情报):通过假冒 GlobalProtect 交付独特的 WikiLoader 变种
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论