GitGot 是一款半自动化、反馈驱动的工具,旨在帮助用户快速搜索 GitHub 上的大量公开数据,寻找敏感密钥。
在搜索会话期间,用户可以向 GitGot 提供关于忽略哪些搜索结果的反馈,GitGot 则会裁剪结果集。用户可以通过文件名、仓库名、用户名或文件内容的模糊匹配来屏蔽文件。
之前会话生成的屏蔽列表可以保存并用于类似查询(例如,example.com 对比 subdomain.example.com 对比 Example Org)。会话也可以随时暂停和恢复。
在此处了解更多关于半自动化人机交互设计的信息:https://bishopfox.com/blog/semi-automated-vs-automated-security-tools。
[1] 安装用于模糊哈希的 ssdeep 依赖。
Ubuntu/Debian(或你发行版中的等效包):
apt-get install python3-dev libfuzzy-dev ssdeep
或者,对于 Mac OSX:
brew install ssdeep
对于 Windows 或没有 ssdeep 包的 *nix 发行版,请参阅 ssdeep 安装说明。
[2] 安装 ssdeep 后,使用 pip 安装 Python 依赖:
pip3 install -r requirements.txt
运行 gitgot-docker.sh 来构建 GitGot 的 Docker 镜像(如果尚不存在)并执行容器化的 GitGot 工具版本。
调用时,gitgot-docker.sh 会在宿主机的当前工作目录中创建并挂载 logs 和 states 目录。如果从 GitGot 项目目录执行 gitgot-docker.sh,它将使用 gitgot.py 或 checks/ 的更改来更新 Docker 容器:
./gitgot-docker.sh -q example.com
(具体 Docker 命令请参阅 gitgot-docker.sh)
GitHub 需要一个令牌用于速率限制。创建一个 无权限/无范围 的 GitHub API 令牌。这等同于公开 GitHub 访问,但它允许使用 GitHub 搜索 API。将此令牌设置在 gitgot.py 顶部,如下所示:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(或者,可以将此令牌设置为 GITHUB_ACCESS_TOKEN 环境变量)
添加令牌后,你就可以开始使用了:
# 未指定时使用默认的正则表达式列表和日志文件位置(/logs/<query>.log)。
# 使用默认 GitHub 搜索行为(即分词)查询字符串 "example.com"。
# 这将找到 com.example(例如 Java)或 example.com(网站)
./gitgot.py -q example.com
# 查询自托管 GitHub 实例
./gitgot.py -q example.com -u https://git.example.com
# 查询精确字符串 "example.com"。更多详情请参见下一节的查询语法。
./gitgot.py -q '"example.com"'
# 查询 GitHub Gist
./gitgot.py --gist -q CompanyName
# 使用 GitHub 高级搜索语法
./gitgot.py -q "org:github cats"
# 自定义正则表达式列表和自定义日志文件位置
./gitgot.py -q example.com -f checks/default.list -o example1.log
# 从现有会话恢复
./gitgot.py -q example.com -r example.com.state
# 使用现有会话(含屏蔽列表)进行新查询
./gitgot.py -q "Example Org" -r example.com.state
GitGot 的查询直接提交给 GitHub 代码搜索 API,因此请查看 GitHub 文档 了解更高级的查询语法。
/(secretToken))。