GitHound 通过将 GitHub 搜索技巧(dorks)与模式匹配、上下文检测和提交历史分析相结合,在 GitHub 上搜索暴露的 API 密钥、秘密和凭据。输入一个 GitHub dork 到 GitHound,它就会扫描匹配你查询的文件和仓库中的秘密。与典型的扫描器不同,GitHound 利用 GitHub 的代码搜索 API,让你能够完全查看 所有 公开仓库,而不仅仅是少数目标。更多信息请参阅随附博客文章。
通过全新的 GitHound Explore 仪表盘,实时可视化和管理你的搜索结果。立即在 https://githoundexplore.com 免费开始,或使用 --dashboard 标志。了解如何将它与本地安装的 GitHound 或 TruffleHog 一起使用,请查看 Wiki 页面。请注意,你仍然可以在没有仪表盘的情况下使用 GitHound。
我们还启动了一个 GitHub Dorks 数据库,你可以在其中浏览和搜索各种 API 关键词的 dorks,并获得新 dorks 的灵感!请访问 https://githoundexplore.com/github-dorks 查看。
🔍 全局 GitHub 搜索 – 在整个 GitHub(包括 Gist)中查找秘密
🔑 智能 API 密钥检测 – 正则表达式 + 熵 + 上下文匹配
🕵️ 提交历史挖掘 – 发现已删除或已还原的凭据
🧮 自适应评分 – 过滤误报
🧰 Base64 解码和编码秘密提取
💻 JSON 输出和自定义正则规则,适用于自动化流水线
echo "AKIA" | git-hound 或 git-hound --query "AKIA"
config.yml 中设置了 API 密钥。./git-hound 进行测试(确保你位于正确的目录中!)配置:
GitHound 主要使用 config.yml(位于当前目录或 $HOME/.githound/)进行配置。参见 config.example.yml 示例。
或者,你可以使用环境变量,这些变量将覆盖 config.yml 中的值:
GITHOUND_GITHUB_TOKEN:设置 GitHub API 访问令牌。GITHOUND_INSERT_KEY:为 --dashboard 功能设置 GitHoundExplore Insert Key。GitHound 使用由 Gitleaks 作者维护的 API 密钥正则表达式数据库。
了解特定服务 API 密钥的模式后,你可以在 GitHub 上搜索这些密钥。然后,你可以将匹配自定义密钥正则表达式的结果通过管道传递给自己的脚本,以测试该 API 密钥是否适用于该服务,并识别有风险的账户。
echo "api.halcorp.biz" | githound --dig-files --dig-commits --many-results --rules halcorp-api-regexes.txt --results-only | python halapitester.py
为了检测未来的 API 密钥泄漏,GitHub 提供了推送令牌扫描,可以在发布 API 密钥时立即检测到它们。
我使用 GitHound 的主要目的是为漏洞赏金计划查找敏感信息。对于高知名度目标,--many-results 技巧和 --languages 标志对于抓取超过 100 页的结果非常有用。
echo "\"uberinternal.com\"" | githound --dig-files --dig-commits --many-results --languages common-languages.txt --threads 100
https://github.com/tillson/git-hound/blob/master/internal/app/keyword_scan.go GitHound 通过结合常见服务(如 Slack 和 AWS)的精确正则表达式和上下文相关的通用 API 正则表达式来查找 API 密钥。这会找到看起来像 API 密钥的长字符串,这些字符串周围有诸如 "Authorization" 和 "API-Token" 之类的关键词。GitHound 假设这些是误报,然后通过香农熵、字典单词检查、唯一性计算和编码检测来证明它们的合法性。然后,GitHound 输出高确定性的正样本。 对于包含秘密的文件,会解码 base64 字符串,并在解码后的字符串中搜索 API 密钥。
请查看这篇博客文章,了解更多关于使用场景和方法论的细节。
GitHound 使得通过模式匹配、针对性查询和稳健评分系统在 GitHub 上查找暴露的 API 密钥变得容易。
用法:
-h, --help 帮助信息
--dashboard 将结果流式传输到 Web 仪表盘(参见 https://githoundexplore.com)
--all-results 打印所有结果,即使它们不包含秘密
--api-debug 打印关于 GitHub API 请求的详细信息并计数。
--config-file string 提供配置文件的路径。
--debug 启用详细调试日志。
--dig-commits 深入提交历史以查找更多秘密(CPU 密集型)。
--dig-files 深入仓库文件以查找更多秘密(CPU 密集型)。
--fast 跳过文件 grep,仅返回搜索预览
--json 以 JSON 格式打印结果
--many-results 使用过滤技巧搜索超过 100 页
--no-api-keys 不搜索通用 API 密钥。
--no-files 不搜索有趣的文件。
--no-gists 不搜索 Gist
--no-keywords 不搜索内置关键词
--no-repos 不搜索仓库
--no-scoring 不使用评分来过滤误报。
--otp-code string GitHub 账户 2FA 令牌,用于登录。(仅在你通过验证器应用启用了账户的 2FA 时使用)
--pages int 每个查询的最大搜索页数(默认 100)
--profile 在 localhost:6060 上启用 pprof 性能分析
--profile-addr string 提供 pprof 性能分析的地址(默认 "localhost:6060")
--query string 查询字符串(默认:标准输入)
--query-file string 包含子域名(或其他查询)列表的文件。
--results-only 仅打印匹配的字符串。
--rules string 正则表达式列表或 GitLeaks 规则文件夹的路径。(默认 "rules/")
--search-type api 搜索接口(api 或 `ui`)。
--threads int 用于挖掘的线程数(默认 20)
在 launch.json 中,将所需的标志作为 args 传递: "args": [ "searchKeyword", "tillsongalloway.com", "--regex-file", "regexes.txt" ]
在主文件夹中:go build .
要构建 Git-Hound 的 Docker 镜像,请使用以下命令:
docker build -t my-githound-container .
此命令使用标签 my-githound-container 构建 Docker 镜像。你可以根据自己的喜好更改标签名称。
要运行 Git-Hound Docker 容器,你需要通过 Docker 卷提供 config.yaml 文件和任何输入文件(如 subdomains.txt)。
config.yaml将你的 config.yaml 文件放在主机上的已知位置。此文件应包含你的 Git-Hound 配置,包括 GitHub 凭据。
config.yaml 示例:
# config.yaml
github_username: "your_username"
github_password: "your_password"
# 可选:GitHub TOTP 种子
# github_totp_seed: "ABCDEF1234567890"
如果你有像 subdomains.txt 这样的文件,请将其放在主机上的一个目录中。
使用以下命令运行容器,并提供配置和输入文件:
docker run -v /path/to/config.yaml:/root/.githound/config.yaml -v $(pwd)/data:/data my-githound-container --subdomain-file /data/subdomains.txt
将 /path/to/config.yaml 替换为你的 config.yaml 文件的实际路径。-v $(pwd)/data:/data 部分挂载一个包含输入文件(subdomains.txt)的目录到容器中。