shannon について
shannonは、WebアプリやAPIの侵入テストでShannonを操作するスキルです。ソースコードを手掛かりに脆弱性を分析し、実際の攻撃で検証して再現可能なPoC付きレポートを作成します。明示的な許可が必要で、本番環境は対象にできません。
主な機能
- 01アプリのソースコード分析
- 02OWASPの脆弱性カテゴリをテスト
- 03実際の攻撃による検証
- 04認証付きテストフローの設定
- 05実行状況の確認とレポート閲覧
活用シーン
- 01許可されたステージング環境のテスト
- 02XSSやインジェクションに絞ったテスト
- 03指定ワークスペースの再開や監視
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ unicodeveloper/ shannon --skill shannonインストール後、Claude Code で/shannonを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdCLAUDE.mdscripts/setup-shannon.shsync.sh詳細
Shannon:Web アプリと API 向けの自律型 AI ペンテスター
権限の概要: このスキルは、対象アプリケーションに対して実際に攻撃を実行する、Docker ベースのペネトレーションテストツールである Shannon を操作します。Shannon のリポジトリをローカルにクローン/更新し、Docker コンテナを実行して、ペネトレーションテストのレポートを読み取ります。Shannon は実際のエクスプロイトを実行します。テスト対象のアプリを所有しているか、テストする明示的な書面による許可を得ている場合にのみ実行してください。 本番システムに対して実行しないでください。
Shannon はソースコードを分析し、攻撃経路を特定して、脆弱性が本番環境に到達する前に実際のエクスプロイトを実行して実証します。XBOW セキュリティベンチマークでのエクスプロイト成功率は 96.15% です。OWASP Top 10 のインジェクション、XSS、SSRF、認証の不備、認可の不備などに対応しています。
重要:安全性の確認(必ず最初に実行)
何かを行う前に、必ず以下を確認してください。
- 許可: ユーザーに「この対象のペネトレーションテストを実施する明示的な許可を得ていますか?」と尋ねます。「いいえ」と回答した場合、または不確かな場合は、作業を中止し、システム所有者から書面による許可を得る必要があることを説明してください。
- 環境: 対象がローカル環境、ステージング環境、またはサンドボックス環境であり、本番環境ではないことを確認します。
- 範囲: テストする内容(ペネトレーションテスト全体か、特定のカテゴリか)を明確にします。
⚠️ Shannon executes REAL ATTACKS with mutative effects.
├─ Only run on systems you OWN or have WRITTEN AUTHORIZATION to test
├─ Never target production environments
├─ Results require human review — LLM output may contain hallucinations
└─ You are responsible for complying with all applicable laws
ペネトレーションテストを実行する前に、毎回この警告を表示してください。このセッションですでにユーザーが許可を確認している場合は、簡単な注意喚起で十分です。
ユーザーの意図を解析する
ユーザーの入力から、以下を抽出します。
- TARGET_URL:ペネトレーションテストの対象 URL(例:
http://localhost:3000、http://staging.example.com) - REPO_NAME:ソースコードフォルダー名(Shannon 内の
./repos/に配置します) - SCOPE:ペネトレーションテスト全体(既定)または特定のカテゴリ(injection、xss、ssrf、auth、authz)
- WORKSPACE:再開に使用する名前付きワークスペース(任意)
- CONFIG:カスタム YAML 設定ファイルのパス(任意。認証フロー、対象/除外ルール用)
一般的な呼び出しパターン:
/shannon http://localhost:3000 myapp→ ローカルアプリのペネトレーションテスト全体/shannon --workspace=audit1 http://staging.example.com backend-api→ 再開に使用する名前付きワークスペース/shannon --scope=xss,injection http://localhost:8080 frontend→ 対象カテゴリを指定/shannon status→ 実行中のペネトレーションテストを確認/shannon results→ 最新のレポートを表示/shannon stop→ 実行中のペネトレーションテストを停止
解析した意図を表示します。
🔐 Shannon Pentest
├─ Target: {TARGET_URL}
├─ Source: repos/{REPO_NAME}
├─ Scope: {SCOPE or "Full (all 5 OWASP categories)"}
├─ Workspace: {WORKSPACE or "auto-generated"}
└─ Config: {CONFIG or "default"}
Estimated runtime: 1–1.5 hours │ Estimated cost: ~$50 (Claude Sonnet)
ステップ 0:Shannon がインストールされていることを確認する
Shannon がローカルにクローンされているか確認します。
SHANNON_HOME="${SHANNON_HOME:-$HOME/shannon}"
if [ -d "$SHANNON_HOME" ] && [ -f "$SHANNON_HOME/shannon" ]; then
echo "Shannon found at $SHANNON_HOME"
cd "$SHANNON_HOME" && git pull --ff-only 2>/dev/null || true
else
echo "Shannon not found. Cloning..."
git clone https://github.com/KeygraphHQ/shannon.git "$SHANNON_HOME"
fi
# Verify Docker is available
if command -v docker &>/dev/null; then
echo "Docker: $(docker --version)"
else
echo "ERROR: Docker is required. Install Docker Desktop: https://docker.com/products/docker-desktop"
exit 1
fi
Shannon がインストールされていない場合は、クローンしてユーザーに知らせます。Docker が見つからない場合は、作業を中止してインストールするよう伝えてください。
SHANNON_HOME の既定値は ~/shannon です。ユーザーは SHANNON_HOME 環境変数で変更できます。
ステップ 1:ソースコードを準備する
Shannon は、対象のソースコードを $SHANNON_HOME/repos/{REPO_NAME}/ に必要とします。
ソースコードの場所をユーザーに尋ねます。
# If user provides a local path
REPO_PATH="/path/to/their/source"
REPO_NAME="myapp"
# Create symlink or copy into Shannon's repos directory
mkdir -p "$SHANNON_HOME/repos"
if [ ! -d "$SHANNON_HOME/repos/$REPO_NAME" ]; then
ln -s "$(realpath "$REPO_PATH")" "$SHANNON_HOME/repos/$REPO_NAME"
echo "Linked $REPO_PATH → repos/$REPO_NAME"
fi
ユーザーが代わりに GitHub URL を指定した場合:
cd "$SHANNON_HOME/repos"
git clone "$GITHUB_URL" "$REPO_NAME"
ステップ 2:認証を設定する(必要な場合)
対象へのログインが必要な場合は、YAML 設定ファイルの作成を支援します。
# $SHANNON_HOME/configs/target-config.yaml
authentication:
type: form # "form" or "sso"
login_url: "http://localhost:3000/login"
credentials:
username: "admin"
password: "password123"
flow: "Navigate to login page, enter username and password, click Sign In"
success_condition:
url_contains: "/dashboard"
rules:
avoid:
- "/logout"
- "/admin/delete"
focus:
- "/api/"
- "/auth/"
pipeline:
max_concurrent_pipelines: 5 # 1-5, default 5
対象に認証が必要な場合、または特定の範囲ルールがある場合にのみ、設定ファイルを作成してください。 公開されている対象や認証不要の対象には、設定ファイルは不要です。
ステップ 3:API 認証情報を確認する
AI プロバイダーの認証情報が利用可能か確認します。
cd "$SHANNON_HOME"
# Check for Anthropic API key (primary)
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
echo "✅ ANTHROPIC_API_KEY is set"
elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then
echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set"
elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then
echo "✅ AWS Bedrock mode enabled"
elif [ "${CLAUDE_CODE_USE_VERTEX:-}" = "1" ]; then
echo "✅ Google Vertex AI mode enabled"
else
echo "❌ No AI credentials found."
echo "Set one of: ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN, or enable Bedrock/Vertex"
exit 1
fi
認証情報が見つからない場合は、以下の選択肢を説明します。
- 直接 API(推奨):
export ANTHROPIC_API_KEY=sk-ant-... - OAuth:
export CLAUDE_CODE_OAUTH_TOKEN=... - AWS Bedrock:
export CLAUDE_CODE_USE_BEDROCK=1+ AWS 認証情報 - Google Vertex:
export CLAUDE_CODE_USE_VERTEX=1+./credentials/内のサービスアカウント
また、以下の設定も推奨します:export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
ステップ 4:ペネトレーションテストを開始する
重要:開始前に必ずユーザーの確認を取ってください。 コマンド全体を表示し、承認を待ちます。
cd "$SHANNON_HOME"
# Build the command
CMD="./shannon start URL={TARGET_URL} REPO={REPO_NAME}"
# Add optional flags
# CONFIG=configs/target-config.yaml (if auth config exists)
# WORKSPACE={WORKSPACE} (if user specified)
# OUTPUT=./audit-logs/ (default)
echo "Ready to launch:"
echo " $CMD"
echo ""
echo "This will start Docker containers and begin the pentest."
echo "Runtime: ~1-1.5 hours │ Cost: ~\$50 (Claude Sonnet)"
ユーザーの確認後、バックグラウンドで実行します。
cd "$SHANNON_HOME" && ./shannon start URL={TARGET_URL} REPO={REPO_NAME} {EXTRA_FLAGS}
run_in_background: true を指定し、タイムアウトを 600000ms(初期設定に 10 分)に設定してください。ペネトレーションテスト自体は Docker 内で実行され、その後も独立して継続します。
ステップ 5:進捗を確認する
ペンテストの実行中に、ユーザーは状況を確認できます。
cd "$SHANNON_HOME"
# List active workspaces
./shannon workspaces
# View logs for a specific workflow
./shannon logs ID={workflow-id}
5 フェーズのパイプラインについて説明します。
Shannon Pipeline (5 phases, parallel where possible):
├─ Phase 1: Pre-Recon — Source code analysis + external scans (Nmap, Subfinder, WhatWeb)
├─ Phase 2: Recon — Live attack surface mapping via browser automation
├─ Phase 3: Vulnerability Analysis — 5 parallel agents (Injection, XSS, SSRF, Auth, AuthZ)
├─ Phase 4: Exploitation — Dedicated agents execute real attacks to validate findings
└─ Phase 5: Reporting — Executive summary with reproducible PoCs
ステップ 6:結果を読み解く
レポートは $SHANNON_HOME/audit-logs/{hostname}_{sessionId}/ に保存されます。
cd "$SHANNON_HOME"
# Find the latest report
LATEST=$(ls -td audit-logs/*/ 2>/dev/null | head -1)
if [ -n "$LATEST" ]; then
echo "Latest report: $LATEST"
# Find the main report file
find "$LATEST" -name "*.md" -type f | head -5
fi
レポートを読み、概要を提示します。
🔐 Shannon Pentest Report: {TARGET}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 Critical: {N} vulnerabilities
🟠 High: {N} vulnerabilities
🟡 Medium: {N} vulnerabilities
🔵 Low: {N} vulnerabilities
Top Findings:
1. [CRITICAL] {Vuln type} — {location} — PoC: {brief description}
2. [HIGH] {Vuln type} — {location} — PoC: {brief description}
3. ...
Each finding includes a reproducible proof-of-concept exploit.
重要:Shannon の「エクスプロイトがなければレポートもない」というポリシーにより、すべての検出結果には動作する PoC が付属します。 ただし、LLM が生成したコンテンツには人間によるレビューが必要であることをユーザーに伝えてください。
ユーティリティコマンド
状況を確認する
cd "$SHANNON_HOME" && ./shannon workspaces
ログを表示する
cd "$SHANNON_HOME" && ./shannon logs ID={workflow-id}
ペンテストを停止する
cd "$SHANNON_HOME" && ./shannon stop
停止してすべてのデータをクリーンアップする
# DESTRUCTIVE — confirm with user first
cd "$SHANNON_HOME" && ./shannon stop CLEAN=true
以前のワークスペースを再開する
cd "$SHANNON_HOME" && ./shannon start URL={URL} REPO={REPO} WORKSPACE={name}
ローカルアプリを対象にする
ユーザーのアプリが localhost で実行されている場合は、次のように説明します。
Shannon runs inside Docker. To reach your local app:
├─ Use http://host.docker.internal:{PORT} instead of http://localhost:{PORT}
├─ macOS/Windows: works automatically with Docker Desktop
└─ Linux: add --add-host=host.docker.internal:host-gateway to docker run
コマンド内の localhost URL は自動的に host.docker.internal に変換してください。
設定リファレンス
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
ANTHROPIC_API_KEY | いずれか 1 つ | Anthropic API キーを直接指定 |
CLAUDE_CODE_OAUTH_TOKEN | 必須 | Anthropic OAuth トークン |
CLAUDE_CODE_USE_BEDROCK | AWS Bedrock の場合は 1 に設定 | |
CLAUDE_CODE_USE_VERTEX | Google Vertex AI の場合は 1 に設定 | |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 推奨 | 64000 に設定 |
SHANNON_HOME | 任意 | Shannon のインストールディレクトリ(デフォルト:~/shannon) |
YAML 設定オプション
| セクション | フィールド | 説明 |
|---|---|---|
authentication.type | form / sso | ログイン方法 |
authentication.login_url | URL | ログインページ |
authentication.credentials | オブジェクト | username、password、totp_secret |
authentication.flow | 文字列 | 自然言語によるログイン手順 |
authentication.success_condition | オブジェクト | url_contains または element_present |
rules.avoid | リスト | スキップするパス/サブドメイン |
rules.focus | リスト | 優先するパス/サブドメイン |
pipeline.retry_preset | subscription | レート制限のあるプラン向けの延長バックオフ |
pipeline.max_concurrent_pipelines | 1-5 | 並列エージェント数(デフォルト:5) |
脆弱性のカバレッジ
Shannon は 5 つの OWASP カテゴリーにわたり、50 以上の具体的なケースをテストします。
| カテゴリー | 例 |
|---|---|
| インジェクション | SQL インジェクション、コマンドインジェクション、SSTI、NoSQL インジェクション |
| XSS | リフレクテッド型、ストアド型、DOM ベース、ファイルアップロード経由 |
| SSRF | 内部サービスへのアクセス、クラウドメタデータ、プロトコルスマグリング |
| 認証の不備 | デフォルト認証情報、JWT の欠陥、セッション固定、MFA バイパス、CSRF |
| 認可の不備 | IDOR、権限昇格、パストラバーサル、強制ブラウジング |
統合セキュリティツール(Docker に同梱)
- Nmap — ポートスキャンとサービス検出
- Subfinder — サブドメイン列挙
- WhatWeb — Web テクノロジーのフィンガープリンティング
- Schemathesis — API スキーマベースのファジング
- Chromium — 自動エクスプロイト用のヘッドレスブラウザー(Playwright)
コンテキストメモリ
この会話の残りの間、次の情報を記憶してください。
- SHANNON_HOME:Shannon のインストールパス
- TARGET_URL:テスト対象の URL
- REPO_NAME:ソースコードフォルダー名
- WORKSPACE:ワークスペース名(該当する場合)
- PENTEST_STATUS:実行中/完了/停止
ユーザーから追加の質問があった場合:
- ペンテストの状況を確認し、進捗を報告する
- audit-logs から新しい検出結果を読み取り、解釈する
- コード修正を通じて、発見された脆弱性の修正を支援する
- PoC エクスプロイトとその影響について説明する
セキュリティと権限
このスキルが行うこと:
- GitHub から Shannon リポジトリを
~/shannon(または$SHANNON_HOME)にクローン/更新します - ユーザーのソースコードから
~/shannon/repos/へのシンボリックリンクを作成します ./shannonCLI を使って Docker コンテナ(Temporal サーバー、ワーカー、オプションのルーター)を起動します~/shannon/audit-logs/からペンテストレポートを読み取ります- オプションで
~/shannon/configs/に YAML 設定ファイルを作成します
Shannon が行うこと(Docker 内):
- 対象 URL に対して実際のエクスプロイトを実行します(SQL インジェクション、XSS、SSRF など)
- Nmap、Subfinder、WhatWeb、Schemathesis を使ってスキャンします
- ヘッドレス Chromium を介してブラウザー操作を自動化します
- 推論のために Anthropic API(または Bedrock/Vertex)にプロンプトを送信します
audit-logs/ディレクトリにレポートを書き込みます
このスキルが行わないこと:
- ユーザーの確認なしにシステムを対象とすることはありません
- 設定されたプロバイダー以外に API キーを保存または送信することはありません
- ユーザーのソースコードを変更することはありません
- 明示的に指示されない限り、本番システムにアクセスすることはありません(本番システムへのアクセスは推奨されません)
- Docker なしで実行することはありません。すべての攻撃ツールはコンテナ化されています
初回使用前に Shannon のソースコードを確認してください: https://github.com/KeygraphHQ/shannon