在许多安全调查与溯源场景中,GitHub都是一个极其重要且稳定的信息来源。无论是进行APT攻击分析、数据泄露事件溯源,还是执行企业外部攻击面排查,GitHub经常出现在调查链路的关键环节。这主要源于代码提交是一个长期且持续的行为,形成了清晰的时间线,并且很难在不影响仓库正常功能的前提下完全抹除所有历史提交记录。同时,GitHub提供了便捷的公开信息查询机制。本文将详细介绍两种实用的溯源方向:正向溯源(已知邮箱找账号)与反向溯源(已知账号找邮箱),其本质都是对公开历史提交记录的查询与关联分析。
一、通过 GitHub 账号反向查找关联邮箱
核心原理是利用已知的GitHub用户名,查找其可能用于注册或提交代码的邮箱地址。即使用户在其个人资料(Profile)页面选择了隐藏邮箱,只要其曾向任何公开仓库提交过代码,那么提交记录中的commit.author.email字段就会被永久保存。只要该用户并非始终使用GitHub提供的noreply.github.com匿名邮箱,那么其真实的邮箱地址就可以从历史提交中被稳定提取。
具体有以下两种获取方式:
-
直接查看提交补丁(Patch)
在目标开发者参与的公开项目中,随意打开一次其代码提交(Commit)记录,然后在浏览器地址栏该提交的URL末尾手动添加.patch后缀。页面将显示该次提交的文本格式详情,提交者的邮箱通常位于文本开头部分,如下图所示:

-
使用GitHub API批量获取
通过调用GitHub官方的REST API,可以更高效地完成此任务。首先获取目标用户的所有公开仓库列表(api.github.com/users/{username}/repos),然后遍历每个仓库的提交历史,提取author字段中的邮箱信息。使用Python脚本进行自动化处理时,可以方便地过滤掉所有noreply.github.com地址,从而聚焦于有价值的个人或企业邮箱。
二、通过邮箱地址正向查找 GitHub 账号
此场景是已知一个邮箱地址,需要确认其是否关联了真实的GitHub技术账号。GitHub的提交搜索接口(Search commits)支持按照author-email参数进行精确查询。只要该邮箱地址曾被用于任何公开仓库的代码提交,接口就会返回对应的提交记录以及关联的作者(Author)信息。关键在于,返回结果中的GitHub用户并非简单的模糊匹配,而是GitHub系统内部已经建立并确认的关联关系。
使用方法同样是通过API:访问 https://api.github.com/search/commits?q=author-email:{email},将{email}替换为目标邮箱。分析返回的JSON数据,即可定位到对应的GitHub账号。此后,安全研究人员便可围绕该账号展开深入分析,例如其关注的技术方向、参与的开源项目、所属的组织以及活跃时间线等。GitHub API返回的数据结构稳定、字段清晰,非常适合于编写脚本进行循环查询与结果的结构化存储,是实现批量邮箱关联查询或自动化开源情报(OSINT)工具的理想数据源。
|