# Pentest Executor

> ペネトレーションテストを対話的に実行するスキル。認可確認(Authorization Gate)→カテゴリ選択（Methodology, Reconnaissance, Scanning, VulnerabilityScanning, WebAppTesting, APITesting, PasswordAttacks, Exploitation, PrivilegeEscalation, ActiveDirectory, PostExploitation, WirelessAttacks, NetworkAttacks, SocialEngineering, CloudPentesting, MobileAppTesting, ContainerK8s, BinaryExploitation, OWASPTop10, Reporting, EmailSecurity, DatabaseAttacks, VPNRemoteAccess の全23カテゴリ）→ツール選択→コマンド実行→発見記録(Finding)→レポート生成をステップバイステップで進行。スコープ/除外チェック・ガードレール付き。「ペンテスト実行」「pentest」「侵入テスト」「脆弱性診断」「セキュリティテスト」「pentest executor」で発火。

- Skill: `nogataka/pentest-executor` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add nogataka/pentest-executor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nogataka/pentest-executor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: nogataka (https://skillmd.com/u/nogataka)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nogataka/pentest-executor

---


> **Pentest Executor** スキルを読み込みました。対話的にペネトレーションテストを実行します。

このスキルは `references/` ディレクトリ内の実務リファレンス（23カテゴリ・24,000行超）をナレッジベースとして、認可確認→カテゴリ選択→ツール選択→コマンド実行→発見記録→レポート生成を一貫して行います。

---

## A. Authorization Gate — 全実行の前提条件

**コマンド実行前に必ず認可情報を確認すること。これを省略してはならない。**

AskUserQuestion で以下を確認し、`target_context` として保持する：

### 確認項目

| 項目 | 説明 | 例 |
|------|------|-----|
| ターゲット | テスト対象のドメイン/IP/CIDR | `example.com`, `192.168.1.0/24` |
| スコープ | テスト範囲（含む対象） | `*.example.com`, ポート1-65535 |
| 除外対象 | テストしてはならない対象 | `prod-db.example.com`, DoS系テスト |
| テスト種別 | Black Box / Gray Box / White Box | Gray Box（認証情報あり） |
| テスト期間 | 開始日〜終了日 | 2026-03-11 〜 2026-03-15 |
| 制約事項 | 禁止行為・特別条件 | DoS禁止、営業時間外のみ |
| 認可根拠 | 書面/口頭/契約番号 | 「契約書 #PT-2026-001 に基づく」 |

### 確認フロー

```
1. AskUserQuestion でターゲットとスコープを質問
2. AskUserQuestion でテスト種別と制約を質問
3. 入力情報を target_context としてまとめて表示し、最終確認
4. ユーザーが承認したら実行フェーズへ進む
```

**target_context フォーマット**（以降のコマンドで変数置換に使用）:

```
TARGET: [ドメイン/IP]
SCOPE: [範囲]
EXCLUDE: [除外]
TYPE: [Black/Gray/White]
PERIOD: [期間]
CONSTRAINTS: [制約]
```

認可が不明確な場合は「認可の証拠が確認できないため、実行できません」と明示して停止する。

---

## B. Category Selection

AskUserQuestion (multiSelect: true) で実行カテゴリを選択させる。

### カテゴリ一覧（PTESベースのフェーズ順 = 番号順）

| フェーズ | # | カテゴリ | 概要 |
|---------|---|---------|------|
| 計画 | 01 | Methodology | PTES, OSSTMM, NIST SP800-115, MITRE ATT&CK |
| 偵察 | 02 | Reconnaissance | OSINT・サブドメイン列挙・DNS調査 |
| 分析 | 03 | Scanning | ネットワーク/ポートスキャン |
| 分析 | 04 | VulnerabilityScanning | 脆弱性スキャナ・Webスキャナ |
| 攻撃 | 05 | WebAppTesting | SQLi・XSS・ディレクトリ探索 |
| 攻撃 | 06 | APITesting | REST/GraphQL/gRPC/WebSocket・JWT攻撃・OWASP API Top 10 |
| 攻撃 | 07 | PasswordAttacks | クラック・ブルートフォース |
| 攻撃 | 08 | Exploitation | Metasploit・ペイロード生成 |
| 後処理 | 09 | PrivilegeEscalation | Linux/Windows権限昇格 |
| 後処理 | 10 | ActiveDirectory | AD攻撃・Kerberos・横展開 |
| 後処理 | 11 | PostExploitation | 永続化・データ収集・Exfiltration・痕跡消去 |
| 専門 | 12 | WirelessAttacks | Wi-Fi攻撃・WPA/WPA2 |
| 専門 | 13 | NetworkAttacks | MITM・スニッフィング |
| 専門 | 14 | SocialEngineering | フィッシング・SE |
| 専門 | 15 | CloudPentesting | AWS/Azure/GCP |
| 専門 | 16 | MobileAppTesting | Android/iOS診断・Frida・objection・MobSF |
| 専門 | 17 | ContainerK8s | コンテナエスケープ・K8s RBAC攻撃・レジストリ |
| 専門 | 18 | BinaryExploitation | リバースエンジニアリング・BOF・ROP・pwntools |
| 横断 | 19 | OWASPTop10 | OWASP Top 10 (2021) |
| 報告 | 20 | Reporting | レポート構成・リスク評価・修正提案 |
| 企業インフラ | 21 | EmailSecurity | SPF/DKIM/DMARC検証・Exchange/M365攻撃・SMTP診断 |
| 企業インフラ | 22 | DatabaseAttacks | MSSQL/Oracle/PostgreSQL/MySQL/NoSQL固有攻撃 |
| 企業インフラ | 23 | VPNRemoteAccess | SSL VPN/IPSec/RDP/SSH診断・既知CVE |

### 選択肢の構成

AskUserQuestion の options:

1. **全カテゴリ順次実行** — 番号順（01→02→...→23）で全て実行
2. **計画フェーズ** (01-Methodology) — テスト方法論の選定
3. **偵察フェーズ** (02-Recon) — まず情報収集から
4. **分析フェーズ** (03-Scan, 04-VulnScan) — ポート/脆弱性スキャン
5. **攻撃フェーズ** (05-Web, 06-API, 07-Pass, 08-Exploit) — 脆弱性の実証
6. **後処理フェーズ** (09-PrivEsc, 10-AD, 11-PostExploit) — 権限昇格・横展開・永続化
7. **専門フェーズ** (12-Wireless, 13-Network, 14-SE, 15-Cloud, 16-Mobile, 17-Container/K8s, 18-Binary) — 特化領域
8. **横断チェック** (19-OWASP) — OWASP Top 10 準拠確認
9. **企業インフラフェーズ** (21-Email, 22-Database, 23-VPN/RemoteAccess) — メール・DB・リモートアクセス
10. **報告フェーズ** (20-Reporting) — レポート生成

※ multiSelect: true なので、ユーザーは複数選択または「Other」でカテゴリ番号を直接指定できる。

フェーズ選択後、そのフェーズに含まれるカテゴリを順番に実行する。

---

## C. Execution Flow Per Category — スキルの中核

各カテゴリについて以下のサイクルを回す：

### Step 1: リファレンス読み込み

```
Read で references/XX-Name.md を読み込む（1カテゴリずつ）
```

- リファレンスパス: スキルベースディレクトリからの相対パス `references/XX-Name.md`

### Step 2: ツール選択

リファレンス内の「ツール一覧」比較表をユーザーに提示し、AskUserQuestion で使用ツールを選択させる。

提示フォーマット:

```
[カテゴリ名] で使用するツールを選択してください：

1. [ツール名A] — [1行説明]
2. [ツール名B] — [1行説明]
3. [ツール名C] — [1行説明]
```

### Step 3: 対話的コマンド実行

選択されたツールのリファレンスセクションから、コマンドを1つずつ提示して実行する。

**コマンド提示のルール**:

1. **変数置換**: コマンド内の `<target>`, `<domain>`, `<ip>` 等を target_context の値で置換
2. **説明**: コマンドが何をするか1-2行で説明
3. **確認**: ユーザーの承認を得てから Bash で実行（自動実行は禁止）
4. **出力分析**: 実行結果を解析し、重要な発見（開いているポート、脆弱性、認証情報等）をハイライト
5. **次のアクション選択**: AskUserQuestion で以下から選択

```
次のアクション:
1. 次のステップへ進む
2. 発見事項を記録する (Finding)
3. オプションを変更して再実行
4. 次のツールへ進む
5. 次のカテゴリへ進む
```

**コマンド実行時の注意**:
- 出力が大きい場合は重要部分を抽出して表示
- エラーが出た場合はトラブルシューティングを提案
- ツールがインストールされていない場合はインストールコマンドを提示（macOS: Homebrew優先）

### Step 4: カテゴリ完了サマリー

カテゴリの全ツール完了後（またはユーザーがスキップ時）:

```
## [カテゴリ名] 完了サマリー

### 実施内容
- [ツール名]: [何を実行したか]
- ...

### 発見事項
- F-001: [タイトル] (深刻度)
- F-002: [タイトル] (深刻度)

### 次カテゴリへの引き継ぎ情報
- 発見されたホスト: [一覧]
- 開放ポート: [一覧]
- 検出された脆弱性: [一覧]
```

### カテゴリ間データフロー

前カテゴリの出力を次カテゴリのターゲット情報として自動提案する：

```
                                                  19-OWASP（横断的チェック）
                                                       ↕
02-Recon (ドメイン/IP発見) → 03-Scan (ポート/サービス特定) → 04-VulnScan (CVE検出)
                                    ↓                              ↓
                          05-WebApp / 06-API / 07-Password → 08-Exploit
                                                                ↓
                                              09-PrivEsc → 10-AD → 11-PostExploit
                                                                ↓
                          12-18 専門領域（対象環境に応じて選択）→ 20-Reporting
```

19-OWASP は特定フェーズの後段ではなく、Web/API テストを中心に全フェーズに横断的に適用する観点。

具体例:
- 02-Recon でサブドメイン `admin.example.com (10.0.0.5)` を発見 → 03-Scan で `nmap 10.0.0.5` を自動提案
- 03-Scan でポート 443/tcp (HTTPS) を検出 → 05-WebApp で `https://admin.example.com` をターゲットに自動設定
- 04-VulnScan で Web アプリの脆弱性を検出 → 05-WebApp / 06-API で詳細テストを提案
- 04-VulnScan で CVE-2024-XXXX を検出 → 08-Exploit で該当エクスプロイトモジュールを提案
- 08-Exploit で初期アクセス獲得 → 09-PrivEsc で権限昇格、11-PostExploit で永続化・データ収集を提案
- 03-Scan でコンテナ環境を検出 → 17-ContainerK8s でコンテナエスケープ・K8s攻撃を提案

---

## D. Finding Tracking — 発見事項の記録

### 記録タイミング

ユーザーが「発見事項を記録する」を選択した時、または明らかな脆弱性を検出した時に提案する。

### 記録フォーマット

`assets/finding-template.md` のテンプレートに従い、以下を記録する：

```
## F-[連番3桁]: [タイトル]

| 項目 | 内容 |
|------|------|
| ID | F-[連番3桁] |
| 日付 | [実行日] |
| カテゴリ | [XX-Name] |
| ツール | [ツール名] |
| 深刻度 | Critical / High / Medium / Low / Informational |
| CVSS | [スコア] ([ベクタ文字列]) |
| CWE | CWE-XXX |
| 対象 | [host:port or URL] |

### 説明
[脆弱性の技術的説明]

### 証拠
[実行コマンドと出力]

### 影響
[攻撃者が悪用した場合の影響]

### 修正提案
- **短期対策**: [即時対応]
- **長期対策**: [根本対応]
```

### 深刻度の判定基準

| 深刻度 | CVSS | 条件 |
|--------|------|------|
| Critical | 9.0-10.0 | リモートから認証なしで任意コード実行、データ全件漏洩 |
| High | 7.0-8.9 | 認証バイパス、権限昇格、重要データ漏洩 |
| Medium | 4.0-6.9 | 情報漏洩（限定的）、DoS、設定不備 |
| Low | 0.1-3.9 | 軽微な情報漏洩、推奨設定の欠如 |
| Informational | 0.0 | セキュリティ改善の推奨事項 |

### 進捗管理

TaskCreate で発見事項の追跡タスクを作成し、修正確認まで管理する。

---

## E. Report Generation — レポート生成

### 生成タイミング

- 全カテゴリ完了後に自動提案
- ユーザーが任意のタイミングで要求した時

### レポート構成

`references/20-Reporting.md` のレポート構成ガイド（構成例・品質チェック・再テスト・提出後フォローを含む）を参照し、以下の構成で生成する：

```markdown
# ペネトレーションテスト報告書

## 1. エグゼクティブサマリー
- テスト概要（1段落）
- 重要な発見事項（Critical/High のみ箇条書き）
- 全体的なセキュリティ評価（A〜F）

## 2. テスト概要
- 対象: [target_context から]
- 期間: [target_context から]
- 種別: [Black/Gray/White]
- 手法: [実施したカテゴリ一覧]
- 使用ツール: [全ツール一覧]

## 3. 発見事項詳細
### 3.1 Critical
[F-XXX の詳細]
### 3.2 High
[F-XXX の詳細]
### 3.3 Medium
[F-XXX の詳細]
### 3.4 Low / Info
[F-XXX の詳細]

## 4. リスクマトリクス
| 深刻度 | 件数 | 対応優先度 |
|--------|------|-----------|
| Critical | X件 | 即時対応 |
| High | X件 | 1週間以内 |
| Medium | X件 | 1ヶ月以内 |
| Low | X件 | 次回メンテ |
| Informational | X件 | 推奨 |

## 5. 修正提案サマリー
[全発見事項の修正提案を優先度順に一覧]

## 6. 付録
- A. 詳細スキャン結果
- B. ツールバージョン一覧
- C. テスト実施ログ
```

### 出力

ファイルとして `pentest-report-YYYY-MM-DD.md` をカレントディレクトリに生成する。

---

## F. Guard Rails — 安全装置

### 必須ルール

1. **認可確認**: セクションAのAuthorization Gateを通過しない限り、一切のコマンドを実行しない
2. **コマンド単位の確認**: すべてのコマンドはユーザー承認後に実行する。自動実行は禁止
3. **スコープ境界チェック**: target_context の SCOPE/EXCLUDE と照合し、スコープ外のターゲットへのコマンドは実行を拒否する
4. **出力の機密管理**: 発見された認証情報・トークン等はレポートでマスク処理を提案する

### 禁止事項

| 禁止行為 | 理由 |
|---------|------|
| 無確認でのコマンド実行 | 意図しない攻撃の防止 |
| スコープ外への攻撃 | 法的リスク |
| DoS/DDoS の実行 | 明示的許可がない限り禁止 |
| 本番環境への破壊的操作 | データ損失リスク |
| 発見した認証情報の悪用 | 倫理的境界 |

### 環境対応

| 環境 | 対応 |
|------|------|
| macOS | Homebrew でのインストールコマンドを優先提示。Linux専用ツールは代替手段を提案 |
| root/sudo | sudo 実行時は「root権限で実行します」と警告表示 |
| Docker | コンテナ内実行が推奨されるツール（Metasploit等）はDocker runコマンドも提示 |
| ツール未インストール | `which [tool]` で確認し、未インストール時はインストール手順を提示 |

### エラーハンドリング

- ツールがタイムアウトした場合: タイムアウト値の調整を提案
- 権限エラー: 必要な権限と取得方法を提示
- ネットワークエラー: 接続確認コマンドを提示（ping, traceroute）
- ツールのバージョン不一致: 必要バージョンとアップデート方法を提示

