
半自動化された、フィードバック駆動型のツールで、GitHub上の公開データの山を迅速に検索して機密シークレットを見つけ出します。
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 イメージをビルドし(存在しない場合)、Docker 化されたバージョンの GitGot ツールを実行します。
呼び出されると、gitgot-docker.sh はホストのカレントワーキングディレクトリから logs と states ディレクトリを作成してマウントします。この gitgot-docker.sh を GitGot プロジェクトディレクトリから実行すると、gitgot.py または checks/ への変更が Docker コンテナに反映されます:
./gitgot-docker.sh -q example.com
(具体的な Docker コマンドについては gitgot-docker.sh を参照してください)
GitHub ではレート制限のためにトークンが必要です。権限なし/スコープなしで GitHub API トークン を作成します。これはパブリック GitHub アクセスと同等ですが、GitHub Search API へのアクセスが許可されます。このトークンを gitgot.py の先頭に以下のように設定します:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(または、このトークンを GITHUB_ACCESS_TOKEN 環境変数として設定することもできます)
トークンを追加したら、準備完了です:
# Default RegEx list and logfile location (/logs/<query>.log) are used when no others are specified.
# Query for the string "example.com" using default GitHub search behavior (i.e., tokenization).
# This will find com.example (e.g., Java) or example.com (Website)
./gitgot.py -q example.com
# Query self-hosted GitHub instance
./gitgot.py -q example.com -u https://git.example.com
# Query for the exact string "example.com". See Query Syntax in the next section for more details.
./gitgot.py -q '"example.com"'
# Query through GitHub gists
./gitgot.py --gist -q CompanyName
# Using GitHub advanced search syntax
./gitgot.py -q "org:github cats"
# Custom RegEx List and custom log files location
./gitgot.py -q example.com -f checks/default.list -o example1.log
# Recovery from existing session
./gitgot.py -q example.com -r example.com.state
# Using an existing session (w/blacklists) for a new query
./gitgot.py -q "Example Org" -r example.com.state
GitGot のクエリは GitHub のコード検索 API に直接送信されるため、より高度なクエリ構文については GitHub のドキュメント を参照してください。
/(secretToken))