关于 pentest
Pentest 是用于规划和报告授权渗透测试的技能,要求依据已签署的 ROE 执行范围检查。它帮助安全人员生成分阶段检查清单和结构化发现项;只规划测试,不执行攻击。
主要功能
- 01失败即拒绝的授权与范围检查
- 02按阶段组织的测试手册
- 03信号到方法论的分流
- 04结构化发现项验证与报告
- 05只读环境和策略检查
适用场景
- 01规划已授权的 Web 或 API 测试
- 02将问题信号分流到测试手册
- 03按 Schema 验证发现项
- 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、Webshell,也不执行自主漏洞利用。
**范围:**预先授权的渗透测试方法与报告。不适用于未授权测试、恶意软件/C2 操作、部署前静态审计(security-scanner),或仅限合成环境的 CTF 谜题(ctf-*)。
标准术语
| 术语 | 定义 |
|---|---|
| ROE | Rules of Engagement(交战规则)——签署的授权文件,定义目标、日期、联系人及禁止操作 |
| scope gate | 任何侦察、Web、API 或 OSINT 攻防规划前,都必须通过 scope_check.py 检查 |
| target | 签署的 ROE 中明确列出的主机、URL、CIDR 或应用 |
| phase | scripts/phases.py 中的测试阶段——每个阶段都需要通过有效的范围门控 |
| triage | 通过 methodology-router.md 将信号路由到标准操作手册,以及可选的外部技能 |
| external index | 通过清单和 lookup_external_slug.py 实现的规划锁 pentest-external-skill-index.json |
| finding | 对疑似问题的结构化 JSON 记录,包含严重程度、证据和修复建议 |
| playbook | 从 references/playbooks/ 加载的检查清单式方法——仅用于规划 |
| synthesis | Agent 根据参考资料和操作人员提供的上下文编写并整理出的计划/检查清单/报告 |
| external runner | 可选的第三方 CLI(例如 Strix),由操作人员手动运行——此技能不会安装或调用攻击工具 |
| fail-closed | 当范围缺失、已过期或目标超出范围时,拒绝所有攻防规划 |
层级边界
| 层级 | 技能 | 使用场景 | 需要 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 或退出代码非零 → 停止。提供deny_reason,并加载references/scope-and-roe.md以了解如何修复。 - 在会话记录中记录范围结果中的
engagement_id、phase和allowed_phases。 - 在当前会话中通过范围门控之前,绝不继续使用操作手册、外部运行器或听起来像攻击的命令。
范围请求为空或不完整(有目标但没有 ROE、有 ROE 但没有目标、ROE 已过期、主机超出范围)时,将以 fail-closed 方式拒绝。
Dispatch
| $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;将信号映射到操作手册 + 外部 slug |
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;根据 schema 验证 findings JSON |
report | report | 按 scripts/findings_emit.py 的模式汇总会话发现 |
help 或 (empty) | 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/webshell 引用之前,不得在此次测试中使用该技能。 - 仅在操作人员询问可选 CLI 时,才加载
references/external-runners.md。
模式:scope
在任何其他攻击模式前验证授权。
- 要求提供
--target、--roe-file和--phase。如果缺少任何一项,不带这些参数运行scope_check.py,以生成 deny JSON 并说明必需字段。 - 通过时:汇总
engagement_id、phase、allowed_phases、restricted_phases、expires_at和范围内目标匹配情况。 - 未通过时:引用
deny_reason;不要加载操作手册。
模式:triage
在不加载所有上游仓库的情况下确定方法深度。
- 从
$ARGUMENTS解析信号(例如sqli、xss、kerberos、llm-injection)。 - 加载
references/methodology-router.md— 从去重表中解析规范 slug。 - 加载匹配的
references/playbooks/*.md章节(一次一个文件)。 - 仅在操作人员要求查看更深入的上游内容时,才通过
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的一个章节。 - 构建按优先级排列、映射到 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 行或数组)。
- 对照
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
参考文件索引
一次只加载一个参考文件。不要预加载所有参考文件。
| 文件 | 内容 | 读取时机 |
|---|---|---|
references/scope-and-roe.md | ROE 格式、范围门控策略、拒绝原因 | 范围被拒绝或有 ROE 相关问题时 |
references/findings-schema.md | JSON 发现结果字段和严重性规则 | 输出或验证发现结果时 |
references/methodology-router.md | 精简的信号 → 测试手册 → slug 路由 | 执行 triage 或深度路由时 |
references/external-skill-index.manifest.json | 指向规划锁定的完整索引 | 操作员请求上游正文时 |
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 的单一事实来源(由 scope/findings 导入) |
scripts/scope_check.py | 制定攻击计划前始终运行——没有 ROE 时默认拒绝 |
scripts/doctor.py | doctor 模式或参与测试前的就绪检查 |
scripts/findings_emit.py | 输出或汇总结构化 findings JSON(架构 v1.1) |
scripts/lookup_external_slug.py | 从规划锁定文件中解析信号/slug 安装元数据 |
scripts/validate_external_index.py | 维护者检查规划锁定索引策略 |
scripts/check.py | validate 模式或 CI/技能维护 |
关键规则
- 先通过范围检查——未通过
scope_check.py,不得规划侦察、web、api 或 osint - 默认拒绝——缺少
--target或--roe-file时立即拒绝 - 脚本不执行攻击——捆绑的 Python 仅用于规划、验证和处理 JSON
- 不打包 C2 或 webshell——拒绝有关植入程序、反向 shell 或恶意软件投放的请求
- 不得进行未经授权的测试——没有已签署的 ROE 时,转向 security-scanner(静态扫描)或拒绝
- CTF 不等同于渗透测试——将合成实验室工作转向 ctf-* 技能
- 仅使用操作人员运行的工具——为操作人员提供命令;技能脚本不会探测目标
- 遵守 ROE 阶段限制——当阶段不在
allowed_phases中时,拒绝提供操作手册 - 遵守 prohibited_actions——在被禁止时,不得进行 DOS、社会工程或生产数据外泄
- 结构化 findings——使用
findings_emit.py和references/findings-schema.md - 每次只加载一份参考资料——渐进式披露
- 先展示计划,再提供详细清单——对侵入性操作步骤设置审批关卡
- 绝不存储有效凭据——在 findings 和报告中对密钥脱敏
- 外部运行器为可选项——在
external-runners.md中记录;绝不自动安装 Strix - ROE 只读——脚本会验证 ROE 文件,但不会创建或修改授权
评论
支持 Markdown