
Black Hat Europe 2025の「The Forensic Trail On GitHub: サプライチェーン活動の追跡」デモ
このリポジトリには、Black Hat Europe 2025 の The Forensic Trail On GitHub: Hunting For Supply Chain Activity のための3つのデモが含まれています。
potential_attacks_demo: 公開された GH ファイアホースをもとに、攻撃の特定と調査を行うデモを表示する Flask Web アプリケーション。ghdig: GitHub アクティビティを調査するためのコマンドラインツール。gitthrunter: 不審な GitHub アクティビティを特定し、エンリッチし、さらに調査するためにレンダリングするトイツール。potential_attacks_demopotential_attacks_demo ディレクトリに移動します:
cd potential_attacks
pip install -r requirements.txt
flask run
http://127.0.0.1:5000 にアクセスしてデモを確認します。ghdigghdig ディレクトリに移動します:
cd ghdig
pip install -r requirements.txt
ghdig は GitHub API とやり取りするために GitHub Personal Access Token を必要とします。
ghdig ディレクトリ内に .env という名前のファイルを作成します。
以下のように GitHub トークンをファイルに追加します:
GITHUB_TOKEN=your_github_token_here
このツールはプロジェクトのルートから Python モジュールとして実行します。
python -m ghdig <command> [options]
以下が利用可能なコマンドとその使用例です:
gist: GitHub Gist を処理します。
python -m ghdig gist <gist_id_or_url>python -m ghdig gist https://gist.github.com/mmvojwip/e9975a3a16acc492e3e7f677b6276cb2pr: GitHub プルリクエストを処理します。
python -m ghdig pr <repo_url>python -m ghdig pr https://github.com/7finney/ethcodecommit: GitHub コミットを処理します。
python -m ghdig commit <commit_url>python -m ghdig commit https://github.com/mmvojwip/agentkit/commit/023f11f08cc7b82036a78580202143381d703b9auser: GitHub ユーザーを分析します。
gitthruntergitthrunter ディレクトリに移動します:
cd gitthrunter
pip install -r requirements.txt
クエリを実行するには、main.py スクリプトを実行し、queries/ ディレクトリ内の SQL クエリファイルへのパスを指定します。
python main.py potential_attacks.sql --start_date "2025-09-01 00:00:00"
注: クエリサイズを削減するために --start_date が必要な場合があります
次に、アクターデータをエンリッチします:
python main.py potential_attacks.sql --enrich
注: GitHub トークンが設定されていない場合、エンリッチメントはレート制限に問題が発生する可能性があります
最後に、アプリを起動します:
python app.py
python -m ghdig user <username_or_url>python -m ghdig user mmvojwiprender: ユーザー分析の HTML レポートをレンダリングします。
python -m ghdig render <username>python -m ghdig render mmvojwipabsence: ClickHouse クエリから存在しないユーザーとリポジトリをチェックします。
python -m ghdig absence "<query>"python -m ghdig absence "$(< ghdig/tjactions_demo_query.sql)"