原帖地址:https://madelinemiller.dev/blog/minecraft-malware/
翻译者:夏至锐
前言
近年来,网络攻击事件持续增加,其中包括针对《Minecraft》服务器社区的攻击。受感染的插件和模组变得越来越常见,甚至一些信誉较好的网站上也出现了恶意软件的个别案例。恶意软件可能会对你的服务器造成严重破坏,甚至可能使你的数据面临风险。鉴于此,你该如何识别恶意软件的迹象?如何从一开始就防止安装恶意软件?在最坏的情况下,如果你的服务器真的被感染了该怎么办?
如何知道是否已被感染?
由于各种恶意软件各不相同,因此没有一种确切的方法能够判断自己是否被感染,但你可以留意一些常见的迹象。
JAR文件大小增加
恶意软件通常会隐藏在插件的 JAR 文件中,以增加检测难度。由于所有计算机代码本质上都会占用空间,因此当插件 JAR 文件感染恶意软件后,其文件大小可能会增加。
资源占用增加
某些形式的恶意软件会执行恶意任务,例如加密货币挖矿或记录并报告活动至远程服务器。由于这些任务会占用服务器资源,如果你突然发现服务器延迟增加或每秒刻度率下降,则可能表明存在恶意软件感染。但同样值得注意的是,资源使用增加的原因有很多,其中大多数仅仅是由于服务器上的良性玩家活动所致。虽然这可以作为一个迹象,但本身并不足以证明存在恶意软件感染。
奇怪的错误
由于恶意软件感染,可能会出现大量奇怪的错误,这些错误通常出现在那些并非专门用于检测恶意软件、但偶然注意到异常情况的系统中。例如,Paper 的插件重映射系统就无法处理 Minecraft 恶意软件通常使用的多种混淆形式,并可能在重映射过程中导致错误。
同样地,WorldEdit 和 WorldGuard 包含用于检测其他插件是否错误地包含了 WorldEdit 或 WorldGuard 部分代码的机制,因为这可能导致系统不稳定。这一机制也会无意中触发许多类型的 Minecraft 恶意软件。如果你突然收到某个插件包含了之前从未见过的 WorldEdit 或 WorldGuard 部分内容的巨大错误信息,那么这很可能是你系统中存在恶意软件的一个指示。
另一个可能表明存在恶意软件的错误是“zip 文件已关闭(zip file closed)”错误。虽然这种错误有多种可能原因,其中大多数并无危害,但也有可能是由恶意软件引起的。
杀毒软件
需要注意的是,尽管防病毒或反恶意软件通常是检测恶意软件的好方法,但它们对于 Minecraft 恶意软件却完全不可靠。它们几乎永远不会检测到真正的 Minecraft 恶意软件,而且非常容易对完全无害的插件 jar 文件产生误报。虽然收到此类软件的病毒警报可能是一个提醒你再次确认文件是否合法的好信号,但这些警报大多数情况下都是误报,可以安全地忽略。
如何避免感染?
尽管恶意软件的可能性令人担忧,但仍有许多方法可以帮助你提高安全性。
仅从官方下载
避免恶意软件的主要方法是确保您只从官方来源获取软件。要做到这一点,您需要确认下载软件的位置确实是该软件开发者所上传的平台。例如,如果一个插件仅在 Modrinth 上发布,而其他人将该插件上传到 Spigot 网站,则被视为非官方版本,使用此类版本是一个糟糕的选择。由非官方来源重新上传的插件可能会以您意想不到的方式被修改,因此它们是恶意软件常见的传播途径之一。实际上,最常见的恶意软件来源之一就是盗版插件网站,这些网站会免费重新上传付费插件。
同样重要的是确保您的服务器软件也仅从官方来源获取。由于 Spigot 只能通过其 BuildTools 系统官方获取,许多网站纷纷出现提供直接下载 Spigot jar 文件的服务。由于这些都是非官方的重新上传版本,可能存在恶意软件的风险。尽管某些网站或重新上传的文件可能是安全的,但验证其安全性较为困难,因此最好避免承担这种风险。
验证官方来源的一个好方法是检查该插件或软件是否有官方网站,并查看它们的下载链接指向何处。最安全的做法是使用由软件开发者提供的其他来源所链接的内容。
尽量避免使用未知的插件,或者新近上传的插件
即使你只从信誉良好的网站下载,过去也出现过这些来源传播恶意软件的个别案例。这些案例通常来自非知名开发者的最新上传插件。如果你想确保安全,最好选择使用来自可信开发者的、更知名的插件,而不是新开发者发布的全新插件。
尽管绝大多数新插件开发者并没有进行任何恶意行为,但在使用全新的插件之前等待至少几周或更长时间通常是个好主意,因为如果存在恶意软件,一般会在短时间内被发现。
已遭到攻击该如何做?
通常来说,彻底清除恶意软件是一件相当麻烦的事情。大多数《Minecraft》恶意软件会尝试将自身传播到你服务器上的其他 jar 文件中,如果你在同一台机器上运行了多个服务器,并且这些服务器在文件层面上可以互相访问,那么恶意软件甚至会传播到其他服务器的 jar 文件中。正因为如此,唯一能确保彻底清除恶意软件的方法就是执行以下步骤。
删除恶意软件
清除恶意软件的第一步是删除每一个它可能访问过的 jar 文件。这包括插件的 jar 文件、服务器软件本身的 jar 文件,以及可能存在于同一台机器上其他服务器中的所有 jar 文件(只要它有机会访问)。如果你使用的是 Paper 服务端,那么像 cache、versions 这样的文件夹中,以及 plugins 文件夹内的.paper-remapped
目录中也可能存在 jar 文件。你应该删除每一个找到的 jar 文件,因为它们中的任何一个都可能包含恶意软件。如果你不确定是否已经删除了全部相关文件,可以尝试使用搜索功能查找 jar 文件,理想情况下你应该找不到任何残留的 jar 文件。
一旦所有 jar 文件都被彻底删除后,您应该从官方来源重新下载所需内容,然后启动服务器。在整个过程中,切勿中途启动服务器,并且在下载新的 jar 文件之前确保所有旧文件已被完全清除,因为如果服务器上仍存在含有恶意软件的文件,它们可能会将恶意软件传播到新下载的 jar 文件中。
译者注:其实最好的办法是重做整个系统。
总结
恶意软件不仅令人担忧、难以清除,而且可能造成严重干扰。了解其可能的表现形式、如何避免感染以及在最坏情况下如何清除是非常重要的。