在攻防演练中,作为蓝队高级会有溯源反制的需求,在溯源的场景中比较常见的是获取到了红队的某个互联网昵称,以此昵称搜索到了他的Github仓库,在此基础上需要进一步进行溯源
此时就可以通过我下面所演示的三种方法,如果对方安全意识不足,可以通过这些方法基于用户名检索到他的个人邮箱,以此更好地定位红队具体人员
真实溯源环境下三种方法都可以试试,结合检索到的信息进行进一步排查
GraphQL查询
接口使用地址 https://docs.github.com/en/graphql/overview/explorer
使用下面的代码查看仓库节点信息,以下三个参数需要修改:
name
,填入要查询的仓库名owner
,填入要查询的仓库作者qualifiedName
,填入仓库分支名
需要注意:2020年10月1日后,Github将所有新建的仓库的默认分支从master修改为了main
{
repository(name: "sqlmap", owner: "sqlmapproject") {
ref(qualifiedName: "master") {
target {
... on Commit {
id
history(first: 5) {
edges {
node {
author {
name
email
}
}
}
}
}
}
}
}
}
将上面的代码粘贴到左侧输入框,然后点击▶运行。如果仓库作者 git 中配置了自己的邮箱信息,通过这个接口便可以查到
API接口查询
获取目标 Github 用户名,替换下面链接中的<name>
进行查询:
https://api.github.com/users/<name>/events/public
查询后直接搜索@
符号快速定位邮箱地址
这种方法查出来的邮箱不一定是很私密的邮箱,可能是用用户名替代了QQ号或者ID号后展示的邮箱,但也可以作为参考
commits查询
在 Github 打开仓库页面,点击箭头指向的提交数commits
在 Commits 中选择其中一个提交记录,点击右侧哈希值
在跳转的 URL 后面添加.patch
,访问 commits 原始日志记录,如下
https://github.com/xxuser/xxrepo/commit/38205e6c73119cd51fd7aef5561a3fb992ff8c33.patch
在其中有可能获取仓库作者泄露的邮箱地址