
多面的なセキュリティツールで、OSINT、フォレンジック、ペネトレーションテストなどのために公開GitHub REST APIを活用します。
Gitxray(Git X-Ray の略)は、GitHub リポジトリで使用するために設計された多面的なセキュリティツールです。OSINT やフォレンジックを含む多くの目的に使用できます。gitxray は、公開 GitHub REST API を活用して、手動で入手するには非常に時間がかかる情報を収集します。さらに、従来とは異なる場所から情報を探し出します。

Gitxray は、例えば以下のように使用できます。
アーマード PGP 鍵や鍵名などに含まれ、偶然開示されたコントリビューターのプロファイル内の機密情報を発見する。
リポジトリ内の脅威アクターを特定する。共同所有または共有アカウントを発見したり、公開イベントを調査して偽の Stargazer を見つけたりできます。
偽物または感染したリポジトリを特定する。改ざんされたコミット日付や、例えばリリース後に更新されたリリースアセットを検出できます。
フォレンジックのユースケース。例えば、日付で結果をフィルタリングして、インシデント当日に他に何が起こったかを確認するなど。
その他にもたくさんあります!完全な 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 を実行したままにしておける場合は、制限が解除されるのを待つ間、実行が一時停止されるため、その全機能を使用できます。
次のようにして、安全にトークンを読み込むことができます(これにより、トークンが画面に表示されたり、シェル履歴に記録されたりするのを防ぎます)。
read -rs GH_ACCESS_TOKEN
export
Gitxray は、GitHub のコード検索 API で特定されたホストを確認するために、オプションで VirusTotal API を使用できますが、動作には VirusTotal API キーが必要です。VirusTotal API キーを取得する方法の手順は、https://docs.virustotal.com/docs/please-give-me-an-api-key にあります。
残念ながら、個人用 API キーは(現時点では)VirusTotal によって 1 日あたり 500 回のルックアップに制限されています。
API キーを取得したら、次のように環境に安全に読み込むことができます。
read -rs VT_API_KEY
export
gitxray は、requests ライブラリ以外の外部パッケージ依存関係を使用せずに作成されました。
gitxray は PyPI にあり、次のようにインストールおよび更新できます。
pip install gitxray --upgrade
インストール後、次のようにコマンドラインから gitxray を実行するだけです。
gitxray -h
gitxray -o https://github.com/kulkansecurity

gitxray は、GitHub リポジトリをクローンまたはダウンロードして実行することもできます。
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] - リポジトリのリスト(各行に 1 つ)を含むファイルパスを指定します。ファイルは存在している必要があります。例: --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ユーザーは、このツールが適用される法律および規制に準拠して使用されること(リポジトリスキャンの適切な許可の取得や、生成された結果の配布を含む)を保証する単独の責任を負います。許可されていない使用や結果の共有は、現地、国内、または国際法に違反する可能性があります。