
GitHub上のコンテンツを高度にマイニングするためのツール
+---------------------------------------------------+
| DEVELOPERS ASSUME NO LIABILITY AND ARE NOT |
| RESPONSIBLE FOR ANY MISUSE OR DAMAGE CAUSED BY |
| THIS PROGRAM |
+---------------------------------------------------+
GitMiner v3 は、公開 GitHub リポジトリ内の機密情報を発見するために設計されたモジュール式ツールです。高度な dork クエリ、正規表現パターンマッチングを使用し、包括的な脅威インテリジェンスレポートを生成します。
このプロジェクトは、元の Gitminer スクリプトを完全にリファクタリングしたもので、保守性、拡張性、およびプロフェッショナルなソフトウェアアーキテクチャの原則に重点を置いています。
プロジェクトは、関心事を分離し、明確性を向上させるためにモジュール構造に編成されています。
gitminer_v3/
├── config/ # 設定ファイル
│ ├── paths.yaml # ディレクトリ、ファイル、API パス
│ ├── labels.yaml # パラメータ用の正規表現からラベルへのマッピング
│ └── patterns.yaml # シークレット検出用の正規表現パターン
├── data/ # 永続データストレージ
│ └── gitminer_history.sqlite # 履歴用 SQLite データベース
├── gitminer/ # メイン Python パッケージ
│ ├── __init__.py
│ ├── config_manager.py # すべての設定をロードおよび管理
│ ├── github_client.py # すべての GitHub API インタラクションを処理
│ ├── file_manager.py # ファイルのダウンロードとストレージを管理
│ ├── pattern_analyzer.py # シークレットをスキャン
│ ├── database.py # SQLite データベース操作を管理
│ ├── report_generator.py # Markdown レポートを生成
│ └── utils.py # 共有ユーティリティ関数
├── raw/ # GitHub からダウンロードしたファイルを保存
├── reports/ # 生成された脅威インテリジェンスレポートを保存
├── gitminer_v3.py # メイン実行可能スクリプト
├── requirements.txt # Python 依存関係
└── README.md # このファイル
public_repo スコープを持つ GitHub Personal Access Token (PAT)。リポジトリをクローンするか、ソースコードをダウンロードします。
GitHub トークンを設定します: GitMiner は API と対話するために GitHub トークンを必要とします。環境変数として設定する必要があります。
export GITHUB_TOKEN="your_github_personal_access_token_here"
必要な Python パッケージをインストールします:
pip install -r requirements.txt
GitMiner の動作は、config/ ディレクトリ内のファイルによって制御されます。
paths.yamlこのファイルは、すべての重要なパスと API 設定を定義します。
directories: 生ファイル、レポート、データを保存する場所を指定します。files: データベースとデフォルトの CSV 出力の名前を定義します。github: URL、タイムアウト、デフォルトの結果制限など、GitHub API の設定が含まれます。labels.yamlこのファイルは、正規表現パターンを人間が読めるラベルにマッピングします。これは主に、コード内のパラメータ名(例: ftp_user、api_key)を識別するために使用されます。
# 形式: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yamlこのファイルには、キー、トークン、認証情報などの機密値を検出するために使用されるコア正規表現パターンが含まれています。
# 形式: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
メインスクリプト gitminer_v3.py がすべての操作のエントリポイントです。
単一の dork を使用して検索し、レポートを生成:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
複数の dork を含むファイルを使用して検索:
dorks.txt という名前のファイルを作成します:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
次に、コマンドを実行します:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
ダウンロードされたすべてのファイルのリストを CSV にエクスポート:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
分析を実行せずにファイルをダウンロード:
python3 gitminer_v3.py -d dorks.txt --no-analyze
GitMiner は、raw/、reports/、および data/ ディレクトリに保存される、いくつかのタイプの出力を生成します。
GitHub からダウンロードされたすべてのファイルは、dork キーワードとリポジトリ名ごとに整理され、raw/ ディレクトリに保存されます。
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
--report フラグが使用された場合、各 dork に対して詳細な Markdown レポートが生成され、reports/ ディレクトリに保存されます。これらのレポートには以下が含まれます:
data/gitminer_history.sqlite ファイルには、すべての操作の完全な履歴が含まれています。これには以下が含まれます:
search_history: 実行されたすべての dork 検索の記録。downloaded_files: ダウンロードされたすべてのファイルのメタデータ。findings: 見つかったすべてのシークレットの詳細な記録。このデータベースは、長期的な追跡と高度な分析に使用できます。
GitMiner v3 は簡単に拡張できるように設計されています。
config/patterns.yaml に新しいエントリを追加するだけです。config/labels.yaml に新しい正規表現とラベルのペアを追加します。gitminer/ パッケージ内のモジュール式のオブジェクト指向コードは十分に文書化されており、簡単に変更または拡張できます。このプロジェクトはオープンソースであり、個人使用および教育目的で利用できます。責任を持って倫理的に使用してください。作者はこのツールの誤用について責任を負いません。
| 引数 | 短縮形 | 説明 | 必須 |
|---|
--dorks | -d | dork を含むファイル(1 行に 1 つ)または単一の dork 文字列。 | はい |
--token | -t | GitHub トークン(GITHUB_TOKEN 環境変数を上書きします)。 | いいえ |
--max-results | -m | dork ごとに取得する最大結果数。(デフォルト: 200) | いいえ |
--per-page | -p | API のページあたりの結果数。(デフォルト: 30、最大: 100) | いいえ |
--output-csv | -o | ダウンロードされたファイルのサマリーを CSV ファイルにエクスポート。 | いいえ |
--report | 詳細な Markdown 脅威インテリジェンスレポートを生成。 | いいえ | |
--no-analyze | ローカルファイル分析ステップをスキップ(ファイルのみダウンロード)。 | いいえ |