
gitGraber: GitHubを監視して、さまざまなオンラインサービス(Google、Amazon、Paypal、Github、Mailgun、Facebook、Twitter、Heroku、Stripeなど)の機密データをリアルタイムで検索・発見します。

gitGraberはPython3で開発されたツールで、GitHubを監視して、Google、Amazon(AWS)、Paypal、Github、Mailgun、Facebook、Twitter、Heroku、Stripe、Twilioなどのさまざまなオンラインサービスに関連する機密データをリアルタイムで検索・発見します。

gitGraberはリポジトリの履歴をチェックするために設計されたものではないことを理解することが重要です。そのような機能を持つツールはすでに多数存在します。gitGraberはもともと、GitHubで最後にインデックスされたファイルを監視・解析するために開発されました。gitGraberが何か興味深いものを発見すると、Slackチャンネルに通知が届きます。コマンドラインで直接結果を表示することも可能です。
私たちの経験上、情報漏洩は組織自体からだけでなく、サービスプロバイダや従業員からも発生することが多く、彼らは必ずしも特定の組織に所属していることを示す「プロフィール」を持っているわけではありません。
正規表現は可能な限り正確であることを前提としています。時には誤検出が発生するかもしれません。検出パターンの改善や新しい正規表現の追加に貢献したい方は、ぜひご協力ください。
すべての「標準的な」APIキーに対して通知を送るのではなく、誤検出を減らすことを優先しています。
gitGraberはCLIに直接いくつかの情報を表示します。GitHubリクエスト、ステータスコードによる不正検出(200または403)などです。「 [+] POSSIBLE FOO TOKEN FOUND」のような表示が見当たらないのは、単にgitGraberが定義されたキーワードに対してシークレットトークンを発見しなかったということです。
このメッセージは、GitHubが自身のGitHubトークンからの大量のリクエストを検出した場合に表示されます。心配はいりません。gitGraberはこれを処理でき、config.pyファイルで定義された別のトークンを使用しようとします。これは一時的な制限であり、新しいトークンを作成する必要はありません。
いいえ。これを避けるために、gitGraberはすべてのリポジトリURLをrawGitUrls.txtというファイルに保存します。すでにgitGraberによってスキャンされ、APIキーが発見されたリポジトリについては、通知は送信されません。
tokens.pyファイルを編集し、トークンを初期化する際にパターンをリスト引数として追加します。たとえば、MAILCHIMPトークンにXXXXパターンを追加するには、行tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W'))をtokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W', ['XXXX']))に変更します。
usage: gitGraber.py [-h] [-k KEYWORDSFILE] [-q QUERY] [-s] [-w WORDLIST]
optional arguments:
-h, --help このヘルプメッセージを表示して終了
-k KEYWORDSFILE, --keyword KEYWORDSFILE キーワードファイルを指定 (-k keywordsfile.txt)
-q QUERY, --query QUERY GitHubクエリを指定 (-q "apikey")
-m, --monitor 検索クエリの監視を有効化(cronジョブを作成、30分ごと)
-d, --discord Discord通知を有効化
-s, --slack Slack通知を有効化
-tg, --telegram Telegram通知を有効化
-w WORDLIST, --wordlist WORDLIST 発見したファイル名から動的にワードリストを作成
-l LIMIT_DAYS, --limit LIMIT_DAYS 結果をN日前より新しいコミットに制限
たとえば、特定の単語をキーワードファイルの各単語と組み合わせてGitHubで検索し、結果をSlackに出力するには:
python3 gitGraber.py -k keywordsfile.txt -q YOURWORD -s
特定のドメイン名を検索することも可能です。その場合は二重引用符で囲んでください:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s
GitHubで見つかったファイルに基づいてカスタムワードリストを作成し、お気に入りのファジングツールで使用したい場合は、-w引数を追加します:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -w mysuperwordlist.txt
30分ごとに検索クエリを監視したい場合は、-mフラグを使用します。これにより、gitGraberがクエリに基づいてcronジョブを作成します:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -m
上記のコマンドは、30分ごとに検索クエリでシークレットを探し、ヒットがあればSlackに通知を送信します。
gitGraberにはいくつかの依存関係があります。環境にインストールするには:
pip3 install -r requirements.txt
gitGraberを開始する前に、設定ファイルconfig.pyを編集する必要があります:
GITHUB_TOKENS = ['yourToken1Here','yourToken2Here']DISCORD_WEBHOOKURL = 'https://discordapp.com/api/webhooks/7XXXX/XXXXXX'SLACK_WEBHOOKURL = 'https://hooks.slack.com/services/TXXXX/BXXXX/XXXXXXX'TELEGRAM_CONFIG = { "token": "XXXXX:xXXXXXXXXXXXXX", "chat_id": -99999999 }gitGraberを起動するには:python3 gitGraber.py -k wordlists/keywords.txt -q "uber" -s
現在、gitGraberは31種類の異なるトークンをサポートしています。これらの検出モデル(正規表現)はすべてtokens.pyファイルに格納されています。
一部のワードリストと正規表現は私たちが作成したもので、その他は他のリポジトリや研究者からインスピレーションを得たものです:
gitGraberの改善にご協力いただきありがとうございます:
このプロジェクトは教育および倫理的なテスト目的のみで作成されました。事前の相互同意なしに対象を攻撃するためにこのツールを使用することは違法です。開発者は一切の責任を負わず、このツールの誤用や損害について責任を負いません。
| サービス | リンク |
|---|
| GitHub | GitHub APIトークンの作成方法 |
| Discord | Discord Webhook URLの作成方法 |
| Slack | Slack Webhook URLの作成方法 |
| Telegram | Telegramボットの作成方法 |