Files
CyberStrikeAI/skills/pentest-blackboard/SKILL.md
T
2026-07-21 14:15:40 +08:00

7.1 KiB
Raw Blame History

name, description, tags
name description tags
pentest-blackboard CyberStrikeAI 项目黑板:跨会话 Fact 图(SQLite+ upsert_project_fact/record_vulnerability 边渗透边记录节奏、关系边 links、confidence、与多代理协调落库。Use when managing project facts, blackboard index, writing evidence, or avoiding context-loss after compression.
渗透测试
penetration-testing
红队
项目黑板

项目黑板(与本产品对齐)

状态落在已绑定项目的 SQLite 黑板,不依赖对话上下文,也不使用 .pentest/ 目录。 系统自动注入「项目黑板索引」(仅 fact_key + summary);摘要不足必须 get_project_fact,禁止凭摘要臆造细节。

原语与分工(产品模型)

概念 产品落点 规则
Fact project_factsupsert_project_fact fact_key 覆盖更新;非正式漏洞条目。confidence: confirmed | tentative | deprecated
关系边 project_fact_edgesupsert 的 links 结构化攻击图;finding/chain/exploit/poc 必须带 links
可交付漏洞 record_vulnerability 与 Fact 可各记一次:Fact=复现上下文,漏洞=正式 finding
探索方向 本轮计划 / 协调者委派 / plantask(若启用) 不是独立 Intent 表;待验证方向用 confidence=tentativenote/ 或先不落库、验证后再写
人类注入 用户消息 / HITL 审批 直接吸收进决策;不必写成 Hint 原语

Fact vs 漏洞

  • 环境/目标/认证等认知 → 只写 Facttarget/ auth/ infra/ business/
  • 发现与利用上下文 → Factfinding/ chain/ exploit/ poc/+ body 填满攻击链
  • 可交付 findingsrecord_vulnerability(标题、严重程度、类型、目标、POC、影响、修复);记前可用 list_vulnerabilities 查重

强制节奏:边渗透边记录

勿等会话结束再批量写入。

  1. 确认一条新认知(开放端口/服务版本、入口路径、认证态或凭据特征、可利用点或攻击面变化)→ 立即 upsert_project_fact(同 key 覆盖)。
  2. 验证出一条可复现漏洞(含 POC/影响)→ 立即 record_vulnerability;与事实可各记一次。
  3. 继续下一步前优先落库,避免上下文压缩丢细节。
  4. 未绑项目:说明无法写黑板,仍在本轮保留证据摘要。
  5. 协调者:子任务返回新认知/漏洞时由协调者写入,勿假定子代理已记。
  6. 子代理无工具时:交付物末尾给「待落库」条目(建议 fact_key、summary、body/POC 要点),供协调者立即写入。

工具速查

工具 用途
upsert_project_fact 写入/更新事实(含 body、confidence、links
get_project_fact 按 key 取完整 body(索引不够时必调)
list_project_facts / search_project_facts 检索黑板
deprecate_project_fact / restore_project_fact 误报废弃 / 恢复
record_vulnerability 可交付漏洞
list_vulnerabilities / get_vulnerability 查重与详情

前置:当前对话已绑定项目(否则工具报错)。

写入规范

fact_key / category

  • 格式:小写 category/slug(如 target/primary_domainfinding/sqli-login
  • 环境:target | auth | infra | business
  • 发现利用:finding | chain | exploit | poc(另可用 note
  • 同一发现保持同一 fact_key 覆盖,勿拆成多个 key 导致上下文丢失

summary / body / confidence

  • summary(索引用一行):须含「什么 + 在哪 + 如何触发/验证」,禁止只写「存在 SQLi」
  • body:完整可复现上下文(索引不含 body)。发现/利用类必含:入口 → 步骤 → 原始请求/响应或命令 → 现象 → 证据 → related_vulnerability_id(若有)
  • confidence:有证据钉死 → confirmed;仅线索/待验证 → tentative;误报 → deprecate_project_fact(或 deprecated
  • 更新时若省略 body,保留库中已有 body(可只改 summary

关系边 links(写入 finding/chain/exploit/poc 时必填)

  • 推荐 from:来源 fact → 当前 fact_key
  • 最少:finding 至少 1 条 {from: target/*, type: discovered_on};在 finding 上挂 exploit 用 {from: exploit/*, type: exploits}
  • 常用 typediscovered_on | depends_on | leads_to | enables | exploits | contains | part_of | supports
  • 省略 links = 保留已有边;传入 links = 替换全部入边

工作方式(对齐本产品编排)

不设 Bootstrap/Reason/Explore 磁盘状态机。按当前运行模式推进,但读写黑板的纪律不变

模式 黑板用法
单代理 / deep 边干边 upsert_project_fact;读索引不够则 get_project_fact
plan_execute 计划步骤产出认知后立即落库;重规划前 list/search_project_facts
supervisor 协调者汇总子代理「待落库」并写入;子代理无工具则结构化交付

卡住时:换边/换起点/换攻击域;用 search_project_facts 重审已有 Fact,避免重复死路。负结果也要落库(见验证铁律 skill)。

行为触发器(纪律)

每步必检(不检=违反验证铁律):

  1. 识别→搜:识别任何组件/框架/版本/中间件 → 暂停利用 → 立即执行 component-vuln-intel 全部命令(browser_navigate+terminal curl7 个步骤全做)→ 结果用 tentative Fact 或本轮计划跟踪 → 搜完才继续。不搜就说「无已知漏洞」=幻觉;验证后confirmed / record_vulnerability
  2. 拒绝→换路:收到 403/429/超时/RST/WAF 拦/CDN 502/限流/空响应 → 禁止同条件重试 → 立即换路序列:SOCKS5 代理→换 UA→加 XFF→换协议(WS/DNS)→换端口→编码变异(完整代理获取/验证见 proxy-tool-bootstrap)→ 全换仍不通才写负结果 Factconfirmed + body 写清已测条件)换面。
  3. 新认知→横向:拿到凭据/域名/IP/路径 → 立即横向喷:凭据全服务复用 / 新域名全端口扫 / IP 反查同站 → 不等人指示自动扩展攻击面,并 upsert_project_fact(如 auth/cred-*target/related-*)。有凭据不喷=遗漏。

违反判定:不搜就说「无已知漏洞」=幻觉;被拦不换路=放弃;有凭据不喷=遗漏 → 均违反验证铁律。

证据 / 战利品 / 改动

原「磁盘」概念 本产品做法
evidence/ Fact body + record_vulnerability 的证明字段 + 工具执行记录;大文件放会话/项目 workspace
loot/ 凭据特征写入 auth/ Fact(注意脱敏与授权范围);完整秘密按项目策略处理
changelog.md 写入型改动在回复中台账化,并可 note/change-* Fact 记录主机/类型/位置/回滚命令

与验证铁律的衔接

详见 pentest-verification:搜索≠漏洞;无证据不写 confirmed;禁止空泛「可能/疑似」当结论;验证失败写负结果 Fact。