Skill v1.0.1
currentAutomated scan100/100+4 new
version: "1.0.1" name: recon-methodology description: 黑盒建模 — 迭代式攻击面建模,按站点级 / 页面级 / 功能级三粒度推进;进入新页面即触发一次页面级建模、切换新身份各刷新一次,产出端点账本与页面语义模型,为后续漏洞维度的适用性判断提供依据。 when-to-use: 黑盒 / 灰盒动态测试进入漏洞维度前的建模阶段,与 agent-browser 配合完成站点探索、页面深挖与信号收集;每进入新页面 / 新路由 / 新身份触发 allowed-tools: bash,read_file,list_files,rg,list_skills user-invocable: false
黑盒建模(三粒度)
目标
黑盒观测面受限,攻击面靠交互逐步展开——建模是迭代式的,不是一次性的。系统化地收集目标的攻击面信息与技术信号,产出端点账本与页面语义模型,为后续各漏洞维度的适用性判断提供事实依据。本能力不做漏洞判定,也不排优先级、不指挥先测后测——建模产生的候选交下游 sink skill 逐一全测。
三粒度
按下列三粒度推进,各粒度的判据、清单、产物 schema 见对应 reference:
| 粒度 | 触发时机 | 建模内容 | 细则 | |
|---|---|---|---|---|
| 站点级 | 进场一次、每身份一次 | 站点结构 / 技术栈指纹 / 输入点枚举 / 认证会话 / 业务流程 / 端点账本 | site-model.md | |
| 页面级 | 进入新页面 / 新路由 / 新身份即触发一次 | 资产层(JS 端点 / DOM 输入 / 请求轨迹 / 关联资源)+ 语义层(业务场景 / 关键路径 / 权限边界 / 跨身份差异) | page-model.md | |
| 功能级 | 每个触发后端动作的元素 | element → target_api → 读写资源 → 所需身份 → 客户端 / 服务端校验 | function-model.md |
目标形态分流(进场先判:可浏览 UI 还是纯 API)
三粒度默认是浏览器/页面中心的,但目标常常没有"页面"。进场先判目标形态,选对建模单元——不要因为没有可浏览 UI 就退回裸 curl 跳过建模:
- 可浏览 UI 目标:站点级 → 页面级 → 功能级,
agent-browser驱动,产出{page}-page-model.md+site-model.md端点总表。 - 纯 API / 无页面目标(JSON 后端、微服务 / 子系统集群、只暴露
/api/*):页面级退化为「端点 / 资源级建模」——以子系统 / 端点 / 资源为建模单元,用 HTTP 客户端(curl / 脚本)系统枚举与探测,仍产出 site-model.md 端点总表;触发条件为"发现新端点 / 新子系统 / 新资源类型即建模",不依赖 agent-browser。功能级仍适用(端点的参数 / 读写资源 / 所需身份 / 服务端校验)。 - 混合目标(有 UI 也有独立 API):两条并行,同写 site-model.md 端点总表。
账本完整性自检(判断建模是否到位)
site-model.md 端点总表视为建模完整,当且仅当:每个已发现子系统的每个已发现入口都在表里有一行,标注 method / params / auth / 业务语义 / 覆盖三态。缺一行即该入口尚未建模。
迭代规律(核心)
- 新页面即新建模:进入登录 / 注册 / 后台 / 列表 / 详情 / 上传 / API 入口 / SPA 路由切换 / 跨主机跨端口跨子域等任一新页面,先做页面级建模再展开该页的漏洞维度测试。已渲染 ≠ 已建模。
- 每身份各刷新一次:身份切换(匿名 → 普通用户 → 管理员)后,站点级与页面级模型各刷新一次——不同身份可见的端点、按钮、权限边界差异显著。
- 建模半径由诉求边界约束:单页 / 单接口定向诉求按指定边界建模,不强求全站铺开。
与 agent-browser 的配合
agent-browser 执行具体浏览器操作(访问页面、填表、点击、抓 HAR);本能力提供探索什么、怎么探索、产物长什么样的方法论与 schema 契约。
与下游 sink skill 的边界
本能力只描述事实(端点 / 页面语义 / 功能流向 / 权限边界),不决定漏洞测试也不发 payload。下游各 sink skill(sqli / xss / idor / 越权 / 等)按 session_context 与 sink 语义从 site-model.md 端点总表 / {page}-page-model.md 枚举候选、各自独立判断漏洞类型与覆盖完整性。
产物(必须落盘,硬约束)
建模事实必须写入 shared/models/ 下对应 markdown 文件,禁止只写在 task_context.md 或仅口头描述:
shared/models/site-model.md— 站点级模型:侦察清单产出 + 端点总表(端点 × 漏洞维度覆盖矩阵,就地更新)shared/models/{page}-page-model.md— 每进入一个新页面 / 新路由一个文件:页面资产(身份无关)+ 语义层(多身份分节)shared/models/{page}-function-model.md— 每功能面一个文件:交互元素→API 表、数据流表
schema、slug 规则与落盘纪律见 site-model / page-model / function-model。
落盘判据:进入过一个页面但没有对应 {page}-page-model.md = 该页未建模,不得对该页展开漏洞测试。"已浏览"≠"已建模"、"已渲染"≠"已建模"。
和 profile 层的关系
本能力是建模阶段的方法论与产出格式提供方;建模的触发时机与递归深度(何时回归站点侦察基线、何时访问哪些二级入口、何时为每个子系统独立做一遍)由 pentest / graybox agent profile 的「黑盒建模前置」「多子系统对账」章节定义(落在 sastx 源码 internal/tui/config.go 的 defaultAgentFiles 字面量)。两层职责互补:profile 决定何时做、做几轮;本能力决定每轮的输出应该长什么样。
安全边界
- 建模以被动观察和轻量探测为主,不发送攻击 payload;目录枚举控制在常见路径范围内,不暴力枚举
- 高副作用元素的功能确认用哨兵账号 / 哨兵数据(前缀
sastx_sentinel_) - 记录但不利用发现的敏感信息