Gitxray(Git X-Ray的简称)是一款多功能的GitHub仓库安全工具。它可用于多种用途,包括开源情报(OSINT)和取证分析。gitxray利用公开的GitHub REST API收集原本需要大量手动获取的信息。此外,它还能从非常规位置挖掘信息。

Gitxray可用于例如:
在贡献者个人资料中查找意外泄露的敏感信息,例如Armored PGP密钥或密钥名称。
识别仓库中的威胁行为者。可以发现共同拥有或共享的账户,并检查公开事件以发现虚假的标星者。
识别虚假或受感染的仓库。它可以检测被篡改的提交日期,例如发布后更新的发布资产。
取证用例,例如按日期过滤结果以检查事件当天还发生了什么。
还有更多!运行完整的X-Ray以收集大量数据。
gitxray -r https://github.com/some-org/some-repository
gitxray -r https://github.com/some-org/some-repository -f user_input -outformat text
gitxray -r https://github.com/some-org/some-repository -f keys,association,starred -outformat text
gitxray -r https://github.com/some-org/some-repository -f warning -outformat text
gitxray -r https://github.com/some-org/some-repository -f 2024-09-01 -outformat text
请参阅文档以获取更多用例和介绍信息。
Gitxray优雅地处理速率限制,无需GitHub API令牌即可开箱即用,但您可能会很快遇到速率限制(一个小到中型的有10+贡献者的仓库可能需要数小时才能完成,因为它需要等待速率限制重置)。GitHub在其文档中对此有详细说明。
创建仅限于公共仓库的简单只读令牌将大大帮助您提高这些限制。如果您不赶时间,或者可以让gitxray持续运行,您将能够使用其全部容量,因为它会在等待限制解除时暂停执行。
然后,您可以使用以下方式安全地加载令牌(防止令牌显示在屏幕上或记录在shell历史中):
read -rs GH_ACCESS_TOKEN
export
Gitxray可以选择使用VirusTotal API检查通过GitHub代码搜索API发现的任何主机,但这需要一个VirusTotal API密钥才能工作。有关如何获取VirusTotal API密钥的说明,请访问:https://docs.virustotal.com/docs/please-give-me-an-api-key
不幸的是,个人API密钥目前每天被VirusTotal限制为500次查询。
获得API密钥后,您可以安全地将其加载到环境中:
read -rs VT_API_KEY
export
gitxray编写时除了requests库外没有使用外部包依赖。
gitxray位于PyPI上,可以通过以下命令安装和更新:
pip install gitxray --upgrade
安装后,只需在命令行中输入以下命令即可运行:
gitxray -h
gitxray -o https://github.com/kulkansecurity

您也可以通过克隆或下载其GitHub仓库并运行来直接启动gitxray。
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
必须指定以下之一:
-r, --repository [URL] - 指定单个要检查的仓库。URL可以选择以https://github.com/开头。示例: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - 提供包含仓库列表的文件路径,每个仓库占一行。文件必须存在。示例: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - 指定组织,检查该组织下的所有仓库。URL可以选择以https://github.com/开头。示例: --organization https://github.com/exampleOrg
您会发现这些参数在常见的gitxray使用中是可选的但非常有用。
-l, --list - 如果指定了仓库,则列出贡献者;如果指定了组织,则列出仓库。有助于进一步聚焦特定实体。示例: --list
-c, --contributor [USERNAMES] - 逗号分隔的GitHub用户名列表,用于聚焦指定的仓库或组织内的用户。示例: --contributor user1,user2
-f, --filters [KEYWORDS] - 逗号分隔的关键词,用于过滤结果,例如'user_input', 'association'或'mac'。示例: --filters user_input,association,mac
-out, --outfile [FILEPATH] - 指定输出日志的文件路径。不能是目录。示例: --outfile ./output.log
-outformat, --output-format [FORMAT] - 设置日志文件格式。支持的格式有html、text和json。默认为html。示例: --output-format json
--shush - 使Gitxray更安静,不显示进度相关输出。示例: --shush--debug - 启用调试模式以获取详细且广泛的输出。示例: --debug用户全权负责确保此工具的使用符合适用的法律法规,包括获得适当的授权以进行仓库扫描以及分发任何生成的结果。未经授权的使用或共享结果可能违反当地、国家或国际法律。