ビルドパイプラインのセキュリティリスクを実証するためのCI/CDレッドチームフレームワーク
CI/CD レッドチームフレームワーク
Metasploit のようなものだが、CI/CD パイプライン向け。
BoostSecurity Labs の poutine Build Pipeline SAST スキャナーの開発者による。

警告: このツールは許可されたセキュリティテストのみに使用してください。
SmokedMeat は、CI/CD パイプラインの脅威が深刻に過小評価されているために存在します。従来のセキュリティトレーニングではサプライチェーン攻撃をほとんどカバーしておらず、攻撃者が実際に悪用する手法に対する防御側の準備が不十分です。
私たちは、セキュリティチームが現実的なレッドチーム演習を通じて、高度な CI/CD 攻撃手法に対する防御を学び、実践し、検証できるようにするためにこれを構築しました。
所有しているシステム、または明示的な書面による許可を得たシステムに対してのみ使用してください。
SmokedMeat は CI/CD パイプライン向けのポストエクスプロイテーションフレームワークです。GitHub 組織を指定し、脆弱なワークフローを見つけ、侵害されたランナーにインプラントを展開し、クラウドプロバイダーを介してピボットし、シークレットを抽出し、ブラスト半径をマッピングします – すべてターミナル UI から。
機能:
哲学: 大胆で騒がしい。これは EDR 回避ツールではありません。CI/CD 侵害がアラートをトリガーする前にどこまで深く進むかを示すデモンストレーションフレームワークです。
対象者:
SmokedMeat を初めて試すには、Docker と make をインストールしてください。Go は不要です。
git clone https://github.com/boostsecurityio/smokedmeat.git
cd smokedmeat
make quickstart
make quickstart が推奨される初回実行です。安定版リリースのクイックスタートスタックをローカルで起動し、オペレーター TUI (Counter) をローカルの C2 チームサーバー (Kitchen) に対して起動します。
推奨される初回実行:
whoolipublic_repo スコープのクラシック PAT⚠ クラシック PAT を推奨します。細粒度 PAT は制限が強すぎる場合があり、whooli を含む他の組織の公開ターゲットのテストをブロックする可能性があります。
whooli は SmokedMeat の意図的に脆弱な CI/CD 攻撃プレイグラウンドです。公開パスでの初回ターゲットとして推奨されます。
セットアップウィザードでは以下の手順を実行します:
repo スコープが必要です。whooli または独自の組織/リポジトリを入力完全なチャレンジフローについては、whooli ガイド を参照するか、whooli GitHub 組織 に直接アクセスしてください。
終了したら:
make quickstart-down # コンテナを停止
make quickstart-purge # 停止して全データを削除
代わりにソースから作業する場合は、開発 を参照してください。
ソースツリーに貢献またはローカルで反復する場合は、Go 1.26+ をインストールし、開発用クイックスタートを使用してください:
make dev-quickstart
make dev-quickstart はローカルの smokedmeat-cloud-shell イメージをビルドし、cloudflared、nats、C2 チームサーバー (Kitchen) を起動し、ソースからオペレーター TUI を起動します。
インフラを先に起動し、オペレーター TUI は後で起動したい場合:
make dev-quickstart-up
make dev-quickstart-counter
終了したら:
make dev-quickstart-down # コンテナを停止
make dev-quickstart-purge # 停止して全データを削除
その他のデプロイモードとローカル開発の詳細については、docs/deployment.md を参照してください。
Counter は起動時に新しい SmokedMeat リリースをチェックします。SMOKEDMEAT_DISABLE_VERSION_CHECK 環境変数を設定することで無効にできます。
| 標準用語 | SmokedMeat 名 | 説明 |
|---|---|---|
| オペレーター TUI | Counter | 分析、ペイロード配信、ポストエクスプロイトワークフローのためのターミナルインターフェース。 |
| C2 チームサーバー | Kitchen | オペレーターセッション、ステージャー、コールバック、グラフ状態のための API および WebSocket サーバー。 |
| インプラント | Brisket | 侵害された CI ランナーに配信されるエージェント。ビーコン、コマンド実行、ピボットに使用。 |
| ブラウザグラフビュー | Browser View | C2 チームサーバーが /graph で提供するライブアタックグラフ。 |
| モード | 使用タイミング | エントリポイント |
|---|---|---|
| クイックスタート | 固定リリースでの最速の初回実行 | make quickstart |
| 開発クイックスタート | ローカルでソースツリーを操作 | make dev-quickstart |
| ホステッドチームサーバー | 安定したドメインでの実際のエンゲージメント実行 | docs/deployment.md |
ホステッドチームサーバーは、C2 チームサーバーを専用ホストで実行し、オペレーター TUI を各オペレーターワークステーションでネイティブに実行します。
高レベルでは、オペレーター TUI (Counter) が C2 チームサーバー (Kitchen) と通信し、Kitchen が侵害された CI ランナー上で動作するインプラント (Brisket) を管理し、ライブアタックグラフを提供します。
┌──────────────┐
│ SSH AGENT │
│ (Auth) │
└──────┬───────┘
│
▼
┌──────────────┐ ┌──────────────┐
│ THE COUNTER │ ───────────────▶│ THE KITCHEN │
│ (Operator) │ WebSocket │ (Teamserver) │
│ Bubbletea │◀─────────────── │ │
│ TUI │ Events/Graph │ ┌──────────┐ │
└──────────────┘ │ │ Database │ │
│ └──────────┘ │
┌──────────────┐ │ │
│ BROWSER │ ───────────────▶│ │
│ Graph View │ WebSocket │ │
│ Visualizer │◀─────────────── │ │
└──────────────┘ Live Updates └──────────────┘
│ ▲
│ │
Creates PR │ │ Stager fetches implant binary
│ │ Implant HTTP Beacon/Commands
▼ │
┌────────────────────────────────────────────┴──────────────────────────────────┐
│ GITHUB.COM │
│ │
│ ┌─────────────────────┐ ┌─────────────────────────────────────────┐ │
│ │ Malicious PR │ triggers │ GitHub Actions Runner │ │
│ │ (Vulnerable │─────────▶│ │ │
│ │ Workflow) │ │ ┌────────────┐ ┌────────────────┐ │ │
│ └─────────────────────┘ │ │ Stager │─────▶│ THE BRISKET │ │ │
│ │ │ │ │ (Implant) │ │ │
│ │ └────────────┘ └────────────────┘ │ │
│ └─────────────────────────────────────────┘ │
└───────────────────────────────────────────────────────────────────────────────┘
詳細は docs/FEATURES.md を参照してください。