黑客将 50 多个休眠 GitHub 帐户转变为公司源代码 Recon Network

安全研究人员发现了一些协调一致的活动,这些活动利用 50 多个休眠 GitHub 帐户,通过 GitHub 的 API 映射企业组织、存储库、用户和开发人员活动。

该活动由以下人员记录Datadog 安全实验室,该公司表示,这些活动自 2025 年 10 月以来一直受到监控。操作者使用自动抓取工具、长期不活动的 GitHub 帐户,在某些情况下还使用了被盗用的 OAuth 令牌或个人访问令牌。

大多数活动都集中在公共数据上,看起来就像普通的 API 流量。然而,Datadog 表示,一些活动探测了私有存储库路径,其中一个案例显示通过 git clone 和 API 请求成功访问了私有存储库。

这些活动使用 GitHub 的公共和经过身份验证的 API 来收集有关组织、存储库、开发人员、关注者、要点、加星标的存储库和活动模式的信息。

这些信息可以帮助攻击者构建公司的工程足迹图。即使没有私有源代码,公共元数据也可以揭示开发人员身份、项目名称、语言选择、​​开源依赖项、安全工具以及可能的内部技术堆栈。

当公共侦察与被盗代币结合在一起时,风险就会增加。有权访问私有存储库的令牌可以将攻击者从映射转移到源代码访问。

活动元素观察到的行为为什么这很重要
幽灵账户两到五年前创建的休眠 GitHub 帐户已针对 API 请求激活较旧的帐户可能看起来不像全新的抓取帐户那么可疑
GraphQL 查询大量使用 GitHub 的 /graphql 端点允许跨组织、用户和存储库进行批量查询
休息路线对存储库、关注者、要点、组织成员资格和加星标项目的请求支持组织和开发人员映射
受损的代币合法用户的 OAuth 令牌和个人访问令牌被滥用如果令牌具有足够的访问权限,则可以公开私有路径
回购转储者一个观察到的案例成功访问了私有存储库表明该活动可以超越公共侦察范围

幽灵 GitHub 帐户帮助攻击者融入其中

Datadog 表示,最广泛的活动来自“幽灵”账户网络。这些配置文件是两到五年前创建的,一直处于非活动状态,然后突然开始跨多个 GitHub 组织发送 API 流量。

帐户名称遵循可识别的模式。示例包括 amazon-data-* 帐户、kobalt* 帐户、BirdWithDreams、BirdWithPlan、user432023、user412023 以及 *-orb 系列中的多个帐户,例如 kuku-orb、lolo-orb、lulu-orb、ruru-orb、zouzou-orb 和 meme-orb。

这些账户通常会在一到三周的短时间内保持活跃,然后就会变得安静。这种模式可以帮助攻击者减少一个帐户在单个组织中积累过多可疑历史记录的机会。

为什么 GitHub 的 API 使该活动难以被发现

GitHub 通过设计公开了大量的公共存储库和用户元数据。这使得该平台对开发人员、研究人员和集成非常有用,但它也为攻击者提供了看似合法的侦察路线。

GitHub GraphQL API 文档表示 GraphQL 为集成提供了比传统 REST 请求更精确、更灵活的方式来检索 GitHub 数据。这种灵活性也使其对于批量组织和存储库枚举具有吸引力。

Datadog 发现最大的请求量针对 /graphql,而 REST API 路由用于列出组织存储库、用户关注者、关注帐户、要点、组织成员资格、用户存储库和加星标存储库。

  • /graphql 用于批量组织、用户和存储库查询
  • /organizations/:organization_id 用于组织详细信息
  • /organizations/:organization_id/repos 用于组织存储库
  • /user/:user_id/followers 用于关注者映射
  • /user/:user_id/following 表示开发者关注的帐户
  • /user/:user_id/gists 获取要点
  • /user/:user_id/orgs 用于组织成员资格
  • /user/:user_id/repos 用于用户存储库
  • /user/:user_id/starred 用于加星标的存储库

有几种工具使用用户代理字符串,听起来像是抓取或渗透实用程序。其中包括 GitHub-Company-Scraper、GitHub-Scraper-Tool/1.0 和 GitHubAnalytics/1.5。

其他名称看起来更像是分析、仪表板、监控或存储库检查工具。 Datadog 还指出,一项活动使用了简单的用户代理请求,该活动之所以引人注目,是因为其他活动通常使用版本化名称。

用户代理模式很重要,因为许多请求返回了成功的 HTTP 响应。如果不考虑用户代理、参与者、令牌类型和私有资源访问,防御者可能会将协调枚举误认为是正常的 API 使用。

指示器类型示例后卫使用
用户代理GitHub-Company-Scraper、GitHub-Scraper-Tool/1.0、GitHubAnalytics/1.5寻找定制刮刀工具
提交获取代理GitHub-Commit-Fetcher/1.3、GitHub-Commit-Fetcher/1.4、GitHub-Event-Fetcher/2.2调查对私有存储库提交路径的访问
私人访问工具回购转储者优先考虑任何私有存储库 git.clone 或 api.request 事件
托管服务提供商3xktech[.]cloud、cherryservers[.]com检查源基础设施和 ASN 模式

被盗代币将侦察转变为私人回购调查

Datadog 还观察到使用合法 GitHub 用户令牌的活动。令牌可能已泄露、意外暴露、从受感染的端点被盗或通过其他途径获取。

2025 年 12 月下旬至 2026 年 1 月上旬期间,一个活动使用了受损的 OAuth 令牌和个人访问令牌以及一系列用户代理:GitHub-Commit-Fetcher/1.3、GitHub-Commit-Fetcher/1.4 和 GitHub-Event-Fetcher/2.2。

这些请求在短时间内针对单个组织的私有存储库提交路径。 Datadog 表示,在那次具体活动中,这些尝试失败了,但该模式显示出超越公开枚举的明确意图。

一项活动访问了私人存储库

最严重的发现涉及一个被识别为 repo-dumper 的工具。 Datadog 表示,该工具成功地在属于一个组织的私人存储库内执行了操作。

审核日志通过 git.clone 和 api.request 事件针对私有存储库路径捕获活动。与该访问权限相关的两个 GitHub 帐户已经出现在之前失败的活动中。

这个细节改变了研究的严重性。这些活动不仅收集公共元数据。至少有一个已进入已确认的私有存储库访问权限。

为什么企业源代码团队应该关心

即使公共 GitHub 元数据不直接公开私有代码,也可以支持以后的攻击。攻击者可以识别活跃的开发人员、推断团队结构、查找高价值项目以及与敏感存储库关联的目标帐户。

GraphQL API还允许合法的集成有效地查询复杂的关系。防御者应该期望攻击者能够使用相同的效率进行侦察。

源代码团队应将 GitHub API 活动视为其攻击面的一部分。最重要的信号不仅仅是登录失败。对私有资源的成功 API 请求、不寻常的令牌类型、奇怪的用户代理以及异常的克隆行为都值得仔细审查。

如何在 GitHub 日志中检测此活动

GitHub 组织管理员可以使用审核日志来审查用户和应用程序活动。这GitHub 审核日志文档说审核日志显示谁执行了操作、发生了什么操作以及发生的时间。

Datadog 建议重点关注针对私人资源的成功活动。当存储库是私有的并且访问来自 OAuth 令牌或个人访问令牌时,有用的事件包括 api.request、git.clone 和 repo.download_zip。

安全团队应在其 GitHub 组织中为普通用户代理制定基线。自定义用户代理对于内部工具可能是合法的,但突然使用抓取样式名称或未知版本的工具应该会触发审查。

  1. 为组织和企业启用 GitHub 审核日志收集。
  2. 为普通用户代理、参与者、令牌类型和源 ASN 建立基线。
  3. 针对私有存储库调查成功的 api.request 事件。
  4. 当访问使用 OAuth 或个人访问令牌时,调查私有存储库的 git.clone 事件。
  5. 查看私有存储库的 repo.download_zip 事件。
  6. 搜索与 repo-dumper、GitHub-Company-Scraper 和 GitHub-Commit-Fetcher 相关的用户代理。
  7. 检查异常活动是否来自新活跃的旧帐户或受损的合法帐户。

审核流可以帮助更快地捕获模式

拥有大量 GitHub 足迹的组织需要的不仅仅是偶尔的手动日志检查。将审核和 Git 事件流式传输到 SIEM 或安全数据平台可以更轻松地检测用户、令牌和存储库之间的协调行为。

GitHub 的审计日志流指导解释了企业所有者如何将审计和 Git 事件数据流式传输到外部系统以进行监控和分析。

这种流式传输有助于识别短暂的突发活动,例如在几分钟内针对一个组织使用受损令牌的数十个合法帐户。

应加强代币控制

受损的代币是从看似无害的公共枚举到私人存储库探测的主要路径。组织应审查个人访问令牌的使用情况并限制哪些令牌可以访问组织资源。

GitHub 个人访问令牌政策允许组织限制、允许或要求批准对组织拥有的资源的令牌访问。

团队还应该尽可能远离长期存在的广泛代币。如果开发人员工作站或秘密存储受到损害,细粒度的令牌、基于应用程序的访问、批准工作流程和定期令牌审查可以减少爆炸半径。

  • 需要批准访问组织资源的细粒度个人访问令牌。
  • 尽可能限制经典个人访问令牌。
  • 查看具有组织存储库访问权限的 OAuth 应用程序。
  • 轮换与可疑审计事件相关的令牌。
  • 使用单点登录实施和强大的多因素身份验证。
  • 删除过时的用户、过时的应用程序和不活动的令牌。

安全团队应首先确定其 GitHub 组织是否发现了列出的用户代理、幽灵帐户名称、可疑的托管提供商或异常的私有存储库访问。

数据狗报告提供了一组有用的用户代理和通用路由的起始集。团队应该根据自己的环境调整这些指标,而不是仅仅依赖于精确的字符串匹配。

建议采取的行动包括:

  1. 在 GitHub 审核日志中搜索已知的可疑用户代理。
  2. 查看私有存储库克隆、API 和 ZIP 下载活动。
  3. 识别使用 OAuth 令牌、经典个人访问令牌和细粒度个人访问令牌发出的请求。
  4. 调查针对一个组织的多个帐户的突发活动。
  5. 检查与幽灵帐户命名模式匹配的演员姓名。
  6. 检查活动是否来自与已知滥用行为相关的托管提供商。
  7. 撤销并轮换与可疑访问相关的任何令牌。
  8. 如果私有路径被访问,则通知受影响的存储库所有者。

公司通常将 GitHub 安全重点放在私有存储库、机密和分支保护上。这些控制仍然很重要,但这次活动表明公共元数据也具有情报价值。

攻击者可以使用公共存储库来识别构建系统、安全工具、包管理器、云提供商、开发人员习惯和维护人员。然后,他们可以使用受损的代币或有针对性的社会工程来获取私人数据。

组织审核日志GitHub 审核日志流式传输应处于该监测策略的中心。 GitHub 的代币政策指导然后可以帮助减少被盗凭据将侦察转变为私人源代码访问的机会。

FAQ

Datadog 在 GitHub 侦察活动中发现了什么?

Datadog 发现了多个重叠的活动,这些活动使用 50 多个休眠 GitHub 帐户、自动 API 抓取工具以及受损的 OAuth 或个人访问令牌来枚举企业 GitHub 组织、存储库和用户。

什么是 GitHub 幽灵帐户?

GitHub 幽灵帐户是多年前创建的帐户,处于休眠状态,后来为协调 API 活动而激活。在这次活动中,许多人在开始跨组织提出请求之前只有两到五岁。

这些活动是否访问了私有 GitHub 存储库?

大多数活动都集中在公共数据侦察上,但 Datadog 记录了一个名为 repo-dumper 的工具成功针对私有存储库路径执行 git.clone 和 api.request 操作的案例。

防御者应该注意哪些 GitHub 用户代理?

防御者应注意用户代理,例如 GitHub-Company-Scraper、GitHub-Scraper-Tool/1.0、GitHubAnalytics/1.5、GitHub-Commit-Fetcher/1.3、GitHub-Commit-Fetcher/1.4、GitHub-Event-Fetcher/2.2 和 repo-dumper。

组织如何保护 GitHub 存储库免受此活动的影响?

组织应启用审核日志收集或流式传输、对正常 API 活动进行基线检查、审查私有存储库克隆和 API 事件、限制个人访问令牌、强制执行 MFA 和 SSO,以及轮换与可疑活动相关的令牌。