我发现了10,000个分发特洛伊木马恶意软件的GitHub仓库
2026年6月18日 这是我发现1万个在GitHub上分发特洛伊木马恶意软件的仓库的故事。它们来自不同的贡献者,名字各不相同,且不是其他仓库的分支。但它们有一个共同的特征,这使我能够编写一个脚本来查找这样的仓库。 介绍 我在GitHub上有一个项目,我想检查一下搜索引擎是否已将其索引。我在谷歌上输入了项目的名称,我的仓库在结果中出现。我在必应上输入了相同的查询,结果中出现了另一个人的仓库,有着完全相同的名称和描述。那是我仓库的一个副本,包含所有的提交,而我被列为贡献者。但一个小时前,另一个提交被推送,并更改了自述文件,添加了一个指向zip档案的链接。 我正在为我在GitHub上的另一个项目选择适当的标签。我点击这些标签来查看类似的项目。在列表中,我发现了一个仓库,其名称和描述与该列表中另一个仓库完全匹配。结果发现,它也包含该仓库所有提交的副本,而两个小时前,自述文件中添加了一个指向zip档案的链接。 在监视这两个仓库后,我发现每隔几小时,他们就删除上一个提交,重新推送完全相同的提交。这个提交只包含一个更改:在自述文件中添加了指向档案的链接。我向GitHub支持提交了请求,要求他们删除这些仓库。两个星期过去了,毫无改变;GitHub支持没有回应。我和一个AI讨论了可以做些什么,但它并没有提供任何有用的建议。我在GitHub上发起了一个话题,三个人回复了与AI无关的废话,丝毫没有帮助。一个月后,GitHub支持给我发了一封电子邮件,说他们已经删除了这些仓库。 你可以打开其他类似的仓库,查看最新的提交,看到自述文件中几小时前添加了一个指向zip档案的链接: https://github.com/Dicrida123/java-sdk https://github.com/A2A-MC/ccresume https://github.com/1-RAY-1/project-startup-cursor https://github.com/123abukhaled0/FinCoach 这个zip档案包含4个文件: - Application.cmd或Launcher.cmd - loader.exe或luajit.exe或another_name.exe - random_name.cso或random_name.txt - lua51.dll 如果你将档案链接提交到VirusTotal,它会找不到病毒。如果提交zip文件本身,它会在里面检测到特洛伊木马。 继续 看起来我似乎已经忘记了这个事件,但我的潜意识没有。我的潜意识经常在我睡觉或醒来的时候给我抛出有趣的想法。最近,我醒来的一瞬间意识到我需要做什么。我需要想出一个通用模式,然后编写一个脚本,来分析所有GitHub仓库并找到符合该模式的仓库。 搜索模式: - 每隔几小时删除上一个提交并推送一个新的提交 - 提交中仅更新自述文件 - 自述文件中包含指向zip档案的链接 - 提交是从另一个仓库复制的 - 这是一个新仓库,不是分支 - 所有仓库都有不同的贡献者和不同的名称 从最后两点可以清楚,即使我们找到一个这样的仓库,也无法使用它找到其他类似的仓库。但GitHub上有5亿个仓库。我们如何才能分析所有这些仓库?GitHub允许每小时使用单个令牌发出5000个请求。对于每个仓库,我们需要发送几次请求,以获取提交列表、修改过的文件和自述文件的内容。我不想等上一年时间来分析所有的仓库。但我们不需要所有的仓库,我们只需要那些每隔几小时更新的仓库。我找到一个名为gharchive的服务,它允许你下载任意一天的所有GitHub事件。因此,我们需要下载过去几天的事件存档,过滤掉只包括提交推送事件,并识别出每10小时更新2到10次的仓库。 在过去的5天中,有1600万个提交推送。其中只有3000个仓库每隔几小时更新。但是,这些事件不包括修改了哪些具体文件的信息。这意味着对于每个相关仓库,我们需要向GitHub API发送额外请求。运行脚本后,它返回了大量仓库。我增加了几个过滤参数: - 提交必须来自用户,而不是机器人 - 最后一个提交和之前的提交之间必须间隔超过一个月 - 仓库有多个贡献者 在那之后,只有14个仓库完全符合模式。我不禁疑惑:为什么会有这么少的仓库?我侥幸碰上了什么?
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡