当前位置: 首页 > news >正文

4 [危机13小时追踪一场GitHub投毒事件]

事件概要

自北京时间 2024.12.4 晚间6点起, GitHub 上不断出现“幽灵仓库”,仓库中没有任何代码,只有诱导性的病毒文件。当天,他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒,等待不幸者上钩。

而这一切被一位中国开发者--我收在眼底。经过几天的探测寻找,疑似找到了攻击者的真身。

事件经过

别人编写了一套开源程序,用于寻找当下最早期的潜力种子项目。 源码 https://github.com/chmod777john/github-hunter

我曾经用它找到过一个很好的开源项目 MagicQuill ,在其创建还不足24小时的时候我就检测到它了。

自此我大受鼓舞,决定每天都用我的算法搜寻一下Github上最新创建的仓库中,看看哪些是有潜力的。这样我可以领先于官方的Github Trending榜,也能比绝大部分科技媒体更早地发现好项目。

在 12.4 的搜寻过程中,我发现了一批不太一样的仓库。

这里面的 is None 代表仓库有大量 star 记录,后来却被删库。为何有如此大量的高赞仓库会被删除呢?

期初我没在意,而在一天后,这些仓库再次出现。

就好像幽灵一样,建仓->取得高赞->删库->再次创建。

罪证

这些仓库点进去一看,都是同一种风格: 声称自己是某个游戏的外挂或者 PhotoShop 破解版之类的,引导用户下载并且打开他的 exe 文件。

基本可以确定是钓鱼仓库了。所有这些仓库创建时间都非常相近,大约就是十多小时之前,而且短时间内积累到几百 star ,其背后必有高人。

追凶

这些攻击者是谁? 我决定一探究竟。

历时4年的攻击

首先查看是谁给这些仓库点了赞,

我本以为大多是最新创建的机器人账号。

出乎意料的是,这些账号的加入时间并不短。有些账号甚至是 2020 年就加入 Github 了。

4年的老号可不是说弄就弄的,如果这号是他自己的,那可真是下了血本,一个号养4年就为了这一天?

如果这号是他在黑市上买的,那说明4年前就有人开始批量养小号,也是一条很可观的产业链了。(创业都不一定能创4年呢)

无论这些号是攻击者自己养的还是在黑市上买的,成本都不低。

一片空白

我开始逐个账户打开查看,坐实了一件事:这些仓库都是一伙儿的!

这个人点赞过的所有仓库,都是刚刚说的幽灵仓库!

不过个人资料卡上完全没有任何痕迹。 没有粉丝,也没有关注的人,这让我们无从下手,简直一片空白。

漫漫长路

180 多个账号,我真的逐个点开来看了。其中大部分的都是纯粹的空白账户,只用来点赞。但仍然有一些是附带个人资料的。

这个账号甚至附带了个人网页和 Instagram 。

不过凡事讲究双向证明。万一这个账号是冒用小哥的信息呢? 只能将其列为怀疑对象。

峰回路转

攻击者账户 follow 了谁,并不重要,因为攻击者可以冒用他人信息。真正有用的线索,应该看谁 follow 了攻击者。

踏破铁鞋无觅处,我找到了一个活人账号。

有 5 个人 follow 了这个账号!而且看他的 star 历史,可以明确他是攻击者之一。

而且该账号有真实的 Github 代码提交记录(记住这个叫 SimpleBot 的仓库)

我们来看看是谁 follow 了这个 G4tito

这两位都是大人物。看看他们的 Github 主页长啥样:

BrunoSobrino 和 elrebelde21 这两位大 V, 曾经合作过一个开源项目。

和明确攻击者做的项目是同名的!

至此,逻辑链如下:

可见 BrunoSobrino 和 elrebelde21 这两位大牛,跟攻击者 G4tito 可能是有联系的。

其实到这里基本破案了。操纵 180 多个账号是短时间内点赞和创建仓库,批量生成内容,不太可能用人工完成,应该是用 GitHub API 自动化做的。这两位大牛和明确攻击者,做的项目都是那种 WhatsAPP 机器人,技术栈也相当吻合了。

2024.12.7 凌晨 6:11 更新

经评论区大佬提点,找到一个疑似线索

地址

https://github.com/BrunoSobrino/ShadowBotV3

GhostArchive 备份地址 https://ghostarchive.org/archive/1EZ9e

证据

我知道曝光之后,他们肯定会删库的,因此我已经提前把所有网页都备份到 GhostArchive 了。

我挖掘到的恶意仓库列表,也全都放在了区块链上,形成铁证。

各位看官不必信任我,请直接去查看区块链。所有记录都在里面。

https://viewblock.io/arweave/tx/Cppr-Bus0TxC6_zqD-sJitVz4Ne3sR0noJknsuyhZ4Q

宣传

我知道一些媒体朋友会见到这篇文章,我希望你们帮我推广。

我只是一个不起眼的小人物,这个故事不推广的话,就只能烂在我的肚子里。

我认为这是个好故事。中国程序小哥,单枪匹马,通过大数据筛查的方式,破获了一起 GitHub 恶意软件钓鱼事件,涉及的大V在 Github 上有接近数百关注者,获得过几千 star 。同时涉及有多达 180 个虚假账号,长达 4 年的活动。 这些 buff 叠在一起,相当有故事性了。

更重要的是,这件“真人真事” 是可以被检验的。所有的记录都在区块链上,涉事人删库也没用。

所有人都可以重走一遍我的侦查之旅,仔细检验每个网页备份。

把这个故事发扬出去,能有什么好处:

我可以用区块链私钥签署一条消息,内容是“xx媒体慧眼识珠,是第一批愿意帮助我推广这个故事的人” 。消息一旦签署上链,所有人都可以校验,而且不可篡改,如同铁证,连我自己也无法反悔。

凭借这样一条消息,我越火,你的含金量越高。

我不太会讲故事,但上面都是真事儿,每个细节都可以检查。

如果你觉得这个故事可以帮我讲好的话,联系我。


事件描述:

chmod777john/ghost-repos​github.com/chmod777john/ghost-repos

我发现这个攻击事件所用的工具:

github-hunter/index.ipynb at main · chmod777john/github-hunter​github.com/chmod777john/github-hunter/blob/mai

相关文章:

4 [危机13小时追踪一场GitHub投毒事件]

事件概要 自北京时间 2024.12.4 晚间6点起, GitHub 上不断出现“幽灵仓库”,仓库中没有任何代码,只有诱导性的病毒文件。当天,他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒,等待不…...

Shadow DOM举例

这东西具有隔离效果&#xff0c;对于一些插件需要append一些div倒是不错的选择 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>演示例子</title> </head> <body> <style&g…...

力扣动态规划-18【算法学习day.112】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.下降路径最小和 题目链接:931. …...

网络基础

协议 协议就是约定 网络协议是协议中的一种 协议分层 协议本身也是软件&#xff0c;在设计上为了更好的模块化&#xff0c;解耦合&#xff0c;也是设计成为层状结构的 两个视角&#xff1a; 小白&#xff1a;同层协议&#xff0c;直接通信 工程师&#xff1a;同层协议&…...

使用 EXISTS 解决 SQL 中 IN 查询数量过多的问题

在 SQL 查询中&#xff0c;当我们面对需要在 IN 子句中列举大量数据的场景时&#xff0c;查询的性能往往会受到显著影响。这时候&#xff0c;使用 EXISTS 可以成为一种优化的良方。 问题的来源 假设我们有两个表&#xff0c;orders 和 customers&#xff0c;我们需要查询所有…...

使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025

使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附&#xff1a;Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…...

Ruby Dir 类和方法详解

Ruby Dir 类和方法详解 引言 在 Ruby 中&#xff0c;Dir 是一个非常有用的类&#xff0c;用于处理文件系统中的目录。它提供了许多方便的方法来列出目录内容、搜索文件、以及处理文件系统的其他相关操作。本文将详细介绍 Ruby 的 Dir 类及其常用方法。 一、Dir 类概述 Dir …...

克隆OpenAI(基于openai API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain import osdef get_chat_response(api_key,prompt,memory): # memory不能是函数的内部局部变量&…...

位运算算法题

一.判断字符是否唯一 法一&#xff1a; 我们直接借助一个字符数组来模拟哈希表统计字符串即可&#xff0c;并且我们没有必要先将所有字符都放入字符数组中&#xff0c;边插入边判断&#xff0c;当我们要插入某个字符的时候&#xff0c;发现其已经出现了&#xff0c;此时必然重复…...

12 向量结构模块(vector.rs)

一vector.rs源码 // Copyright 2013 The Servo Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE…...

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓

Android车机DIY开发之学习篇(六)编译讯为3568开发板安卓 1.SDK解压到家目录下的 rk3588_android_sdk 目录 一. 全部编译 ###安装所需环境 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g…...

Codeforces Round 863 (Div. 3) E. Living Sequence

题目链接 头一回用不是正解的方法做出来&#xff0c;也是比较极限&#xff0c;直接说做法就是二分数位dp 数位 d p dp dp 求 1 − n 1-n 1−n出现多少含 4 4 4的数字个数 这纯纯板子了 \sout{这纯纯板子了} 这纯纯板子了 设 f ( x ) f(x) f(x) 为 1 − x 1-x 1−x 中含有4的…...

一文讲解HashMap线程安全相关问题(上)

HashMap不是线程安全的&#xff0c;主要有以下几个问题&#xff1a; ①、多线程下扩容会死循环。JDK1.7 中的 HashMap 使用的是头插法插入元素&#xff0c;在多线程的环境下&#xff0c;扩容的时候就有可能导致出现环形链表&#xff0c;造成死循环。 JDK 8 时已经修复了这个问…...

MFC 创建Ribbon样式窗口

然后点击下一步直到完成即可...

uv 安装包

是的&#xff0c;你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器&#xff0c;由 astral.sh 团队开发&#xff0c;旨在替代 pip 和 pip-tools&#xff0c;提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**&#xff1a; 如果你还…...

IELTS口语练习题库

IELTS口语1-4月题库 Part 1 Gifts Have you ever sent handmade gifts to others? Yes, I have. I once made a scrapbook for my best friend’s birthday. It included photos of our memories together and some handwritten notes. She loved it because it was personal…...

图书管理系统 Axios 源码__获取图书列表

目录 核心功能 源码介绍 1. 获取图书列表 技术要点 适用人群 本项目是一个基于 HTML Bootstrap JavaScript Axios 开发的图书管理系统&#xff0c;可用于 添加、编辑、删除和管理图书信息&#xff0c;适合前端开发者学习 前端交互设计、Axios 数据请求 以及 Bootstrap 样…...

基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID &#xff1a; TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的&#xff0c;范围是 0 to 0xFFFE&#xff0c;0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级&#xff0c;ID越大&#…...

c++ string类 +底层模拟实现

提醒: 本片博客只是小编的听课笔记&#xff0c;介意勿看。 基础 包含在头文件<string>&#xff0c;才能使用string类似函数接口。 string常见构造类 string s1; cin>>s1;//无参构造 string s2(s1);//拷贝构造 string s1("jfksa");//传参构造 三种…...

六十分之三十七——一转眼、时光飞逝

一、目标 明确可落地&#xff0c;对于自身执行完成需要一定的努力才可以完成的 1.第三版分组、激励、立体化权限、智能设备、AIPPT做课 2.8本书 3.得到&#xff1a;头条、吴军来信2、卓克科技参考3 4.总结思考 二、计划 科学规律的&#xff0c;要结合番茄工作法、快速阅读、…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...