查看: 531|回复: 0
收起左侧

[转帖] 【转载】【翻译】我的世界Mod——SugarSMP 恶意软件

[复制链接]
tiered-zinnias
发表于 前天 19:13 | 显示全部楼层 |阅读模式
本帖最后由 tiered-zinnias 于 2026-4-9 04:18 编辑

GDATA原文:https://blog.gdatasoftware.com/2 ... od-sugarsmp-malware


甜蜜的MC模组——SugarSMP 诈骗、恶意软件与勒索的黑暗传说

如果您是一位家长,您可能曾看到您的孩子在游戏中失去财产给“恶意破坏者”后伤心欲绝的样子。或者,如果您自己就是一名《我的世界》玩家,您可能也曾直接受到过影响。恶意破坏者是指那些故意摧毁其他玩家建筑、窃取游戏内物品或扰乱其他玩家正常游戏的玩家。经历过这些后,人们自然会渴望一个更安全、没有恶意破坏的游戏环境。

有一些 Minecraft 社区就做出了这样的承诺:“舒适、无恶意破坏、包含领地保护的生存模式”,或是“没有抓马、没有恶意破坏、没有有害行为”,正如在 sugarsmp(dot)com 等 Minecraft 网站上看到的那样。

确实,如果我们检查 SugarSMP 的下载链接,它们会指向以 Cobblemon(宝可梦模组)为主题的整合包;在线玩家人数大约在 35 到 45 人之间小幅波动;网站上满是社区创作的视频和照片,还有常见问题解答(FAQ)、玩家评价页面以及展示管理团队的版块。到目前为止,一切看起来都很正常,不是吗?

甚至在 YouTube 上还有其他玩家展示他们在此 SugarSMP 服务器中游戏体验的直播录像。在各大服务器列表网站上,该服务器也被推荐为线上游玩 Minecraft 的绝佳选择。

基于这些信息,假设 SugarSMP 的所有者礼貌地要求您删除一篇“声称他们正在传播恶意软件”的帖子,您会同意吗?

这正是 r/computerviruses 子版块的版主们所经历的事情。他们收到了来自一个在 Reddit 上活跃了近十年的高信誉用户账号发来的删帖请求。

在此之后,我们——即 r/computerviruses 的版主 rifteyy、一位选择匿名的合作者,以及我本人——决定进行更深入的调查。尽管 SugarSMP 网站表面上看起来没有问题,但总有一些地方感觉“不对劲”。

例如,虽然在线玩家数量一直显示为 35-45 人,但从未出现过任何大幅波动。假设玩家们都在同一个时区登录,我们本应预见到:在大多数玩家通常睡觉的时间段会出现玩家数量的锐减,或者在他们醒着且有空闲时间玩 Minecraft 时出现激增。退一步说,即使假设来自不同时区的玩家都在使用该服务器,也应该存在更高频率的数据波动。

调查过程

SugarSMP 网站的 FAQ 版块提到:“SugarSMP 运行在 Fabric 1.21.4 上,并且是全模组化的”,这意味着您必须安装特定的模组包才能加入服务器。实际上,当尝试连接该服务器时,它确实会要求从 `sugarsmp(dot)com/downloads` 下载模组包。

这一点本身并不可疑,因为 Fabric 要求客户端上的模组必须与服务器及其他玩家的模组保持一致。但是,这是否可能被滥用,从而胁迫用户下载恶意软件?

Minecraft 服务器使用服务器列表 Ping(Server List Ping, SLP)协议与客户端进行通信。因此,我们编写了一个小脚本来对其进行 Ping 测试,并从游戏服务器获取基本信息:


  1. import socket, struct, json, sys

  2. sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  3. sock.settimeout(10)

  4. host = sys.argv[1]
  5. sock.connect((host, 25565))

  6. host_bytes = host.encode("utf-8")
  7. data = b"\x00\xfd\x05" + bytes([len(host_bytes)]) + host_bytes + struct.pack(">H", 25565) + b"\x01"

  8. sock.send(bytes([len(data)]) + data)
  9. sock.send(b"\x01\x00")

  10. raw = sock.recv(16384)
  11. response = raw[raw.index(b"{"):]

  12. while True:
  13.     try:
  14.         result = json.loads(response)
  15.         break
  16.     except json.JSONDecodeError:
  17.         more = sock.recv(16384)
  18.         if not more:
  19.             break
  20.         response += more

  21. sock.close()
  22. print(json.dumps(result, indent=2))
复制代码


这个脚本会返回 JSON 数据,提取出易于人类阅读的结果如下:


  1. Server: Paper 1.21.4
  2. Protocol: 769
  3. Players: 40/120
  4. MOTD: Sugar SMP  NEW SEASON WINTER
  5. Secure Chat: True
复制代码


这意味着服务器使用的是 Paper 1.21.4。MOTD 代表“每日消息”(Message of the Day),协议号 769 对应的是 Minecraft Java 版 1.21.4。服务器还告诉我们当前有 40 名玩家在线,最大可容纳 120 名玩家。“安全聊天”(Secure Chat)指的是 `enforcesSecureChat` 选项,它要求所有玩家必须拥有 Mojang 签名的公钥才能连接。

这意味着这些可疑的玩家统计数据确实是由服务器传回的。但这并不意味着该数字就是真实的,因为服务器本身可能在伪造数据。

我们继续利用 VirusTotal 和开源情报(OSINT)对 `sugarsmp(dot)com` 域名进行了调查,试图找到潜在的相关文件或之前提供的下载内容,但当时一无所获(注:如果您现在正在查看,由于我们的调查,VirusTotal 上现在已经有了关于该域名相关文件的更多上下文信息)。

3 月 7 日,SugarSMP 的所有者要求 r/computerviruses 的 Reddit 版主删除一篇关于其网站存在感染文件的帖子。这篇诈骗警告帖发布于 2 月 27 日。在帖子中,受害用户描述说,在安装了 SugarSMP 的模组后,不仅他们的账号和数据被盗,SugarSMP 的所有者还以公布其私人信息为由勒索了他们 300 美元

我们联系了该用户(u/RevolutionaryBug4262),他们回复称,有一个“家伙”在 Discord 上给他们发消息,邀请他们加入其 Minecraft 服务器:

“[他] 说模组整合包下载链接在那儿。我把整合包 zip 解压到 CurseForge 里并检查了模组列表(到这里时已经起疑心了),但看起来很正常,只是一堆性能优化模组 [...] 当我启动安装时,它弹出了一个大大的勒索屏幕,但不知怎么的被我用 alt+f4 关掉了。然后他就私信我,说他掌握了我所有的信息和密码云云(大概是恶意软件记录了谷歌保存的密码和 iCloud 的图片并发送给了他),而且他还说他仍然控制着我的笔记本电脑,除非我断开 Wi-Fi。哦对了,他要 300 美元,否则就泄露我的信息,但他很可能反正也会泄露,而且我身无分文,所以我只是改了密码并重置了电脑。”

据该用户称,此事发生在 2 月 26 日。他们随后发给我们两张截图,出于隐私原因我们不会公开。第一张截图显示了一条通过机器人“scare(恐吓)”命令执行的 Discord 消息,包含文本“您的电脑已被入侵(YOUR COMPUTER WAS COMPROMISED)”。第二张截图展示了一条典型的窃取器(stealer)外传信息,这正是威胁行为者通常会收到的那种控制面板数据。它包含了被盗的 Cookie、密码、信用卡和自动填充信息的数量统计,列出了操作系统、杀毒软件、硬件 ID(HWID)、IP 地址,并显示了用户电脑当时的屏幕截图。

这意味着,SugarSMP 的所有者在 2 月 26 日至 3 月 7 日期间,恰好在他们提出 Reddit 删帖申诉之前,下架了自己的带毒模组包并将其替换为了官方干净的模组包。这也反过来表明,2 月 26 日之前的网站版本可能会告诉我们真相。

事实确实如此。当我们在查看 2026 年 2 月初 SugarSMP 网站在 Wayback Machine 上的网页快照时,取得了突破。我们没有再发现指向官方宝可梦主题模组的链接,而是发现了托管在该域名上的 `SugarSMP-1.0.zip[1]`、`SugarSMP-ModPack.zip[2]` 和 `SugarSMP 1.0.0.mrpack` 下载链接。我们对 `SugarSMP-1.0.zip` 模组包进行了深度分析。

CurseForge 模组整合包分析:SugarSMP-1.0.zip

CurseForge 会为您管理模组。安装程序只需要在 JAR 的 `manifest.json` 中通过项目 ID 列出这些模组,然后 CurseForge 会在安装时自动下载并验证,这意味着它们不会占用原始 ZIP 文件的存储空间。然而,`SugarSMP-1.0.zip[1]` 的大小竟然超过了 20 MB,对于一堆仅仅是项目 ID 的数据来说,这显然太大了。

在 `manifest.json` 中,该整合包确实列出了 15 个合法的模组(如 Fabric API、Sodium 等)。

但是,CurseForge 的模组包格式会直接将 `overrides/` 目录下的内容复制到 Minecraft 实例中,而不进行任何完整性验证。在 `overrides/mods/` 目录中,有一个名为 `appleskin-fabric-mc1.21.3-3.0.6.jar` 的文件,这是合法的 AppleSkin 模组(用于改进食物 HUD)。

`squeek/appleskin` 下的所有合法类确实都存在且功能正常,但在 `squeek/appleskin/client/DebugInfoHandler.class` 中,威胁行为者向模组的合法初始化流程中添加了一个恶意钩子(Hook)

当 Minecraft 启动时,Fabric 模组加载器调用 `AppleSkin.onInitializeClient()`,该方法反过来会调用被注入了恶意代码的 `DebugInfoHandler.init()`。

紧接着,`BootstrapService.setElevationJarPath()` 会记录该 JAR 的文件系统路径,以便后续持久化。随后,`Main.runAsync(RunType.MOD)` 会在一个守护线程(低优先级后台线程)上启动恶意软件的代码,确保它不会阻塞游戏合法代码的执行,以此隐蔽运行。

`RunType` 是 `org.spark` 包中的一个恶意类。由于大部分恶意代码都在这个包下,我们将该恶意软件家族命名为 Spark stealer

Spark stealer 使用了一种未知的混淆器,它将加密字符串转换为盲文(Braille)Unicode 字符,并生成点彩派风格的 ASCII 艺术图案(例如代码中绘制的史莱克图案)。

在代码图案下方硬编码了一个 Discord Webhook,恶意软件将其与 GoFile 上传功能结合使用以向外渗漏数据。该 Webhook 的创建时间距离该样本首次在 VirusTotal 上被发现仅有两个小时。

该恶意软件会窃取以下应用程序的数据:
  • Discord 令牌(Tokens)
  • Telegram 桌面版会话
  • 钱包浏览器扩展程序
  • 本地加密货币钱包应用
  • 基于 Chromium 和 Gecko 内核浏览器的凭据
  • Steam 凭据


此外,Spark stealer 还会查询社交媒体 API 以获取 TikTok 和 Roblox 的会话信息、个人资料和虚拟资产余额等。该恶意软件甚至内置了一个关键字扫描器,在窃取的凭据和 Cookie 中查找敏感词(包括 Pornhub 和 Onlyfans 等网站,可能用于后续勒索),并专门针对 GitHub、Cloudflare 等开发者平台进行窃取。

文件 `appleskin-fabric-mc1.21.3-3.0.6.jar` 根目录中还包含一个名为 `injection.b64` 的文件。里面是编码后的 JavaScript,恶意软件会将其注入到 Discord 桌面客户端的 `discord_desktop_core/index.js` 中。这段注入代码不仅会窃取 Discord 的支付信息和 2FA 验证码,还会监听密码修改事件。

由于窃取器的代码依赖于 Windows API 解密浏览器密码(如 CryptUnprotectData),它使用了 Java 本地访问(JNA) 直接从 Java 环境中调用这些 API。这对安全检测工程来说是一个明显的行为特征(Indicator),因为正常的 Minecraft 模组绝不需要调用类似 `nss3.dll` 这样的浏览器级底层加密 API。

持久化机制

攻击者总共部署了三层持久化机制:
1. 伴随游戏启动: 每次玩家使用受感染的 AppleSkin 模组打开游戏时,恶意软件都会随之启动。
2. Discord 客户端劫持: 注入到 Discord `index.js` 中的代码在 Discord 重启后依然存活,除非用户彻底重装 Discord。
3. 计划任务: `BootstrapService.setStartup()` 方法会创建目录 `<user.home>\AppData\Local\Microsoft\Windows`,将自身拷贝进去并重命名为 `FileExplorer.jar`。随后,创建一个名为“ExplorerStartup”的系统计划任务来实现开机自启。

社会工程学

威胁行为者竭尽全力来维护他们虚假 SugarSMP 社区的声誉。网上能搜到虚假的服务器排名赞美 SugarSMP,甚至在 YouTube 上有挂羊头卖狗肉的假直播。

唯一揭露真相的 Reddit 警告帖(即前文提到的勒索受害者发布的)却被删除了。删帖要求之所以能得逞,是因为提出申诉的账号是一个拥有近十年历史的高信誉 Steam 模组开发者账号

我们在进一步调查后发现,这个高信誉开发者账号实际上已经被黑客窃取。黑客利用窃取来的合法开发者身份向 Reddit 版主施压,删除了揭露他们 SugarSMP 骗局的帖子。威胁行为者不仅擅长编写恶意代码,更精通利用信誉体系抹除犯罪痕迹。

成群结队的“甜系(Cozy)”Minecraft 诈骗网站

通过搜索网站上使用的“cute(可爱)”和“cozy(舒适)”等话术词,我们发现了一个庞大的、有着惊人相似度的钓鱼网站网络。虽然主题各异(粉色系、小猫主题等),但内核一致。

我们编写了爬虫,从所有这些域名(多达几十个,见文末 IOC 列表)中下载文件。在我们爬取时,所有能成功下载的站点都托管了窃取器(主要基于 Electron / JavaScript),这是一个成熟的黑产矩阵。

在分析调查时,这类黑客经常会“销毁证据”(如将恶意文件替换为正常的官方模组),这也是为什么深入取证、通过 Wayback Machine 获取历史载荷至关重要的原因。

补救措施

系统可能感染了 Spark stealer 的用户应立即采取以下措施:
  • 彻底卸载并重新安装 Discord 客户端。
  • 检查并删除执行可疑 JAR 文件(如 `FileExplorer.jar`)的 Windows 计划任务。
  • 使用更新至最新病毒库的杀毒软件进行全盘扫描。
  • 注销所有浏览器和 Discord 的登录会话,并重新生成 Discord 的 2FA 备用安全码。
  • 检查并清理 Discord 的“设置 -> 授权的应用”。
  • 必须修改所有在浏览器中保存过或可能受影响的密码。
  • 将受影响的加密货币钱包资金转移到全新钱包,切勿在新钱包中重复使用旧的助记词


入侵指标 (IOC)

恶意的 CurseForge 模组整合包 (SHA256):

  1. SugarSMP-1.0.zip - 060ed0ec27a0a4ad7b55425ed56d8ef0c55aa61b499d4884d1679f18d518ddf3
  2. SugarSMP-ModPack.zip - dfef4a07800ad08e09390291647e4cf50c77d1a83e076c181103f25a77dd5697
复制代码


“甜系(Cozy)”伪造 Minecraft 域名(部分):

  1. bunnycraft(dot)online, cherriecraft(dot)com, cutiecraft(dot)network, cutiemc(dot)com, cuttiescraft(dot)com, greatsmp(dot)com, hellocraft(dot)online, hellokittycraft(dot)net, kitlycraft(dot)net, kitten-smp(dot)com, kittensmc(dot)com, kittycraft(dot)com, kittypixel(dot)com, kuromicraft(dot)online, pinkcraftmc(dot)com, sanriocraft(dot)online, sugarsmp(dot)com, sweetcraft(dot)net ...
复制代码
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2026-4-10 13:14 , Processed in 0.077993 second(s), 3 queries , Redis On.

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表