
toolbox v0.2.1
CLIとMCPを介した人間とエージェント間の協調的アプリケーションセキュリティテスト
コーディングエージェントのためのMCPベースのアプリケーションセキュリティテストツール。
スキャナーではなく、協調型ワークベンチです。エージェントはUIやステートフルなAPIを苦手としますが、あなたはその両方に長けています。Sectoolを使用すれば、プロキシ経由でアプリケーションを探索できる一方で、エージェントはあなたが生成した同じ認証済みトラフィックを分析・操作できます。
あなたが認証とUI操作を担当し、エージェントはフローの照会、リクエストの改変、リフレクションの検出、帯域外インタラクションの監視、その他の組み合わせの試行を行います。両者の能力を組み合わせることで、定型タスクが容易になり、隠れたインジケーターを見逃す可能性が低くなり、複雑なテストをより徹底的に実行できます。
はじめに
1. sectoolをインストール
go install github.com/go-appsec/toolbox/sectool@latest
Goをお持ちでない場合? 最新リリース からお使いのプラットフォーム(Linux、macOS、Windows — amd64およびarm64)向けのバイナリをダウンロードしてください。
2. MCP(Model Context Protocol)サーバーを起動
sectool mcp
これにより、ポート8080に組み込みHTTPプロキシを持つMCPサーバーがポート9119で起動します。
3. ブラウザを設定
ブラウザのプロキシ設定を 127.0.0.1:8080(または --proxy-port で指定したポート)に向けます。
HTTPSを傍受するには、~/.sectool/ca.pem(初回実行時に自動生成されます)からCA証明書をインストールします。ほとんどのブラウザは証明書設定から受け入れられます。macOSではシステムキーチェーンに追加することもできます。
Burpをご利用ですか? 代わりに Burpのプロキシ設定 に従い、その後 sectool mcp --burp でsectoolを起動してください。
4. エージェントを接続
Claude Code:
claude mcp add --transport http sectool http://127.0.0.1:9119/mcp
Codex (~/.codex/config.toml):
[mcp_servers.sectool]
url = "http://127.0.0.1:9119/mcp"
5. 協力して作業する
エージェントと協力してテスト計画を立て、一緒に実行します。エージェントはプロキシ履歴の照会、変更を加えたリクエストの再送信、エンドポイントのクロール、帯域外インタラクションのテストを行うことができ、その間あなたは認証やUIの操作・レビューといったブラウザベースのアクションを担当します。
サーバーオプション
プロキシバックエンド
ネイティブ: ワイヤーフィデリティを備えた組み込みプロキシで、HTTP/1.1、HTTP/2、WebSocketをサポートします。MITMテストにおいてBurpと同等の能力を持つように設計されています。単一のバイナリでMCPサーバー、プロキシ、CLIを提供し、完全に自己完結型でヘッドレス環境でも使用できます。
Burp(オプション): エージェントの動作をGUIで確認したい場合や、すでにBurpを実行している場合は、BApp StoreからMCP拡張機能をインストールし、MCPサーバーが http://127.0.0.1:9876/ で実行されていることを確認してください。
| オプション | 説明 |
|---|---|
| (default) | 自動検出: 最初にBurp MCPを試し、フォールバックとしてネイティブプロキシを使用 |
--proxy-port 8080 | 指定したポートでネイティブプロキシを強制 |
--burp | Burp MCPを強制(利用できない場合は失敗) |
セッションオプション
ワークフロー
Sectoolは、セッション開始時にエージェントが workflow ツールを呼び出すと、適切なワークフローを自動的に決定します。ワークフローを事前に指定することで、この手順をスキップしてトークンを節約できます:
sectool mcp # Default: agent selects task type via workflow tool
sectool mcp --workflow explore # Pre-set exploration mode
sectool mcp --workflow test-report # Pre-set validation mode
sectool mcp --workflow none # No workflow instructions
sectool mcp --workflow multi # Multiple agents share the server
| モード | 説明 |
|---|---|
| (default) | エージェントが workflow ツールを呼び出してタスク種別を選択し、協力のための指示を受け取る |
explore | 探索的なセキュリティテスト。すべてのツールが利用可能 |
test-report | 特定の脆弱性レポートの検証。クロールツールは除外 |
none | ワークフロー指示なし。すべてのツールがすぐに利用可能 |
multi | 複数のユーザーやエージェントがサーバーを共有する場合用。あるエージェントが別のエージェントを混乱させる可能性のある機能を非表示にする |
ワークフロー指示は、エージェントがすべてを自律的に行おうとしたり、価値のない手順を案内したりするのではなく、協調的なテストへと導きます。エージェントの協調を改善するアイデアがあれば、issueを開いて ください。
ノート
--notes フラグは、フローにリンクされた観察結果を保存するための notes_save および notes_list ツールを有効にします。短いセッションでのコンテキスト使用量を最小限に抑えるため、デフォルトでは無効です。複数の発見事項や会話の圧縮(コンパクション)が見込まれる場合に有効にしてください。
MCPトランスポート
サーバーは2つのエンドポイントを公開します:
/mcp- Streamable HTTP(推奨)/sse- SSE(レガシー、旧クライアント向け)
CLI使用例
CLIはエージェントと状態を共有し、レビュー、再送信、スクリプト作成のための人間に優しいインターフェースを提供します。すべてのCLIコマンドはMCPツールに対応しているため、エージェントも同じ状態を共有します。
# Review what the proxy captured while you browsed
sectool proxy summary
sectool proxy list --host example.com
sectool proxy cookies --name session_id
# Crawl an app to discover endpoints and forms
sectool crawl create --url https://example.com
sectool crawl summary <session_id>
# Replay a captured request with modifications
sectool replay send --flow <flow_id> --add-header "X-Test: value"
# Set up out-of-band interaction testing and check for callbacks
sectool oast create
sectool oast poll <oast_id>
sectool oast get <event_id>
# Compare two flows, detect reflections, inspect JWTs
sectool diff <flow_a> <flow_b> --scope response
sectool reflected <flow_id>
sectool jwt <token>
# Export a flow, edit it offline, and resend
sectool proxy export <flow_id>
# ... edit ./sectool-requests/<flow_id>/request.http ...
sectool replay send --bundle <flow_id>
詳細なオプションについては sectool <command> --help を使用してください。
主な機能
- ワイヤーフィデリティプロキシ - ヘッダーの順序、大文字小文字、プロトコルの異常を保持するHTTP/1.1およびHTTP/2 MITM
- リプレイとミューテーション - マッチ/リプレースルールによるライブトラフィックの書き換え、またはエージェント向けに最適化されたAPIを通じてキャプチャしたリクエストを変更して再送信
- フロー差分 - 2つのフローを構造化されたコンテンツタイプ対応方式で比較(JSONパスレベル、統合テキスト、バイナリサイズ)し、レポート検証を高速化
- JSサーフェス分析 - JavaScript/HTMLバンドルからエンドポイント、ルート、シークレットを抽出し、各呼び出し箇所を利用可能なリクエストに展開
- リフレクション検出 - 複数のエンコーディングバリアントにわたってレスポンスに反映されるリクエストパラメータ値を検出し、インジェクション箇所を明らかにする
- OAST - Interactshによる帯域外インタラクションテスト。ドメインを作成し、DNS/HTTP/SMTPコールバックをポーリング
- リダイレクトプロービング - OASTセッションは307リダイレクトを返し、ターゲットがリダイレクトに追従するかを検出。SSRFチェーンや検証バイパスの検出に有用
- クローリング - エンドポイント、フォーム、アプリケーション構造を発見。プロキシ履歴やURLからシードを設定
- WebSocketサポート - WebSocketメッセージのフレームレベルでの傍受、プロキシ処理、マッチ/リプレース
- ワークフローモード - タスク固有のエージェントガイダンス(explore、test-report)により、協調の質を向上させトークンの無駄を削減
- エンコーディングユーティリティ - URL、Base64、HTMLのエンコード/デコード、ハッシュ(MD5/SHA/HMAC)、JWT検査
- Burp Suite統合 - Burp MCP拡張機能によるオプションのGUIフロントエンド。またはネイティブプロキシで完全にヘッドレスで実行
自動スキャン
sectoolを、ファーストパーティ製サイドカーである sidenuclei と組み合わせて使用します。sidenucleiは、あなたが触れるすべてのエンドポイントに対して Nuclei を実行します。--notes を付けてsectoolを起動し、セッションに sidenuclei を併設すると、実際にキャプチャされたリクエストを使用して各エンドポイントをスキャンするため、実際のパラメータ、Cookie、認証済みセッションでテストが実行されます。発見事項は、それを引き起こしたフローにリンクされた finding ノートとして記録され、あなたとエージェントが手動テストに集中している間も追加のカバレッジが得られます。
カスタムプロトコルサポート
HTTPとWebSocketに加えて、sectoolはサイドカーアダプターモデルを通じてカスタムプロトコルおよびバイナリプロトコル(通常はリクエスト/レスポンス)をサポートします。アダプターを作成し、サイドカーAPIを使用して接続・通信します。サイドカーのトラフィックは同じ統一フロータイムラインに記録されるため、flow_get、diff_flow、replay_send などのツールは変更なしで機能します。アダプターはJSON-RPC 2.0 API上で任意の言語で記述できるほか、登録、ルールキャッシュ、フロー出力を処理するSDKクライアントを使用してGoでも記述できます。詳細はサイドカーSDK & プロトコルに記載されています。