pentest について
Pentestは、許可されたペネトレーションテストの計画と報告を支援するスキルで、署名済みROEに基づく範囲確認を必須とします。セキュリティ担当者向けに段階別チェックリストと構造化された指摘を作成し、攻撃そのものは実行しません。
主な機能
- 01許可と範囲のフェイルクローズ確認
- 02フェーズ別テストプレイブック
- 03シグナルから手法への振り分け
- 04構造化された指摘の検証と報告
- 05読み取り専用の環境・ポリシー確認
活用シーン
- 01許可済みのWeb・API評価を計画
- 02検知シグナルをテストプレイブックへ振り分け
- 03指摘をスキーマに照らして検証
- 04エンゲージメントの指摘をまとめて報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill pentestインストール後、Claude Code で/pentestを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/external-runners.mdexternal-skill-index.manifest.jsonfindings-schema.mdmethodology-router.mdosint.mdreferences/playbooks/api-authz.mdapi-graphql.mdapi.mdbinary-mobile.mdbinary.mdblockchain.mdcloud-iam.mdcloud.mdinternal.mdllm-prompt.mdllm.mdmobile-static.mdmobile.mdnetwork-services.mdnetwork.mdosint-corporate.mdosint.mdpost-exploit.mdrecon.mdreport.mdweb-auth.mdweb-injection.mdweb.mdwireless.md詳細
ペンテスト
許可された攻撃セキュリティ業務向けの統合スキルです。スコープによって制限された計画、チェックリスト、構造化された所見を作成します。C2やウェブシェルを同梱したり、自律的にエクスプロイトを実行したりすることはありません。
**対象範囲:**事前承認済みのペネトレーションテストの方法論とレポート作成です。許可されていないテスト、マルウェア/C2運用、デプロイ前の静的監査(security-scanner)、または合成CTF専用のパズル(ctf-*)には使用しません。
標準用語
| 用語 | 定義 |
|---|---|
| ROE | 実施規則 — 対象、日程、連絡先、禁止行為を定めた署名済みの承認文書です |
| スコープゲート | あらゆる偵察、Web、API、OSINTの攻撃計画に先立って必須となる scope_check.py のパスです |
| 対象 | 署名済みROEに明示的に記載されたホスト、URL、CIDR、またはアプリケーションです |
| フェーズ | scripts/phases.py で定義された業務の段階です。各段階で有効なスコープゲートが必要です |
| トリアージ | methodology-router.md を介して、シグナルを標準プレイブックと任意の外部スキルに振り分けます |
| 外部インデックス | マニフェストと lookup_external_slug.py を介した計画用ロック pentest-external-skill-index.json です |
| 所見 | 深刻度、証拠、修正の指針を含む、疑わしい問題の構造化JSONレコードです |
| プレイブック | references/playbooks/ から読み込むチェックリスト形式の方法論です。計画のみを対象とします |
| 統合 | 参照資料とオペレーターのコンテキストから組み立てる、エージェント作成の計画/チェックリスト/レポートです |
| 外部ランナー | オペレーターが手動で実行する任意のサードパーティ製CLI(例:Strix)です。このスキルは攻撃ツールをインストールも実行もしません |
| フェイルクローズ | スコープが不足、期限切れ、または対象がスコープ外の場合、すべての攻撃計画を拒否します |
ティアの境界
| ティア | スキル | 使用する場面 | ROE必須 | 攻撃を実行する |
|---|---|---|---|---|
| 静的監査 | security-scanner | デプロイ前のSAST、シークレット、依存関係、コンプライアンスのヒューリスティック検査 | いいえ | いいえ — 読み取り専用のコードスキャン |
| 許可済みペンテスト | pentest(このスキル) | 署名済みの契約に基づく稼働中のアプリ/API | はい | いいえ — 計画/チェックリストのみ。承認済みツールはオペレーターが実行します |
| CTF/ラボ | ctf-* | 隔離されたチャレンジ用マシン、トレーニング用フラグ、合成脆弱性ラボ | いいえ(代わりにラボポリシーが必要) | 指定されたラボのスコープ内のみ |
振り分けルール:
- 「マージ前にリポジトリのシークレット/CVEをスキャンして」→ security-scanner
- 「許可なくこのサイトをハッキングして」→ 拒否 — ROEがないため、計画も行いません
- 「このHTB/CTFのマシンを攻略して」→ **ctf-***スキル — 本番環境のペンテストではありません
- 「staging.example.comについて署名済みのROEがあります」→ スコープゲートを通過した後に pentest
スコープゲート(必須)
偵察、Web、API、OSINT、または任意の拡張フェーズモード(network、cloud、mobile、wireless、llm、internal、binary、blockchain、post-exploit)の前に:
- オペレーターから
--target、--roe-file、および要求された--phaseを取得します。 - 次を実行します:
uv run python scripts/scope_check.py \
--target "<host-or-url>" \
--roe-file "<path-to-roe.json>" \
--phase "<mode>"
- JSONの標準出力を解析します。
okが false、または終了コードが0以外の場合は 停止します。deny_reasonを提示し、修正方法を確認するためにreferences/scope-and-roe.mdを読み込みます。 - スコープ結果の
engagement_id、phase、allowed_phasesをセッションノートに記録します。 - 現在のセッションでスコープゲートを通過していない場合、プレイブック、外部ランナー、または攻撃を示唆するコマンドに進んではいけません。
空または不完全なスコープ要求(ROEを指定せずに対象を指定、対象を指定せずにROEを指定、期限切れのROE、スコープ外のホスト)は、フェイルクローズで拒否されます。
ディスパッチ
| $ARGUMENTS | モード | アクション |
|---|---|---|
doctor | doctor | scripts/doctor.py を実行 — スキルのアセットとポリシーの準備状況を確認 |
scope <target> | scope | --roe-file、--target、--phase を指定して scripts/scope_check.py を実行し、ROE による制限がある場合は restricted_phases を表示 |
triage <signal> | triage | references/methodology-router.md を読み込み、シグナル → プレイブック + 外部スラッグに対応付け |
recon <target> | recon | スコープゲート → references/playbooks/recon.md |
web <target> | web | スコープゲート → references/playbooks/web.md(必要に応じてインジェクション/認証プレイブックも参照) |
api <target> | api | スコープゲート → references/playbooks/api.md |
osint <target> | osint | スコープゲート → references/playbooks/osint.md(ROE に従いパッシブのみ) |
network <target> | network | スコープゲート → references/playbooks/network.md |
cloud <target> | cloud | スコープゲート → references/playbooks/cloud.md |
mobile <target> | mobile | スコープゲート → references/playbooks/mobile.md |
wireless <target> | wireless | スコープゲート → references/playbooks/wireless.md(明示的な ROE が必要) |
llm <target> | llm | スコープゲート → references/playbooks/llm.md |
internal <target> | internal | スコープゲート → references/playbooks/internal.md |
binary <target> | binary | スコープゲート → references/playbooks/binary.md |
blockchain <target> | blockchain | スコープゲート → references/playbooks/blockchain.md |
post-exploit <target> | post-exploit | スコープゲート → references/playbooks/post-exploit.md(明示的な ROE がある場合のみ) |
validate | validate | scripts/check.py を実行し、findings JSON をスキーマと照合して検証 |
report | report | scripts/findings_emit.py のパターンを使ってセッションの調査結果を集約 |
help または (空) | help | モード、スコープゲート、ティアの境界、参照インデックスを表示 |
| 認識できない入力 | — | 明確化を求め、許可があるものと見なさない |
モード:doctor
読み取り専用の環境およびポリシーチェックです。攻撃的な操作は行いません。
- 実行:
uv run python scripts/doctor.py --format json - スキルがグローバルにインストールされている場合は、
WAGENTS_REPO_ROOTに agents クローンのパスを設定し、repo-rootとロックインデックスのチェックでplanning/research-lock/を解決できるようにします。 - チェック結果を
ok、warn、failごとに分類して提示します。 forbidden-toolingがfailの場合は停止します。オペレーターがリクエストから C2/ウェブシェルへの参照を 削除するまで、このスキルをエンゲージメントで使用できません。- オペレーターから任意の CLI について質問された場合に限り、
references/external-runners.mdを読み込みます。
モード:scope
ほかの攻撃的なモードを実行する前に、認可を検証します。
--target、--roe-file、--phaseが必要です。いずれかが不足している場合は、それらを指定せずにscope_check.pyを実行して拒否 JSON を生成し、必須フィールドを説明します。- 許可された場合:
engagement_id、phase、allowed_phases、restricted_phases、expires_at、およびスコープ内のターゲットとの一致を要約します。 - 拒否された場合:
deny_reasonを示し、プレイブックは読み込みません。
モード:triage
すべての上流リポジトリを読み込まずに、調査手法の詳細度に応じて振り分けます。
$ARGUMENTSからシグナルを解析します(例:sqli、xss、kerberos、llm-injection)。references/methodology-router.mdを読み込み、重複排除テーブルから正規スラッグを特定します。- 一致する
references/playbooks/*.mdのセクションを読み込みます(一度に 1 ファイル)。 - オペレーターが上流資料の詳細な本文を求めた場合に限り、
scripts/lookup_external_slug.pyでinstall_commandを提示します。 - 隔離: EXT-084 のエントリは検査専用です。自動インストールは決して行いません。
モード:recon
認可後の攻撃対象領域の計画策定のみを行います。
- スコープゲートを通過します(スコープゲートを参照)。
- スコープ結果の
allowed_phasesにreconが含まれていることを確認します。 references/playbooks/recon.mdを読み込みます(パッシブの場合はreferences/osint.mdも読み込みます)。- 段階的な計画を作成します。アセットインベントリの仮説、DNS/WHOIS/証明書に関する観点、 技術フィンガープリンティング用のオペレーターが実行できるコマンドを含めます。このスキルのスクリプトから それらを実行してはいけません。
- オペレーターから証拠が提示された後に限り、計画上のチェックポイントをドラフトの調査結果として出力します。
モード:web
Web アプリケーションテストの計画のみです。
- スコープゲートを通過し、
allowed_phasesにwebが含まれていることを確認します。 references/playbooks/web.mdを一度に1セクションずつ読み込みます。- OWASP カテゴリーに対応付けた優先順位付きテストチェックリストを作成します — スキルスクリプトではエクスプロイトペイロードを実行しません。
- オペレーターが報告した確認済みの問題ごとに、
findings_emit.pyで出力します(エンゲージメントに所見を紐付ける場合は、現在のスコープゲート結果から--scope-jsonを渡します)。
モード:api
API セキュリティテストの計画のみです。
- スコープゲートを通過し、
allowed_phasesにapiが含まれていることを確認します。 references/playbooks/api.mdを読み込みます。- 認証、認可、入力検証、レート制限、BOLA のテストマトリクスを作成します。
- オペレーター向けに OpenAPI/GraphQL の検出手順を示します。バンドルされたスクリプトから稼働中のターゲットにアクセスすることはありません。
モード:osint
パッシブなオープンソースインテリジェンスの計画のみです。
- スコープゲートを通過し、
allowed_phasesにosintが含まれていることを確認します。 references/osint.mdを読み込みます。- ROE の
prohibited_actionsを遵守します — ソーシャルエンジニアリング、嫌がらせ、スコープ外の第三者データ収集は禁止です。 - オペレーター向けに、情報源リスト、クエリテンプレート、検証手順を出力します。
モード:post-exploit
ROE で明示的に許可されている場合に限り、ポストエクスプロイトの計画のみを行います。
- スコープゲートを通過し、
allowed_phasesにpost-exploitが含まれていることを確認します(スコープ JSON のrestricted_phasesを参照してください)。 references/playbooks/post-exploit.mdを読み込みます。- 封じ込めに配慮した永続化/横展開の計画マトリクスを作成します — バンドルされたスクリプトから C2 のインストールコマンドやインプラントを実行したり、実際にエクスプロイトを行ったりすることはありません。
- C2/Havoc/Sliver/Cobalt Strike のスキルインストールは拒否します。上流の参照情報は文書のみに限定します。
モード:validate
スキルと所見を決定論的に検証します。
- 次を実行します:
uv run python scripts/check.py - アドホックな所見 JSON を検証する場合は、
references/findings-schema.mdと照合します。 - 検証状況を報告します。ROE やターゲットは変更しません。
モード:report
セッションレポートを作成します。
- エンゲージメント中に出力された所見を収集します(JSON Lines または配列)。
- 各レコードを
references/findings-schema.mdに照らして検証します。 - 重大度別にグループ化し、スコープのメタデータ(
engagement_id、target、ROE ハッシュ)を含めます。 - オペレーター提供のメモを正規化する場合は、
scripts/findings_emit.py --aggregateを使用します。 - エグゼクティブサマリーには、承認の根拠と、禁止事項を遵守したことを明記する必要があります。
モード:help
- ディスパッチテーブル、スコープゲートの手順、ティア境界テーブルを表示します。
- 参照ファイルと、参照するタイミングのガイダンスを一覧表示します。
- このスキルは Strix やその他のランナーをインストールしないことを伝えます —
references/external-runners.mdを参照してください。
ヘルプ (空)
ディスパッチテーブル、スコープゲートの手順、ティア境界、参照インデックスを表示します。次の例を提示します。
/pentest help
/pentest doctor
/pentest scope staging.example.com
/pentest recon staging.example.com
/pentest web https://staging.example.com/app
/pentest api https://staging.example.com/api
/pentest osint staging.example.com
/pentest validate
/pentest report
参照ファイルインデックス
参照ファイルは一度に1つだけ読み込みます。すべての参照ファイルを事前に読み込まないでください。
| ファイル | 内容 | 読み込むタイミング |
|---|---|---|
references/scope-and-roe.md | ROE の形式、スコープゲートのポリシー、拒否理由 | スコープが拒否された場合、または ROE に関する質問がある場合 |
references/findings-schema.md | JSON 所見のフィールドと重大度のルール | 所見の出力または検証時 |
references/methodology-router.md | シグナル → プレイブック → スラッグの簡潔なルーティング | triage または深度のルーティング時 |
references/external-skill-index.manifest.json | planning-lock の完全なインデックスへのポインター | オペレーターが上流の本文を求めた場合 |
references/playbooks/*.md | フェーズおよび手法のチェックリスト(22 ファイル) | スコープゲート通過後、該当するフェーズに応じて |
references/osint.md | パッシブ OSINT テンプレート(旧インデックス) | スコープゲート通過後の recon または osint 時 |
references/provenance.md | 統合元、ハイブリッドリポジトリ、C2 禁止ポリシー | 手法に関する質問または監査証跡が必要な場合 |
references/external-runners.md | 任意の外部 CLI(Strix など)— インストールは行いません | オペレーターがツールについて尋ねた場合 |
スクリプト
| スクリプト | 実行するタイミング |
|---|---|
scripts/phases.py | VALID_PHASES の SSOT(scope/findings がインポートします) |
scripts/scope_check.py | 攻撃計画を立てる前に必ず実行します。ROE がない場合はフェイルクローズします |
scripts/doctor.py | doctor モード、またはエンゲージメント前の準備状況確認 |
scripts/findings_emit.py | 構造化された findings JSON(スキーマ v1.1)を出力または集約します |
scripts/lookup_external_slug.py | planning lock からシグナル/スラッグのインストールメタデータを解決します |
scripts/validate_external_index.py | planning-lock インデックスポリシーのメンテナーチェック |
scripts/check.py | validate モード、または CI/スキルのメンテナンス |
重要なルール
- 最初にスコープゲートを通す —
scope_check.pyに合格するまで、recon、web、api、osint の計画を立ててはいけません - フェイルクローズ —
--targetまたは--roe-fileがない場合は、直ちに拒否します - スクリプトで攻撃を実行しない — 同梱の Python は計画、検証、JSON 処理のみを行います
- C2 や webshell を同梱しない — インプラント、リバースシェル、マルウェアのステージングに関する依頼は拒否します
- 許可のないテストを行わない — 署名済み ROE がない場合は、security-scanner(静的解析)に誘導するか、拒否します
- CTF はペネトレーションテストではない — 合成ラボでの作業は ctf-* スキルに誘導します
- ツールを実行するのはオペレーターのみ — オペレーター向けにコマンドを提示します。スキルのスクリプトはターゲットを調査しません
- ROE のフェーズを尊重する — フェーズが
allowed_phasesに含まれていない場合は、プレイブックを拒否します - prohibited_actions を尊重する — 禁止されている場合は、DOS、ソーシャルエンジニアリング、本番データの持ち出しを行いません
- 構造化された findings —
findings_emit.pyとreferences/findings-schema.mdを使用します - 一度に読み込むリファレンスは1つ — 段階的に情報を開示します
- 詳細なチェックリストの前に計画を提示する — オペレーターが侵襲的な手順を実行する前に承認を得ます
- 有効な認証情報を保存しない — findings とレポートではシークレットをマスキングします
- 外部ランナーは任意 —
external-runners.mdに記載します。Strix を自動インストールしてはいけません - ROE は読み取り専用 — スクリプトは ROE ファイルを検証しますが、承認の作成や変更は行いません